426 lines
12 KiB
PHP
426 lines
12 KiB
PHP
<?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->rewiterstatus($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 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 "";}
|
|
}
|
|
|
|
/**
|
|
*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) || empty($status) || !in_array($status,$stvalues))
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$sql = "update mdstatus set status='$status' where id='$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');
|
|
|
|
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.id,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
|
|
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.id,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(){
|
|
|
|
}
|
|
|
|
|
|
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")."','1')";
|
|
try{
|
|
if($this->db->exec($sql)>0)
|
|
{
|
|
$this->messenger->addMessage('操作成功!该数据已放入评审');
|
|
$this->_redirect("/admin/review");
|
|
}
|
|
}catch( Exception $e){
|
|
$this->messenger->addMessage('操作失败:'.$e->getMessage());
|
|
$this->_redirect("/admin/review");
|
|
}
|
|
}
|
|
|
|
}
|
|
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.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 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);
|
|
$body="尊敬的西部数据中心用户:
|
|
您已经成功注册,请妥善保管您的账号信息
|
|
|
|
用户名:$username
|
|
|
|
密码: $password
|
|
|
|
感谢您的注册
|
|
|
|
西部数据中心服务组";
|
|
|
|
$body.="";
|
|
$mail->setBodyText($body);
|
|
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
|
|
$mail->addTo($email);
|
|
$mail->setSubject('欢迎注册成为西部数据中心用户');
|
|
$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 专家库
|
|
|
|
}
|
|
|