Files
DzzOffice/core/class/table/table_resources.php
小胡 5c6ade30ef V1.88.5更新内容:
核心功能修复与优化
1. 网盘空间管理优化:
    修复了删除网盘文件后,剩余空间未正确更新的问题,确保用户空间显示准确。
2. 机构用户导航体验提升:
    优化了机构用户在使用中的导航栏返回逻辑,提升了用户在不同页面间跳转时的流畅性和一致性。
用户体验与界面改进
1. 登录页面样式优化:
    解决了登录页面样式重复引用的问题,提升了页面加载速度和用户体验。
2. 移动端界面适配:
    优化了移动端界面的头部名称居中显示,增强了在不同移动设备上的视觉一致性。
3. 卡片显示效果调整:
    修改了卡片的显示效果,使信息展示更加美观和易于阅读。
性能与稳定性提升
1. JS代码压缩问题修复:
    修复了压缩JS代码过程中导致的报错问题,确保了应用的稳定性和性能。
插件与系统升级
1. jstree插件升级:
    升级了jstree插件版本,解决了在某些使用场景中无法选中节点的问题,提升了用户与树形结构交互的可靠性。
2. 应用市场UI优化:
    对应用市场界面进行了UI优化,提升了应用展示的美观度和易用性,使用户能够更方便地查找和安装所需的应用。
2024-07-22 17:45:59 +08:00

1116 lines
52 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
if (!defined('IN_DZZ')) {
exit('Access Denied');
}
class table_resources extends dzz_table
{
public $noperm = false;
public function __construct()
{
$this->_table = 'resources';
$this->_pk = 'rid';
$this->_pre_cache_key = 'resources_';
$this->_cache_ttl = 60 * 60;
parent::__construct();
}
public function insert_data($data, $rid = '')
{
$data['rid'] = ($rid) ? $rid : self::create_id();
if (parent::insert($data)) {
return $data['rid'];
}
return false;
}
//生成主键rid
public function create_id()
{
$microtime = microtime();
list($msec, $sec) = explode(' ', $microtime);
$msec = $msec * 1000000;
$idstr = md5($sec . $msec . random(6));
return $idstr;
}
/* public function getparentsuri($pfid)
{
$path = array();
if ($parent = DB::result_first('select pfid,fname from %t where fid = %d', array('folder', $pfid))) {
if ($parent['pfid'] > 0 && $parent['pfid'] != $pfid) {
$path[] = $parent['fname'];
self::getparenturi($parent['pfid']);
}
}
$path = array_reverse($path);
$path = implode('/', $path);
return $path;
}*/
public function update_by_pfids($pfids, $setarr)
{
if (!is_array($pfids)) $pfids = (array)$pfids;
$rids = array();
foreach (DB::fetch_all("select rid from %t where pfid in(%n)", array('resources', $pfids)) as $v) {
$rids[] = $v['rid'];
}
return self::update_by_rid($rids, $setarr);
}
public function rename_by_rid($rid, $newname)
{
global $_G;
$uid = $_G['uid'];
if (!$infoarr = $this->fetch_info_by_rid($rid)) {
return array('error' => lang('file_not_exist'));
}
$cachkey = 'resourcesdata_' . $rid;
$updatepath = false;
if ($infoarr['type'] == 'folder') {
$updatepath = true;
}
$fid = $infoarr['pfid'];
if (!perm_check::checkperm_Container($infoarr['pfid'], 'edit2') && !($_G['uid'] == $infoarr['uid'] && perm_check::checkperm_Container($infoarr['pfid'], 'edit1'))) {
return array('error' => true);
}
$setarr = array(
'isdelete' => 1,
'deldateline' => time()
);
$position = C::t('resources_path')->fetch_pathby_pfid($fid);
$position = preg_replace('/dzz:(.+?):/', '', $position);
//DB::update($this->_table, array('name' => $newname, 'dateline' => TIMESTAMP), array('rid' => $rid))
if (self::update_by_rid($rid, array('name' => $newname, 'dateline' => TIMESTAMP))) {
if ($updatepath) {
C::t('folder')->update($infoarr['oid'], array('fname' => $newname));
C::t('resources_path')->update_path_by_fid($infoarr['oid'], $newname);
}
//更新属性表数据
C::t('resources_attr')->update_by_skey($rid, $infoarr['vid'], array('title' => $newname));
//更新缓存
$cachkey = 'resourcesdata_' . $rid;
$this->clear_cache($cachkey);
$statisdata = array(
'uid' => getglobal('uid'),
'edits' => 1,
'editdateline' => TIMESTAMP
);
C::t('resources_statis')->add_statis_by_rid($rid, $statisdata);
$hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($infoarr['pfid'], $infoarr['gid']);
$eventdata = array('username' => $_G['username'], 'position' => $position, 'filename' => $infoarr['name'], 'newfilename' => $newname, 'hash' => $hash);
C::t('resources_event')->addevent_by_pfid($infoarr['pfid'], 'rename_file', 'rename', $eventdata, $infoarr['gid'], $rid, $infoarr['name']);
$this->clear_cache($cachkey);
$this->clear_cache($rid);
return array('newname' => $newname);
}
return array('error' => true);
}
//查询文件表基础信息 $notisdelete是否是已删除
public function fetch_info_by_rid($rid, $notisdelete = false)
{
if (!$data = parent::fetch($rid)) return false;
if ($notisdelete) {
if ($data['isdelete'] > 0) return false;
}
return $data;
}
//检查目录权限 如删除,复制,剪切
public function check_folder_perm($icoarr, $action, $isdelete = false)
{
global $_G;
if ($action == 'cut') $action = 'delete';
//获取文件夹fid集合
$fids = C::t('resources_path')->fetch_folder_containfid_by_pfid($icoarr['oid']);
$rids = array();
$resources = array();
$extrasql = '';
if (!$isdelete) {
$extrasql = ' and isdelete < 1 ';
}
//获取当前文件下所有下级rid
foreach (DB::fetch_all("select rid,pfid,oid,uid,sperm from %t where (oid in(%n) or pfid in(%n)) and rid != %s $extrasql", array($this->_table, $fids, $fids, $icoarr['rid'])) as $v) {
$rids[] = $v['rid'];
$resources[] = $v;
}
$index = array_search($icoarr['oid'], $fids);
unset($fids[$index]);
$ridnum = count($rids);
$fidnum = count($fids);
if ($icoarr['gid'] > 0) {
$folderinfo = C::t('folder')->fetch($icoarr['oid']);
if (!perm_FolderSPerm::isPower($folderinfo['fsperm'], $action)) return array('error' => lang('has_no_privilege_file'));
//判断目录是否为空,为空则不判断当前目录权限
if ($ridnum) {
if (perm_check::checkperm_Container($icoarr['pfid'], $action . '2') || ($_G['uid'] == $folderinfo['uid'] && perm_check::checkperm_Container($icoarr['pfid'], $action . '1'))) {
if (!perm_check::checkperm_Container($icoarr['oid'], $action . '2') && !($_G['uid'] == $folderinfo['uid'] && perm_check::checkperm_Container($icoarr['oid'], $action . '1'))) return array('error' => lang('has_no_privilege_file'));
} else {
return array('error' => lang('has_no_privilege_file'));
}
} else {
//判断是否具有上级删除权限
if (!perm_check::checkperm_Container($icoarr['pfid'], $action . '2') && !($_G['uid'] == $folderinfo['uid'] && perm_check::checkperm_Container($icoarr['pfid'], $action . '1'))) {
return array('error' => lang('has_no_privilege_file'));
}
}
if (count($resources)) {
foreach ($resources as $v) {
if (!perm_check::checkperm($action, $v)) {
return array('error' => lang('has_no_privilege_file'));
}
}
}
}
return array($icoarr['oid'], $ridnum, $fidnum, $fids, $rids);
}
//删除文件(移动文件到回收站)
public function recyle_by_rid($rid)
{
global $_G;
$uid = $_G['uid'];
$rid = trim($rid);
$dels = array();
//判断文件是否存在
if (!$infoarr = parent::fetch($rid)) {
return false;
}
$parentfid = $infoarr['pfid'];//父级目录
$setarr = array(
'pfid' => -1,
'isdelete' => 1,
'deldateline' => TIMESTAMP
);
$setarr1 = array(
'isdelete' => 1,
'deldateline' => TIMESTAMP
);
//如果删除的是文件夹
if ($infoarr['type'] == 'folder') {
$result = self::check_folder_perm($infoarr, 'delete');
if ($result['error']) {
return array('error' => $result['error']);
} else {
list($currentfid, $ridnum, $fidnum, $fids, $rids) = $result;
}
if (self::update_by_rid($rid, $setarr)) {
$infoarr['deldateline'] = $setarr['deldateline'];
$infoarr['isdelete'] = $setarr['isdelete'];
//更改下级目录删除状态
if ($ridnum) self::update_by_rid($rids, $setarr1);
//查询回收站是否有相同数据,如果有合并回收站数据
if ($recyledata = C::t('resources_recyle')->fetch_by_rid($infoarr['rid'])) {
if (C::t('folder')->update($currentfid, $setarr)) {
if ($fidnum) DB::update('folder', $setarr1, 'fid in(' . dimplode($rfids) . ')');
DB::update('resources_recyle', array('deldateline' => $infoarr['deldateline'], 'uid' => $uid), array('id' => $recyledata['id']));
} else {
if ($ridnum) DB::update($this->table, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']), 'rid in(' . dimplode($rids) . ')');
self::update_by_rid($rid, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
return array('error' => lang('do_failed'));
}
} else {
if (C::t('folder')->update($currentfid, $setarr)) {
if ($fidnum) DB::update('folder', $setarr1, 'fid in(' . dimplode($rfids) . ')');
C::t('resources_recyle')->insert_data($infoarr);
} else {
if ($ridnum) self::update_by_rid($rids, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
self::update_by_rid($rid, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
return array('error' => lang('do_failed'));
}
}
}
$dels[] = $rid;
} else {
//文件权限判断
if (!perm_check::checkperm_Container($parentfid, 'delete2') && !($uid == $infoarr['uid'] && perm_check::checkperm_Container($parentfid, 'delete1'))) {
return array('error' => lang('no_privilege'));
}
if (DB::result_first("select count(*) from %t where rid = %s", array('resources_recyle', $rid))) {
return array('error' => lang('file_isdelete_in_recycle'));
}
//执行删除
if (self::update_by_rid($rid, $setarr)) {
//修改分享表状态
C::t('shares')->change_by_rid($rid);
$infoarr['deldateline'] = $setarr['deldateline'];
$infoarr['isdelete'] = $setarr['isdelete'];
//数据放入回收站表
if (C::t('resources_recyle')->insert_data($infoarr)) {
$dels[] = $rid;
} else {//放入回收站失败处理
self::update_by_rid($rid, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
}
}
}
return $dels;
}
/*返回1正常删除需删除附属表数据返回2非删除状态内容只删除回收站表数据返回3删除失败
*$force=>是否彻底删除(即是否强制删除非删除状态文件)
* */
public function deletesourcedata($resource, $force = false)
{
$type = $resource['type'];
$oid = $resource['oid'];
switch ($type) {
case 'folder':
return C::t('folder')->delete_by_fid($oid, $force);
case 'link':
C::t('collect')->delete_by_cid($oid);
return 1;
case 'app':
return 1;
case 'user':
return 1;
case 'pan':
return 1;
case 'storage':
return 1;
default :
if (!$resource['vid']) {
C::t('attachment')->delete_by_aid($resource['aid']);
}
return 1;
}
}
public function delete_by_rid($rid, $force = false)
{ //删除图标
global $_G;
$cachekey = 'resourcesdata_' . $rid;
$data = self::getsourcedata($rid);
$status = self::deletesourcedata($data, $force);
//删除相关数据
if ($status == 1) {
//刪除属性表数据
C::t('resources_attr')->delete_by_rid($rid);
//删除事件表数据
C::t('resources_event')->delete_by_rid($rid);
//删除标签表数据
C::t('resources_tag')->delete_by_rid($rid);
//删除回收站数据
C::t('resources_recyle')->delete_by_rid($rid);
//删除版本表数据
if ($data['vid']) {
C::t('resources_version')->delete_by_rid($rid);
}
//删除收藏表数据
C::t('resources_collect')->delete_by_rid($rid);
//删除统计表数据
C::t('resources_statis')->delete_by_rid($rid);
//删除resources表数据
if (parent::delete($rid)) {
//处理删除后空间大小
if (!$data['vid'] && $data['size']) {//更新空间大小
SpaceSize(-$data['size'], $data['gid'], true, $data['uid']);
}
//记录删除事件
$hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($data['pfid'], $data['gid']);
$eventdata = array('username' => $_G['username'], 'position' => $data['relpath'], 'filename' => $data['name'], 'hash' => $hash);
C::t('resources_event')->addevent_by_pfid($data['pfid'], 'finallydel_file', 'finallydelete', $eventdata, $data['gid'], $rid, $data['name']);
$this->clear_cache($cachekey);
return true;
} else {
return false;
}
} elseif ($status == 2) {
$this->clear_cache($rid);
$this->clear_cache($cachekey);
//删除回收站数据
C::t('resources_recyle')->delete_by_rid($rid);
} else {
return false;
}
}
public function getsourcedata($rid)
{
//查询索引表数据
$resourcedata = array();
if (!$resourcedata = self::fetch($rid)) {
return array();
}
//查询文件夹信息
if ($resourcedata['type'] == 'folder') {
$folder = C::t('folder')->fetch_by_fid($resourcedata['oid']);
$resourcedata = array_merge($resourcedata, $folder);
$folderattr = C::t('folder_attr')->fetch_all_folder_setting_by_fid($resourcedata['oid']);
$resourcedata = array_merge($resourcedata, $folderattr);
}
//查询文件路径
if ($path = C::t('resources_path')->fetch_pathby_pfid($resourcedata['pfid'])) {
$resourcedata['path'] = ($resourcedata['type'] == 'folder') ? $path . $resourcedata['name'] . '/' : $path . $resourcedata['name'];
}
$vdata = array();
if ($resourcedata['vid'] > 0) {
$vdata = C::t('resources_version')->fetch($resourcedata['vid']);
}
$versiondata = array();
if ($vdata) {
$versiondata = array(
'dateline' => $vdata['dateline'],//文件修改时间
);
}
//查询文件属性信息
$attrdata = C::t('resources_attr')->fetch_by_rid($rid, $resourcedata['vid']);
$resourcedata = array_merge($resourcedata, $attrdata);
$resourcedata = array_merge($resourcedata, $versiondata);
if ($resourcedata['aid']) {//查询附件数据
$attachment = C::t('attachment')->fetch($resourcedata['aid']);
//附件表上传时间和文件创建时间字段名称冲突
$attachment['olddateline'] = $attachment['dateline'];
unset($attachment['dateline']);
$resourcedata = array_merge($resourcedata, $attachment);
}
return $resourcedata;
}
public function fetch_by_rid($rid, $force_from_db = false)
{ //返回一条数据同时加载资源表数据
global $_G;
$cachekey = 'resourcesdata_' . $rid;
if ($data = $this->fetch_cache($cachekey)) {
return $data;
}
$data = array();
if (!$data = self::getsourcedata($rid)) {
return array();
}
$data['size'] = isset($data['size']) ? $data['size'] : 0;
if ($data['type'] == 'image') {
$data['img'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=small&path=' . dzzencode('attach::' . $data['aid']);
$data['url'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=large&path=' . dzzencode('attach::' . $data['aid']);
} elseif ($data['type'] == 'attach' || $data['type'] == 'document') {
$data['img'] = isset($data['img']) ? $data['img'] :geticonfromext($data['ext'], $data['type']);
$data['url'] = DZZSCRIPT . '?mod=io&op=getStream&path=' . dzzencode('attach::' . $data['aid']);
} elseif ($data['type'] == 'shortcut') {
$data['ttype'] = $data['tdata']['type'];
$data['ext'] = $data['tdata']['ext'];
} elseif ($data['type'] == 'dzzdoc') {
$data['url'] = DZZSCRIPT . '?mod=document&icoid=' . dzzencode('attach::' . $data['aid']);
$data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
} elseif ($data['type'] == 'folder') {
//$contaions = self::get_contains_by_fid($data['oid'], true);
//$data['contaions'] = $contaions;
$relativepath = str_replace(':', '', strrchr($data['path'], ':'));
$data['position'] = substr($relativepath, 0, strlen($relativepath) - 1);
$data['fsize'] = 0;//formatsize($contaions['size']);
// $data['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
// $data['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
$data['img'] = $data['img']?$data['img']:'dzz/images/default/system/'.$data['flag'].'.png';
} else {
$data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
}
if ($data['appid']) {
$imgs = C::t('app_market')->fetch_appico_by_appid($data['appid']);
$data['img'] = ($imgs) ? 'data/attachment/' . $imgs : geticonfromext($data['ext'], $data['type']);
}
if (empty($data['name'])) $data['name'] = $data['title'];
$data['url'] = isset($data['url']) ? replace_canshu($data['url']) : '';
$data['ftype'] = getFileTypeName($data['type'], $data['ext']);
$data['fdateline'] = dgmdate($data['dateline'], 'Y-m-d H:i:s');
$data['fsize'] = formatsize($data['size']);
$data['ffsize'] = lang('property_info_size', array('fsize' => formatsize($data['size']), 'size' => $data['size']));
$data['relativepath'] = $data['path'] ? $data['path'] : '';
$data['relpath'] = dirname(preg_replace('/dzz:(.+?):/', '', $data['relativepath'])) . '/';
$data['path'] = $data['rid'];
$data['bz'] = '';
$data['collect'] = C::t('resources_collect')->fetch_by_rid($rid);
if ($data['remote'] > 1) $data['rbz'] = io_remote::getBzByRemoteid($data['remote']);
//增加安全相关的路径
$data['dpath'] = dzzencode($data['path']);
$data['apath'] = $data['aid'] ? dzzencode('attach::' . $data['aid']) : $data['dpath'];
if (!$data['sperm']) $data['sperm'] = perm_FileSPerm::typePower($data['type'], $data['ext']);
Hook::listen('filter_resource_rid', $data);//数据过滤挂载点
$this->store_cache($cachekey, $data);
return $data;
}
/* //查询群组id
public function fetch_gid_by_rid($rid)
{
return DB::result_first("select gid from %t where rid = %d", array($this->_table, $rid));
}*/
/* //查询多个文件右侧信息
public function fetch_rightinfo_by_rid($rids)
{
if (!is_array($rids)) $rids = (array)$rids;
$fileinfo = array();
$contains = array('size' => 0, 'contain' => array(0, 0));
foreach (DB::fetch_all("select * from %t where rid in(%n)", array($this->_table, $rids)) as $value) {
$contains['size'] += $value['size'];
if ($value['type'] == 'folder') {
$contains['contain'][1] += 1;
$containchild = '';
$containchild = $this->get_contains_by_fid($value['oid'], true);
if (!empty($containchild)) {
$contains['contain'][1] += $containchild['contain'][1];
$contains['contain'][0] += $containchild['contain'][0];
$contains['size'] += $containchild['size'];
}
} else {
$contains['contain'][0] += 1;
}
if (!isset($fileinfo['path'])) {
$path = C::t('resources_path')->fetch_pathby_pfid($value['pfid']);
$fileinfo['position'] = preg_replace('/dzz:(.+?):/', '', $path);
}
}
$fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contains['size']), 'size' => $contains['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contains['contain'][0], 'foldernum' => $contains['contain'][1]));
$fileinfo['filenum'] = count($rids);
return $fileinfo;
}*/
//查询目录文件数,$getversion =>是否获取版本数据
public function get_contains_by_fid($fid, $getversion = true)
{
$contains = array('size' => 0, 'contain' => array(0, 0));
$pfids = C::t('resources_path')->fetch_folder_containfid_by_pfid($fid);
foreach (DB::fetch_all("select r.rid,r.vid,r.size as primarysize,r.type,r.pfid,v.size from %t r
left join %t v on r.rid=v.rid where r.pfid in (%n) and r.isdelete < 1", array($this->_table, 'resources_version', $pfids)) as $v) {
if (!isset($resluts[$v['rid']])) {
$resluts[$v['rid']] = $v;
} else {
$resluts[$v['rid']]['size'] += intval($v['size']);
}
}
foreach ($resluts as $value) {
if ($getversion) {
$contains['size'] += ($value['size'] > 0) ? $value['size'] : $value['primarysize'];
} else {
$contains['size'] += $value['primarysize'];
}
if ($value['type'] == 'folder' && $fid != $value['oid']) {
$contains['contain'][1] += 1;
} else {
$contains['contain'][0] += 1;
}
}
return $contains;
}
//查询文件对应的rid
public function fetch_rid_by_fid($fid)
{
return DB::result_first("select rid from %t where oid = %d and `type` = 'folder' ", array($this->_table, $fid));
}
/* //查询文件夹对应的fid
public function fetch_fid_by_rid($rid)
{
return DB::result_first("select oid from %t where rid = %s and `type` = %s", array($this->_table, $rid, 'folder'));
}*/
//获取文件夹基本信息
public function get_folderinfo_by_fid($fid)
{
if (!$folderinfo = C::t('folder')->fetch($fid)) return false;
/*$contaions = self::get_contains_by_fid($fid, true);
$folderinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
$folderinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));*/
$path = C::t('resources_path')->fetch_pathby_pfid($fid);
$folderinfo['position'] = preg_replace('/dzz:(.+?):/', '', $path);
$folderinfo['fdateline'] = dgmdate($folderinfo['dateline'], 'Y-m-d H:i:s');
$folderinfo['isgroup'] = ($folderinfo['flag'] == 'organization') ? true : false;
return $folderinfo;
}
//查詢文件夹下文件信息
/*public function fetch_folderinfo_by_pfid($fid)
{
global $_G;
if ($fid) {
if ($folder = C::t('folder')->fetch($fid)) {
$where1 = array();
if ($folder['gid'] > 0) {
$folder['perm'] = perm_check::getPerm($folder['fid']);
if ($folder['perm'] > 0) {
if (perm_binPerm::havePower('read2', $folder['perm'])) {
$where1[] = "1";
} elseif (perm_binPerm::havePower('read1', $folder['perm'])) {
$where1[] = "uid='{$_G[uid]}'";
}
}
$where1 = array_filter($where1);
if (!empty($where1)) $temp[] = "(" . implode(' OR ', $where1) . ")";
else $temp[] = "0";
} else {
$temp[] = " uid='{$_G[uid]}'";
}
$where[] = '(' . implode(' and ', $temp) . ')';
unset($temp);
}
$wheresql = "";
if ($where) $wheresql .= implode(' AND ', $where);
return DB::fetch_all("select * from %t where pfid = %d and isdelete = 0 and $wheresql", array($this->_table, $fid));
}
}*/
public function fetch_all_by_pfid($pfid, $conditions = array(), $limit = 0, $orderby = '', $order = '', $start = 0, $count = false)
{
global $_G;
$limitsql = $limit ? DB::limit($start, $limit) : '';
$data = array();
$wheresql = ' 1 ';
$where = array();
$para = array($this->_table);
$where[] = ' isdelete < 1 ';
$mustdition = '';
//解析搜索条件
if ($conditions && is_string($conditions)) {//字符串条件语句
$wheresql .= $conditions;
} elseif (is_array($conditions)) {
foreach ($conditions as $k => $v) {
if (!is_array($v)) {
if ($k == 'mustdition') {
$mustdition = $v;
} else {
$connect = 'and';
$wheresql .= $connect . ' `' . $k . "` = '" . $v . "' ";
}
} else {
$relative = isset($v[1]) ? $v[1] : '=';
$connect = isset($v[2]) ? $v[2] : 'and';
if ($relative == 'in') {
$wheresql .= $connect . " `" . $k . "` " . $relative . " (" . dimplode($v[0]) . ") ";
}elseif ($relative == 'not in') {
$wheresql .= $connect . " `" . $k . "` " . $relative . " (" . dimplode($v[0]) . ") ";
} elseif ($relative == 'stringsql') {
$wheresql .= $connect . " " . $v[0] . " ";
} elseif ($relative == 'like') {
$wheresql .= $connect . " " . $k . " like %s ";
$para[] = '%' . $v[0] . '%';
} else {
$wheresql .= $connect . " `" . $k . "` " . $relative . " '" . $v[0] . "' ";
}
}
}
}
if (is_array($pfid)) {
$arr = array();
foreach ($pfid as $fid) {
$temp = array('pfid = %d');
$para[] = $fid;
if ($folder = C::t('folder')->fetch($fid)) {
$where1 = array();
if ($folder['gid'] > 0) {
$folder['perm'] = perm_check::getPerm($folder['fid']);
if ($folder['perm'] > 0) {
if (perm_binPerm::havePower('read2', $folder['perm'])) {
$where1[] = "1";
} elseif (perm_binPerm::havePower('read1', $folder['perm'])) {
$where1[] = "uid='{$_G[uid]}'";
}
}
$where1 = array_filter($where1);
if (!empty($where1)) $temp[] = "(" . implode(' OR ', $where1) . ")";
else $temp[] = "0";
} else {
$temp[] = " uid='{$_G[uid]}'";
}
}
$arr[] = '(' . implode(' and ', $temp) . ')';
unset($temp);
}
if ($arr) $where[] = '(' . implode(' OR ', $arr) . ')';
} elseif ($pfid) {
$temp = array('pfid= %d');
$para[] = $pfid;
if ($folder = C::t('folder')->fetch($pfid)) {
$where1 = array();
if ($folder['gid'] > 0) {
$folder['perm'] = perm_check::getPerm($folder['fid']);
if ($folder['perm'] > 0) {
if (perm_binPerm::havePower('read2', $folder['perm'])) {
$where1[] = "1 = 1";
} elseif (perm_binPerm::havePower('read1', $folder['perm'])) {
$where1[] = "uid='{$_G[uid]}'";
}
}
$where1 = array_filter($where1);
if ($where1) $temp[] = "(" . implode(' OR ', $where1) . ")";
else $temp[] = "0";
} else {
$temp[] = " uid='{$_G[uid]}'";
}
}
$where[] = '(' . implode(' and ', $temp) . ')';
unset($temp);
}
if ($mustdition) $wheresql = '(' . $wheresql . $mustdition . ')';
if ($where) $wheresql .= ' and ' . implode(' AND ', $where);
if ($count) return DB::result_first("SELECT COUNT(*) FROM %t $wheresql ", $para);
$ordersql = '';
if (is_array($orderby)) {
foreach ($orderby as $key => $value) {
$orderby[$key] = $value . ' ' . $order;
}
$ordersql = ' ORDER BY ' . implode(',', $orderby);
} elseif ($orderby) {
if ($orderby == 'name') {
$ordersql = " ORDER BY convert(name,UNSIGNED) ".$order .
",SUBSTRING_INDEX(name,'-',1) " . $order . ",convert(replace(replace(SUBSTRING_INDEX(name,'-',2),SUBSTRING_INDEX(name,'-',1),''),'-','') , UNSIGNED) " . $order .
",convert(replace(replace(SUBSTRING_INDEX(name,'-',3),SUBSTRING_INDEX(name,'-',2),''),'-','') , UNSIGNED) " . $order;
} else {
$ordersql = ' ORDER BY ' . $orderby . ' ' . $order;
}
}
foreach (DB::fetch_all("SELECT rid FROM %t where $wheresql $ordersql $limitsql", $para) as $value) {
if ($arr = self::fetch_by_rid($value['rid'])) $data[$value['rid']] = $arr;
}
return $data;
}
//查询群组下的文件、文件夹信息
/*public function fetch_all_by_gid($gid)
{
$gid = intval($gid);
if ($folderinfo = C::t('folder')->fetch_folderinfo_by_gid($gid)) {
return self::fetch_by_pfid($folderinfo['fid']);
}
}*/
//查询目录下所有文件基本信息
public function fetch_basicinfo_by_pfid($pfid)
{
$pfid = intval($pfid);
return DB::fetch_all("select * from %t where pfid = %d", array($this->_table, $pfid));
}
//查询目录下的文件信息
public function fetch_by_pfid($pfid, $uid = '', $checkperm = true)
{
$currentuid = getglobal('uid');
$pfid = intval($pfid);
$where = " pfid = %d";
$param = array($this->_table, $pfid);
$datainfo = array();
if ($uid) {
$where .= " and uid = %d";
$param[] = $uid;
}
$path = C::t('resources_path')->fetch_pathby_pfid($pfid);
foreach (DB::fetch_all("select * from %t where $where and isdelete < 1 order by dateline desc", $param) as $k => $value) {
if ($value['type'] == 'folder') {
$value['path'] = $path . $value['name'] . '/';//路径
if ($checkperm) {
if (!perm_check::checkperm_Container($value['oid'], 'read2') &&
!($value['uid'] == $currentuid && perm_check::checkperm_Container($value['oid'], 'read1'))
) {
continue;
}
}
} else {
if ($checkperm) {
$value['path'] = $path . $value['name'];//路径
if (!perm_check::checkperm_Container($value['oid'], 'read2') &&
!($value['uid'] == $currentuid) && perm_check::checkperm_Container($value['oid'], 'read1')
) {
continue;
}
}
}
$data = C::t('resources_attr')->fetch_by_rid($value['rid'], $value['vid']);
$data['collect'] = C::t('resources_collect')->fetch_by_rid($value['rid']);
$datainfo[$k] = $value;
$datainfo[$k] = array_merge($datainfo[$k], $data);
if (!isset($datainfo[$k]['img'])) {
if ($datainfo[$k]['type'] == 'folder') {
$datainfo[$k]['img'] = './dzz/images/extimg/folder.png';
} elseif ($datainfo[$k]['type'] == 'image') {
$datainfo[$k]['img'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=small&path=' . dzzencode('attach::' . $datainfo[$k]['aid']);
} else {
$datainfo[$k]['img'] = './dzz/images/extimg/' . $datainfo[$k]['ext'] . '.png';
}
}
$datainfo[$k]['taginfo'] = C::t('resources_tag')->fetch_tag_by_rid($value['rid']);
$datainfo[$k]['dpath'] = dzzencode($value['rid']);
$datainfo[$k]['fsize'] = formatsize($value['size']);
}
return $datainfo;
}
//通过rid更新数据
public function update_by_rid($rid, $setarr)
{
if (!is_array($rid)) $rid = (array)$rid;
if (parent::update($rid, $setarr)) {
foreach ($rid as $v) {
$cachekey = 'resourcesdata_' . $v;
$this->clear_cache($cachekey);
}
}
return true;
}
//查询某目录下的所有文件夹
public function fetch_folder_by_pfid($fid, $numselect = false)
{
return DB::fetch_all("select * from %t where pfid = %d and `type` = %s and isdelete < 1 ", array($this->_table, $fid, 'folder'));
}
public function fetch_folder_num_by_pfid($fid)
{
return DB::result_first("select count(*) from %t where pfid = %d and `type` = %s and deldateline < 1", array($this->_table, $fid, 'folder'));
}
//通过rid获取属性信息
public function get_property_by_rid($rids, $contains = true)
{
global $_G;
$uid = $_G['uid'];
$wheresql = " where r.rid in(%n) ";
$param = array($this->_table, 'folder', 'resources_path', $rids);
if (!is_array($rids)) $rids = (array)$rids;
if (count($rids) > 1) {
//获取文件基本信息
$fileinfos = DB::fetch_all("select r.*,f.perm_inherit,p.path from %t r left join %t f on r.pfid = f.fid left join %t p on p.fid = r.pfid $wheresql", $param);
if (!$fileinfos) {
return array('error' => lang('no_privilege'));
}
$fileinfo = array();
$tmpinfo = array();
$infos = array();
foreach ($fileinfos as $v) {
$infos[$v['rid']] = $v;
$tmpinfo['rids'][] = $v['rid'];
$tmpinfo['names'][] = $v['name'];
$tmpinfo['pfid'][] = $v['pfid'];
$tmpinfo['ext'][] = ($v['ext']) ? $v['ext'] : $v['type'];
$tmpinfo['type'][] = $v['type'];
$tmpinfo['username'][] = $v['username'];
$tnpinfo['hascontain'][$v['rid']] = ($v['type'] == 'folder') ? 1 : 0;
$tmpinfo['realpath'][] = $v['path'];
}
$fileinfo['ismulti'] = count($rids);//是否是多选
$fileinfo['name'] = getstr(implode(',', array_unique($tmpinfo['names'])), 60);
//判断文件归属
$fileinfo['username'] = (count(array_unique($tmpinfo['username'])) > 1) ? lang('more_member_owner') : $tmpinfo['username'][0];
//判断是否在同一文件夹下
if (count(array_unique($tmpinfo['pfid'])) > 1) {
$fileinfo['realpath'] = lang('more_folder_position');
$fileinfo['rid'] = implode(',', $tmpinfo['rids']);
} else {
$fileinfo['realpath'] = lang('all_positioned') . preg_replace('/dzz:(.+?):/', '', $tmpinfo['realpath'][0]);
$fileinfo['rid'] = implode(',', $tmpinfo['rids']);
}
//判断文件类型是否相同
$judgesecond = false;
if (count(array_unique($tmpinfo['ext'])) > 1) {
$fileinfo['type'] = lang('more_file_type');
$judgesecond = true;
} elseif ($tmpinfo['ext'][0]=='folder') {
$fileinfo['type'] = lang('均为文件夹');
} else {
$fileinfo['type'] = lang('louis_vuitton') . $tmpinfo['ext'][0] . lang('type_of_file');
}
if (in_array('', $tmpinfo['ext']) || $judgesecond) {
if (count(array_unique($tmpinfo['type'])) > 1) {
$fileinfo['type'] = lang('more_file_type');
} else {
$fileinfo['type'] = lang('louis_vuitton') . $tmpinfo['type'][0] . lang('typename_attach');
}
}
if ($contains) {
//文件大小和文件个数信息
$tmpinfo['contains'] = array('size' => 0, 'contain' => array(0, 0));
foreach ($tnpinfo['hascontain'] as $k => $v) {
if ($v) {
$tmpinfo['contains']['contain'][1] += 1;
$childcontains = self::get_contains_by_fid($infos[$k]['oid'], true);
$tmpinfo['contains']['contain'][0] += $childcontains['contain'][0];
$tmpinfo['contains']['contain'][1] += $childcontains['contain'][1];
$tmpinfo['contains']['size'] += $childcontains['size'];
} else {
$tmpinfo['contains']['contain'][0] += 1;
$tmpinfo['contains']['size'] += $infos[$k]['size'];
}
}
$fileinfo['fsize'] = formatsize($tmpinfo['contains']['size']);
$fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($tmpinfo['contains']['size']), 'size' => $tmpinfo['contains']['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $tmpinfo['contains']['contain'][0], 'foldernum' => $tmpinfo['contains']['contain'][1]));
}
$fileinfo['img'] = self::get_icosinfo_by_rid($fileinfo['rid']);
unset($tmpinfo);
} else {//单个文件信息
//文件基本信息
$fileinfo = DB::fetch_first("select r.*,f.perm_inherit,p.path from %t r
left join %t f on r.pfid = f.fid left join %t p on r.pfid = p.fid $wheresql", $param);
if (!$fileinfo) {
return array('error' => lang('no_privilege'));
}
//文件统计信息
$filestatis = C::t('resources_statis')->fetch_by_rid($rids[0]);
//位置信息
$fileinfo['realpath'] = preg_replace('/dzz:(.+?):/', '', $fileinfo['path']);
//统计信息
$fileinfo['opendateline'] = ($filestatis['opendateline']) ? dgmdate($filestatis['opendateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
$fileinfo['editdateline'] = ($filestatis['editdateline']) ? dgmdate($filestatis['editdateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
$fileinfo['fdateline'] = dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
//编辑权限信息
$fileinfo['editperm'] = 1;
if ($fileinfo['gid'] > 0) {
$powerarr = perm_binPerm::getPowerArr();
if (!(C::t('organization_admin')->chk_memberperm($fileinfo['gid'])) && !($uid == $fileinfo['uid'] && $fileinfo['perm_inherit'] & $powerarr['edit1']) && !($fileinfo['perm_inherit'] & $powerarr['edit2'])) {
$fileinfo['editperm'] = 0;
}
}
//文件图标信息
$fileinfo['img'] = self::get_icosinfo_by_rid($fileinfo['rid']);
if ($fileinfo['type'] == 'folder') {
$fileinfo['type'] = '文件夹';
if ($currentfolder = C::t('folder')->fetch($fileinfo['oid'])) {
$fileinfo['isgroup'] = ($currentfolder['flag'] == 'organization') ? true : false;
}
} elseif ($fileinfo['ext']) {
$fileinfo['type'] = getFileTypeName($fileinfo['type'], $fileinfo['ext']);
} else {
$fileinfo['type'] = lang('undefined_file_type');
}
if ($contains) {
//文件大小信息
if ($fileinfo['type'] == 'folder') {
$contaions = self::get_contains_by_fid($fileinfo['oid'], true);
$contaions['contain'][1] += 1;
$fileinfo['fsize'] = formatsize($contaions['size']);
$fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
} elseif ($fileinfo['ext']) {
$fileinfo['fsize'] = formatsize($fileinfo['size']);
} else {
//获取文件基本信息
$fileinfos = DB::fetch_all("select r.*,f.perm_inherit,p.path from %t r left join %t f on r.pfid = f.fid left join %t p on p.fid = r.pfid $wheresql", $param);
$fileinfo = array();
$tmpinfo = array();
$infos = array();
$fileinfo = DB::fetch_first("select r.*,f.perm_inherit,p.path from %t r left join %t f on r.pfid = f.fid left join %t p on r.pfid = p.fid $wheresql", $param);
if (!$fileinfo) {
return array('error' => lang('no_privilege'));
}
//位置信息
$fileinfo['realpath'] = preg_replace('/dzz:(.+?):/', '', $fileinfo['path']);
//统计信息
$fileinfo['opendateline'] = ($filestatis['opendateline']) ? dgmdate($filestatis['opendateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
$fileinfo['editdateline'] = ($filestatis['editdateline']) ? dgmdate($filestatis['editdateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
$fileinfo['fdateline'] = dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
//编辑权限信息
$fileinfo['editperm'] = 1;
if ($fileinfo['gid'] > 0) {
$powerarr = perm_binPerm::getPowerArr();
if (!(C::t('organization_admin')->chk_memberperm($fileinfo['gid'])) && !($uid == $fileinfo['uid'] && $fileinfo['perm_inherit'] & $powerarr['edit1']) && !($fileinfo['perm_inherit'] & $powerarr['edit2'])) {
$fileinfo['editperm'] = 0;
}
}
foreach ($fileinfos as $v) {
$infos[$v['rid']] = $v;
$tmpinfo['rids'][] = $v['rid'];
$tmpinfo['names'][] = $v['name'];
$tmpinfo['pfid'][] = $v['pfid'];
$tmpinfo['ext'][] = ($v['ext']) ? $v['ext'] : $v['type'];
$tmpinfo['type'][] = $v['type'];
$tmpinfo['username'][] = $v['username'];
$tnpinfo['hascontain'][$v['rid']] = ($v['type'] == 'folder') ? 1 : 0;
$tmpinfo['realpath'][] = $v['path'];
}
$fileinfo['name'] = getstr(implode(',', array_unique($tmpinfo['names'])), 60);
//判断文件归属
$fileinfo['username'] = (count(array_unique($tmpinfo['username'])) > 1) ? lang('more_member_owner') : $tmpinfo['username'][0];
$fileinfo['type'] = lang('type_folder');
//文件大小和文件个数信息
$tmpinfo['contains'] = array('size' => 0, 'contain' => array(0, 0));
foreach ($tnpinfo['hascontain'] as $k => $v) {
if ($v) {
$tmpinfo['contains']['contain'][1] += 1;
$childcontains = self::get_contains_by_fid($infos[$k]['oid'], true);
$tmpinfo['contains']['contain'][0] += $childcontains['contain'][0];
$tmpinfo['contains']['contain'][1] += $childcontains['contain'][1];
$tmpinfo['contains']['size'] += $childcontains['size'];
} else {
$tmpinfo['contains']['contain'][0] += 1;
$tmpinfo['contains']['size'] += $infos[$k]['size'];
}
}
$fileinfo['fsize'] = formatsize($tmpinfo['contains']['size']);
$fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($tmpinfo['contains']['size']), 'size' => $tmpinfo['contains']['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $tmpinfo['contains']['contain'][0], 'foldernum' => $tmpinfo['contains']['contain'][1]));
$fileinfo['img'] = self::get_icosinfo_by_rid($fileinfo['rid']);
}
}
}
return $fileinfo;
}
public function get_containsdata_by_rid($rids)
{
$fileinfo = array();
if (!is_array($rids)) $rids = (array)$rids;
if (count($rids) > 1) {
$fileinfos = DB::fetch_all("select `type`,oid,rid,size from %t where rid in(%n)", array($this->_table, $rids));
$fileinfo = array();
$tmpinfo = array();
$infos = array();
foreach ($fileinfos as $v) {
$infos[$v['rid']] = $v;
$tnpinfo['hascontain'][$v['rid']] = ($v['type'] == 'folder') ? 1 : 0;
}
$tmpinfo['contains'] = array('size' => 0, 'contain' => array(0, 0));
foreach ($tnpinfo['hascontain'] as $k => $v) {
if ($v) {
$tmpinfo['contains']['contain'][1] += 1;
$childcontains = self::get_contains_by_fid($infos[$k]['oid'], true);
$tmpinfo['contains']['contain'][0] += $childcontains['contain'][0];
$tmpinfo['contains']['contain'][1] += $childcontains['contain'][1];
$tmpinfo['contains']['size'] += $childcontains['size'];
} else {
$tmpinfo['contains']['contain'][0] += 1;
$tmpinfo['contains']['size'] += $infos[$k]['size'];
}
}
$fileinfo['fsize'] = formatsize($tmpinfo['contains']['size']);
$fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($tmpinfo['contains']['size']), 'size' => $tmpinfo['contains']['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $tmpinfo['contains']['contain'][0], 'foldernum' => $tmpinfo['contains']['contain'][1]));
}else{
$fileinfo = $this->fetch($rids[0]);
//文件类型和大小信息
if ($fileinfo['type'] == 'folder') {
$contaions = self::get_contains_by_fid($fileinfo['oid'], true);
$contaions['contain'][1] += 1;
$fileinfo['fsize'] = formatsize($contaions['size']);
$fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
} elseif ($fileinfo['ext']) {
$fileinfo['fsize'] = formatsize($fileinfo['size']);
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => 1, 'foldernum' =>0));
} else {
$fileinfo['fsize'] = formatsize($fileinfo['size']);
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => 1, 'foldernum' =>0));
}
}
return $fileinfo;
}
public function get_containsdata_by_fid($fid){
$fileinfo = array();
if($fid){
$contaions = self::get_contains_by_fid($fid, true);
$fileinfo['fsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
}
return $fileinfo;
}
//根据fid获取属性信息
public function get_property_by_fid($fid, $contains = true)
{
global $_G;
$uid = $_G['uid'];
$fileinfo = array();
$param = array('folder', 'resources_path', $fid);
$folders = DB::fetch_first("select f.*,p.path from %t f left join %t p on f.fid = p.fid where f.fid = %d ", $param);
if (!$folders) {
return array('error' => lang('no_privilege'));
}
$fileinfo['realpath'] = preg_replace('/dzz:(.+?):/', '', $folders['path']);
$fileinfo['name'] = $folders['fname'];
$fileinfo['username'] = $folders['username'];
if ($folders['gid'] > 0 && $folders['pfid'] == 0) {
$fileinfo['type'] = lang('org_or_group');
} else {
$fileinfo['type'] = lang('type_folder');
}
if ($contains) {
$contaions = self::get_contains_by_fid($fid, true);
$fileinfo['fsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
$fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
}
//编辑权限信息
if ($folders['gid'] > 0) {
$powerarr = perm_binPerm::getPowerArr();
if (!($uid == $folders['uid'] && $folders['perm_inherit'] & $powerarr['edit1']) && !($folders['perm_inherit'] & $powerarr['edit2'])) {
$fileinfo['editperm'] = 0;
} else {
$fileinfo['editperm'] = 1;
}
} else {
$fileinfo['editperm'] = 1;
}
$statis = C::t('resources_statis')->fetch_by_fid($fid);
$fileinfo['opendateline'] = ($statis['opendateline']) ? dgmdate($statis['opendateline'], 'Y-m-d H:i:s') : '';
$fileinfo['editdateline'] = ($statis['editdateline']) ? dgmdate($statis['editdateline'], 'Y-m-d H:i:s') : '';
$fileinfo['fdateline'] = ($folders['dateline']) ? dgmdate($folders['dateline'], 'Y-m-d H:i:s') : '';
return $fileinfo;
}
public
function get_icosinfo_by_rid($rid)
{
$resourcedata = parent::fetch($rid);
$attrdata = C::t('resources_attr')->fetch_by_rid($rid, $resourcedata['vid']);
$data = array_merge($resourcedata, $attrdata);
if ($data['type'] == 'image') {
$data['img'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=small&path=' . dzzencode('attach::' . $data['aid']);
} elseif ($data['type'] == 'attach' || $data['type'] == 'document') {
$data['img'] = geticonfromext($data['ext'], $data['type']);
} elseif ($data['type'] == 'shortcut') {
$data['img'] = isset($data['tdata']['img']) ? $data['tdata']['img'] : geticonfromext($data['tdata']['ext'], $data['tdata']['type']);
} elseif ($data['type'] == 'dzzdoc') {
$data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
} elseif ($data['type'] == 'folder') {
$data['img'] = $data['img']?$data['img']:'dzz/images/default/system/'.$data['flag'].'.png';
} else {
$data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
}
$img = $data['img'];
unset($data);
return $img;
}
//文件名获取文件信息
public
function get_resources_by_pfid_name($pfid, $name)
{
return DB::fetch_first("select * from %t where pfid=%d and name = %s and `type` = 'folder' ", array($this->_table, $pfid, $name));
}
//文件id获取文件信息
public
function get_resources_info_by_fid($fid)
{
return DB::fetch_first("select * from %t where oid = %d and `type` = 'folder' ", array($this->_table, $fid));
}
}