westdc-zf1/application/admin/controllers/ReviewController.php

1188 lines
34 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class Admin_ReviewController extends Zend_Controller_Action
{
function preDispatch()
{
$this->db=Zend_Registry::get('db');
$this->view->config = Zend_Registry::get('config');
$this->messenger=$this->_helper->getHelper('FlashMessenger');
$this->view->messages = $this->messenger->getMessages();
}
function postDispatch()
{
//$this->view->messages = $this->messenger->getMessages();
}
function indexAction()
{
$sql = "select m.id,md.title,u.username,u.realname,m.status from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
order by m.id desc limit 10 ";
$re = $this->db->query($sql);
$queue = $re->fetchAll();
foreach ($queue as $k=>$v)
{
$queue[$k]['status']=$this->rewritestatus($v['status']);
}
$this->view->queue = $queue;
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity())
{
$user = $auth->getIdentity();
$userid = $user->id;
}
$sql = "select m.id,md.title,u.username,u.realname,m.status from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where u.id='$userid'";
$re = $this->db->query($sql);
$rows = $re->fetchAll();
$this->view->my = $rows;
}//indexAction
function rewritestatus($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 "";}
}
/**
*changestatus
*
*@param int $id //要更改状态的mdstatus记录的ID
*@param int $status //状态
*
*/
function changestatus($id,$status){
$stvalues = array(
-1, //取消评审
0, //初始状态
1, //接受元数据评审,进入评审阶段
2, //开始邀请专家,送审阶段
3, //专家接受邀请,在审阶段
4, //专家反馈,在审
5 //评审结束,发布
);
if(empty($id) || !isset($status) || !in_array($status,$stvalues))
{
return false;
}
else
{
if($status==1)
{$sql = "update mdstatus set status='$status',ts_accepted='now()' where id in ($id)"; }
else if($status==5)
{$sql = "update mdstatus set status='$status',ts_finished='now()' where id in ($id)";}
else
{$sql = "update mdstatus set status='$status' where id in ($id)";}
try{
if($this->db->exec($sql)>0)
{
return true;
}
}
catch(Exception $e)
{
return false;
}
}
}//changestatus 更改状态
function acceptAction()
{
$search = $this->_request->getParam('search');
$cancel = $this->_request->getParam('cancel');
$update = $this->_request->getParam('update');
$invite = $this->_request->getParam('invite');
if($cancel>0)
{
if($this->changestatus($cancel,-1))
{
$this->messenger->addMessage('操作成功:已取消该数据的评审');
$this->_redirect("/admin/review/accept");
}
else{
$this->messenger->addMessage('操作失败');
$this->_redirect("/admin/review/accept");
}
}//取消元数据评审
if($search)
{
$keyword = $this->_request->getParam('keyword');
if(!empty($keyword))
{
$sql = "select m.*,u.username,u.realname from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where m.status=1
and md.title like '%$keyword%'
";
$re = $this->db->query($sql);
$rows = $re->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;
}
}//搜索
else
{
$sql = "select m.*,md.title,u.username,u.realname from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where m.status=1";
$re = $this->db->query($sql);
$rows = $re->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;
}//列表
}//acceptAction
function inreviewAction(){
$show = $this->_request->getParam('show');
$search = $this->_request->getParam('search');
$keyword = $this->_request->getParam('keyword');
if($show>0)
{
$sql = "select m.*,md.*,u.realname from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where m.id=$show
";
$rs = $this->db->query($sql);
$rows = $rs->fetch();
$sql = "select exp.*,u.* from mdexpertreview exp
left join users u on u.id=exp.id
where exp.uuid='{$rows['uuid']}'";
$rs = $this->db->query($sql);
$exps = $rs->fetchAll();
$expname = array();
foreach ($exps as $k=>$v)
{
if($v['id']!='')
{
if($v['status']==1)
{
$v['status']="接受邀请";
}else if($v['status']==-1)
{
$v['status']="拒绝邀请";
}else if(empty($v['status']))
{
$v['status']="未答复";
}
$expname[] = '<li><a href="/admin/user/show/id/'.$v['id'].'">'.$v['realname'].'</a> [状态:'.$v['status'].']
[<a href="/admin/review/invite/user/'.$v['id'].'/uuid/'.$rows['uuid'].'/id/'.$show.'">再次发送邀请邮件</a>]</li>';
}
}
if(count($expname>0))
{$rows['exps'] = join('',$expname);}
$rows['status'] = $this->rewritestatus($rows['status']);
$this->view->info = $rows;
$this->_helper->viewRenderer('inreviewshow');
}//查看详细
else
{
$searchjoin = "";
if(!empty($search) && !empty($keyword))
{
$searchjoin = " and md.title like '%$keyword%'";
$this->view->keyword = $keyword;
}
$sql = "select m.id,md.title,m.status,m.uuid from mdstatus m
left join metadata md on md.uuid=m.uuid
where m.status in (2,3,4) $searchjoin";
$rs = $this->db->query($sql);
$rows = $rs->fetchAll();
foreach ($rows as $k=>$v)
{
$rows[$k]['status']=$this->rewritestatus($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;
}//列表
}//在审元数据
function inviteAction(){//邀请
$id = $this->_request->getParam('id');
$user = $this->_request->getParam('user');
if(empty($id))
{
$this->_redirect("/admin/review");
}
$search = $this->_request->getParam('search');
$keyword = $this->_request->getParam('keyword');
$submit = $this->_request->getParam('submit');
$exps = $this->_request->getParam('exps');
$stid = $this->_request->getParam('stid');
$uid = $this->_request->getParam('uid');
$this->view->id = $id;
if(!empty($submit))
{
if(is_array($exps))
{
$sql = "select m.uuid,m.title,s.status from metadata m
left join mdstatus s on s.uuid=m.uuid
where s.id='$id'";
$rs = $this -> db -> query($sql);
$md = $rs -> fetch();
$uuid = $md['uuid'];
foreach ($exps as $v)
{
$sql = "select m.id,u.realname,m.uuid,u.email from mdexpertreview m
left join users u on m.id=u.id
where m.uuid='$uuid' and m.id='$v'";
$rs = $this->db->query($sql);
$rows = $rs->fetch();
if($rows['id']!='')
{
$this->messenger->addMessage('已经邀请过专家:'.$rows['realname']);
}//已经有评审记录
else
{
$sql = "insert into mdexpertreview (id,uuid) values ('$v','$uuid')";
$expinfo="select realname,email from users where id='$v'";
$rs = $this->db->query($expinfo);
$expinfo = $rs->fetch();
try{
if($this->db->exec($sql)>0)
{
if($md['status']<2)
{
$update = "update mdstatus set status=2 where uuid='$uuid'";
@$this->db->exec($update);
}
//实例化EmailText
$mailtp=new EmailText($this->db,'invite-expert-review',array('user'=>$expinfo['realname'],'uuid'=>$uuid,'title'=>$md['title']));
$mail=new WestdcMailer($this->view->config->smtp);
$mail->setBodyText($mailtp->getBody());
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
$mail->addTo($expinfo['email']);
$mail->setSubject($mailtp->getSubject());
$filecontent=file_get_contents("http://" . $_SERVER['HTTP_HOST'].'/data/doc/review/1/uuid/'.$uuid);
$mail->createAttachment($filecontent,'application/octet-stream',Zend_Mime::DISPOSITION_ATTACHMENT, Zend_Mime::ENCODING_BASE64, $md['title'].'.doc');
if($mail->send())
{
$this->messenger->addMessage('成功邀请专家:'.$expinfo['realname']);
}else
{
$this->messenger->addMessage('邀请专家'.$expinfo['realname'].'的邮件发送失败,请尝试手动发送邀请邮件');
}
}
}catch(Exception $e){
$this->messenger->addMessage('邀请失败:'.$e->getMessage());
}
}//不存在原来的记录
}//循环结束
$this->_redirect("/admin/review/invite/?id=$id");
}
else
{
$this->messenger->addMessage('请选择要邀请的专家');
$this->_redirect("/admin/review/invite/?id=$id");
}
} elseif ($user>0) {
$uuid=$this->_request->getParam('uuid');
$sql="update mdexpertreview set ts_modified=now() where id='$user' and uuid='$uuid'";
$this->db->exec($sql);
$sql="select realname,email,(select title from metadata where uuid='$uuid') as title from users where id='$user'";
$row=$this->db->fetchRow($sql);
//实例化EmailText
$mailtp=new EmailText($this->db,'invite-expert-review',array('user'=>$row['realname'],'uuid'=>$uuid,'title'=>$row['title']));
$mail=new WestdcMailer($this->view->config->smtp);
$mail->setBodyText($mailtp->getBody());
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
$mail->addTo($row['email']);
$mail->setSubject($mailtp->getSubject());
$filecontent=file_get_contents("http://" . $_SERVER['HTTP_HOST'].'/data/doc/review/1/uuid/'.$uuid);
$mail->createAttachment($filecontent,'application/octet-stream',Zend_Mime::DISPOSITION_ATTACHMENT, Zend_Mime::ENCODING_BASE64, $row['title'].'.doc');
if($mail->send())
{
$this->messenger->addMessage('成功再次邀请专家:'.$row['realname']);
$this->_redirect("/admin/review/inreview/show/$id");
}else
{
$this->messenger->addMessage('邀请专家'.$row['realname'].'的邮件发送失败,请尝试手动发送邀请邮件');
$this->_redirect("/admin/review/inreview/show/$id");
}
}
$searchjoin = "";
if(!empty($search) && !empty($keyword))
{
$searchjoin = " where u.username like '%$keyword%'
or u.realname like '%$keyword%'
or u.unit like '%$keyword%'
or u.email like '%$keyword%'";
$this->view->keyword = $keyword;
}
$sql = "select me.id,u.username,u.realname,u.unit,u.phone,u.email from users u
right join mdexperts me on u.id=me.id
$searchjoin";
$re = $this->db->query($sql);
$rows = $re->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;
$sql = "select m.title from metadata m
left join mdstatus s on s.uuid=m.uuid
where s.id='$id'";
$re = $this->db->query($sql);
$title = $re->fetch();
$this->view->md=$title;
}//邀请专家
function changeadminAction(){
$id = $this->_request->getParam('id');
$uid = $this->_request->getParam('uid');
if(empty($id))
{
$this->_redirect("/admin/review");
}
$this->view->id = $id;
if(!empty($uid))
{
$sql = "update mdstatus set userid='$uid' where id='$id'";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('更改管理员成功');
$this->_redirect("/admin/review/changeadmin/?id=$id");
}
}
$sql = "select u.* from users u
where usertype='administrator'";
$re = $this->db->query($sql);
$rows = $re->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;
}//改变管理员
function addonAction(){
$uuid=$this->_request->getParam('uuid');
$sql = "select * from mdstatus where uuid='$uuid'";
$re = $this->db->query($sql);
$row = $re->fetch();
if(empty($row['id']))
{
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity())
{
$user = $auth->getIdentity();
$userid = $user->id;
$sql = "insert into mdstatus (uuid,userid,ts_scheduled,status) values ('$uuid','$userid','".date("Y-m-d H:i:s")."','0')";
try{
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('操作成功!该数据已放入评审');
$this->_redirect("/admin/review/draft");
}
}catch( Exception $e){
$this->messenger->addMessage('操作失败:'.$e->getMessage());
$this->_redirect("/admin/review/draft");
}
}
}
else
{
$this->messenger->addMessage('该数据已放入评审');
$this->_redirect("/admin/data/md");
}
}//将数据放入评审
function myreviewAction(){
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity())
{
$user = $auth->getIdentity();
$userid = $user->id;
}
$search=$this->_request->getParam('search');
$keyword = $this->_request->getParam('keyword');
$searchjoin = "";
if(!empty($search) && !empty($keyword))
{
$searchjoin = " and md.title like '%$keyword%'";
$this->view->keyword = $keyword;
}
$sql = "select m.id,md.uuid,md.title,u.username,u.realname,m.status from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where u.id='$userid' $searchjoin";
$re = $this->db->query($sql);
$rows = $re->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;
}//我管理的元数据
function postAction(){
$id = $this->_request->getParam('id');
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity())
{
$user = $auth->getIdentity();
$userid = $user->id;
$sql = "select id from mdstatus where userid='$userid'";
$rs = $this->db->query($sql);
$row = $rs->fetch();
if(!empty($row['id']))
{
if($this->changestatus($id,5))
{
$this->messenger->addMessage('操作成功:该元数据意见成功发布');
$this->_redirect("/admin/review/myreview");
}else{
$this->messenger->addMessage('操作失败');
$this->_redirect("/admin/review/myreview");
}
}else{
$this->messenger->addMessage('您没有权限操作其他管理员管理的元数据评审');
$this->_redirect("/admin/review/myreview");
}
}else
{
$this->messenger->addMessage('权限读取失败');
$this->_redirect("/admin/review/myreview");
}
}
function draftAction(){
$search=$this->_request->getParam('search');
$keyword = $this->_request->getParam('keyword');
$update = $this->_request->getParam('update');
if($update>0 || is_array($update))
{
$ids = '';
if(is_array($update))$ids = join(',',$update);
else $ids=$update;
if($this->changestatus($ids,1))
{
$this->messenger->addMessage('操作成功!');
$this->_redirect("/admin/review/draft");
}
else{
$this->messenger->addMessage('操作失败');
$this->_redirect("/admin/review/accept");
}
}//开始评审
$searchjoin = "";
if(!empty($search) && !empty($keyword))
{
$searchjoin = " and md.title like '%$keyword%'";
$this->view->keyword = $keyword;
}
$sql = "select m.id,md.title,md.uuid,u.username,u.realname,m.status,m.ts_created from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where status=0 $searchjoin";
$re = $this->db->query($sql);
$rows = $re->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;
}// draftAction 投稿元数据
function canceledAction(){
$search=$this->_request->getParam('search');
$keyword = $this->_request->getParam('keyword');
$update = $this->_request->getParam('update');
if($update>0 || is_array($update))
{
$ids = '';
if(is_array($update))$ids = join(',',$update);
else $ids=$update;
if($this->changestatus($ids,0))
{
$this->messenger->addMessage('操作成功!');
$this->_redirect("/admin/review/canceled");
}
else{
$this->messenger->addMessage('操作失败'.$ids);
$this->_redirect("/admin/review/canceled");
}
}//取消评审
$searchjoin = "";
if(!empty($search) && !empty($keyword))
{
$searchjoin = " and md.title like '%$keyword%'";
$this->view->keyword = $keyword;
}
$sql = "select m.id,md.title,md.uuid,u.username,u.realname,m.status from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where status=-1 $searchjoin";
$re = $this->db->query($sql);
$rows = $re->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;
}//被取消评审的元数据
function reviewedAction(){
$search=$this->_request->getParam('search');
$keyword = $this->_request->getParam('keyword');
$searchjoin = "";
if(!empty($search) && !empty($keyword))
{
$searchjoin = " and md.title like '%$keyword%'";
$this->view->keyword = $keyword;
}
$sql = "select m.id,md.title,md.uuid,u.username,u.realname,m.status,m.ts_finished from mdstatus m
left join metadata md on md.uuid=m.uuid
left join users u on u.id=m.userid
where status=5 $searchjoin";
$re = $this->db->query($sql);
$rows = $re->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;
}//已结束评审
function deleteAction(){
$id=$this->_request->getParam('id');
try{
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity())
{
$user = $auth->getIdentity();
$userid = $user->id;
$sql = "select id from mdstatus where userid='$userid' and id='$id'";
$rs = $this->db->query($sql);
$row = $rs->fetch();
if(!empty($row['id']))
{
$sql = "delete from mdstatus where id='$id'";
if($this->db->exec($sql))
{
$this->messenger->addMessage('删除成功');
$this->_redirect("/admin/review/myreview");
}else{
$this->messenger->addMessage('删除失败');
$this->_redirect("/admin/review/myreview");
}
}else{
$this->messenger->addMessage('您没有权限操作其他管理员管理的元数据评审');
$this->_redirect("/admin/review/myreview");
}
}else
{
$this->messenger->addMessage('权限读取失败');
$this->_redirect("/admin/review/myreview");
}
}catch(Exception $e){
$this->messenger->addMessage('删除失败:'.$e->getMessage());
$this->_redirect("/admin/review/myreview");
}
}
function expertsAction()
{
$search = $this->_request->getParam('search');
$keyword= $this->_request->getParam('keyword');
$submit = $this->_request->getParam('submit');
$edit = $this->_request->getParam('edit');
$del = $this->_request->getParam('del');
$add = $this->_request->getParam('add');
if($add)
{
if(!empty($submit))
{
foreach($_POST as $k=>$v)
{
$$k=$v;
}
$speciality = $_POST['speciality'];
$chars = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
$charsLen = count($chars) - 1;
shuffle($chars);
$output = "";
for ($i=0; $i<8; $i++)
{
$output .= $chars[mt_rand(0, $charsLen)];
}
$password=$output;
$testsql="select id from users where username='$username' or email='$email'";
$re=$this->db->query($testsql);
$test=$re->fetch();
if(!empty($test['id']))
{
$this->messenger->addMessage('用户名或邮箱重复');
$this->_redirect("/admin/review/experts");
}
else
{
$data = array(
'username' => $username,
'realname' => $realname,
'email' => $email,
'unit' => $unit,
'address' => $address,
'phone' => $phone,
'project' => $project,
'password' => md5($password)
);
if($this->db->insert('users',$data))
{
$mail=new WestdcMailer($this->view->config->smtp);
$mailtp=new EmailText($this->db,'expert-register',array('user'=>$username,'password'=>$password));
$mail->setBodyText($mailtp->getBody());
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
$mail->addTo($email);
$mail->setSubject($mailtp->getSubject());
$mail->send();
$sql="select id from users where username='{$data['username']}'";
$re=$this->db->query($sql);
$row = $re->fetch();
$sql="insert into mdexperts (id,speciality) values ('{$row['id']}','$speciality')";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('成功添加评审专家');
$this->_redirect("/admin/review/experts");
}
}
}
}
else
{
$this->_helper->viewRenderer('expertsadd');
}
}
if($del>0)
{
$sql="delete from mdexperts where id='$del'";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('删除成功!');
$this->_redirect('/admin/review/experts');
}
}
if($edit>0)
{
if(!empty($submit))
{
$speciality = $this->_request->getParam('speciality');
$sql = "update mdexperts set speciality='$speciality',ts_modified='".date("Y-m-d H:i:s",time())."' where id='$edit'";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('编辑成功!');
$this->_redirect('/admin/review/experts');
}
}
else
{
$sql = "select m.*,m.id as mid,u.* from mdexperts m left join users u on u.id=m.id
where m.id='$edit'";
$re = $this->db->query($sql);
$row = $re->fetch();
$this->view->infos = $row;
$this->view->id=$edit;
$this->_helper->viewRenderer('expertsedit');
}
}//编辑
if($search)
{
$sql = "select m.*,m.id as mid,u.* from mdexperts m left join users u on u.id=m.id
where u.realname like '%$keyword%' or m.speciality like '%$keyword%' or u.unit like '%$keyword%'";
$re = $this->db->query($sql);
$rows = $re->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;
}//搜索
else
{
$sql="select m.*,m.id as mid,u.* from mdexperts m left join users u on u.id=m.id";
$re = $this->db->query($sql);
$rows = $re->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.phtml');
$this->view->paginator=$paginator;
}//列表
}//expertsAction 专家库
function commentsAction(){
$ac = $this->_request->getParam('ac');
$uuid = $this->_request->getParam('uuid');
$id = $this->_request->getParam('id');
$q = $this->_request->getParam('q');
$search = $this->_request->getParam('search');
if($ac=='view' && !empty($id))
{
$redirect = "/admin/review/comments/ac/view/id/$id";
if(!is_numeric($id))
{
$this->messenger->addMessage('参数不正确,请按正确的步骤进行访问');
$this->_redirect($redirect);
}
$sql = "select r.id,r.uuid,r.mdcomment,r.datacomment,r.editorcomment,u.realname,md.title,att.filename,r.ts_created,ratt.attachid as attid from mdreview r
left join metadata md on md.uuid=r.uuid
left join users u on u.id=r.userid
left join mdreviewattach ratt on ratt.reviewid=r.id
left join attachments att on att.id=ratt.attachid
where r.id='$id'
";
$rs = $this->db->query($sql);
$row = $rs->fetch();
if(!empty($row['attid']))
{
$row['attid'] = '<a href="/admin/data/attachments/down/'.$row['attid'].'">下载</a>';
}
else
{
$row['attid'] = '无附件';
}
$this->view->info = $row;
$this->_helper->viewRenderer('commentsview');
}//查看单个元数据的评审
else if($ac=='list')
{
try{
$redirect = "/admin/review/comments/ac/list/";
$wheresql = array();
$userid = $this->_request->getParam('userid');
if(!empty($userid))
{
$redirect.="/uuid/$userid";
$wheresql[] = " r.userid='$userid' ";
}
if(!empty($uuid))
{
$redirect.="/uuid/$uuid";
$wheresql[] = " md.uuid='$uuid' ";
}
$wheresql[]=' r.status>-1 ';
if(!empty($q) && !empty($search))
{
if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$q) || !is_numeric($search))
{
$this->messenger->addMessage('您的输入的搜索条件包含非法请求,请不要输入特殊符号');
$this->_redirect($redirect);
}
$this->view->q = $q;
$wheresql[] = " (md.title like '%$q%' or u.realname like '%$q%') ";
}
if(count($wheresql>0))$wheresql = join(' and ',$wheresql);
else $wheresql='';
if($wheresql!='')
{
$wheresql = 'where '.$wheresql;
}
$sql = "select md.title,md.uuid,u.realname,r.id,r.ts_created,r.is_expert from mdreview r
left join metadata md on md.uuid=r.uuid
left join users u on u.id=r.userid
$wheresql
order by r.ts_created desc
";
$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.phtml');
$this->view->paginator=$paginator;
}catch(Exception $e){
echo $e->getMessage().'<br />';
}
$this->_helper->viewRenderer('commentslist');
}//评审意见列表 or 某条元数据的评审意见列表
else if($ac=='listbyuser')
{
try{
$redirect = "/admin/review/comments/ac/list/";
$wheresql = array();
$wheresql[]=' r.status>-1 ';
if(!empty($q) && !empty($search))
{
if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$q) || !is_numeric($search))
{
$this->messenger->addMessage('您的输入的搜索条件包含非法请求,请不要输入特殊符号');
$this->_redirect($redirect);
}
$this->view->q = $q;
$wheresql[] = " u.realname like '%$q%' ";
}
if(count($wheresql>0))$wheresql = join(' and ',$wheresql);
else $wheresql='';
if($wheresql!='')
{
$wheresql = 'where '.$wheresql;
}
$sql = "select u.id,u.realname as title,count(r.id) as c from mdreview r
left join metadata md on md.uuid=r.uuid
left join users u on u.id=r.userid
$wheresql
GROUP BY u.id,u.realname
";
$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.phtml');
$this->view->paginator=$paginator;
}catch(Exception $e){
echo $e->getMessage().'<br />';
}
$this->_helper->viewRenderer('commentslistbyuser');
}//按评审用户查看
else if($ac=='del' && !empty($id))
{
$redirect = "/admin/review/comments/ac/list/";
if(!is_numeric($id))
{
$this->messenger->addMessage('参数不正确,请按正确的步骤进行访问');
$this->_redirect($redirect);
}
$sql = "select r.id,att.filename,ratt.attachid as attid from mdreview r
left join mdreviewattach ratt on ratt.reviewid=r.id
left join attachments att on att.id=ratt.attachid
where r.id='$id'";
$rs = $this->db->query($sql);
$row = $rs->fetch();
if(!empty($row['filename']))
{
//需要删除文件通过Zend_Registry::get('upload')获得上传文件的根目录
$basepath = Zend_Registry::get('upload');
$filepath = $basepath.$row['filename'];
if(unlink($filepath))
{
$sql = "delete from mdreview where id='$id'";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('评审意见删除成功!');
$this->_redirect($redirect);
}
}
else
{
$sql = "delete from mdreview where id='$id'";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('评审意见删除成功!但附件删除失败,请手动删除文件:'.$row['filename']);
$this->_redirect($redirect);
}
}
}else{
$sql = "delete from mdreview where id='$id'";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('评审意见删除成功!');
$this->_redirect($redirect);
}
}
}//删除评审意见 同时删除附件
else if($ac=='rollback' && !empty($id))
{
$redirect = "/admin/review/comments/ac/list/";
$sql = "update mdreview set status=-1 where id=$id";
try{
if($this->db->exec($sql))
{
$this->messenger->addMessage('更改成功');
$this->_redirect($redirect);
}else{
$this->messenger->addMessage('更新失败');
$this->_redirect($redirect);
}
}catch(Exception $e){
$this->messenger->addMessage('更新失败:'.$e->getMessage());
$this->_redirect($redirect);
}
}//为用户重置为草稿状态
else
{
try{
$redirect = "/admin/review/comments";
$wheresql = array();
$wheresql[]=' r.status>-1 ';
if(!empty($q) && !empty($search))
{
if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$q) || !is_numeric($search))
{
$this->messenger->addMessage('您的输入的搜索条件包含非法请求,请不要输入特殊符号');
$this->_redirect($redirect);
}//非法请求过滤
$this->view->q = $q;
$wheresql[] = " md.title like '%$q%' ";
}
if(count($wheresql>0))$wheresql = join(' and ',$wheresql);
else $wheresql='';
if($wheresql!='')
{
$wheresql = 'where '.$wheresql;
}
$sql = "select md.title,md.uuid,count(r.id) as c from mdreview r
left join metadata md on md.uuid=r.uuid
$wheresql
GROUP BY md.title,md.uuid
";
$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.phtml');
$this->view->paginator=$paginator;
}catch(Exception $e){
echo $e->getMessage().'<br />';
}
}//列表
}//commentsAction 查看所有评审意见
}