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

287 lines
7.8 KiB
PHP
Executable File

<?php
class Admin_UserController 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 count(id) as total from users";
$uq=$this->db->query($sql);
$row=$uq->fetch();
$sqlt="select count(id) as total from users where usertype='administrator'";
$uqt=$this->db->query($sqlt);
$adminrow=$uqt->fetch();
$this->view->su=$row;
$this->view->suadmin=$adminrow;
}//indexAction
function listAction()
{
$select=$this->db->select();
$select->from('users')
->where('usertype = ?', 'member')
->order('users.id desc');
$paginator = Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber($this->_getParam('page'));
$paginator->setItemCountPerPage(30);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
$this->view->paginator=$paginator;
}//listAction
function searchAction()
{
$search = $this->_getParam('search');
$realname = $this->view->realname = $this->_getParam('realname');
$unit = $this->view->unit = $this->_getParam('unit');
$project = $this->view->project = $this->_getParam('project');
$select=$this->db->select();
if(!empty($search) && ( !empty($realname) || !empty($unit) || !empty($project) ))
{
$this->messenger->addMessage('搜索结果');
$select->from('users');
if(!empty($realname))
{
$select->where('realname like ? ', '%'.$realname.'%');
$select->orWhere('username like ? ', '%'.$realname.'%');
}
if(!empty($unit))
$select->where('unit like ? ', '%'.$unit.'%');
if(!empty($project))
$select->where('project like ? ', '%'.$project.'%');
$select->order('users.id desc');
$paginator = Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber($this->_getParam('page'));
$paginator->setItemCountPerPage(30);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
$this->view->paginator=$paginator;
$this->_helper->viewRenderer('list');
}
else {
$this->_redirect("/admin/user/list");
}
}//searchAction
function deleteAction()
{
$delete=(int)$this->_getParam('id');
$deletename = $this->_getParam('uname');
if (isset($delete))
{
$sql="delete from users where id=?";
try {
$this->db->query($sql,array($delete));
$this->messenger->addMessage('您已经成功的删除了用户:'.$deletename);
} catch (Exception $e) {
$this->messenger->addMessage($e->getMessage());
}
$this->_redirect("/admin/user/list");
}
}
function adminlistAction()
{
$select=$this->db->select();
$select->from('users')
->where('usertype = ?', 'administrator')
->order('users.id desc');
$paginator = Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber($this->_getParam('page'));
$paginator->setItemCountPerPage(30);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
$this->view->paginator=$paginator;
}
function showAction()
{
$id=(int)$this->_getParam('id');
if (isset($id))
{
try {
$sql="select * from users where id=?";
$result=$this->db->query($sql,$id);
$rows = $result->fetch();
$this->view->infos=$rows;
} catch (Exception $e) {
$this->messenger->addMessage($e->getMessage());
}
}
else
{
$this->_redirect("/admin/user/list");
}
}//showAction()
function upAction()
{
$id=(int)$this->_getParam('id');
if (isset($id))
{
try {
$sql="select u.*,m.id as mid from users u left join mdexperts m on m.id=u.id where u.id='$id'";
$result = $this->db->query($sql);
$ex = $result->fetch();
if(empty($ex['mid'])){
$submit=$this->_getParam('submit');
$speciality = $this->_getParam('speciality');
if($submit)
{
$sql="insert into mdexperts (id,speciality) values ('$id','$speciality')";
if($this->db->exec($sql)>0)
{
$this->messenger->addMessage('已经成功将用户提升为评审专家');
$this->_redirect("/admin/user/list");
}
}
else
{
$this->view->infos = $ex;
}
}else
{
$this->messenger->addMessage("该用户已经是评审专家");
$this->_redirect("/admin/user/list");
}
} catch (Exception $e) {
$this->messenger->addMessage($e->getMessage());
$this->_redirect("/admin/user/list");
}
}
else
{
$this->_redirect("/admin/user/list");
}
}//upAction() 把用户提升为评审专家
function editAction()
{
$id=(int)$this->_getParam('id');
$usertype=$this->_getParam('usertype');
$newpwd=$this->_getParam('newpwd');
$cfnewpwd=$this->_getParam('cfnewpwd');
$sql="";
$updates=array();
if (isset($id))
{
if(!empty($newpwd)&&!empty($cfnewpwd))
{
if($newpwd==$cfnewpwd)
{
$password=md5($newpwd);
$updates[]="password='$password'";
}
else
{
$this->messenger->addMessage('两次密码不相同');
$this->_redirect("/admin/user/show/id/$id");
}
}
if(isset($usertype))
{
$updates[]="usertype='$usertype'";
}
$update=join(',',$updates);
$sql="update users set $update where id='$id'";
try {
$this->db->query($sql);
$this->messenger->addMessage('编辑成功!');
} catch (Exception $e) {
$this->messenger->addMessage($e->getMessage());
}
$this->_redirect("/admin/user/show/id/$id");
}
else {
$this->_redirect("/admin/user/list");
}
}
function fetchpwdAction()
{
$id=(int)$this->_getParam('id');
$email=$this->_getParam('email');
if (!empty($email))
{
try {
$sql="select * from users where email=?";
$uq=$this->db->query($sql,$email);
if ($urow=$uq->fetch())
{
//email the url to user
$username=$urow['username'];
$sql="update users set activation=? where email=?";
$uid=uniqid();
$this->db->query($sql,array($uid,$email));
$mail=new WestdcMailer($this->view->config->smtp);
$body="尊敬的西部数据中心用户:
有人提出了针对此用户名的密码重置请求。
用户名:";
$body.=$username;
$body.="
若想重置您的密码请打开下面的链接,否则请忽略此邮件,一切如常。
";
$body.="http://westdc.westgis.ac.cn/account/fetchpwd/".$username."/".$uid;
$mail->setBodyText($body);
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
$mail->addTo($email);
$mail->setSubject('密码已重置');
$mail->send();
$this->messenger->addMessage('密码重置成功!');
}
} catch (Exception $e) {
$this->messenger->addMessage($e->getMessage().$email);
}
$this->_redirect("/admin/user/show/id/$id");
}
else {
$this->_redirect("/admin/user/list");
}
}
//overview
}