db = $db; } function fetch($uid=0,$keyword='') { $wheresql=' 1=1 '; if(!empty($keyword)) { if(preg_match("/\'/",$keyword)) { $keyword = preg_replace("/\'/","''",$keyword); } $wheresql.=" and (d.title like '%$keyword%' or d.doi like '%$keyword%')"; } if(empty($uid)) { $sql = "SELECT *,array_to_json(organization_en) as orgen_json FROM ".$this->tbl_doi." d where ".$wheresql."ORDER BY d.ts_published desc,d.ts_submitted desc,d.ts_created DESC"; }else{ $sql = "SELECT d.*,array_to_json(d.organization_en) as orgen_json FROM ".$this->tbl_doi." d LEFT JOIN mdauthor a ON d.uuid=a.uuid WHERE a.userid=".$uid." AND a.status>0 and ".$wheresql." ORDER BY d.ts_published desc,d.ts_submitted desc,d.ts_created DESC "; } $rs = $this->db->query($sql); $rows = $rs->fetchAll(); return $rows; } function add($data){ $this->data_process_in($data); $sql="insert into ".$this->tbl_doi." (doi,uuid,url,title_en,publisher_en,author_en,organization_en) values('". $data['doi']."','".$data['uuid']."','".$data['url']."','".$data['title_en']."','".$data['publisher_en']."','".$data['author_en']. "',array[".$data['organization_en']."])"; return $this->db->exec($sql); } function update($data,$uuid,$uid=0){ if(!empty($uid)) { 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/dbh.php"); $dbh = new dbh($this->db); if(is_numeric($uuid)) { $condition = " id=$uuid "; }else{ $condition = " uuid='$uuid' "; } $sql="update $this->tbl_doi set doi='".$data['doi']."',uuid='".$data['uuid']."', url='".$data['url']."',title_en='".$data['title_en']."',publisher_en='".$data['publisher_en'] ."',author_en='".$data['author_en']."',organization_en=array[".$data['organization_en']."] where ".$condition; $state=$this->db->exec($sql); if( $state == true) { return true; }else{ return $state; } } } function update_en($data,$uuid,$uid=0){ if(!empty($uid)) { 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/dbh.php"); $dbh = new dbh($this->db); if(is_numeric($uuid)) { $condition = " id=$uuid "; }else{ $condition = " uuid='$uuid' "; } $sql="update $this->tbl_doi set doi='".$data['doi']."',uuid='".$data['uuid']."', url='".$data['url']."',title_en='".$data['title_en']."',publisher_en='".$data['publisher_en'] ."',author_en='".$data['author_en']."',organization_en=array[".$data['organization_en']."] where ".$condition; $state=$this->db->exec($sql); 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_en[(int)$v['order']] = $v['author_en']; $orgs_en[(int)$v['order']] = $v['organization_en']; } ksort($authors_en); ksort($orgs_en); $authors_en = "{".join(",",$authors_en)."}"; $orgs_en = "'".join("','",$orgs_en)."'"; $data['authors'] = '{}'; $data['organization'] = '{}'; $data['author_en'] = $authors_en; $data['organization_en'] = $orgs_en; unset($data['info']); } function data_process_out(&$data){ $authors_en = $this->array_split($data['author_en']); $orgs_en = json_decode($data['orgen_json']); $info = array(); foreach($authors_en as $k=>$v) { $info[$k] = array( 'author_en'=>str_replace("\"","",$authors_en[$k]), 'organization_en'=>str_replace("\"","",$orgs_en[$k]), 'order'=> count($authors_en)+$k ); } return $info; } function array_split($a){ return explode(',',substr($a,1,-1)); } function view($id) { if(is_numeric($id)) { $sql = "SELECT *,array_to_json(organization_en) as orgen_json FROM ".$this->tbl_doi." WHERE id=$id"; }else{ $sql = "SELECT *,array_to_json(organization_en) as orgen_json 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['order']) && empty($v['author_en']) && empty($v['organization_en']) ) { unset($info[$k]); }else{ 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; } } }