Files
Pichome/user/my/notification.php
2024-04-30 22:55:18 +08:00

114 lines
4.5 KiB
PHP

<?php
/* @authorcode codestrings
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
// Hook::listen('check_login');
require libfile('function/code');
$filter=trim($_GET['filter']);
if($filter=='new'){//列出所有新通知
$ajax = isset($_GET['ajax']) ? intval($_GET['ajax']) : 0;
$list=array();
$nids=array();//new>0
foreach(DB::fetch_all("select n.*,u.avatarstatus from %t n LEFT JOIN %t u ON n.authorid=u.uid where n.new>0 and n.uid=%d order by dateline DESC",array('notification','user',$_G['uid'])) as $value){
$value['dateline']=dgmdate($value['dateline'],'u');
$value['note']=dzzcode($value['note'],1,1,1,1,1);
$value['firstword'] = substr(ucfirst($value['author']),0,1);
$value['imgUrl'] = 'avatar.php?uid='.$value['authorid'].'&size=small';
$nids[]=$value['id'];
$list[]=$value;
}
if($nids){//去除新标志
C::t('notification')->update($nids,array('new'=>0));
}
if($ajax){
exit(json_encode(array('data'=>$list)));
}
}elseif($filter=='checknew'){//检查有没有新通知
$num=DB::result_first("select COUNT(*) from %t where new>0 and uid=%d",array('notification',$_G['uid']));
exit(json_encode(array('sum'=>$num,'timeout'=>60*1000)));
}else{
$list=array();
$page = empty($_GET['page'])?1:intval($_GET['page']);
$fromid = isset($_GET['appid']) ? intval($_GET['appid']):'';
$keyword = isset($_GET['keyword']) ? trim($_GET['keyword']):'';
$searchsql = " and 1 ";
$perpage=20;
$start=($page-1)*$perpage;
$gets = array(
'mod'=>'system',
'op' =>'notification',
'filter'=>'all'
);
//获取通知包含类型
$searchappid = array();
foreach(DB::fetch_all("select distinct(from_id) from %t where uid = %d",array('notification',$_G['uid'])) as $v){
$searchappid[] = $v['from_id'];
}
$searchcats = array();
if(in_array(0,$searchappid)){
$systemindex = array_search(0,$searchappid);
unset($searchappid[$systemindex]);
$searchcats[1] = array('appid'=>1,'appname'=>lang('system'),'appico'=>'dzz/images/default/notice_system.png');
}
if(count($searchappid) > 0){
foreach(DB::fetch_all("select appname,appid,appico from %t where appid in(%n)",array('app_market',$searchappid)) as $v){
$searchcats[$v['appid']+1] = array('appid'=>$v['appid']+1,'appname'=>$v['appname'],'appico'=>$_G['setting']['attachurl'].$v['appico']);
}
}
//如果接收到搜索条件按条件搜索
//通知类型
if(!is_string($fromid)){
$gets['appid'] = $fromid;
$appid = $fromid -1;
$searchsql .= " and n.from_id = {$appid}";
$navtitle=$searchcats[$fromid]['appname'];
}else{
$navtitle=lang('all_app');
}
$params = array('notification','user','app_market',$_G['uid']);
$countparam = array('notification',$_G['uid']);
//通知内容
if($keyword){
$searchsql .= ' and n.wx_note like(%s)';
$gets['keyword'] = $keyword;
$countparam[] = '%' . $keyword . '%';
$params[] = '%' . $keyword . '%';
}
$theurl = BASESCRIPT."?".url_implode($gets);
$list=array();
if($count=DB::result_first("select COUNT(*) from %t n where n.uid=%d $searchsql",$countparam)){
foreach(DB::fetch_all("select n.*,u.avatarstatus,a.appico from %t n LEFT JOIN %t u ON n.authorid=u.uid left join %t a on n.from_id = a.appid where n.uid=%d $searchsql order by n.dateline DESC limit $start,$perpage",$params) as $value){
$value['dateline']=dgmdate($value['dateline'],'u');
$value['note']=dzzcode($value['note'],1,1,1,1,1);
if(!$value['appico']){
$value['appico'] = 'dzz/images/default/notice_system.png';
}else{
$value['appico'] = $_G['setting']['attachurl']. $value['appico'];
}
$list[]=$value;
}
}
$next=false;
if($count && $count>$start+count($list)) $next=true;
$theurl = DZZSCRIPT . "?" . url_implode ($gets);//分页链接
$multi = multi($count , $perpage ,$page, $theurl );
/* if($_GET['do']=='list'){
include template('notification_list_item');
}else{*/
include template('notification_list');
// }
dexit();
}
include template('notification');
dexit();
?>