2011-09-20 03:57:39 +00:00
< ? php
class Admin_DownController 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 ()
{
//其他连接
}
//离线数据申请管理
function offlineappAction ()
{
$view = ( int ) $this -> _getParam ( 'view' );
$start = ( int ) $this -> _getParam ( 'start' );
$finish = ( int ) $this -> _getParam ( 'finish' );
$cancel = ( int ) $this -> _getParam ( 'cancel' );
$deny = ( int ) $this -> _getParam ( 'deny' );
$page = ( int ) $this -> _getParam ( 'page' );
$reset = ( int ) $this -> _getParam ( 'reset' );
if ( ! $page ) $page = 1 ;
if ( $view ) {
//查看此次申请的pdf
$sql = " select * from offlineapp where id=? " ;
$row = $this -> db -> fetchRow ( $sql , array ( $view ));
$content = file_get_contents ( $this -> view -> config -> offline -> savepath . " / " . $row [ 'pdflink' ]);
header ( " Content-Disposition: inline; filename= " . $row [ 'pdflink' ]);
header ( " Content-Type:application/pdf " );
echo $content ;
die (); // do not change current html output
} elseif ( $start ) {
$sql = " update dataorder set status=4 where offlineappid=? " ;
$this -> db -> query ( $sql , array ( $start ));
$sql = " select * from offlineapp where id=? " ;
$row = $this -> db -> fetchRow ( $sql , array ( $start ));
//发送用户邮件进行信息提示和说明
$mail = new WestdcMailer ( $this -> view -> config -> smtp );
2011-12-05 08:00:57 +00:00
$datalist = str_replace ( " ; " , " \n " , $row [ 'datalist' ]);
$mailtp = new EmailText ( $this -> db , 'offline-start' , array ( 'user' => $row [ 'username' ], 'datalist' => $datalist ));
$mail -> setBodyText ( $mailtp -> getBody ());
2011-10-26 15:01:51 +00:00
$mail -> setSubject ( $mailtp -> getSubject ());
2011-12-08 09:22:54 +00:00
$mail -> addTo ( $row [ 'email' ]);
2011-09-20 03:57:39 +00:00
$mail -> setFrom ( $this -> view -> config -> service -> email , '西部数据中心服务组' );
2011-12-08 09:22:54 +00:00
$mail -> send ();
2011-12-12 08:38:07 +00:00
unset ( $mail );
$mail = new WestdcMailer ( $this -> view -> config -> smtp );
2011-12-13 06:19:49 +00:00
$mailtp = new EmailText ( $this -> db , 'offline-start-admin' , array ( 'user' => $row [ 'username' ], 'datalist' => $datalist ));
2011-12-12 08:38:07 +00:00
$mail -> setFrom ( $this -> view -> config -> service -> email , '西部数据中心服务组' );
2011-12-12 08:44:21 +00:00
$sql = " select distinct(res.email) from dataorder d left join role on d.uuid=role.uuid left join responsible res on role.resid=res.id where length(res.email)>4 and d.offlineappid=? and role.role in ('pointOfContact','resourceProvider') " ;
2011-12-08 09:22:54 +00:00
$rows = $this -> db -> fetchAll ( $this -> db -> quoteInto ( $sql , $start ));
$addrs = array ();
foreach ( $rows as $row )
{
$addrs [] = $row [ 'email' ];
}
//收件人邮箱
$addrs [] = 'nztong@lzb.ac.cn' ;
$addrs [] = 'wjian@lzb.ac.cn' ;
$addrs [] = 'lixin@lzb.ac.cn' ;
$mail -> setBodyText ( $mailtp -> getBody ());
$mail -> setSubject ( $mailtp -> getSubject ());
$mail -> addTo ( $addrs );
$mail -> addCc ( $this -> view -> config -> service -> email , '西部数据中心服务组' );
2011-12-12 08:55:12 +00:00
$sql = " select pdflink from offlineapp where id=? " ;
2011-12-12 08:57:50 +00:00
$row = $this -> db -> fetchRow ( $sql , array ( $start ));
2011-12-12 08:55:12 +00:00
$filecontent = file_get_contents ( $this -> view -> config -> offline -> savepath . " / " . $row [ 'pdflink' ]);
2011-12-08 09:22:54 +00:00
$mail -> createAttachment ( $filecontent , 'application/octet-stream' , Zend_Mime :: DISPOSITION_ATTACHMENT , Zend_Mime :: ENCODING_BASE64 , 'offlineapp.pdf' );
2011-09-20 03:57:39 +00:00
$mail -> send ();
//提示信息
2011-12-08 09:22:54 +00:00
$this -> messenger -> addMessage ( '提示信息:该离线数据已经开始处理,并发送邮件给申请人以及数据管理委员会,请在处理完成后点击“完成”。' );
2011-09-20 03:57:39 +00:00
$this -> _redirect ( '/admin/down/offlineapp/' . $page );
} elseif ( $finish ) {
try {
$sql = " update dataorder set status=5,ts_approved=now() where offlineappid=? " ;
$this -> db -> query ( $sql , array ( $finish ));
$sql = " update offlineapp set ts_approved=now() where id=? and ts_approved is null " ;
$this -> db -> query ( $sql , array ( $finish ));
$sql = " select * from offlineapp where id=? " ;
$row = $this -> db -> fetchRow ( $sql , array ( $finish ));
$sql = " select * from dataorder left join dataset on dataset.uuid=dataorder.uuid where dataorder.offlineappid=? " ;
$rs = $this -> db -> fetchAll ( $sql , array ( $finish ));
$has_ftp1 = false ;
foreach ( $rs as $data ) {
if ( $data [ 'host' ] == 'ftp1.westgis.ac.cn' )
$has_ftp1 = true ;
// deal with ftp.westgis.ac.cn, use g6 to add path
// todo ...
}
//deal with ftp1 account
if ( $has_ftp1 ) {
$user = ( object ) array ( " id " => $row [ 'userid' ],
" username " => " westdc_ " . $row [ 'userid' ],
" password " => md5 ( 'westdc' . $row [ 'userid' ] . rand ( 1000 , 9999 )),
" time " => date ( 'Y-m-d H:i:s' , strtotime ( '+2 week' )),
//"path"=>$path,
" maxdata " => $this -> view -> config -> download -> max ,
" datacount " => 1 //represent one offline application
);
$proftp = new Proftp ();
$proftp -> db = $this -> db ;
if ( $proftp -> createuser ( $user ))
{
$user -> datacount = 0 ; //force this offline to be true
$proftp -> createuser ( $user );
$this -> messenger -> addMessage ( '提示信息:该用户申请的数据过多,请检查该用户之前已完成的申请。' );
}
//发送用户邮件进行信息提示和说明
$mail = new WestdcMailer ( $this -> view -> config -> smtp );
2011-11-27 08:51:13 +00:00
//实例化EmailText
2011-12-05 08:00:57 +00:00
$mailtp = new EmailText ( $this -> db , 'offline-finish' ,
array ( 'user' => $row [ 'username' ], 'datalist' => str_replace ( " ; " , " \n " , $row [ 'datalist' ]),
2011-11-27 08:51:13 +00:00
'ftpuser' => $user -> username , 'ftppwd' => $proftp -> pwd , 'ftptime' => $proftp -> time ));
$mail -> setBodyText ( $mailtp -> getBody ());
2011-12-05 08:00:57 +00:00
$mail -> setFrom ( $this -> view -> config -> service -> email , '西部数据中心服务组' );
2011-09-20 03:57:39 +00:00
$mail -> addTo ( $row [ 'email' ]);
2011-11-27 08:51:13 +00:00
$mail -> setSubject ( $mailtp -> getSubject ());
2011-09-20 03:57:39 +00:00
$mail -> send ();
} //ftp1 deal
$this -> messenger -> addMessage ( '提示信息:该离线数据已经处理完成。' );
} catch ( Exception $e ) {
//提示信息
$this -> messenger -> addMessage ( $e -> getMessage ());
$this -> messenger -> addMessage ( '提示信息:该数据有可能还没有收到纸质申请表。' );
}
$this -> _redirect ( '/admin/down/offlineapp/' . $page );
} elseif ( $cancel ) {
//取消=删除?
//用户提出申请的取消操作
//$sql="update dataorder set status=-1 where (status=3 or status=4) and userid=?";
$sql = " delete from dataorder where offlineappid=? and (status=3 or status=4) " ;
$this -> db -> query ( $sql , array ( $cancel ));
$sql = " delete from offlineapp where id=? " ;
$this -> db -> query ( $sql , array ( $cancel ));
$this -> messenger -> addMessage ( '提示信息:已删除该用户离线申请。' );
$this -> _redirect ( '/admin/down/offlineapp/' . $page );
} elseif ( $deny ) {
$sql = " update dataorder set status=-1 where offlineappid=? and (status=3 or status=4) " ;
$this -> db -> query ( $sql , array ( $deny ));
$sql = " update offlineapp set ts_approved=now(),status=-1 where id=? and ts_approved is null " ;
$this -> db -> query ( $sql , array ( $deny ));
$this -> messenger -> addMessage ( '提示信息:已拒绝该用户离线申请。' );
$this -> _redirect ( '/admin/down/offlineapp/' . $page );
} else if ( $reset ){
if ( $reset < 0 )
{
$fortime = date ( 'Y-m-d' ,( time () - 24 * 3600 * 365 ));
$sql = " update dataorder set status=1 where status=3 and ts_created < ' $fortime ' " ;
if ( $this -> db -> exec ( $sql ) > 0 )
{
$this -> messenger -> addMessage ( '已经成功重置了 ' . $fortime . ' 前的所有申请' );
$this -> _redirect ( '/admin/down/offlineapp/' );
}
}
else if ( $reset > 0 )
{
$sql = " update dataorder set status='1' where status='3' and offlineappid=' $reset ' " ;
if ( $this -> db -> exec ( $sql ) > 0 )
{
$this -> messenger -> addMessage ( '已经成功对该申请重置' );
$this -> _redirect ( '/admin/down/offlineapp/' );
}
else {
$this -> messenger -> addMessage ( '没有找到对应数据,无法进行重置,可能是旧记录没有匹配数据造成的' );
$this -> _redirect ( '/admin/down/offlineapp/' );
}
} //elseif
//if
} //reset
$select = " select distinct(o.*) from offlineapp o
left join dataorder d on o . id = d . offlineappid
where o . ts_approved is null
and o . pdflink is not null
2011-12-12 08:55:12 +00:00
and d . status in ( 3 , 4 )
2011-09-20 03:57:39 +00:00
order by o . ts_created desc " ;
$rs = $this -> db -> query ( $select );
$rows = $rs -> fetchAll ();
$paginator = Zend_Paginator :: factory ( $rows );
$paginator -> setCurrentPageNumber ( $page );
$paginator -> setItemCountPerPage ( $this -> view -> config -> page -> max );
$paginator -> setView ( $this -> view );
Zend_View_Helper_PaginationControl :: setDefaultViewPartial ( 'pagination.phtml' );
$this -> view -> paginator = $paginator ;
}
//离线数据服务记录
function offlineAction ()
{
$add = ( int ) $this -> _getParam ( 'add' );
$edit = ( int ) $this -> _getParam ( 'edit' );
$delete = ( int ) $this -> _getParam ( 'delete' );
$down = ( int ) $this -> _getParam ( 'down' );
$update = $this -> _getParam ( 'update' );
$show = $this -> _getParam ( 'show' );
$undelete = $this -> _getParam ( 'undelete' );
2011-09-29 02:24:47 +00:00
$emaillist = $this -> _getParam ( 'emaillist' );
2011-09-20 03:57:39 +00:00
if ( $add ) {
$form = new OfflinelogForm ();
$form -> pdf -> setDestination ( $this -> view -> config -> offline -> savepath );
if ( $this -> _request -> isPost ()) {
$formdata = $this -> _request -> getPost ();
if ( $form -> isValid ( $formdata )) {
$uploadedData = $form -> getValues ();
$pdf = basename ( $form -> pdf -> getFileName ());
$sql = " insert into offlineapp (username,email,unit,phone,address,postcode,project,pdflink,datalist,ts_created,ts_approved) values(?,?,?,?,?,?,?,?,?,?,now()) " ;
$this -> db -> query ( $sql , array ( $formdata [ 'username' ], $formdata [ 'email' ], $formdata [ 'unit' ], $formdata [ 'phone' ], $formdata [ 'address' ], $formdata [ 'postcode' ], $formdata [ 'project' ], $pdf , $formdata [ 'datalist' ], $formdata [ 'ts_approved' ]));
$this -> messenger -> addMessage ( '提示信息:您已经成功添加该离线服务记录。' );
$this -> _redirect ( '/admin/down/offline' );
} else {
$form -> populate ( $formdata );
}
}
$this -> view -> form = $form ;
$this -> _helper -> viewRenderer ( 'offlineadd' );
2011-09-29 02:28:27 +00:00
} //添加服务记录
elseif ( $edit ){
2011-09-20 03:57:39 +00:00
$form = new OfflinelogForm ();
$form -> pdf -> setRequired ( false );
if ( $this -> _request -> isPost ()) {
$formdata = $this -> _request -> getPost ();
if ( $form -> isValid ( $formdata )) {
$uploadedData = $form -> getValues ();
$pdf = basename ( $form -> pdf -> getFileName ());
$sql = " update offlineapp set username=?,email=?,unit=?,phone=?,address=?,postcode=?,project=?, " ;
if ( $form -> pdf -> isUploaded ()) $sql .= " pdflink=?, " ;
$sql .= " datalist=?,ts_approved=? where id=? " ;
$param = array ( $formdata [ 'username' ], $formdata [ 'email' ], $formdata [ 'unit' ], $formdata [ 'phone' ], $formdata [ 'address' ], $formdata [ 'postcode' ], $formdata [ 'project' ]);
if ( $form -> pdf -> isUploaded ()) $param [] = $pdf ;
$param [] = $formdata [ 'datalist' ];
$param [] = $formdata [ 'ts_approved' ];
$param [] = $edit ;
$this -> db -> query ( $sql , $param );
$this -> messenger -> addMessage ( '提示信息:您已经编辑添加该记录。' );
$this -> _redirect ( '/admin/down/offline' );
} else {
$form -> populate ( $formdata );
}
} else {
$sql = " select * from offlineapp where id=? " ;
$formdata = $this -> db -> fetchRow ( $sql , array ( $edit ));
$form -> submit -> setLabel ( '保存' );
$form -> populate ( $formdata );
}
$this -> view -> form = $form ;
$this -> _helper -> viewRenderer ( 'offlineadd' );
2011-09-29 02:28:27 +00:00
} //编辑
elseif ( $delete ) {
2011-09-20 03:57:39 +00:00
$sql = " delete from offlineapp where id=' $delete ' " ;
$sql2 = " delete from dataorder where offlineappid=' $delete ' " ;
if ( $this -> db -> exec ( $sql ) > 0 )
{
if ( $this -> db -> exec ( $sql2 ) > 0 )
{
$this -> messenger -> addMessage ( '成功删除了数据服务记录,并且删除了关联的申请记录' );
$this -> _redirect ( " /admin/down/offline " );
}
else
{
$this -> messenger -> addMessage ( '成功删除了数据服务记录,但并未找到关联的申请记录' );
$this -> _redirect ( " /admin/down/offline " );
}
}
else {
$this -> messenger -> addMessage ( '删除失败' );
$this -> _redirect ( " /admin/down/offline " );
}
2011-09-29 02:28:27 +00:00
} //删除服务记录
else if ( $down ) {
2011-09-20 03:57:39 +00:00
$this -> _helper -> layout -> disableLayout ();
$this -> _helper -> viewRenderer -> setNoRender ();
$sql = " select * from offlineapp where ts_approved is not null and pdflink is not null order by ts_created desc " ;
$rows = $this -> db -> fetchAll ( $sql );
foreach ( $rows as $row ){
2011-10-24 06:47:19 +00:00
$content .= '"' . $row [ 'username' ] . '","' . $row [ 'unit' ] . '","' . $row [ 'phone' ] . '","' . $row [ 'address' ] . '","' . $row [ 'postcoe' ] . '","' . str_replace ( " \" " , " ' " , $row [ 'project' ]) . '","' . str_replace ( " \" " , " ' " , $row [ 'datalist' ]) . '","' . $row [ 'email' ] . '",' . $row [ 'ts_created' ] . " \n " ;
2011-09-20 03:57:39 +00:00
}
$this -> getResponse () -> setHeader ( 'Content-Type' , 'application/octet-stream' )
-> setHeader ( 'Content-Disposition' , 'attachment; filename="offlineapp.csv"' )
-> setHeader ( 'Content-Length' , strlen ( $content ))
-> setHeader ( 'Content-Type' , 'application/force-download' )
-> setHeader ( 'Content-Type' , 'application/download' )
-> setHeader ( 'Content-Description' , 'File Transfer' )
-> setHeader ( 'Content-Transfer-Encoding' , 'binary' )
-> setHeader ( 'Expires' , 0 )
-> setHeader ( 'Cache-Control' , 'must-revalidate, post-check=0, pre-check=0' )
-> setHeader ( 'Pragma' , 'public' )
-> setBody ( $content );
2011-09-29 02:28:27 +00:00
} //下载离线服务记录
else if ( $update ) {
2011-09-20 03:57:39 +00:00
$sql = ' select o . id as oid , o . userid , o . username as un , u . email as uemail , o . email , u . realname as rn , u . id as uid from offlineapp o
right join users u on o . email = u . email
where o . userid is null and o . ts_approved is not null and o . email is not null ' ;
$re = $this -> db -> query ( $sql );
$row = $re -> fetchAll ();
$s = 0 ;
foreach ( $row as $k => $v )
{
if ( empty ( $v [ 'userid' ]))
{
$sql = " update offlineapp set userid=' { $v [ 'uid' ] } ' where id=' { $v [ 'oid' ] } ' " ;
if ( $this -> db -> exec ( $sql )) $s ++ ;
}
}
$this -> messenger -> addMessage ( '提示信息:已有 ' . $s . ' 条记录被更改' );
$this -> _redirect ( '/admin/down/offline' );
} //同步用户账户与离线申请记录
2011-09-29 02:28:27 +00:00
2011-09-20 03:57:39 +00:00
else if ( $show ){
$sql = " select * from offlineapp where id=' $show ' " ;
$rs = $this -> db -> query ( $sql );
$row = $rs -> fetch ();
$this -> view -> infos = $row ;
$this -> _helper -> viewRenderer ( 'offlineshow' );
} //查看单条记录
2011-09-29 02:28:27 +00:00
2011-09-29 02:24:47 +00:00
else if ( $emaillist )
{
$sql = " select distinct(t.*) from
(
select u . email from dataorder d left join users u on d . userid = u . id where ( d . status = 0 or d . status = 5 )
union
select o . email from offlineapp o where o . userid is null and o . email is not null
) as t " ;
$re = $this -> db -> query ( $sql );
$rows = $re -> fetchAll ();
$filecontent = " " ;
foreach ( $rows as $row ){
$filecontent .= $row [ 'email' ] . " \r \n " ;
}
$this -> _helper -> layout -> disableLayout ();
$this -> _helper -> viewRenderer -> setNoRender ();
$this -> getResponse () -> setHeader ( 'Content-Type' , 'application/octet-stream' )
-> setHeader ( 'Content-Disposition' , 'attachment; filename="emails.txt"' )
-> setHeader ( 'Content-Length' , strlen ( $filecontent ))
-> setHeader ( 'Content-Type' , 'application/force-download' )
-> setHeader ( 'Content-Type' , 'application/download' )
-> setHeader ( 'Content-Description' , 'File Transfer' )
-> setHeader ( 'Content-Transfer-Encoding' , 'binary' )
-> setHeader ( 'Expires' , 0 )
-> setHeader ( 'Cache-Control' , 'must-revalidate, post-check=0, pre-check=0' )
-> setHeader ( 'Pragma' , 'public' )
-> setBody ( $filecontent );
} //下载邮箱地址列表
2011-09-29 02:28:27 +00:00
2011-09-20 03:57:39 +00:00
$select = $this -> db -> select ();
$select -> from ( 'offlineapp' ) -> where ( 'ts_approved is not null' ) -> where ( 'pdflink is not null' ) -> order ( 'ts_created desc' );
$paginator = Zend_Paginator :: factory ( $select );
$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 ;
}
//在线数据下载情况, 仅针对onlineapp表, 自2011-9-8开始记录。
function onlineAction ()
{
$show = ( int ) $this -> _getParam ( 'show' );
$delete = ( int ) $this -> _getParam ( 'delete' );
if ( empty ( $show ) && empty ( $delete ))
{
$select = $this -> db -> select ();
$select -> from ( 'onlineapp as o' , array ( 'id' , 'userid' , 'unit' , 'username' , 'ts_created' , 'project' ))
2011-12-21 03:47:33 +00:00
-> join ( 'metadata as m' , 'o.uuid = m.uuid' , array ( 'title' , 'uuid' ))
-> where ( 'o.id in (select distinct(onlineappid) from dataorder)' )
2011-09-20 03:57:39 +00:00
-> order ( 'o.id desc' );
$paginator = Zend_Paginator :: factory ( $select );
$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 ;
$count = count ( $this -> db -> fetchAll ( $select ));
$this -> view -> count = $count ;
} //列表
elseif ( $delete )
{
2011-12-09 03:08:02 +00:00
try {
$sql = " delete from onlineapp where id=? " ;
$this -> db -> query ( $sql , array ( $delete ));
$sql = " delete from dataorder where onlineappid=? " ;
$this -> db -> query ( $sql , array ( $delete ));
2011-09-20 03:57:39 +00:00
$this -> messenger -> addMessage ( '该记录已删除' );
} catch ( Exception $e ) {
$this -> messenger -> addMessage ( $e -> getMessage ());
}
$this -> _redirect ( " /admin/down/online/ " );
} //删除
elseif ( $show )
{
$sql = " select o.*,u.username as uname,u.id as uid,m.title,m.uuid
from onlineapp as o
left join users as u on u . id = o . userid
left join metadata as m on o . uuid = m . uuid
where o . id = ? " ;
$result = $this -> db -> query ( $sql , $show );
$rows = $result -> fetch ();
$this -> view -> infos = $rows ;
$this -> _helper -> viewRenderer ( 'onlineshow' );
} //查看详细
} //onlineAction
function userAction ()
{
$show = ( int ) $this -> _getParam ( 'show' );
$search = $this -> _getParam ( 'search' );
$keyword = $this -> view -> keyword = $this -> _getParam ( 'keyword' );
if ( empty ( $show ))
{
$select = $this -> db -> select ();
$select -> from ( 'dataorder as o' , 'count(o.id) as num' )
-> join ( 'users as u' , 'u.id = o.userid' , array ( 'realname' , 'id as uid' , 'unit' ))
-> where ( 'o.status=0 or o.status=5' )
-> where ( 'o.userid = u.id' );
if ( ! empty ( $search ) && ! empty ( $keyword ))
{
$select -> Where ( 'u.realname like ? or u.unit like ? ' , '%' . $keyword . '%' );
$this -> view -> title = '“' . $keyword . '”的搜索结果 :' ;
}
$select -> group ( 'uid' )
-> group ( 'realname' )
-> group ( 'unit' )
-> order ( 'num desc' );
$paginator = Zend_Paginator :: factory ( $select );
$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 ;
$count = count ( $this -> db -> fetchAll ( $select ));
$this -> view -> count = $count ;
} //列表
elseif ( $show )
{
$select = $this -> db -> select ();
$select -> from ( 'dataorder as o' , array ( 'id' , 'ts_created' , 'userid' , 'offlineappid' , 'onlineappid' ))
2012-01-07 10:07:53 +00:00
-> joinLeft ( 'metadata as m' , 'o.uuid = m.uuid' , array ( 'title' , 'uuid' , 'filesize' ))
2011-09-20 03:57:39 +00:00
-> joinLeft ( 'users as u' , 'u.id=o.userid' , array ( 'realname as username' ))
-> where ( 'o.userid = ?' , $show )
-> where ( 'o.status=0 or o.status=5' )
-> order ( 'o.id desc' );
$paginator = Zend_Paginator :: factory ( $select );
$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 ;
$sql = " select username,realname from users where id=' $show ' " ;
$re = $this -> db -> query ( $sql );
$t = $re -> fetch ();
$this -> view -> infos = $t ;
$this -> _helper -> viewRenderer ( 'showuser' );
} //查看单个用户的下载记录
} //userAction 用户下载情况
function dataAction ()
{
$show = $this -> _getParam ( 'show' );
$search = $this -> _getParam ( 'search' );
$keyword = $this -> view -> keyword = $this -> _getParam ( 'keyword' );
if ( empty ( $show ))
{
$select = $this -> db -> select ();
$select -> from ( 'dataorder as o' , 'count(o.id) as num' )
-> join ( 'metadata as m' , 'o.uuid = m.uuid' , array ( 'title' , 'uuid' ))
-> where ( 'o.uuid = m.uuid and (o.status=0 or o.status=5)' );
if ( ! empty ( $search ) && ! empty ( $keyword ))
{
$select -> Where ( 'm.title like ? or m.title_en like ?' , '%' . $keyword . '%' );
$this -> view -> title = '“' . $keyword . '”的搜索结果 :' ;
}
$select -> group ( 'm.title' )
-> group ( 'm.uuid' )
-> order ( 'num desc' );
$paginator = Zend_Paginator :: factory ( $select );
$paginator -> setCurrentPageNumber ( $this -> _getParam ( 'page' ));
$paginator -> setItemCountPerPage ( 20 );
$paginator -> setView ( $this -> view );
Zend_View_Helper_PaginationControl :: setDefaultViewPartial ( 'pagination_param.phtml' );
$this -> view -> paginator = $paginator ;
$count = count ( $this -> db -> fetchAll ( $select ));
$this -> view -> count = $count ;
} //数据下载情况列表
elseif ( $show )
{
$select = $this -> db -> select ();
2011-09-20 04:00:25 +00:00
$select -> from ( 'dataorder as o' , array ( 'ts_created' , 'ts_created' , 'offlineappid' , 'onlineappid' ))
2011-09-20 03:57:39 +00:00
-> join ( 'metadata as m' , 'o.uuid = m.uuid' , array ( 'title' , 'uuid' ))
-> join ( 'users as u' , 'o.userid=u.id' , array ( 'id as userid' , 'username' , 'realname' ))
-> where ( 'm.uuid = ? and (o.status=0 or o.status=5)' , $show )
-> order ( 'o.id desc' );
$paginator = Zend_Paginator :: factory ( $select );
$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 ;
$sql = " select title,uuid from metadata where uuid=' $show ' " ;
$re = $this -> db -> query ( $sql );
$t = $re -> fetch ();
$this -> view -> infos = $t ;
$this -> _helper -> viewRenderer ( 'showdata' );
} //查看单个数据下载情况
} //dataAction 数据下载情况
function searchAction ()
{
$search = $this -> _getParam ( 'search' );
$keyword = $this -> view -> keyword = $this -> _getParam ( 'keyword' );
$select = $this -> db -> select ();
if ( ! empty ( $search ) && ! empty ( $keyword ))
{
$select -> from ( 'onlineapp as o' , array ( 'id' , 'userid' , 'unit' , 'username' , 'ts_created' , 'project' ))
-> Where ( 'o.username like ? ' , '%' . $keyword . '%' )
-> orWhere ( 'o.unit like ? ' , '%' . $keyword . '%' )
-> orWhere ( 'o.project like ? ' , '%' . $keyword . '%' )
-> orWhere ( 'm.title like ? ' , '%' . $keyword . '%' )
-> join ( 'metadata as m' , 'o.uuid = m.uuid' , array ( 'title' , 'uuid' ))
-> order ( 'o.id desc' );
$paginator = Zend_Paginator :: factory ( $select );
$paginator -> setCurrentPageNumber ( $this -> _getParam ( 'page' ));
$paginator -> setItemCountPerPage ( 15 );
$paginator -> setView ( $this -> view );
Zend_View_Helper_PaginationControl :: setDefaultViewPartial ( 'pagination_param.phtml' );
$this -> view -> paginator = $paginator ;
$this -> _helper -> viewRenderer ( 'online' );
$count = count ( $this -> db -> fetchAll ( $select ));
$this -> view -> count = $count ;
$this -> view -> title = '搜索结果 :' ;
}
else {
$this -> _redirect ( " /admin/down/online " );
}
} //searchAction 搜索
function updateAction (){
/* $select = $this -> db -> select ();
$select -> from ( 'offlineapp as o' , array ( 'username as un' , 'email' ))
-> join ( 'users as u' , 'u.email=o.email' )
-> where ( 'o.userid is null and o.ts_approved is not null and o.email is not null' ); */
$sql = ' select o . id as oid , o . userid , o . username as un , u . email as uemail , o . email , u . realname as rn , u . id as uid from offlineapp o
right join users u on o . email = u . email
where o . userid is null and o . ts_approved is not null and o . email is not null ' ;
$re = $this -> db -> query ( $sql );
$row = $re -> fetchAll ();
foreach ( $row as $k => $v )
{
if ( empty ( $v [ 'userid' ]))
{
$sql = " update offlineapp set userid=' { $v [ 'uid' ] } ' where id=' { $v [ 'oid' ] } ' " ;
$row [ $k ][ 'sql' ] = $sql ;
//$re=$this->db-exec($sql);
}
}
$paginator = Zend_Paginator :: factory ( $row );
$paginator -> setCurrentPageNumber ( $this -> _getParam ( 'page' ));
$paginator -> setItemCountPerPage ( 20 );
$paginator -> setView ( $this -> view );
Zend_View_Helper_PaginationControl :: setDefaultViewPartial ( 'pagination_param.phtml' );
$this -> view -> paginator = $paginator ;
$count = count ( $row );
$this -> view -> count = $count ;
$this -> _helper -> viewRenderer ( 'update' );
}
function fixofflineAction (){
$fix = $this -> _getParam ( 'fix' );
$orders = $this -> _getParam ( 'orders' );
$nouserid = $this -> _getParam ( 'nouserid' );
if ( $fix )
{
if ( ! empty ( $orders ))
{
$num = 0 ;
foreach ( $orders as $k => $v )
{
$ex = split ( ',' , $v );
$sql = " update offlineapp set userid=' { $ex [ 0 ] } ' where id=' { $ex [ 1 ] } ' " ;
if ( $this -> db -> exec ( $sql ))
$num ++ ;
}
$this -> messenger -> addMessage ( '已经匹配了' . $num . '条记录' );
$this -> _redirect ( " /admin/down/fixoffline " );
}
else {
$this -> messenger -> addMessage ( '请选择要匹配的条目' );
$this -> _redirect ( " /admin/down/fixoffline " );
}
}
if ( $nouserid )
{
$sql = " select * from offlineapp where userid is null " ;
$re = $this -> db -> query ( $sql );
$row = $re -> fetchAll ();
$paginator = Zend_Paginator :: factory ( $row );
$paginator -> setCurrentPageNumber ( $this -> _getParam ( 'page' ));
$paginator -> setItemCountPerPage ( 20 );
$paginator -> setView ( $this -> view );
Zend_View_Helper_PaginationControl :: setDefaultViewPartial ( 'pagination_param.phtml' );
$this -> view -> paginator = $paginator ;
$count = count ( $row );
$this -> view -> count = $count ;
$this -> _helper -> viewRenderer ( 'nouserid' );
}
else {
$sql = " select o.id as oid,o.username as un,o.unit as uu,u.username,u.realname rn,u.unit,u.id as uid
from offlineapp o right join users u on trim ( o . username ) = trim ( u . realname )
where o . userid is null and o . id > 0
order by o . id " ;
$re = $this -> db -> query ( $sql );
$row = $re -> fetchAll ();
$paginator = Zend_Paginator :: factory ( $row );
$paginator -> setCurrentPageNumber ( $this -> _getParam ( 'page' ));
$paginator -> setItemCountPerPage ( 20 );
$paginator -> setView ( $this -> view );
Zend_View_Helper_PaginationControl :: setDefaultViewPartial ( 'pagination_param.phtml' );
$this -> view -> paginator = $paginator ;
$count = count ( $row );
$this -> view -> count = $count ;
}
} //fixofflineAction 用户匹配
}