db = $db; } function fetch() { $sql = "SELECT * FROM ".$this->tbl_doi." ORDER BY id 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){ $doi_info = $this->view($uuid); if(!$doi_info) { $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; } }else{ $this->add($data); } } function data_process_in(&$data){ $authors = array(); $orgs = array(); foreach($data['info'] as $k=>$v) { $authors[$v['order']] = $v['author']; $orgs[$v['order']] = $v['organization']; } $authors = "{".join(",",$authors)."}"; $orgs = "{".join(",",$orgs)."}"; $data['authors'] = $authors; $data['organization'] = $orgs; unset($data['info']); } 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 _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')), 'info'=>$this->checkinfo($_POST['info']) ); if(!is_array($data['info'])){ return $data['info']; }else{ $data['info'] = $this->sksort($data['info'],"order",SORT_DESC); } 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'])) { unset($info[$k]); }else{ if(empty($v['author'])) { return "请输入 $k 中的作者"; } if(empty($v['organization'])) { 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; } } }