269 lines
9.1 KiB
PHP
269 lines
9.1 KiB
PHP
<?php
|
|
class ReviewController extends Zend_Controller_Action
|
|
{
|
|
function preDispatch()
|
|
{
|
|
$this->view->config = Zend_Registry::get('config');
|
|
$this->db=Zend_Registry::get('db');
|
|
$this->messenger=$this->_helper->getHelper('FlashMessenger');
|
|
$this->view->messages = $this->messenger->getMessages();
|
|
}
|
|
function indexAction()
|
|
{
|
|
//最新10个收稿
|
|
$sql="select m.uuid,m.title,date(s.ts_created) as ts_created from mdstatus s left join metadata m on m.uuid=s.uuid where s.status=0 order by s.ts_created desc limit 10";
|
|
$this->view->mdreceived = $this->db->fetchAll($sql);
|
|
//最新10个接收
|
|
$sql="select m.uuid,m.title,s.ts_accepted from mdstatus s left join metadata m on m.uuid=s.uuid where s.status=1 order by s.ts_created desc limit 10";
|
|
$this->view->mdaccepted = $this->db->fetchAll($sql);
|
|
//最新10个送审
|
|
$sql="select m.uuid,m.title,s.ts_accepted from mdstatus s left join metadata m on m.uuid=s.uuid where s.status in (2,3,4) order by s.ts_created desc limit 10";
|
|
$this->view->mdinreview = $this->db->fetchAll($sql);
|
|
//最新10个已审
|
|
$sql="select m.uuid,m.title,s.ts_accepted from mdstatus s left join metadata m on m.uuid=s.uuid where s.status=5 order by s.ts_created desc limit 10";
|
|
$this->view->mdreviewed = $this->db->fetchAll($sql);
|
|
//统计数字
|
|
$sql="select (select count(*) from mdexperts) as experts,(select count(*) from mdstatus where status=0) as draft,(select count(*) from mdstatus where status=1) as accept,(select count(*) from mdstatus where status in (2,3,4)) as inreview,(select count(*) from mdstatus where status=5) as reviewed,(select count(*) from mdreview) as openreview,(select count(distinct(userid)) from mdreview) as openreviewuser";
|
|
$this->view->stat=$this->db->fetchRow($sql);
|
|
}
|
|
/*
|
|
* 数据浏览
|
|
*/
|
|
function browseAction()
|
|
{
|
|
$md=new MetadataTable();
|
|
$db=$md->getAdapter();
|
|
$page=(int)$this->_request->getParam('page');
|
|
if (empty($page)) $page=1;
|
|
$limit=10;
|
|
$offset=$limit*($page-1);
|
|
$state=$db->query('select count(*) from metadata');
|
|
$row=$state->fetchAll();
|
|
$sum=$row[0]['count'];
|
|
$select=$db->select();
|
|
$select->from('metadata','*')->order('id desc')->limitPage($page,$limit);
|
|
$this->view->metadata = $db->fetchAll($select);
|
|
$this->view->page=new Pagination($sum,$page,$limit);
|
|
}
|
|
|
|
function myreviewAction(){
|
|
|
|
$keyword = $this->_request->getParam('q');
|
|
$search = $this->_request->getParam('search');
|
|
|
|
try{
|
|
$auth = Zend_Auth::getInstance();
|
|
if($auth->hasIdentity())
|
|
{
|
|
$user = $auth->getIdentity();
|
|
$uid = $user->id;
|
|
}
|
|
else
|
|
{
|
|
$this->_redirect('/account/login/?href=/review/myreview');
|
|
}
|
|
|
|
$wheresql = array();
|
|
$wheresql[]=" mdexp.id='$uid' ";
|
|
|
|
if(!empty($keyword) && !empty($search))
|
|
{
|
|
if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$keyword) || !is_numeric($search))
|
|
{
|
|
$this->messenger->addMessage('您的输入的搜索条件包含非法请求,请不要输入特殊符号');
|
|
$this->_redirect('/review/myreview');
|
|
}//非法请求过滤
|
|
$this->view->keyword = $keyword;
|
|
$wheresql[] = " md.title like '%$keyword%' ";
|
|
// e.g. (... or md.author like '%keyword%')
|
|
}
|
|
|
|
$wheresql = join(' and ',$wheresql);
|
|
|
|
$sql = "select mdexp.id,mdexp.uuid,md.title from mdexpertreview mdexp
|
|
left join metadata md on md.uuid=mdexp.uuid
|
|
where $wheresql";
|
|
|
|
$rs = $this->db->query($sql);
|
|
$rows = $rs->fetchAll();
|
|
|
|
$paginator = Zend_Paginator::factory($rows);
|
|
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
|
$paginator->setItemCountPerPage($this->view->config->page->max);
|
|
$paginator->setView($this->view);
|
|
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
|
$this->view->paginator=$paginator;
|
|
}catch(Exception $e){
|
|
$this->messenger->addMessage('查询失败,请稍后重试 :(');
|
|
$this->_redirect('/review/myreview');
|
|
}
|
|
|
|
}//我参审的
|
|
|
|
function draftAction(){
|
|
|
|
$keyword = $this->_request->getParam('q');
|
|
$search = $this->_request->getParam('search');
|
|
|
|
try{
|
|
|
|
$wheresql = array();
|
|
$wheresql[]=" ms.status=1 ";
|
|
|
|
if(!empty($keyword) && !empty($search))
|
|
{
|
|
if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$keyword) || !is_numeric($search))
|
|
{
|
|
$this->messenger->addMessage('您的输入的搜索条件包含非法请求,请不要输入特殊符号');
|
|
$this->_redirect('/review/draft');
|
|
}//非法请求过滤
|
|
$this->view->keyword = $keyword;
|
|
$wheresql[] = " md.title like '%$keyword%' ";
|
|
}
|
|
|
|
$wheresql = join(' and ',$wheresql);
|
|
|
|
$sql = "select ms.uuid,ms.status,ms.ts_created,md.title,md.author from mdstatus ms
|
|
left join metadata md on md.uuid=ms.uuid
|
|
where $wheresql";
|
|
|
|
$rs = $this->db->query($sql);
|
|
$rows = $rs->fetchAll();
|
|
|
|
$paginator = Zend_Paginator::factory($rows);
|
|
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
|
$paginator->setItemCountPerPage($this->view->config->page->max);
|
|
$paginator->setView($this->view);
|
|
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
|
$this->view->paginator=$paginator;
|
|
|
|
}catch(Exception $e){
|
|
$this->messenger->addMessage('查询失败,请稍后重试 :(');
|
|
$this->_redirect('/review/draft');
|
|
}
|
|
|
|
}//最新收稿
|
|
|
|
function inreviewAction(){
|
|
|
|
$keyword = $this->_request->getParam('q');
|
|
$search = $this->_request->getParam('search');
|
|
|
|
try{
|
|
|
|
$wheresql = array();
|
|
$wheresql[]=" ms.status in (2,3,4) ";
|
|
|
|
if(!empty($keyword) && !empty($search))
|
|
{
|
|
if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$keyword) || !is_numeric($search))
|
|
{
|
|
$this->messenger->addMessage('您的输入的搜索条件包含非法请求,请不要输入特殊符号');
|
|
$this->_redirect('/review/inreview');
|
|
}//非法请求过滤
|
|
$this->view->keyword = $keyword;
|
|
$wheresql[] = " md.title like '%$keyword%' ";
|
|
}
|
|
|
|
$wheresql = join(' and ',$wheresql);
|
|
|
|
$sql = "select ms.uuid,ms.status,ms.ts_created,md.title,md.author from mdstatus ms
|
|
left join metadata md on md.uuid=ms.uuid
|
|
where $wheresql";
|
|
|
|
$rs = $this->db->query($sql);
|
|
$rows = $rs->fetchAll();
|
|
|
|
foreach($rows as $k=>$v)
|
|
{
|
|
$rows[$k]['status']=$this->rewiterstatus($v['status']);
|
|
}
|
|
|
|
$paginator = Zend_Paginator::factory($rows);
|
|
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
|
$paginator->setItemCountPerPage($this->view->config->page->max);
|
|
$paginator->setView($this->view);
|
|
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
|
$this->view->paginator=$paginator;
|
|
|
|
}catch(Exception $e){
|
|
$this->messenger->addMessage('查询失败,请稍后重试 :(');
|
|
$this->_redirect('/review/inreview');
|
|
}
|
|
|
|
}//在审阶段的元数据
|
|
|
|
|
|
function reviewedAction(){
|
|
|
|
$keyword = $this->_request->getParam('q');
|
|
$search = $this->_request->getParam('search');
|
|
|
|
try{
|
|
|
|
$wheresql = array();
|
|
$wheresql[]=" ms.status=5 ";
|
|
|
|
if(!empty($keyword) && !empty($search))
|
|
{
|
|
if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$keyword) || !is_numeric($search))
|
|
{
|
|
$this->messenger->addMessage('您的输入的搜索条件包含非法请求,请不要输入特殊符号');
|
|
$this->_redirect('/review/reviewed');
|
|
}//非法请求过滤
|
|
$this->view->keyword = $keyword;
|
|
$wheresql[] = " md.title like '%$keyword%' ";
|
|
}
|
|
|
|
$wheresql = join(' and ',$wheresql);
|
|
|
|
$sql = "select ms.uuid,ms.status,ms.ts_created,ts_finished,md.title,md.author from mdstatus ms
|
|
left join metadata md on md.uuid=ms.uuid
|
|
where $wheresql";
|
|
|
|
$rs = $this->db->query($sql);
|
|
$rows = $rs->fetchAll();
|
|
|
|
$paginator = Zend_Paginator::factory($rows);
|
|
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
|
$paginator->setItemCountPerPage($this->view->config->page->max);
|
|
$paginator->setView($this->view);
|
|
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
|
$this->view->paginator=$paginator;
|
|
|
|
}catch(Exception $e){
|
|
$this->messenger->addMessage('查询失败,请稍后重试 :(');
|
|
$this->_redirect('/review/reviewed');
|
|
}
|
|
|
|
}//已完成评审的元数据
|
|
|
|
|
|
function rewiterstatus($status){
|
|
if($status==-1)
|
|
{return "取消评审";}
|
|
else if($status==0)
|
|
{return "初始状态";}
|
|
else if($status==1)
|
|
{return "接受元数据评审";}
|
|
else if($status==2)
|
|
{return "专家评审中";}
|
|
else if($status==3)
|
|
{return "专家评审中";}
|
|
else if($status==4)
|
|
{return "专家反馈";}
|
|
else if($status==5)
|
|
{return "已发布";}
|
|
else
|
|
{return "";}
|
|
}//function rewriterstatus
|
|
|
|
function reviewAction() {
|
|
$uuid = $this->_request->getParam('uuid');
|
|
$sql=$this->db->quoteInto("select m.id,m.uuid,m.title,m.description,m.title_en from metadata m where m.uuid=?",$uuid);
|
|
$this->view->metadata=$this->db->fetchRow($sql);
|
|
}
|
|
|
|
}
|
|
|