2011-10-13 07:56:18 +00:00
< ? php
class ReviewController extends Zend_Controller_Action
2011-10-28 10:00:13 +00:00
{
2011-10-27 14:30:52 +00:00
private $limit = 10 ;
2011-10-13 07:56:18 +00:00
function preDispatch ()
{
$this -> view -> config = Zend_Registry :: get ( 'config' );
$this -> db = Zend_Registry :: get ( 'db' );
$this -> messenger = $this -> _helper -> getHelper ( 'FlashMessenger' );
$this -> view -> messages = $this -> messenger -> getMessages ();
}
function indexAction ()
{
//最新10个收稿
2011-10-14 07:34:01 +00:00
$sql = " select m.uuid,m.title,date(s.ts_created) as ts_created from mdstatus s left join metadata m on m.uuid=s.uuid where s.status=0 order by s.ts_created desc limit 10 " ;
2011-10-13 07:56:18 +00:00
$this -> view -> mdreceived = $this -> db -> fetchAll ( $sql );
//最新10个接收
$sql = " select m.uuid,m.title,s.ts_accepted from mdstatus s left join metadata m on m.uuid=s.uuid where s.status=1 order by s.ts_created desc limit 10 " ;
$this -> view -> mdaccepted = $this -> db -> fetchAll ( $sql );
//最新10个送审
$sql = " select m.uuid,m.title,s.ts_accepted from mdstatus s left join metadata m on m.uuid=s.uuid where s.status in (2,3,4) order by s.ts_created desc limit 10 " ;
$this -> view -> mdinreview = $this -> db -> fetchAll ( $sql );
//最新10个已审
$sql = " select m.uuid,m.title,s.ts_accepted from mdstatus s left join metadata m on m.uuid=s.uuid where s.status=5 order by s.ts_created desc limit 10 " ;
$this -> view -> mdreviewed = $this -> db -> fetchAll ( $sql );
//统计数字
$sql = " select (select count(*) from mdexperts) as experts,(select count(*) from mdstatus where status=0) as draft,(select count(*) from mdstatus where status=1) as accept,(select count(*) from mdstatus where status in (2,3,4)) as inreview,(select count(*) from mdstatus where status=5) as reviewed,(select count(*) from mdreview) as openreview,(select count(distinct(userid)) from mdreview) as openreviewuser " ;
$this -> view -> stat = $this -> db -> fetchRow ( $sql );
}
function myreviewAction (){
2011-10-28 02:32:39 +00:00
$auth = Zend_Auth :: getInstance ();
if ( $auth -> hasIdentity ())
{
$user = $auth -> getIdentity ();
$uid = $user -> id ;
} else {
$this -> _redirect ( '/account/login/?href=/review/myreview' );
2011-10-31 03:10:26 +00:00
}
$page =@ ( int ) $this -> _request -> getParam ( 'page' );
if ( empty ( $page )) $page = 1 ;
$offset = $this -> limit * ( $page - 1 );
$row = $this -> db -> fetchAll ( " select count(s.*) from mdstatus s left join normalmetadata m on s.uuid=m.uuid where m.uuid in (select uuid from mdexpertreview er where er.id= $uid union select uuid from mdreview r where r.userid= $uid ) " );
$sum = $row [ 0 ][ 'count' ];
$sql = " select m.uuid,m.title,m.id,m.description,s.status,s.ts_accepted,s.ts_finished,g.id as gid,t.filename from mdstatus s left join normalmetadata m on s.uuid=m.uuid left join geonetworkmetadata g on g.uuid=m.uuid left join thumbnail t on t.id=m.id where m.uuid in (select uuid from mdexpertreview er where er.id= $uid union select uuid from mdreview r where r.userid= $uid ) order by s.ts_created desc,m.title limit ? offset ? " ;
$this -> view -> metadata = $this -> db -> fetchAll ( $sql , array ( $this -> limit , $offset ));
$this -> view -> page = new Pagination ( $sum , $page , $this -> limit );
2011-10-28 02:32:39 +00:00
foreach ( $this -> view -> metadata as $k => $v )
{
$this -> view -> metadata [ $k ][ 'statustext' ] = $this -> rewritestatus ( $v [ 'status' ]);
}
2011-10-13 07:56:18 +00:00
} //我参审的
function draftAction (){
2011-10-31 03:10:26 +00:00
$page =@ ( int ) $this -> _request -> getParam ( 'page' );
if ( empty ( $page )) $page = 1 ;
$offset = $this -> limit * ( $page - 1 );
$row = $this -> db -> fetchAll ( " select count(s.*) from mdstatus s left join metadata m on s.uuid=m.uuid where s.status in (0) " );
$sum = $row [ 0 ][ 'count' ];
$sql = " select m.uuid,m.title,m.id,m.description,s.status,s.ts_created,g.id as gid,t.filename from mdstatus s left join metadata m on s.uuid=m.uuid left join geonetworkmetadata g on g.uuid=m.uuid left join thumbnail t on t.id=m.id where s.status in (0) order by s.ts_created desc,m.title limit ? offset ? " ;
$this -> view -> metadata = $this -> db -> fetchAll ( $sql , array ( $this -> limit , $offset ));
2011-10-28 02:32:39 +00:00
$this -> view -> page = new Pagination ( $sum , $page , $this -> limit );
2011-10-17 09:23:30 +00:00
} //最新收稿
function acceptAction (){
2011-10-31 03:10:26 +00:00
$page =@ ( int ) $this -> _request -> getParam ( 'page' );
if ( empty ( $page )) $page = 1 ;
$offset = $this -> limit * ( $page - 1 );
$row = $this -> db -> fetchAll ( " select count(s.*) from mdstatus s left join normalmetadata m on s.uuid=m.uuid where s.status in (1) " );
$sum = $row [ 0 ][ 'count' ];
$sql = " select m.uuid,m.title,m.id,m.description,s.status,s.ts_accepted,g.id as gid,t.filename from mdstatus s left join normalmetadata m on s.uuid=m.uuid left join geonetworkmetadata g on g.uuid=m.uuid left join thumbnail t on t.id=m.id where s.status in (1) order by s.ts_created desc,m.title limit ? offset ? " ;
$this -> view -> metadata = $this -> db -> fetchAll ( $sql , array ( $this -> limit , $offset ));
2011-10-28 02:32:39 +00:00
$this -> view -> page = new Pagination ( $sum , $page , $this -> limit );
2011-10-13 07:56:18 +00:00
} //最新收稿
2011-10-13 09:30:53 +00:00
function inreviewAction (){
2011-10-31 03:10:26 +00:00
$page =@ ( int ) $this -> _request -> getParam ( 'page' );
if ( empty ( $page )) $page = 1 ;
$offset = $this -> limit * ( $page - 1 );
$row = $this -> db -> fetchAll ( " select count(s.*) from mdstatus s left join normalmetadata m on s.uuid=m.uuid where s.status in (2,3,4) " );
$sum = $row [ 0 ][ 'count' ];
$sql = " select m.uuid,m.title,m.id,m.description,s.status,s.ts_accepted,g.id as gid,t.filename from mdstatus s left join normalmetadata m on s.uuid=m.uuid left join geonetworkmetadata g on g.uuid=m.uuid left join thumbnail t on t.id=m.id where s.status in (2,3,4) order by s.ts_created desc,m.title limit ? offset ? " ;
$this -> view -> metadata = $this -> db -> fetchAll ( $sql , array ( $this -> limit , $offset ));
$this -> view -> page = new Pagination ( $sum , $page , $this -> limit );
2011-10-13 09:30:53 +00:00
} //在审阶段的元数据
2011-10-13 09:42:04 +00:00
function reviewedAction (){
2011-10-31 03:10:26 +00:00
$page =@ ( int ) $this -> _request -> getParam ( 'page' );
if ( empty ( $page )) $page = 1 ;
$offset = $this -> limit * ( $page - 1 );
$row = $this -> db -> fetchAll ( " select count(s.*) from mdstatus s left join normalmetadata m on s.uuid=m.uuid where s.status in (5) " );
$sum = $row [ 0 ][ 'count' ];
$sql = " select m.uuid,m.title,m.id,m.description,s.status,s.ts_finished,g.id as gid,t.filename from mdstatus s left join normalmetadata m on s.uuid=m.uuid left join geonetworkmetadata g on g.uuid=m.uuid left join thumbnail t on t.id=m.id where s.status in (5) order by s.ts_created desc,m.title limit ? offset ? " ;
$this -> view -> metadata = $this -> db -> fetchAll ( $sql , array ( $this -> limit , $offset ));
2011-10-28 02:32:39 +00:00
$this -> view -> page = new Pagination ( $sum , $page , $this -> limit );
2011-10-13 09:42:04 +00:00
} //已完成评审的元数据
2011-10-27 14:49:00 +00:00
function rewritestatus ( $status ){
2011-10-13 09:30:53 +00:00
if ( $status ==- 1 )
{ return " 取消评审 " ;}
else if ( $status == 0 )
2011-10-27 14:49:00 +00:00
{ return " 投稿元数据 " ;}
2011-10-13 09:30:53 +00:00
else if ( $status == 1 )
2011-10-27 14:49:00 +00:00
{ return " 接收元数据 " ;}
2011-10-13 09:30:53 +00:00
else if ( $status == 2 )
{ return " 专家评审中 " ;}
else if ( $status == 3 )
{ return " 专家评审中 " ;}
else if ( $status == 4 )
{ return " 专家反馈 " ;}
else if ( $status == 5 )
{ return " 已发布 " ;}
else
{ return " " ;}
} //function rewriterstatus
2011-10-14 10:29:26 +00:00
function replace ( $string ){
$patterns = array ( " / \" /i " , " / \ '/i " );
$replacements = array ( " “ " , " ‘ " );
ksort ( $patterns );
ksort ( $replacements );
return preg_replace ( $patterns , $replacements , $string );
}
function reviewAction () {
$uuid = $this -> _request -> getParam ( 'uuid' );
2011-10-18 08:15:32 +00:00
$sql = $this -> db -> quoteInto ( " select m.id,m.uuid,m.title,m.description,m.title_en,r.status from metadata m
left join mdstatus r on r . uuid = m . uuid
where m . uuid = ? " , $uuid );
2011-10-28 10:00:13 +00:00
$md = $this -> db -> fetchRow ( $sql );
$this -> view -> metadata = $md ;
2011-10-17 08:10:25 +00:00
$auth = Zend_Auth :: getInstance ();
if ( $auth -> hasIdentity ())
{
$user = $auth -> getIdentity ();
$userid = $user -> id ;
2011-10-31 03:10:26 +00:00
$sql = " select * from mdreview where userid=' $userid ' and uuid=' $uuid ' " ;
2011-10-17 08:10:25 +00:00
$rs = $this -> db -> query ( $sql );
$row = $rs -> fetch ();
2011-10-31 03:10:26 +00:00
$this -> view -> review = $row ;
2011-10-14 10:29:26 +00:00
}
} //reviewAction()
2011-10-17 08:10:25 +00:00
function allreviewAction (){
2011-10-18 01:41:20 +00:00
$this -> _helper -> layout -> disableLayout ();
$this -> _helper -> viewRenderer -> setNoRender ();
2011-10-17 08:10:25 +00:00
$uuid = $this -> _request -> getParam ( 'uuid' );
2011-11-08 04:02:04 +00:00
$sql = " select r.id,r.uuid,r.userid,r.ts_created,u.realname,r.mdcomment,r.conclusion,ratt.reviewid from mdreview r
2011-10-17 08:10:25 +00:00
left join users u on u . id = r . userid
2011-11-08 06:40:18 +00:00
left join mdreviewattach ratt on r . id = ratt . reviewid
2011-11-08 04:02:04 +00:00
where r . uuid = '$uuid' and r . status >- 1
group by r . id , r . uuid , r . userid , r . ts_created , u . realname , r . mdcomment , r . conclusion , ratt . reviewid
2011-11-08 07:47:10 +00:00
order by r . id desc
2011-11-08 04:02:04 +00:00
" ;
2011-10-17 08:10:25 +00:00
$rs = $this -> db -> query ( $sql );
$rows = $rs -> fetchAll ();
$paginator = Zend_Paginator :: factory ( $rows );
$paginator -> setCurrentPageNumber ( $this -> _getParam ( 'page' ));
2011-10-18 01:41:20 +00:00
$paginator -> setItemCountPerPage ( 5 );
$paginator -> setView ( $this -> view );
2011-10-17 10:20:19 +00:00
Zend_View_Helper_PaginationControl :: setDefaultViewPartial ( 'review/pagination_ajax.phtml' );
2011-10-17 08:10:25 +00:00
$list = " " ;
2011-10-18 01:41:20 +00:00
foreach ( $paginator as $k => $v )
2011-10-17 08:10:25 +00:00
{
$list .= '
< li >
< div class = " reviewitem " >
2011-11-08 04:02:04 +00:00
< div class = " itemtitle " > 评审人: '.$v[' realname '].' </ div >< div class = " itemtime " > ' ;
if ( $v [ 'reviewid' ] != " " )
{
$list .= '[<a href="javascript:;" onclick="checkfiles(\'' . $v [ 'id' ] . '\')">查看评审附件</a>] ' ;
}
$list .= '
评审时间: '.date("Y-m-d H:i",strtotime($v[' ts_created '])).' </ div >
2011-10-17 09:05:46 +00:00
< div class = " itemcontent " >< p > '.str_replace(array("\r\n", "\n", "\r"),' </ p >< p > ',$v[' mdcomment ']).' </ p ></ div >
2011-11-08 04:02:04 +00:00
< div id = " filelist_'. $v['id'] .' " class = " filelist " ></ div >
2011-10-17 08:10:25 +00:00
</ div >
</ li >
' ;
}
2011-10-28 10:00:13 +00:00
if ( empty ( $list ))
{
$list = " <p style='text-align:center'>暂无评审数据</p> " ;
}
2011-10-17 08:10:25 +00:00
$stringbuffer = " <ul class='reviewlist'> $list </ul> " ;
2011-10-18 01:41:20 +00:00
2011-10-17 08:10:25 +00:00
echo $stringbuffer . '<div class="paginator">' . $paginator . '</div>' ;
2011-10-28 10:00:13 +00:00
} //allreviewAction() 所有评论 ajax
function saveAction (){
$this -> _helper -> layout -> disableLayout ();
$this -> _helper -> viewRenderer -> setNoRender ();
2011-11-04 08:01:27 +00:00
$do = $this -> _request -> getParam ( 'do' );
2011-10-31 03:10:26 +00:00
$conclusion = $this -> _request -> getParam ( 'conclusion' );
$mdcomment = $this -> replace ( trim ( $this -> _request -> getParam ( 'mdcomment' )));
$datacomment = $this -> replace ( trim ( $this -> _request -> getParam ( 'datacomment' )));
$editorcomment = $this -> replace ( trim ( $this -> _request -> getParam ( 'editorcomment' )));
$uuid = $this -> _request -> getParam ( 'uuid' );
$sql = $this -> db -> quoteInto ( " select m.id,m.uuid,m.title,m.description,m.title_en,r.status from metadata m
left join mdstatus r on r . uuid = m . uuid
where m . uuid = ? " , $uuid );
$md = $this -> db -> fetchRow ( $sql );
if ( $md [ 'status' ] > 4 )
{
echo '<div class="box box-info">该数据已经通过评审,不能再发表评审意见,如需提交问题,请联系数据管理员</div>' ;
exit ();
}
if ( $md [ 'status' ] < 1 )
{
echo '<div class="box box-info">已被数据中心接收的数据才可以进行评审</div>' ;
exit ();
}
$auth = Zend_Auth :: getInstance ();
if ( $auth -> hasIdentity ())
{
$user = $auth -> getIdentity ();
$userid = $user -> id ;
$sql = " select id,userid,status from mdreview where userid=' $userid ' and uuid=' $uuid ' " ;
$rs = $this -> db -> query ( $sql );
$row = $rs -> fetch ();
if ( $row [ 'id' ] != '' && $row [ 'status' ] >- 1 )
{
echo '<div class="box box-info">您已经对该元数据发表过评审了</div>' ;
exit ();
}
} else {
echo '<div class="box box-info">读取用户信息失败,请刷新页面后重试 :(</div>' ;
exit ();
}
if ( empty ( $conclusion ))
{
echo '<div class="box box-info">请选择评审意见</div>' ;
exit ();
}
if ( ! is_numeric ( $conclusion ) || ! in_array ( $conclusion , array ( - 1 , 1 , 2 , 3 )))
{
echo '<div class="box box-info">参数有误,请刷新页面 :(</div>' ;
exit ();
}
if ( empty ( $mdcomment ) )
{
2011-11-04 08:01:27 +00:00
echo '<div class="box box-info">请填写元数据意见 :(</div>' ;
2011-10-31 03:10:26 +00:00
exit ();
}
try {
if ( $row [ 'status' ] < 0 )
{
$sql = " delete from mdreview where id=' { $row [ 'id' ] } ' " ;
if ( $this -> db -> exec ( $sql ) < 1 )
{
echo '<div class="box box-error">处理出错,请重试</div>' ;
exit ();
}
}
$data = array (
'userid' => $userid ,
'uuid' => $uuid ,
'mdcomment' => $mdcomment ,
'ts_created' => 'now()' ,
'datacomment' => $datacomment ,
'editorcomment' => $editorcomment ,
'conclusion' => $conclusion ,
'status' => - 1
);
2011-11-04 08:01:27 +00:00
if ( $do == 'submit' )
{
$data [ 'status' ] = 0 ;
}
2011-10-31 03:10:26 +00:00
$sql = " select id from mdexpertreview where id=' $userid ' and uuid=' $uuid ' " ;
$rs = $this -> db -> query ( $sql );
$row = $rs -> fetch ();
if ( $row [ 'id' ] != '' )
{
$data [ 'is_expert' ] = 'true' ;
}
$keys = array ();
$values = array ();
foreach ( $data as $k => $v )
{
$keys [] = $k ;
$values [] = $v ;
}
$keys = join ( " , " , $keys );
$values = " ' " . join ( " ',' " , $values ) . " ' " ;
$sql = " insert into mdreview ( $keys ) values ( $values ) RETURNING id " ;
$sth = $this -> db -> prepare ( $sql );
2011-11-01 02:01:22 +00:00
if ( $sth -> execute ())
{
2011-11-08 07:09:23 +00:00
if ( isset ( $_POST [ 'atts' ]))
2011-11-04 08:01:27 +00:00
{
$review = $sth -> fetch ( PDO :: FETCH_ASSOC );
$reviewid = $review [ 'id' ];
try {
foreach ( $_POST [ 'atts' ] as $v )
{
$sql = " insert into mdreviewattach (attachid,reviewid) values (' $v ',' $reviewid ') " ;
$this -> db -> exec ( $sql );
}
echo '<div class="box box-success">保存成功!' ;
2011-11-15 09:02:42 +00:00
echo " </div> " ;
2011-11-04 08:01:27 +00:00
if ( $data [ 'status' ] >= 0 )
{
echo '<script>$("#postcomment").remove();</script>' ;
2011-11-15 08:54:42 +00:00
@ $mailtp = new EmailText (
$this -> db ,
" mdreview-post-comment " ,
array (
'user' => $user -> username ,
'uuid' => $uuid ,
'title' => $md [ 'title' ],
'content' => $mdcomment
)
);
@ $body = $mailtp -> getBody ();
2011-11-15 09:05:19 +00:00
@ $subject = $mailtp -> getSubject ();
2011-11-15 08:54:42 +00:00
@ $mail = new WestdcMailer ( $this -> view -> config -> smtp );
@ $mail -> setBodyText ( $body );
@ $mail -> setFrom ( $this -> view -> config -> service -> email , '西部数据中心服务组' );
if ( $data [ 'is_expert' ] == 'true' )
{
@ $mail -> addTo ( $email ); //管理员邮箱
} else
{
@ $mail -> addTo ( $email ); //元数据作者
2011-11-15 09:02:42 +00:00
@ $mail -> addCc ( $email ); //管理员
2011-11-15 08:54:42 +00:00
}
@ $mail -> setSubject ( $subject );
@ $mail -> send ();
2011-11-04 08:01:27 +00:00
}
exit ();
} catch ( Exception $e ){
2011-11-15 08:54:42 +00:00
echo '<div class="box box-error">保存出错,请稍后再试!</div>' ;
2011-11-04 08:01:27 +00:00
exit ();
}
}
2011-11-01 02:01:22 +00:00
} else {
2011-11-15 08:54:42 +00:00
echo '<div class="box box-error">保存出错,请稍后再试!</div>' ;
2011-11-01 02:01:22 +00:00
exit ();
}
2011-10-31 03:10:26 +00:00
} catch ( Exception $e ){
echo '<div class="box box-error">保存失败,请重试!</div>' ;
exit ();
}
2011-10-28 10:00:13 +00:00
} // saveAction 存草稿 ajax
2011-10-27 14:30:52 +00:00
2011-10-28 10:00:13 +00:00
function searchAction ()
{
$key = $this -> _request -> getParam ( 'q' );
if ( ! empty ( $key )) {
$search = new Search ( $key );
$where = $search -> sql_expr ( array ( " m.title " , " m.description " ));
$page =@ ( int ) $this -> _request -> getParam ( 'page' );
if ( empty ( $page )) $page = 1 ;
$offset = $this -> limit * ( $page - 1 );
$row = $this -> db -> fetchAll ( " select count(s.*) from mdstatus s left join normalmetadata m on s.uuid=m.uuid where s.status>0 and " . $where );
$sum = $row [ 0 ][ 'count' ];
$sql = " select m.uuid,m.title,m.id,m.description,s.status,g.id as gid,t.filename from mdstatus s left join normalmetadata m on s.uuid=m.uuid left join geonetworkmetadata g on g.uuid=m.uuid left join thumbnail t on t.id=m.id where s.status>0 and " . $where . " order by s.ts_created desc,m.title limit ? offset ? " ;
$this -> view -> metadata = $this -> db -> fetchAll ( $sql , array ( $this -> limit , $offset ));
$this -> view -> page = new Pagination ( $sum , $page , $this -> limit );
$this -> view -> key = $key ;
2011-10-27 14:49:00 +00:00
foreach ( $this -> view -> metadata as $k => $v )
{
$this -> view -> metadata [ $k ][ 'statustext' ] = $this -> rewritestatus ( $v [ 'status' ]);
2011-10-28 10:00:13 +00:00
}
}
2011-11-08 04:02:04 +00:00
}
function helpAction ()
{
}
function attlistAction ()
{
$this -> _helper -> layout -> disableLayout ();
$this -> _helper -> viewRenderer -> setNoRender ();
$rid = $this -> _request -> getParam ( 'id' );
$list = array ();
$list [] = '
< li style = " border:none " >
附件列表:
< span >< a href = " javascript:void(0); " onclick = " $ ( \ '#filelist_'. $rid .' ul \ ').remove(); " > [ 关闭 ] </ a ></ span >
</ li >
' ;
2011-11-08 07:18:46 +00:00
$sql = " select att.realname,att.id,att.filesize from attachments att
2011-11-08 04:02:04 +00:00
left join mdreviewattach ratt on ratt . attachid = att . id
where ratt . reviewid = $rid " ;
$rs = $this -> db -> query ( $sql );
$rows = $rs -> fetchAll ();
foreach ( $rows as $k => $v )
{
2011-11-08 07:18:46 +00:00
if ( $v [ 'filesize' ] > 1024 * 1024 )
{
$v [ 'filesize' ] = round ( $v [ 'filesize' ] / 1024 / 1024 , 2 ) . " MB " ;
}
else
{
$v [ 'filesize' ] = round ( $v [ 'filesize' ] / 1024 , 2 ) . " KB " ;
}
2011-11-08 04:02:04 +00:00
$list [] = '
2011-11-08 07:18:46 +00:00
< li > '.$v[' realname '].' & nbsp ;( '.$v[' filesize '].' )
2011-11-08 08:04:11 +00:00
< span >< a href = " /review/downatt/id/'. $v['id'] .' " target = " _blank " > 下载 </ a ></ span >
2011-11-08 04:02:04 +00:00
</ li >
' ;
}
if ( count ( $rows ) > 0 )
{
echo " <ul> " . join ( '' , $list ) . " </ul> " ;
} else {
echo " 无附件 " ;
}
exit ();
} // ajax 评审附件列表
2011-11-08 07:09:23 +00:00
function downattAction (){
$this -> _helper -> layout -> disableLayout ();
$this -> _helper -> viewRenderer -> setNoRender ();
$id = $this -> _request -> getParam ( 'id' );
2011-11-08 08:04:11 +00:00
$auth = Zend_Auth :: getInstance ();
if ( $auth -> hasIdentity ())
{
try {
$sql = " select * from attachments where id=' $id ' " ;
2011-11-08 07:09:23 +00:00
2011-11-08 08:04:11 +00:00
$re = $this -> db -> query ( $sql );
$row = $re -> fetch ();
$fullPath = $this -> view -> config -> upload . $row [ 'filename' ];
2011-11-14 02:54:10 +00:00
if ( ! file_exists ( $fullPath ))
{
echo ' <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head >< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
< title > 错误提示! </ title ></ head >< body > 文件读取出错,请稍后重试 </ body ></ html > ' ;
exit ();
}
2011-11-08 08:04:11 +00:00
$fsize = filesize ( $fullPath );
$path_parts = pathinfo ( $fullPath );
$ext = strtolower ( $path_parts [ " extension " ]);
switch ( $ext ) {
case " pdf " : $ctype = " application/pdf " ; break ;
case " exe " : $ctype = " application/octet-stream " ; break ;
case " zip " : $ctype = " application/zip " ; break ;
case " doc " : $ctype = " application/msword " ; break ;
case " xls " : $ctype = " application/vnd.ms-excel " ; break ;
case " ppt " : $ctype = " application/vnd.ms-powerpoint " ; break ;
case " gif " : $ctype = " image/gif " ; break ;
case " png " : $ctype = " image/png " ; break ;
case " jpeg " :
case " jpg " : $ctype = " image/jpg " ; break ;
default : $ctype = " application/force-download " ;
}
$content = file_get_contents ( $fullPath );
$this -> _helper -> layout -> disableLayout ();
$this -> _helper -> viewRenderer -> setNoRender ();
$this -> getResponse () -> setHeader ( 'Content-Type' , 'application/octet-stream' )
-> setHeader ( 'Content-Disposition' , 'attachment; filename="' . $row [ 'realname' ] . '"' )
-> setHeader ( 'Content-Length' , $fsize )
-> setHeader ( 'Content-Type' , 'application/force-download' )
-> setHeader ( 'Content-Type' , 'application/download' )
-> setHeader ( 'Content-Type' , $ctype )
-> 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 );
$sql = " update attachments set downtimes=downtimes+1 where id = $id " ;
@ $this -> db -> exec ( $sql );
} catch ( Exception $e ){
2011-11-09 07:57:50 +00:00
echo ' <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
2011-11-14 02:54:10 +00:00
< head >< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
< title > 错误提示! </ title ></ head >< body > 文件读取出错,请稍后重试 </ body ></ html > ' ;
exit ();
2011-11-08 08:04:11 +00:00
}
} else {
2011-11-09 07:57:50 +00:00
echo ' <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
2011-11-14 02:54:10 +00:00
< head >< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
< title > 错误提示! </ title ></ head >< body > 读取用户信息出错,请先登录再下载附件重试 </ body ></ html > ' ;
exit ();
2011-11-08 08:04:11 +00:00
}
2011-11-08 07:09:23 +00:00
} // downattAction 下载附件
2011-11-15 08:54:42 +00:00
function denyinviteAction (){
$id = $this -> _request -> getParam ( 'id' );
$uuid = $this -> _request -> getParam ( 'uuid' );
if ( empty ( $id ) || empty ( $uuid ) || ! is_numeric ( $id ) ||! preg_match ( " /^[0-9A-Za-z] { 8}-[0-9A-Za-z] { 4}-[0-9A-Za-z] { 4}-[0-9A-Za-z] { 4}-[0-9A-Za-z] { 12} $ / " , $uuid ))
{
$this -> view -> message = " 参数错误 " ;
} else {
$auth = Zend_Auth :: getInstance ();
if ( $auth -> hasIdentity ())
{
$user = $auth -> getIdentity ();
$userid = $user -> id ;
if ( $id == $userid )
{
try {
$sql = " select md.title,r.status,rp.status as expint from mdreview r
left join metadata md on md . uuid = r . uuid
left join mdexpertreview rp on rp . id = md . id
where r . id = '$id' and r . uuid = '$uuid'
" ;
$rs = $this -> db -> query ( $sql );
$rows = $rs -> fetchAll ();
if ( empty ( $rows [ 'expint' ]))
{
$this -> view -> message = " 您无权限进行此操作 " ;
} else
{
if ( $rows [ 'status' ] >= 3 || $rows [ 'expint' ] >= 0 )
{
$this -> view -> message = " 该元数据的当前状态不能被拒绝对其的评审 " ;
} else {
$sql = " update mdexpertreview set status=-1 where id=' $id ' and uuid=' $uuid ' " ;
if ( $this -> db -> exec ( $sql ))
$this -> view -> message = " 您已经拒绝该元数据的评审邀请 " ;
}
}
} catch ( Exception $e ){
$this -> view -> message = $e -> getMessage ();
}
} //end if
else
{
$this -> view -> message = " 您无权使用此通知 " ;
} //非本人操作,或尝试删除他人信息
} //end if
else
{
$this -> view -> message = '请登录后再执行此操作,请<a href="/account/login/?href=/review/denyinvite/id/' . $id . '/uuid/' . $uuid . '">点击此处登录</a>' ;
} //未登录
}
} // denyinviteAction() 专家拒绝邀请
2011-11-08 04:02:04 +00:00
2011-10-13 07:56:18 +00:00
}