207 lines
10 KiB
PHP
207 lines
10 KiB
PHP
<?php
|
|
if (!defined('IN_OAOOA')) {
|
|
exit('Access Denied');
|
|
}
|
|
$operation = isset($_GET['operation']) ? trim($_GET['operation']):'';
|
|
if($operation == 'getfolderdata'){//获取右侧信息
|
|
$appid = isset($_GET['appid']) ? trim($_GET['appid']):'';
|
|
$fid = isset($_GET['fid']) ? trim($_GET['fid']):'';
|
|
$notag = isset($_GET['notag']) ? intval($_GET['notag']):0;
|
|
$hassub = isset($_GET['hassub']) ? intval($_GET['hassub']):0;
|
|
$nofolder = isset($_GET['nofolder']) ? intval($_GET['nofolder']):0;
|
|
$isrecycle = isset($_GET['isrecycle']) ? intval($_GET['isrecycle']):0;
|
|
$data = ['num'=>0,'size'=>0];
|
|
if($nofolder){
|
|
$data = DB::fetch_first("select count(r.rid) as num,sum(r.size) as size from %t r left join %t rf on r.rid=rf.rid
|
|
where isnull(rf.id) and r.appid = %s and r.isdelete = 0",array('pichome_resources','pichome_folderresources',$appid));
|
|
|
|
}elseif($notag){
|
|
$data = DB::fetch_first("select count(distinct(r.rid)) as num ,sum(r.size) as size from %t r left join %t rt on r.rid=rt.rid
|
|
where isnull(rt.id) and r.appid = %s and r.isdelete = 0",array('pichome_resources','pichome_resourcestag',$appid));
|
|
}elseif($fid){
|
|
$fids = explode(',',$fid);
|
|
$folderdata = [];
|
|
$i = 0;
|
|
$o = [];
|
|
foreach(DB::fetch_all("select fname,tag,`desc`,dateline,appid from %t where fid in(%n)",array('pichome_folder',$fids)) as $v){
|
|
$ids= $v['tag'] ? explode(",", $v['tag']):array();
|
|
if(!$appid) $appid = $v['appid'];
|
|
if($i==0){
|
|
$o['tag']=$ids;
|
|
$o['desc']=$v['desc'];
|
|
$o['dateline'] = $v['dateline'];
|
|
$o['fname'] = $v['fname'];
|
|
|
|
}else{
|
|
$o['tag']=array_intersect($o['tag'],$ids);
|
|
if($v['desc'] != $o['desc']) $o['desc'] = '';
|
|
if($v['fname'] != $o['fname']) $o['fname'] = '';
|
|
if($v['dateline'] > $o['dateline']) {
|
|
$o['dateline']=$v['dateline'];
|
|
}
|
|
}
|
|
$i++;
|
|
}
|
|
if($o['tag']){
|
|
$o['tagdata'] = [];
|
|
foreach(DB::fetch_all("select tagname,tid from %t where tid in(%n)",array('pichome_tag',$o['tag'])) as $v){
|
|
$o['tagdata'][$v['tid']] = $v['tagname'];
|
|
}
|
|
}
|
|
unset($o['tag']);
|
|
// if($hassub){
|
|
$nfids = [];
|
|
foreach(DB::fetch_all("select pathkey from %t where fid in(%n)",array('pichome_folder',$fids)) as $value){
|
|
foreach(DB::fetch_all("select fid from %t where pathkey like %s",array('pichome_folder',$value['pathkey'].'%')) as $v){
|
|
$nfids[] = $v['fid'];
|
|
}
|
|
}
|
|
//$fids = $nfids;
|
|
// }
|
|
$data = DB::fetch_first("select count(distinct(r.rid)) as num,sum(r.size) as size from %t r left join %t rf on r.rid=rf.rid
|
|
where r.appid = %s and rf.fid in(%n) and r.isdelete = 0", array('pichome_resources', 'pichome_folderresources', $appid, $nfids));
|
|
$data['foldernum'] = (count($fids) > 1) ? count($nfids):count(array_diff($nfids,$fids));
|
|
$data = array_merge($o,$data);
|
|
//如果有文件才提供ai获取
|
|
if(count($fids) == 1 && $data['num']) $data['fid'] = $nfids;
|
|
Hook::listen('editfilefilter',$data,['type'=>'folder','appid'=>$appid]);
|
|
|
|
}elseif($isrecycle){
|
|
$data = DB::fetch_first("select count(rid) as num,sum(size) as size from %t
|
|
where appid = % and isdelete = 1",array('pichome_resources',$appid));
|
|
}else{
|
|
$data = DB::fetch_first("select count(rid) as num,sum(size) as size from %t
|
|
where appid = % and isdelete < 1",array('pichome_resources',$appid));
|
|
if($data['num']) $data['appid'] = $appid;
|
|
Hook::listen('editfilefilter',$data,['type'=>'vapp','appid'=>$appid]);
|
|
}
|
|
$data['size'] = formatsize($data['size']);
|
|
$data['dateline'] = dgmdate(round($data['dateline'] / 1000), 'Y/m/d H:i');
|
|
|
|
if(!$data['fid']) $data['fid'] =($nfids) ? array_intersect($fids,$nfids):$fids;
|
|
Hook::listen('folderdataFilter',$data,false);
|
|
|
|
exit(json_encode($data));
|
|
}elseif($operation == 'getfiledata'){//获取文件右侧信息
|
|
$appid = isset($_GET['appid']) ? trim($_GET['appid']):'';
|
|
$appdata = C::t('pichome_vapp')->fetch($appid);
|
|
$rids = isset($_GET['rids']) ? trim($_GET['rids']):'';
|
|
$rids = explode(',',$rids);
|
|
if(count($rids) > 1){
|
|
//获取文件标签和描述链接信息
|
|
$o['fileds'] = unserialize($appdata['fileds']);
|
|
$filedFlags = array_column($o['fileds'],'flag');
|
|
$filedsKey = array_search('preview',$filedFlags);
|
|
unset($o['fileds'][$filedsKey]);
|
|
$o['fileds'] = array_values($o['fileds']);
|
|
$aiFilterdata = $d = $oc = [];
|
|
$link = $desc = '';
|
|
$grade = $size = 0;
|
|
foreach(DB::fetch_all("select r.rid,r.ext,r.fids,r.size,r.grade,r.appid,attr.tag,attr.desc,attr.link from %t r LEFT JOIN %t attr ON r.rid=attr.rid where r.rid IN(%n)",array('pichome_resources','pichome_resources_attr',$rids)) as $value){
|
|
$ids= $value['tag'] ? explode(",", $value['tag']):array();
|
|
$fids= $value['fids'] ? explode(",", $value['fids']):array();
|
|
$aiFilterdata['rid'][] = $value['rid'];
|
|
$aiFilterdata['exts'][] = $value['ext'];
|
|
if(!$appid) $appid = $value['appid'];
|
|
$o['icondata'][] = C::t('pichome_resources')->geticondata_by_rid($value['rid'],1);
|
|
if($i==0){
|
|
$o['tags']=$ids;
|
|
$o['fids']=$fids;
|
|
$link = $value['link'];
|
|
$desc = $value['desc'];
|
|
$grade = $value['grade'];
|
|
}else{
|
|
$o['tags']=array_intersect($o['tags'],$ids);
|
|
$o['fids']=array_intersect($o['fids'],$fids);
|
|
if($value['link'] != $link) $link = '';
|
|
if($value['desc'] != $desc) $desc = '';
|
|
if($value['grade'] != $grade) $grade = 0;
|
|
}
|
|
$size += $value['size'];
|
|
$i++;
|
|
}
|
|
$o['size'] = formatsize($size);
|
|
$o['grade'] = $grade;
|
|
$o['desc'] = $desc;
|
|
$o['link'] = $link;
|
|
if($o['tags']){
|
|
$o['tagdata'] = [];
|
|
foreach(DB::fetch_all("select tagname,tid from %t where tid in(%n)",array('pichome_tag',$o['tags'])) as $v){
|
|
$o['tagdata'][$v['tid']] = $v['tagname'];
|
|
}
|
|
}
|
|
if($o['fids']){
|
|
$o['folderdata'] = C::t('pichome_folder')->getDataByFids($o['fids']);
|
|
}
|
|
unset($o['tags']);
|
|
unset($o['fids']);
|
|
$o['fids'] = $o['folderdata'];
|
|
unset($o['folderdata']);
|
|
//获取tab数据
|
|
$tabstatus = 0;
|
|
Hook::listen('checktab', $tabstatus);
|
|
if($tabstatus){
|
|
foreach($o['fileds'] as $v){
|
|
if($v['type'] == 'tabgroup'){
|
|
$gid = intval(str_replace('tabgroup_','',$v['flag']));
|
|
$tids = [];
|
|
$i = 0;
|
|
foreach($rids as $rid){
|
|
$tmptids = [];
|
|
|
|
foreach(DB::fetch_all("select tid from %t where rid =%s and gid = %d",array('pichome_resourcestab',$rid,$gid)) as $val){
|
|
$tmptids[] = $val['tid'];
|
|
}
|
|
if($i == 0) $tids = $tmptids;
|
|
else $tids = array_intersect($tids,$tmptids);
|
|
$i++;
|
|
}
|
|
$tids = array_unique($tids);
|
|
Hook::listen('gettab',$tids);
|
|
$o[$v['flag']] = $tids;
|
|
}
|
|
}
|
|
}
|
|
if(!$o['rid']) $o['rid'] = $rids;
|
|
|
|
Hook::listen('editfilefilter',$aiFilterdata,['type'=>'files','appid'=>$appid]);
|
|
|
|
$o = array_merge($o,$aiFilterdata);
|
|
Hook::listen('resourcesdataFilter',$o,false);
|
|
exit(json_encode($o));
|
|
}else{
|
|
$data = C::t('pichome_resources')->fetch_by_rid($rids[0],1,1);
|
|
$data['fileds'] = unserialize($appdata['fileds']);
|
|
global $Types;
|
|
$notallowPreviewexts = array_merge($Types['document'],$Types['video'],$Types['audio']);
|
|
if(in_array($data['ext'],$notallowPreviewexts)){
|
|
$filedFlags = array_column($data['fileds'],'flag');
|
|
$filedsKey = array_search('preview',$filedFlags);
|
|
unset($data['fileds'][$filedsKey]);
|
|
}
|
|
$data['fileds'] = array_values($data['fileds']);
|
|
$data['preview'] = C::t('thumb_preview')->fetchPreviewByRid($rids[0],1);
|
|
$data['allowcover'] = ($data['apptype'] == 1 || $data['apptype'] == 3) ? 1 : 0;
|
|
//获取tab数据
|
|
$tabstatus = 0;
|
|
Hook::listen('checktab', $tabstatus);
|
|
if($tabstatus){
|
|
foreach($data['fileds'] as $v){
|
|
if($v['type'] == 'tabgroup'){
|
|
$gid = intval(str_replace('tabgroup_','',$v['flag']));
|
|
$tids = [];
|
|
foreach(DB::fetch_all("select tid from %t where rid= %s and gid = %d",array('pichome_resourcestab',$rids[0],$gid)) as $val){
|
|
$tids[] = $val['tid'];
|
|
}
|
|
Hook::listen('gettab',$tids);
|
|
$data[$v['flag']] = $tids;
|
|
}
|
|
}
|
|
}
|
|
$aiFilterdata = ['rid'=>[$data['rid']],'exts'=>[$data['ext']]];
|
|
Hook::listen('editfilefilter',$aiFilterdata,['type'=>'file','appid'=>$data['appid']]);
|
|
$data = array_merge($data,$aiFilterdata);
|
|
exit(json_encode($data));
|
|
}
|
|
|
|
} |