2011-10-13 07:56:18 +00:00
< ? 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,s.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=7381 " ;
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/myreview' );
} //非法请求过滤
$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' );
}
} //最新收稿
}