1204 lines
29 KiB
PHP
Executable File
1204 lines
29 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();
|
||
$this->view->theme = new Theme();
|
||
}
|
||
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
|
||
|
||
|
||
/*
|
||
* groupAction() 用户组管理
|
||
*
|
||
*/
|
||
function groupAction(){
|
||
|
||
$ac = $this->_getParam('ac');
|
||
$groupsTable = "groups";
|
||
$userGroupTable = "usergroup";
|
||
$nameField = $paramName = "name";
|
||
include_once("Users.php");
|
||
$u = new Users($this->db);
|
||
|
||
if(empty($ac) || $ac == "index")
|
||
{
|
||
$select=$this->db->select();
|
||
|
||
|
||
$select->from($groupsTable)
|
||
->order('groups.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;
|
||
}//首页
|
||
|
||
if($ac == "add")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$data[$nameField] = $this->_getParam($paramName);
|
||
|
||
if(empty($data[$nameField]))
|
||
{
|
||
$this->jsonexit(array("error"=>'请输入组名'));
|
||
return true;
|
||
}
|
||
|
||
if($this->db->insert($groupsTable,$data))
|
||
{
|
||
$this->jsonexit(array("status"=>1));
|
||
return true;
|
||
}else{
|
||
$this->jsonexit(array("error"=>"出现错误,请重试"));
|
||
return true;
|
||
}
|
||
|
||
return true;
|
||
}//增加用户组
|
||
|
||
if($ac == "edit")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$id = $this->_getParam('id');
|
||
$data[$nameField] = $this->_getParam($paramName);
|
||
|
||
if(empty($id))
|
||
{
|
||
$this->jsonexit(array("error"=>'参数错误'));
|
||
return true;
|
||
}
|
||
|
||
if(empty($data[$nameField]))
|
||
{
|
||
$this->jsonexit(array("error"=>'请输入组名'));
|
||
return true;
|
||
}
|
||
|
||
if($this->db->update($groupsTable,$data,"id=$id"))
|
||
{
|
||
$this->jsonexit(array("status"=>1,"name"=>$data[$nameField]));
|
||
return true;
|
||
}else{
|
||
$this->jsonexit(array("error"=>"出现错误,请重试"));
|
||
return true;
|
||
}
|
||
|
||
return true;
|
||
}//编辑
|
||
|
||
if($ac == "del")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$id = $this->_getParam('id');
|
||
|
||
if(empty($id))
|
||
{
|
||
$this->jsonexit(array("error"=>'参数错误'));
|
||
return true;
|
||
}
|
||
|
||
if($this->db->delete($groupsTable,"id=$id"))
|
||
{
|
||
$this->jsonexit(array("status"=>1));
|
||
return true;
|
||
}else{
|
||
$this->jsonexit(array("error"=>"出现错误,请重试"));
|
||
return true;
|
||
}
|
||
|
||
return true;
|
||
}//删除
|
||
|
||
if($ac == "show")
|
||
{
|
||
$this->_helper->viewRenderer('group-users');
|
||
|
||
$gid = (int)$this->_getParam('id');
|
||
|
||
if(empty($gid))
|
||
{
|
||
echo "参数错误!";
|
||
return true;
|
||
}
|
||
|
||
$this->view->groupid = $gid;
|
||
|
||
$sql = "SELECT ug.uid,ug.gid,u.id,u.username,u.realname,u.email FROM $userGroupTable ug
|
||
LEFT JOIN users u ON ug.uid=u.id
|
||
WHERE ug.gid=$gid
|
||
ORDER BY ug.ts_created DESC";
|
||
$sth = $this->db->query($sql);
|
||
$rows = $sth->fetchAll();
|
||
|
||
$paginator = Zend_Paginator::factory($rows);
|
||
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
||
$paginator->setItemCountPerPage(20);
|
||
$paginator->setView($this->view);
|
||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
||
$this->view->paginator=$paginator;
|
||
|
||
}//查看用户
|
||
|
||
if($ac == "adduser")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$data['uid'] = $this->_getParam('uid');
|
||
$data['gid'] = $this->_getParam('gid');
|
||
|
||
if(empty($data['uid']) || empty($data['gid']))
|
||
{
|
||
$this->jsonexit(array("error"=>'参数错误'));
|
||
return true;
|
||
}
|
||
|
||
$sql = "SELECT * FROM users WHERE id={$data['uid']}";
|
||
$sth = $this->db->query($sql);
|
||
$rows = $sth->fetchAll();
|
||
if(count($rows)<1)
|
||
{
|
||
$this->jsonexit(array("error"=>'用户不存在'));
|
||
return true;
|
||
}
|
||
|
||
$sql = "SELECT * FROM $userGroupTable WHERE uid={$data['uid']} AND gid='{$data['gid']}'";
|
||
$sth = $this->db->query($sql);
|
||
$rows = $sth->fetchAll();
|
||
|
||
if(count($rows)>0)
|
||
{
|
||
$this->jsonexit(array("error"=>'该用户已经存在于要加入的组'));
|
||
return true;
|
||
}
|
||
|
||
if($this->db->insert($userGroupTable,$data))
|
||
{
|
||
$this->jsonexit(array("status"=>1));
|
||
return true;
|
||
}else{
|
||
$this->jsonexit(array("error"=>"出现错误,请重试"));
|
||
return true;
|
||
}
|
||
|
||
return true;
|
||
}//往组中添加用户
|
||
|
||
if($ac == "deluser")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$uid = $this->_getParam('uid');
|
||
$gid = $this->_getParam('gid');
|
||
|
||
if(empty($uid) || empty($gid))
|
||
{
|
||
$this->jsonexit(array("error"=>'参数错误'));
|
||
return true;
|
||
}
|
||
|
||
if($this->db->delete($userGroupTable,"uid=$uid AND gid=$gid"))
|
||
{
|
||
$this->jsonexit(array("status"=>1));
|
||
return true;
|
||
}else{
|
||
$this->jsonexit(array("error"=>"出现错误,请重试"));
|
||
return true;
|
||
}
|
||
|
||
return true;
|
||
}//从组中删除用户
|
||
|
||
|
||
}// groupAction()
|
||
|
||
//管理用户权限
|
||
public function userauthAction()
|
||
{
|
||
$this->_helper->viewRenderer('auth-user');
|
||
include_once("Users.php");
|
||
$User = new Users($this->db);
|
||
$uid = $this->_getParam('uid');
|
||
if(!empty($uid))
|
||
{
|
||
$this->view->uid = $uid;
|
||
}
|
||
|
||
$ac = $this->_getParam('ac');
|
||
|
||
if(empty($ac) || $ac == "index")
|
||
{
|
||
if(empty($uid))
|
||
{
|
||
$this->view->error = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
$paginator = Zend_Paginator::factory($User->UAuthFetch($uid));
|
||
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
||
$paginator->setItemCountPerPage(20);
|
||
$paginator->setView($this->view);
|
||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
||
$this->view->paginator=$paginator;
|
||
|
||
}//index
|
||
|
||
if($ac == "add")
|
||
{
|
||
$this->_helper->viewRenderer('auth-user-add');
|
||
$this->view->ac = "add";
|
||
|
||
if(empty($uid))
|
||
{
|
||
$this->view->msg = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
$submit = $this->_getParam('submit');
|
||
if(!empty($submit))
|
||
{
|
||
$module = $this->_getParam('name_module');
|
||
$controller = $this->_getParam('name_controller');
|
||
$action = $this->_getParam('name_action');
|
||
$special = $this->_getparam('name_special');
|
||
$allow = $this->_getParam('allow');
|
||
|
||
if(empty($module) && empty($controller) && empty($action) && empty($special))
|
||
{
|
||
$this->view->error = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
$options = array(
|
||
'module'=>$module,
|
||
'controller'=>$controller,
|
||
'action'=>$action,
|
||
'special'=>$special
|
||
);
|
||
|
||
if($User->UAuthAdd($uid,$options,$allow))
|
||
{
|
||
$this->view->msg = "添加成功!";
|
||
$this->view->jump_url = "/admin/user/userauth?uid=".$uid;
|
||
}else{
|
||
$this->view->msg = "添加失败,请重试";
|
||
}
|
||
}
|
||
}//add
|
||
|
||
if($ac == "del")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$id = $this->_getParam('id');
|
||
if(empty($id))
|
||
{
|
||
$data = array("error"=>'参数错误');
|
||
$this->jsonexit($data);
|
||
return true;
|
||
}
|
||
|
||
if($User->UAuthDel($id))
|
||
{
|
||
$this->jsonexit(array('deleted'=>$id));
|
||
return true;
|
||
}else{
|
||
$this->jsonexit(array('error'=>'移除失败,请重试'));
|
||
return true;
|
||
}
|
||
|
||
}//del
|
||
|
||
if($ac == "clearall")
|
||
{
|
||
if(empty($uid))
|
||
{
|
||
$this->view->error = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
if($User->UAuthDel(-1,$uid))
|
||
{
|
||
$this->view->msg = "清除成功!";
|
||
$this->view->jump_url = "/admin/user/userauth?uid=".$uid;
|
||
return true;
|
||
}else{
|
||
$this->view->msg = "清除失败,请重试";
|
||
$this->view->jump_url = "/admin/user/userauth?uid=".$uid;
|
||
return true;
|
||
}
|
||
|
||
}//clearall
|
||
|
||
if($ac == "clone")
|
||
{
|
||
if(empty($uid))
|
||
{
|
||
$this->view->msg = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
$this->_helper->viewRenderer('auth-user-clone');
|
||
$this->view->ac = "clone";
|
||
|
||
$submit = $this->_getParam('submit');
|
||
|
||
if(!empty($submit))
|
||
{
|
||
$target = $this->_getParam('target');
|
||
if(empty($target))
|
||
{
|
||
$this->view->error = "请输入将此用户权限要克隆到的用户ID";
|
||
return true;
|
||
}
|
||
|
||
if($User->AuthClone($uid,$target)>0)
|
||
{
|
||
$this->view->msg = "克隆成功";
|
||
return true;
|
||
}else{
|
||
$this->view->error = "克隆失败,请查证Email的正确性";
|
||
return true;
|
||
}
|
||
}
|
||
|
||
}//clone
|
||
|
||
}//userauthAction()
|
||
|
||
//组权限
|
||
public function groupauthAction(){
|
||
|
||
$this->_helper->viewRenderer('auth-group');
|
||
include_once("Users.php");
|
||
$User = new Users($this->db);
|
||
$gid = $this->_getParam('gid');
|
||
if(!empty($gid))
|
||
{
|
||
$this->view->gid = $gid;
|
||
}
|
||
|
||
$ac = $this->_getParam('ac');
|
||
|
||
if(empty($ac) || $ac == "index")
|
||
{
|
||
if(empty($gid))
|
||
{
|
||
$this->view->error = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
$paginator = Zend_Paginator::factory($User->GAuthFetch($gid));
|
||
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
||
$paginator->setItemCountPerPage(20);
|
||
$paginator->setView($this->view);
|
||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
||
$this->view->paginator=$paginator;
|
||
|
||
}//index
|
||
|
||
if($ac == "add")
|
||
{
|
||
$this->_helper->viewRenderer('auth-group-add');
|
||
$this->view->ac = "add";
|
||
|
||
if(empty($gid))
|
||
{
|
||
$this->view->msg = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
$submit = $this->_getParam('submit');
|
||
if(!empty($submit))
|
||
{
|
||
$module = $this->_getParam('name_module');
|
||
$controller = $this->_getParam('name_controller');
|
||
$action = $this->_getParam('name_action');
|
||
$special = $this->_getparam('name_special');
|
||
$allow = $this->_getParam('allow');
|
||
|
||
if(empty($module) && empty($controller) && empty($action) && empty($special))
|
||
{
|
||
$this->view->error = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
$options = array(
|
||
'module'=>$module,
|
||
'controller'=>$controller,
|
||
'action'=>$action,
|
||
'special'=>$special
|
||
);
|
||
|
||
if($User->GAuthAdd($gid,$options,$allow))
|
||
{
|
||
$this->view->msg = "添加成功!";
|
||
$this->view->jump_url = "/admin/user/groupauth?gid=".$gid;
|
||
}else{
|
||
$this->view->msg = "添加失败,请重试";
|
||
}
|
||
}
|
||
}//add
|
||
|
||
if($ac == "del")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$id = $this->_getParam('id');
|
||
if(empty($id))
|
||
{
|
||
$data = array("error"=>'参数错误');
|
||
$this->jsonexit($data);
|
||
return true;
|
||
}
|
||
|
||
if($User->GAuthDel($id))
|
||
{
|
||
$this->jsonexit(array('deleted'=>$id));
|
||
return true;
|
||
}else{
|
||
$this->jsonexit(array('error'=>'移除失败,请重试'));
|
||
return true;
|
||
}
|
||
|
||
}//del
|
||
|
||
if($ac == "clearall")
|
||
{
|
||
if(empty($gid))
|
||
{
|
||
$this->view->error = "参数错误";
|
||
return true;
|
||
}
|
||
|
||
if($User->GAuthDel(-1,$gid))
|
||
{
|
||
$this->view->msg = "清除成功!";
|
||
$this->view->jump_url = "/admin/user/userauth?uid=".$uid;
|
||
return true;
|
||
}else{
|
||
$this->view->msg = "清除失败,请重试";
|
||
$this->view->jump_url = "/admin/user/userauth?uid=".$uid;
|
||
return true;
|
||
}
|
||
|
||
}//clearall
|
||
|
||
}
|
||
|
||
/*
|
||
*
|
||
* 给时间长没有登录的用户发送邀请邮件
|
||
*
|
||
*/
|
||
public function sendmailAction(){
|
||
|
||
$ac = $this->_getParam('ac');
|
||
|
||
if(empty($ac) || $ac=='index')
|
||
{
|
||
$time = date("Y-m-d H:i:s",time()-3*365*24*3600);
|
||
|
||
$sql = "SELECT * FROM users
|
||
WHERE ts_last_login<'$time'
|
||
ORDER BY ts_last_login DESC";
|
||
$sth = $this->db->query($sql);
|
||
$rows = $sth->fetchAll();
|
||
|
||
$paginator = Zend_Paginator::factory($rows);
|
||
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
||
$paginator->setItemCountPerPage(20);
|
||
$paginator->setView($this->view);
|
||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
||
$this->view->paginator=$paginator;
|
||
|
||
$this->view->count_users = count($rows);
|
||
return true;
|
||
|
||
}
|
||
|
||
if($ac == "send")
|
||
{
|
||
$this->_helper->viewRenderer('sendmail-send');
|
||
|
||
//当前进行到的数量
|
||
$now = $this->_getParam('now');
|
||
|
||
//需要将起始的时间传递过来,防止sql中出现多余的用户
|
||
$time = $this->_getParam('time');
|
||
if(empty($time))
|
||
{
|
||
$time = date("Y-m-d H:i:s",time()-3*365*24*3600);
|
||
}
|
||
$this->view->gotime = $time;
|
||
|
||
//当前处理的页数
|
||
$page = $this->_getParam('page');
|
||
if(empty($page))
|
||
{
|
||
$page = 0;
|
||
}
|
||
|
||
$step = 20;
|
||
|
||
$sql = "SELECT count(id) as c FROM users
|
||
WHERE ts_last_login<'$time'";
|
||
|
||
$sth = $this->db->query($sql);
|
||
$row = $sth->fetch();
|
||
|
||
$total = $row['c'];
|
||
|
||
if(empty($now))
|
||
{
|
||
$now = 0;
|
||
}
|
||
|
||
//此次读取的起点
|
||
$start = $now + $step;
|
||
|
||
if($start>$total)
|
||
{
|
||
$this->view->stop = "YES";
|
||
$msg = array(
|
||
"title"=>"为长时间未登录用户发送邀请",
|
||
"body"=>"在 ".time()." 时间给最后登陆时间在". $time ."之前的用户发送了邀请访问邮件。 "
|
||
);
|
||
include_once("message.php");
|
||
message::post($this->db,0,-1,$msg['title'],$msg['body']);
|
||
return true;
|
||
}
|
||
|
||
$sql = "SELECT * FROM users
|
||
WHERE ts_last_login<'$time'
|
||
ORDER BY ts_last_login DESC
|
||
LIMIT $step
|
||
OFFSET $start";
|
||
|
||
$sth = $this->db->query($sql);
|
||
$rows = $sth->fetchAll();
|
||
|
||
$result = array();
|
||
|
||
foreach($rows as $k=>$v)
|
||
{
|
||
include_once("EmailText.php");
|
||
$mail=new WestdcMailer($this->view->config->smtp);
|
||
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
|
||
$mailtp=new EmailText($this->db,"user-invite",array(
|
||
'user' => $v['username'],
|
||
'uid' => $v['id'],
|
||
'realname'=> $v['realname'],
|
||
'lastlogin'=> date("Y-m-d",strtotime($v['ts_last_login'])),
|
||
));
|
||
$mail->setBodyText($mailtp->getBody());
|
||
$mail->setSubject($mailtp->getSubject());
|
||
@$mail->addTo($v['email']);
|
||
$result[$v['id']] = array(
|
||
'username'=>$v['username'],
|
||
'email'=>$v['email'],
|
||
'lastlogin'=>date("Y-m-d",strtotime($v['ts_last_login']))
|
||
);
|
||
//@$mail->send();
|
||
}
|
||
|
||
|
||
$this->view->result = $result;
|
||
$this->view->now = $start;
|
||
$this->view->total = $total;
|
||
|
||
$percent = round( ( $start / $total ) * 100 ,1);
|
||
$this->view->percent = $percent;
|
||
|
||
$page ++;
|
||
|
||
$this->view->page = $page;
|
||
|
||
return true;
|
||
|
||
}
|
||
|
||
//黑河用户邮件
|
||
if($ac == "heihe")
|
||
{
|
||
|
||
$this->_helper->viewRenderer('sendmail-heihe');
|
||
|
||
$sql = "SELECT * FROM heiheuser ORDER BY id DESC";
|
||
|
||
$sth = $this->db->query($sql);
|
||
|
||
$rows = $sth->fetchAll();
|
||
|
||
$paginator = Zend_Paginator::factory($rows);
|
||
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
||
$paginator->setItemCountPerPage(20);
|
||
$paginator->setView($this->view);
|
||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
||
$this->view->paginator=$paginator;
|
||
|
||
$this->view->count_users = count($rows);
|
||
|
||
return true;
|
||
|
||
}
|
||
|
||
//黑河邮件发送
|
||
if($ac == "heihemail")
|
||
{
|
||
$this->_helper->viewRenderer('sendmail-heihe-send');
|
||
|
||
//当前进行到的数量
|
||
$now = $this->_getParam('now');
|
||
|
||
//当前处理的页数
|
||
$page = $this->_getParam('page');
|
||
if(empty($page))
|
||
{
|
||
$page = 0;
|
||
}
|
||
|
||
$step = 20;
|
||
|
||
$sql = "SELECT count(id) as c FROM heiheuser";
|
||
|
||
$sth = $this->db->query($sql);
|
||
$row = $sth->fetch();
|
||
|
||
$total = $row['c'];
|
||
|
||
if(empty($now))
|
||
{
|
||
$now = 0;
|
||
}
|
||
|
||
//此次读取的起点
|
||
$start = $now + $step;
|
||
|
||
if($start>$total)
|
||
{
|
||
$this->view->stop = "YES";
|
||
$msg = array(
|
||
"title"=>"为数字黑河用户发送了邮件通知",
|
||
"body"=>"在 ".time()." 时间给数字黑河用户发送了邮件通知 "
|
||
);
|
||
include_once("message.php");
|
||
message::post($this->db,0,-1,$msg['title'],$msg['body']);
|
||
return true;
|
||
}
|
||
|
||
$sql = "SELECT * FROM heiheuser
|
||
ORDER BY id DESC
|
||
LIMIT $step
|
||
OFFSET $start";
|
||
|
||
$sth = $this->db->query($sql);
|
||
$rows = $sth->fetchAll();
|
||
|
||
$result = array();
|
||
|
||
foreach($rows as $k=>$v)
|
||
{
|
||
|
||
include_once("EmailText.php");
|
||
$mail=new WestdcMailer($this->view->config->smtp);
|
||
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
|
||
$mailtp=new EmailText($this->db,"user-heihe-invite",array(
|
||
'user' => $v['username'],
|
||
'uid' => $v['id'],
|
||
'lastlogin'=> date("Y-m-d",strtotime($v['lastlogin'])),
|
||
));
|
||
$mail->setBodyText($mailtp->getBody());
|
||
$mail->setSubject($mailtp->getSubject());
|
||
@$mail->addTo($v['email']);
|
||
|
||
$result[$v['id']] = array(
|
||
'username'=>$v['username'],
|
||
'email'=>$v['email'],
|
||
'lastlogin'=>date("Y-m-d",strtotime($v['lastlogin']))
|
||
);
|
||
//@$mail->send();
|
||
}
|
||
|
||
|
||
$this->view->result = $result;
|
||
$this->view->now = $start;
|
||
$this->view->total = $total;
|
||
|
||
$percent = round( ( $start / $total ) * 100 ,1);
|
||
$this->view->percent = $percent;
|
||
|
||
$page ++;
|
||
|
||
$this->view->page = $page;
|
||
|
||
$this->view->url = "/admin/user/sendmail/ac/heihemail?now=".$start."&page=".$page;
|
||
|
||
return true;
|
||
}
|
||
|
||
//节日祝贺邮件
|
||
if($ac == "holiday")
|
||
{
|
||
$this->_helper->viewRenderer('sendmail-holiday');
|
||
|
||
$sql = "SELECT count(id) as c FROM users";
|
||
$sth = $this->db->query($sql);
|
||
$row = $sth->fetch();
|
||
|
||
$this->view->count_users = $row['c'];
|
||
|
||
$sql = "SELECT * FROM emailtext WHERE \"template\"='user-holiday-email'";
|
||
$sth = $this->db->query($sql);
|
||
$row = $sth->fetch();
|
||
|
||
$this->view->mailtemp = $row;
|
||
|
||
return true;
|
||
}
|
||
|
||
//节日祝贺邮件
|
||
if($ac == "holidaymail")
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$title = $this->_getParam('title');
|
||
$body = $this->_getParam('content');
|
||
|
||
if(empty($title) || empty($body))
|
||
{
|
||
$this->jsonexit(array("error"=>"请填写邮件标题和内容"));
|
||
return true;
|
||
}
|
||
|
||
//当前进行到的数量
|
||
$now = $this->_getParam('now');
|
||
|
||
//当前处理的页数
|
||
$page = $this->_getParam('page');
|
||
if(empty($page))
|
||
{
|
||
$page = 0;
|
||
}
|
||
|
||
$step = 20;
|
||
|
||
$sql = "SELECT count(id) as c FROM users";
|
||
|
||
$sth = $this->db->query($sql);
|
||
$row = $sth->fetch();
|
||
|
||
$total = $row['c'];
|
||
|
||
if(empty($now))
|
||
{
|
||
$now = 0;
|
||
}
|
||
|
||
//此次读取的起点
|
||
$start = $now + $step;
|
||
|
||
if($start>$total)
|
||
{
|
||
$stop = "YES";
|
||
$msg = array(
|
||
"title"=>"为用户发送了节日祝贺邮件",
|
||
"body"=>"在 ".time()." 为用户发送了节日祝贺邮件 "
|
||
);
|
||
include_once("message.php");
|
||
message::post($this->db,0,-1,$msg['title'],$msg['body']);
|
||
}
|
||
|
||
$sql = "SELECT * FROM users
|
||
ORDER BY id DESC
|
||
LIMIT $step
|
||
OFFSET $start";
|
||
|
||
$sth = $this->db->query($sql);
|
||
$rows = $sth->fetchAll();
|
||
|
||
$result = array();
|
||
$sended = 0;
|
||
|
||
foreach($rows as $k=>$v)
|
||
{
|
||
$replace_data = array(
|
||
'username' => $v['username'],
|
||
'uid' => $v['id'],
|
||
'lastlogin'=> date("Y-m-d",strtotime($v['ts_last_login'])),
|
||
);
|
||
|
||
$patterns = array();
|
||
$replacements = array();
|
||
foreach($replace_data as $k=>$v)
|
||
{
|
||
$patterns[]='/{'.$k.'}/i';
|
||
$replacements[]=$v;
|
||
}
|
||
ksort($patterns);
|
||
ksort($replacements);
|
||
$send_body = preg_replace($patterns, $replacements, $body);
|
||
$send_subject = preg_replace($patterns, $replacements, $title);
|
||
|
||
|
||
/*
|
||
$mail=new WestdcMailer($this->view->config->smtp);
|
||
$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
|
||
$mail->setBodyText($send_body);
|
||
$mail->setSubject($send_subject);
|
||
@$mail->addTo($v['email']);
|
||
if(@$mail->send())
|
||
{
|
||
$sended ++;
|
||
$status = "成功";
|
||
}else{
|
||
$status = "失败";
|
||
}
|
||
*/
|
||
|
||
$sended ++;
|
||
/*
|
||
调试时前台循环输出result
|
||
$result[$v['id']] = array(
|
||
'username'=>$v['username'],
|
||
'email'=>$v['email'],
|
||
'send_body'=>$send_body,
|
||
'send_subject'=>$send_subject
|
||
);
|
||
*/
|
||
|
||
|
||
}
|
||
|
||
$percent = round( ( $start / $total ) * 100 ,1);
|
||
|
||
if($percent > 100)
|
||
{
|
||
$percent = 100;
|
||
}
|
||
$page ++;
|
||
|
||
$data = array(
|
||
'now'=>$start,
|
||
'total'=>$total,
|
||
'percent'=>$percent,
|
||
'page'=>$page,
|
||
'sended'=>$sended,
|
||
'url'=> "/admin/user/sendmail/ac/holidaymail?now=".$start."&page=".$page."&title=".$title."&body=".urlencode($body),
|
||
'content'=>$body,
|
||
'title'=>$title,
|
||
'status'=>1,
|
||
'result'=>$result //用于调试
|
||
);
|
||
|
||
if(!empty($stop))
|
||
{
|
||
$data['stop'] = $stop;
|
||
$data['status'] = 0;
|
||
}
|
||
|
||
$this->jsonexit($data);
|
||
return true;
|
||
}
|
||
|
||
}//sendemailAction()
|
||
|
||
|
||
|
||
public function jsonexit($data){
|
||
$this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK));
|
||
return true;
|
||
}
|
||
}
|
||
|