2013-05-02 09:54:38 +00:00
|
|
|
|
<?php
|
|
|
|
|
class Doi extends Zend_Controller_Plugin_Abstract
|
|
|
|
|
{
|
|
|
|
|
private $db; //传入PDO对象.
|
|
|
|
|
private $auth = NULL; //Zend_Auth 对象
|
|
|
|
|
|
|
|
|
|
//使用到的公共变量
|
|
|
|
|
public $tbl_doi = "datadoi";
|
|
|
|
|
|
|
|
|
|
function __construct($db)
|
|
|
|
|
{
|
|
|
|
|
$this->db = $db;
|
|
|
|
|
}
|
|
|
|
|
|
2013-06-29 16:15:23 +00:00
|
|
|
|
function fetch($uid=0,$keyword='')
|
2013-05-02 09:54:38 +00:00
|
|
|
|
{
|
2013-06-29 16:15:23 +00:00
|
|
|
|
$wheresql=' 1=1 ';
|
|
|
|
|
if(!empty($keyword))
|
|
|
|
|
{
|
|
|
|
|
if(preg_match("/\'/",$keyword))
|
|
|
|
|
{
|
|
|
|
|
$keyword = preg_replace("/\'/","''",$keyword);
|
|
|
|
|
}
|
|
|
|
|
$wheresql.=" and d.title like '%$keyword%'";
|
|
|
|
|
}
|
2013-05-02 09:54:38 +00:00
|
|
|
|
if(empty($uid))
|
|
|
|
|
{
|
2013-06-29 16:15:23 +00:00
|
|
|
|
$sql = "SELECT * FROM ".$this->tbl_doi." d where ".$wheresql."ORDER BY d.ts_published desc,d.ts_submitted desc,d.ts_created DESC";
|
2013-05-02 09:54:38 +00:00
|
|
|
|
}else{
|
2013-06-29 16:15:23 +00:00
|
|
|
|
$sql = "SELECT d.* 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
|
2013-05-02 09:54:38 +00:00
|
|
|
|
";
|
|
|
|
|
}
|
|
|
|
|
$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){
|
2013-05-09 03:55:46 +00:00
|
|
|
|
if(!empty($uid))
|
2013-05-02 09:54:38 +00:00
|
|
|
|
{
|
2013-05-09 03:55:46 +00:00
|
|
|
|
include_once("data/Author.php");
|
|
|
|
|
$author = new Author($this->db);
|
|
|
|
|
if($author->checkAuthor($uuid,$uid)==false)
|
|
|
|
|
{
|
|
|
|
|
return "您没有权限";
|
|
|
|
|
}
|
2013-05-02 09:54:38 +00:00
|
|
|
|
}
|
|
|
|
|
$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)
|
|
|
|
|
{
|
2013-05-09 08:20:44 +00:00
|
|
|
|
$authors[$v['order']] = str_replace(",",",",$v['author']);
|
|
|
|
|
$orgs[$v['order']] = str_replace(",",",",$v['organization']);
|
|
|
|
|
$authors_en[$v['order']] = str_replace(",",",",$v['author_en']);
|
|
|
|
|
$orgs_en[$v['order']] = str_replace(",",",",$v['organization_en']);
|
2013-05-02 09:54:38 +00:00
|
|
|
|
}
|
|
|
|
|
$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(
|
2013-05-09 08:20:44 +00:00
|
|
|
|
'author'=>str_replace("\"","",$authors[$k]),
|
|
|
|
|
'organization'=>str_replace("\"","",$orgs[$k]),
|
|
|
|
|
'author_en'=>str_replace("\"","",$authors_en[$k]),
|
|
|
|
|
'organization_en'=>str_replace("\"","",$orgs_en[$k]),
|
2013-05-09 03:53:27 +00:00
|
|
|
|
'order'=> count($authors)+($k-1)
|
2013-05-02 09:54:38 +00:00
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
//include_once("helper/view.php");
|
|
|
|
|
//view::Dump($info);
|
|
|
|
|
return $info;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function array_split($a){
|
2013-05-08 05:42:57 +00:00
|
|
|
|
/*$a = str_replace("{",'',$a);
|
|
|
|
|
$a = str_replace("}",'',$a);
|
|
|
|
|
$a = explode(",",$a); */
|
2013-05-08 13:30:16 +00:00
|
|
|
|
return explode(',',substr($a,1,-1));
|
2013-05-02 09:54:38 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|