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 );
$body = file_get_contents ( $this -> view -> config -> offline -> email -> start_template );
$body = str_replace ( " [username] " , $row [ 'username' ], $body );
$body = str_replace ( " [datalist] " , str_replace ( " ; " , " \n " , $row [ 'datalist' ]), $body );
$mail -> setBodyText ( $body );
$mail -> addTo ( $row [ 'email' ]);
$mail -> setSubject ( '西部数据中心已收到您的纸质离线申请' );
$mail -> setFrom ( $this -> view -> config -> service -> email , '西部数据中心服务组' );
$mail -> send ();
//提示信息
$this -> messenger -> addMessage ( '提示信息:该离线数据已经开始处理,请在处理完成后点击“完成”。' );
$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 );
$body = file_get_contents ( $this -> view -> config -> offline -> email -> finish_template );
$body = str_replace ( " [username] " , $row [ 'username' ], $body );
$body = str_replace ( " [datalist] " , str_replace ( " ; " , " \n " , $row [ 'datalist' ]), $body );
$body = str_replace ( " [ftpuser] " , $user -> username , $body );
$body = str_replace ( " [ftppwd] " , $proftp -> pwd , $body );
$body = str_replace ( " [ftptime] " , $proftp -> time , $body );
$mail -> setBodyText ( $body );
$mail -> addTo ( $row [ 'email' ]);
$mail -> setSubject ( '西部数据中心已开通了您的离线申请' );
$mail -> setFrom ( $this -> view -> config -> service -> email , '西部数据中心服务组' );
$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
and d . status = 3
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' );
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' );
} elseif ( $edit ){
$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' );
} elseif ( $delete ) {
$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 " );
}
} elseif ( $down ) {
$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 ){
$content .= '"' . $row [ 'username' ] . '","' . $row [ 'unit' ] . '","' . $row [ 'phone' ] . '","' . $row [ 'address' ] . '","' . $row [ 'postcoe' ] . '","' . str_replace ( " \" " , " ' " , $row [ 'project' ]) . '","' . str_replace ( " \" " , " ' " , $row [ 'datalist' ]) . '","' . $row [ 'email' ] . '",' . $row [ 'ts_approved' ] . " \n " ;
}
$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 );
} else if ( $update ) {
$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' );
} //同步用户账户与离线申请记录
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' );
} //查看单条记录
$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' ))
-> 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 ( $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 )
{
$sql = " delete from onlineapp where id=? " ;
try {
$this -> db -> query ( $sql , array ( $id ));
$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' ))
-> joinLeft ( 'metadata as m' , 'o.uuid = m.uuid' , array ( 'title' , 'uuid' ))
-> 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 ();
$select -> from ( 'dataorder as o' , array ( 'ts_created' , 'ts_created' , 'offlineappid' ))
-> 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 用户匹配
}