db = $db; } function fetch($uid=0) { if(empty($uid)) { $sql = "SELECT * FROM ".$this->tbl_doi." ORDER BY ts_published desc,ts_submitted desc,ts_created DESC"; }else{ $sql = "SELECT doi.* FROM ".$this->tbl_doi." doi LEFT JOIN mdauthor a ON doi.uuid=a.uuid WHERE a.userid=".$uid." AND a.status>0 ORDER BY ts_published desc,ts_submitted desc,ts_created DESC "; } $rs = $this->db->query($sql); $rows = $rs->fetchAll(); return $rows; } function add($data){ include_once("helper/dbh.php"); $dbh = new dbh($this->db); $this->data_process_in($data); //include_once("helper/view.php"); //view::Dump($data); return $dbh->insert($this->tbl_doi,$data); } function update($data,$uuid,$uid=0){ include_once("data/Author.php"); $author = new Author($this->db); if($author->checkAuthor($uuid,$uid)==false) { return "您没有权限"; } $doi_info = $this->view($uuid); if($doi_info == false) { return $this->add($data); }else { $this->data_process_in($data); //include_once("helper/view.php"); //view::Dump($data); include_once("helper/dbh.php"); $dbh = new dbh($this->db); if(is_numeric($uuid)) { $condition = " id=$uuid "; }else{ $condition = " uuid='$uuid' "; } $state = $dbh->update($this->tbl_doi,$data,$condition,true); if( $state == true) { return true; }else{ return $state; } } } function data_process_in(&$data){ $authors = array(); $orgs = array(); $authors_en = array(); $orgs_en = array(); foreach($data['info'] as $k=>$v) { $authors[$v['order']] = $v['author']; $orgs[$v['order']] = $v['organization']; $authors_en[$v['order']] = $v['author_en']; $orgs_en[$v['order']] = $v['organization_en']; } $authors = "{".join(",",$authors)."}"; $orgs = "{".join(",",$orgs)."}"; $authors_en = "{".join(",",$authors_en)."}"; $orgs_en = "{".join(",",$orgs_en)."}"; $data['authors'] = $authors; $data['organization'] = $orgs; $data['author_en'] = $authors_en; $data['organization_en'] = $orgs_en; unset($data['info']); } function data_process_out(&$data){ $authors = $this->array_split($data['authors']); $orgs = $this->array_split($data['organization']); $authors_en = $this->array_split($data['author_en']); $orgs_en = $this->array_split($data['organization_en']); $info = array(); foreach($authors as $k=>$v) { $info[$k] = array( 'author'=>$authors[$k], 'organization'=>$orgs[$k], 'author_en'=>$authors_en[$k], 'organization_en'=>$orgs_en[$k], 'order'=> 5*count($authors)-($k*5) ); } //include_once("helper/view.php"); //view::Dump($info); return $info; } function array_split($a){ $a = str_replace("{",'',$a); $a = str_replace("}",'',$a); $a = explode(",",$a); return $a; } function view($id) { if(is_numeric($id)) { $sql = "SELECT * FROM ".$this->tbl_doi." WHERE id=$id"; }else{ $sql = "SELECT * FROM ".$this->tbl_doi." WHERE uuid='$id'"; } $rs = $this->db->query($sql); $row = $rs->fetch(); return $row; } function delete($id,$uid=0){ if(!is_numeric($id)) { return "参数错误"; } if($uid != 0){ $sql = "SELECT uuid FROM ".$this->tbl_doi." WHERE id=$id"; $rs = $this->db->query($sql); $row = $rs->fetch(); if(isset($row['uuid']) && !empty($row['uuid'])){ include_once("data/Author.php"); $author = new Author($this->db); if($author->checkAuthor($row['uuid'],$uid)==false) { return "您没有权限"; } $condition = " id=$id "; $sql = "DELETE FROM ".$this->tbl_doi." WHERE $condition"; return $this->db->exec($sql); }else{ return "该记录不存在"; } }else{ $condition = " id=$id "; $sql = "DELETE FROM ".$this->tbl_doi." WHERE $condition"; return $this->db->exec($sql); } } function _getParams(Zend_Controller_Request_Abstract $request) { $data = array( 'doi' => trim($request->getParam('doi')), 'uuid' => trim($request->getParam('uuid')), 'publisher' => trim($request->getParam('publisher')), 'url' => trim($request->getParam('url')), 'title' => trim($request->getParam('title')), 'title_en' => trim($request->getParam('title_en')), 'publisher_en' => trim($request->getParam('publisher_en')), 'info'=>$_POST['info'] ); return $data; } function checkinfo($info){ if(!is_array($info)){ return NULL; } foreach($info as $k=>$v) { if(empty($v['author']) && empty($v['organization']) && empty($v['order']) && empty($v['author_en']) && empty($v['organization_en']) ) { unset($info[$k]); }else{ if(empty($v['author'])) { return "请输入 $k 中的作者"; } if(empty($v['organization'])) { return "请输入 $k 中的单位"; } if(empty($v['author_en'])) { return "请输入 $k 中的作者英文"; } if(empty($v['organization_en'])) { return "请输入 $k 中的单位英文"; } if(empty($v['order'])) { return "请输入 $k 中的排序"; } } } return $info; } function sksort($array,$key,$type=SORT_DESC) { $sortArray = array(); foreach($array as $v){ foreach($v as $key=>$value){ if(!isset($sortArray[$key])){ $sortArray[$key] = array(); } $sortArray[$key][] = $value; } } if(array_multisort($sortArray[$key],$type,$array)) { return $array; }else{ return $array; } } }