#437 添加了长时间未登录用户的邀请功能
This commit is contained in:
parent
ad3c4507c5
commit
ceaf16e572
|
@ -496,6 +496,129 @@ class Admin_UserController extends Zend_Controller_Action
|
|||
|
||||
}// groupAction()
|
||||
|
||||
/*
|
||||
*
|
||||
* 给时间长没有登录的用户发送邀请邮件
|
||||
*
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
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";
|
||||
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,"author-new",array(
|
||||
'user' => $v['username'],
|
||||
'uid' => $v['id'],
|
||||
'realname'=> $v['realname'],
|
||||
'lastlogin'=> date("Y-m-d",$v['email']),
|
||||
));
|
||||
$mail->setBodyText($mailtp->getBody());
|
||||
$mail->setSubject($mailtp->getSubject());
|
||||
@$mail->addTo($v['email']);
|
||||
$result[$v['id']] = array(
|
||||
'username'=>$v['username'],
|
||||
'email'=>$v['email']
|
||||
);
|
||||
@$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;
|
||||
|
||||
}
|
||||
|
||||
}//sendemailAction()
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -5,4 +5,5 @@
|
|||
<li><a href="/admin/user/adminlist">管理员列表</a></li>
|
||||
<li><a href="/admin/user/group">用户组管理</a></li>
|
||||
<li><a href="/admin/review/experts">元数据评审专家库</a></li>
|
||||
<li><a href="/admin/user/sendmail/">长时间未登录用户</a></li>
|
||||
</ul>
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
$this->headTitle($this->config->title->site);
|
||||
$this->headTitle('后台管理');
|
||||
$this->headTitle()->setSeparator(' - ');
|
||||
$this->headLink()->appendStylesheet('/css/admin.css');
|
||||
$this->headLink()->appendStylesheet('/css/author.css');
|
||||
$this->breadcrumb('<a href="/">首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/">后台首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/user">用户管理</a>');
|
||||
$this->breadcrumb()->setSeparator(' > ');
|
||||
?>
|
||||
<style>
|
||||
.process {width:99%;height:20px;overflow:hidden;border:1px solid #6CF;}
|
||||
.process .display { position:absolute;height:20px;color:#6CF; margin:0px; padding:0px;}
|
||||
.process .np{display:block;height:20px;background-color:green;}
|
||||
</style>
|
||||
<div id="leftPanel">
|
||||
<?= $this->partial('user/left.phtml'); ?>
|
||||
</div>
|
||||
|
||||
<?php if ($this->msg or $this->messages) :?>
|
||||
<div id="message">
|
||||
<?php if ($this->msg) : ?>
|
||||
<p><?php echo $this->msg; ?></p>
|
||||
<?php endif; if ($this->messages): foreach($this->messages as $msg): ?>
|
||||
<p><?php echo $msg; ?></p>
|
||||
<?php endforeach;endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
<div id="rightPanel">
|
||||
<?php
|
||||
if(empty($this->stop)){ ?>
|
||||
<?php
|
||||
echo '<div class="process">';
|
||||
echo '<div class="display">'.$this->percent.'%</div>';
|
||||
echo '<div class="np" style="width:'.$this->percent.'%;"></div>';
|
||||
echo '</div>';
|
||||
?>
|
||||
<div id="datalist">
|
||||
<ul>
|
||||
<?php
|
||||
foreach($this->result as $v)
|
||||
{
|
||||
echo "<li>".$v['username'].' - '.$v['email'] . " - " . "" ."</li>\r\n";
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<script>
|
||||
function jump_url(now,page,time){
|
||||
self.location="/admin/user/sendmail/ac/send?"
|
||||
+"now=" + now
|
||||
+"&page=" + page
|
||||
+"&time=" + time;
|
||||
}
|
||||
function jump(now,page,time)
|
||||
{
|
||||
setTimeout("jump_url('"+now+"','"+page+"','"+time+"');",1000);
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
echo '<script>jump("'.$this->now.'","'.$this->page.'","'.$this->gotime.'")</script>';
|
||||
?>
|
||||
<?php } else {
|
||||
echo "邮件发送完成!";
|
||||
}
|
||||
?>
|
||||
</div>
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
$this->headTitle($this->config->title->site);
|
||||
$this->headTitle('后台管理');
|
||||
$this->headTitle()->setSeparator(' - ');
|
||||
$this->headLink()->appendStylesheet('/css/admin.css');
|
||||
$this->breadcrumb('<a href="/">首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/">后台首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/user">用户管理</a>');
|
||||
$this->breadcrumb()->setSeparator(' > ');
|
||||
?>
|
||||
<div id="leftPanel">
|
||||
<?= $this->partial('user/left.phtml'); ?>
|
||||
</div>
|
||||
|
||||
<?php if ($this->msg or $this->messages) :?>
|
||||
<div id="message">
|
||||
<?php if ($this->msg) : ?>
|
||||
<p><?php echo $this->msg; ?></p>
|
||||
<?php endif; if ($this->messages): foreach($this->messages as $msg): ?>
|
||||
<p><?php echo $msg; ?></p>
|
||||
<?php endforeach;endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
<div id="rightPanel">
|
||||
<div style="font-size:16px;line-height:30px;">3年内未登录的用户列表(共 <?= $this->count_users;?> 个)</div>
|
||||
|
||||
<div>
|
||||
<button type="button" onclick="self.location='/admin/user/sendmail/ac/send'" class="btn btn-green">发送邮件邀请用户访问</button>
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td width='150'>用户名</td>
|
||||
<td width='250'>电子邮箱</td>
|
||||
<td width='100'>用户类型</td>
|
||||
<td width='200'>单位</td>
|
||||
<td width='100'>真实姓名</td>
|
||||
<td width='150'>最后登录</td>
|
||||
</tr>
|
||||
</thead><!-- table's head -->
|
||||
<?php if (count($this->paginator)): ?>
|
||||
<?php $autoindex=0;?>
|
||||
<?php foreach ($this->paginator as $item): ?>
|
||||
<?php $autoindex++;?>
|
||||
<tr class="<?php if($autoindex%2 == 0) echo 'even'; else echo 'odd'; ?>">
|
||||
<td><?= $item['username']?></td>
|
||||
<td><?= $item['email']; ?></td>
|
||||
<td><?= $item['usertype']; ?></td>
|
||||
<td><?= $item['unit']; ?></td>
|
||||
<td><?= $item['realname']; ?></td>
|
||||
<td><?= date("Y-m-d",strtotime($item['ts_last_login'])); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
<div class="pagenavi"><?= $this->paginator; ?></div>
|
||||
</div>
|
Loading…
Reference in New Issue