You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
416 lines
16 KiB
416 lines
16 KiB
<?php
|
|
if (!defined('IN_DZZ')) {
|
|
exit('Access Denied');
|
|
}
|
|
include_once libfile('function/code');
|
|
$do = isset($_GET['do']) ? trim($_GET['do']) : '';
|
|
$uid = $_G['uid'];
|
|
if ($do == 'filelist' && !$uid) {
|
|
$errorResponse = [
|
|
"code" => 1,
|
|
"msg" => lang('no_login_operation'),
|
|
"count" => 0,
|
|
"data" => [],
|
|
];
|
|
exit(json_encode($errorResponse));
|
|
}
|
|
Hook::listen('check_login');//检查是否登录,未登录跳转到登录界面
|
|
global $_G;
|
|
|
|
//获取文件夹右侧信息
|
|
if ($do == 'getfolderdynamic') {
|
|
//接收文件夹id数据
|
|
$bz = isset($_GET['bz']) ? trim($_GET['bz']) : '';
|
|
$fileinfo = array();
|
|
if($bz && $bz !== 'dzz') {
|
|
$fileinfo=IO::getCloud($bz);
|
|
$fileinfo['fname'] = $fileinfo['cloudname'];
|
|
$fileinfo['type'] = $fileinfo['cloudtype'].'('.$fileinfo['name'].')';
|
|
$fileinfo['realpath'] = $fileinfo['attachdir'];
|
|
if ($fileinfo['uid']) {
|
|
$user = getuserbyuid($fileinfo['uid']);
|
|
if($user['uid']) {
|
|
$fileinfo['username'] = $user['username'];
|
|
} else {
|
|
$fileinfo['username'] = '该用户已不存在!';
|
|
}
|
|
} else {
|
|
$fileinfo['username'] = '系统盘';
|
|
}
|
|
$fileinfo['fdateline'] = ($fileinfo['dateline']) ? dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s') : '';;
|
|
include template('right_folder_menu');
|
|
exit();
|
|
}
|
|
$rid = isset($_GET['rid']) ? trim($_GET['rid']) : '';
|
|
$fid = isset($_GET['fid']) ? trim($_GET['fid']) : '';
|
|
$gid = 0;
|
|
//默认动态查询条件
|
|
$start = 0;
|
|
$limit = 3;
|
|
$next = false;
|
|
$nextstart = $start + $limit;
|
|
//如果获取到rid
|
|
if ($rid) {
|
|
//文件夹属性信息
|
|
$fileinfo = C::t('resources')->get_property_by_rid($rid);
|
|
//权限信息
|
|
$perm = C::t('folder')->fetch_perm_by_fid($fileinfo['pfid']);//获取文件夹权限
|
|
//动态信息
|
|
$total = C::t('resources_event')->fetch_by_rid($rid, $start, $limit, true);
|
|
if ($total > $nextstart) {
|
|
$next = $nextstart;
|
|
}
|
|
if ($total) {
|
|
$events = C::t('resources_event')->fetch_by_rid($rid, $start, $limit);
|
|
}
|
|
$gid = $fileinfo['gid'];
|
|
} elseif ($fid) {//如果获取到文件夹id
|
|
//文件夹信息
|
|
$fileinfo = C::t('resources')->get_folderinfo_by_fid($fid);
|
|
if (!$fileinfo['gid'] && ($fileinfo['uid'] !== $_G['uid'])) {
|
|
return;
|
|
}
|
|
$gid = $fileinfo['gid'];
|
|
if ($fileinfo['isgroup']) {
|
|
$org = C::t('organization')->fetch($gid);
|
|
//获取已使用空间
|
|
$usesize = C::t('organization')->get_orgallotspace_by_orgid($gid, 0, false);
|
|
//获取总空间
|
|
if ($org['maxspacesize'] == 0) {
|
|
$maxspace = 0;
|
|
} else {
|
|
if ($org['maxspacesize'] == -1) {
|
|
$maxspace = -1;
|
|
} else {
|
|
$maxspace = $org['maxspacesize'] * 1024 * 1024;
|
|
}
|
|
}
|
|
//成员信息
|
|
$members = C::t('organization_user')->fetch_user_byorgid($gid);
|
|
//处理成员头像函数
|
|
$userids = array();
|
|
foreach ($members as $k => $v) {
|
|
$userids[] = $v['uid'];
|
|
}
|
|
$userstr = implode(',', $userids);
|
|
$members = C::t('resources_event')->result_events_has_avatarstatusinfo($userids, $members);
|
|
} elseif ($fileinfo['pfid'] == 0) {
|
|
$spaceinfo = dzzgetspace($uid);
|
|
$maxspace = $spaceinfo['maxspacesize'];
|
|
$usesize = $spaceinfo['usesize'];
|
|
}
|
|
$progress = set_space_progress($usesize, $maxspace);
|
|
//统计表数据
|
|
$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'] = ($foldeinfo['dateline']) ? dgmdate($foldeinfo['dateline'], 'Y-m-d H:i:s') : '';
|
|
$fileinfo['fid'] = $fid;
|
|
$perm = C::t('folder')->fetch_perm_by_fid($fid);//获取文件夹权限
|
|
//动态信息
|
|
$total = C::t('resources_event')->fetch_by_pfid_rid($fid, true);
|
|
//动态信息
|
|
if ($total > $nextstart) {
|
|
$next = $nextstart;
|
|
}
|
|
if($total) {
|
|
$events = C::t('resources_event')->fetch_by_pfid_rid($fid, '', $start, $limit, '');
|
|
}
|
|
}
|
|
$usergroupperm = C::t('organization_admin')->chk_memberperm($gid, $uid);
|
|
$fileinfo['type'] = '文件夹';
|
|
$perms = get_permsarray();//获取所有权限
|
|
$commentperm = true;
|
|
if (!perm_check::checkperm_Container($fid, 'comment')) {
|
|
$commentperm = false;
|
|
}
|
|
include template('right_folder_menu');
|
|
exit();
|
|
} elseif ($do == 'getfiledynamic') {//获取文件或多文件右侧信息
|
|
//文件信息或者动态请求
|
|
$noselectnum = false;
|
|
$operation = isset($_GET['operation']) ? trim($_GET['operation']) : '';
|
|
$rids = isset($_GET['rid']) ? $_GET['rid'] : '';
|
|
if (!is_array($rids)) $rids = explode(',', $rids);
|
|
$ridnum = count($rids);
|
|
//动态数据请求
|
|
$start = 0;
|
|
$limit = 3;
|
|
$next = false;
|
|
$nextstart = $start + $limit;
|
|
$total = C::t('resources_event')->fetch_by_rid($rids, $start, $limit, true);
|
|
if ($total > $nextstart) {
|
|
$next = $nextstart;
|
|
}
|
|
if($total) {
|
|
$events = C::t('resources_event')->fetch_by_rid($rids, $start, $limit);
|
|
}
|
|
//文件信息数据请求
|
|
if ($ridnum == 1) {//如果只有一个选中项,判断是否是文件夹
|
|
$rid = $rids[0];
|
|
$file = C::t('resources')->fetch_info_by_rid($rid);
|
|
if ($file['type'] == 'folder') {
|
|
$gid = $file['gid'];
|
|
$fileinfo = C::t('resources')->get_property_by_rid($rid);
|
|
if ($fileinfo['isgroup']) {
|
|
$org = C::t('organization')->fetch($gid);
|
|
//获取已使用空间
|
|
$usesize = C::t('organization')->get_orgallotspace_by_orgid($gid, 0, false);
|
|
//获取总空间
|
|
if ($org['maxspacesize'] == 0) {
|
|
$maxspace = 0;
|
|
} else {
|
|
if ($org['maxspacesize'] == -1) {
|
|
$maxspace = -1;
|
|
} else {
|
|
$maxspace = $org['maxspacesize'] * 1024 * 1024;
|
|
}
|
|
}
|
|
//成员信息
|
|
$members = C::t('organization_user')->fetch_user_byorgid($gid);
|
|
//处理成员头像函数
|
|
$userids = array();
|
|
foreach ($members as $v) {
|
|
$userids[] = $v['uid'];
|
|
}
|
|
$userstr = implode(',', $userids);
|
|
$members = C::t('resources_event')->result_events_has_avatarstatusinfo($userids, $members);
|
|
}
|
|
$usergroupperm = C::t('organization_admin')->chk_memberperm($gid, $uid);//获取用户权限
|
|
$progress = set_space_progress($usesize, $maxspace);
|
|
$perm = C::t('folder')->fetch_perm_by_fid($file['oid']);//获取文件夹权限
|
|
$fileinfo['fid'] = $file['oid'];
|
|
$perms = get_permsarray();//获取所有权限
|
|
$commentperm = true;
|
|
if (!perm_check::checkperm_Container($file['oid'], 'comment')) {
|
|
$commentperm = false;
|
|
}
|
|
include template('right_folder_menu');
|
|
exit();
|
|
} else {
|
|
$vstart = 0;
|
|
$vlimit = 3;
|
|
$vnext = false;
|
|
$vnextstart = $vstart + $vlimit;
|
|
$total = C::t('resources_version')->fetch_all_by_rid($rid, $vlimit, true);
|
|
if ($total > $vnextstart) {
|
|
$vnext = $vnextstart;
|
|
}
|
|
$versions = C::t('resources_version')->fetch_all_by_rid($rid, $vlimit, false);
|
|
$fileinfo = C::t('resources')->get_property_by_rid($rid);
|
|
if ($fileinfo['isdelete'] && $fileinfo['pfid'] == -1) {
|
|
$pathrecord = DB::result_first("select pathinfo from %t where rid = %s", array('resources_recyle', $rid));
|
|
$fileinfo['realpath'] = preg_replace('/dzz:(.+?):/', '', $pathrecord);
|
|
}
|
|
$fileinfo['dpath'] = dzzencode($rid);
|
|
$pfid = $fileinfo['pfid'];
|
|
$gid = $fileinfo['gid'];
|
|
$versionnums = count($versions);
|
|
$editperm = true;
|
|
if (!perm_check::checkperm_Container($pfid, 'edit2') && !($_G['uid'] == $fileinfo['uid'] && perm_check::checkperm_Container($pfid, 'edit1'))) {
|
|
$editperm = false;
|
|
}
|
|
$commentperm = true;
|
|
if (!perm_check::checkperm_Container($pfid, 'comment')) {
|
|
$commentperm = false;
|
|
}
|
|
$tags = C::t('resources_tag')->fetch_tag_by_rid($rid);
|
|
$explorer_setting = get_resources_some_setting();
|
|
include template('right_menu');
|
|
exit();
|
|
}
|
|
} elseif ($ridnum > 1) {//如果是多项选中,则调对应综合文件信息
|
|
$fileinfo = C::t('resources')->get_property_by_rid($rids);
|
|
include template('right_folder_menu');
|
|
exit();
|
|
}
|
|
} elseif ($do == 'loadmoredynamic') {//加载更多处理
|
|
$ridval = isset($_GET['rid']) ? trim($_GET['rid']) : '';
|
|
$start = isset($_GET['next']) ? intval($_GET['next']) : 0;
|
|
$tplmore = isset($_GET['adddynamisc']) ? $_GET['adddynamisc'] : 0;//判断是否为单独页动态1不是
|
|
$limit = 15;
|
|
if (!preg_match('/\w{32}/', $ridval)) {
|
|
$pfid = intval($ridval);
|
|
$rid = '';
|
|
} else {
|
|
$rids = isset($_GET['rid']) ? $_GET['rid'] : '';
|
|
if (!is_array($rids)) $rids = explode(',', $rids);
|
|
// $ridnum = count($rids);
|
|
// if ($ridnum == 1) {//如果只有一个选中项,判断是否是文件夹
|
|
// $rid = $rids[0];
|
|
// $file = C::t('resources')->fetch_info_by_rid($rid);
|
|
// if ($file['type'] == 'folder') {
|
|
// $pfid = $file['oid'];
|
|
// }
|
|
// }
|
|
}
|
|
$next = false;
|
|
$nextstart = $start + $limit;
|
|
if ($pfid) {
|
|
//查询文件夹所有下级
|
|
$total = C::t('resources_event')->fetch_by_pfid_rid($pfid, true, $start, $limit);
|
|
if ($total) {
|
|
$events = C::t('resources_event')->fetch_by_pfid_rid($pfid, false, $start, $limit);
|
|
}
|
|
if ($total > $nextstart) {
|
|
$next = $nextstart;
|
|
}
|
|
} else {
|
|
$total = C::t('resources_event')->fetch_by_rid($rids, $start, $limit, true);
|
|
if ($total) {
|
|
$events = C::t('resources_event')->fetch_by_rid($rids, $start, $limit);
|
|
}
|
|
if ($total > $nextstart) {
|
|
$next = $nextstart;
|
|
}
|
|
}
|
|
if ($tplmore) {//加载多条动态
|
|
include template('template_dynamic_list');
|
|
exit();
|
|
} else {//加载单独动态页
|
|
include template('template_more_dynamic');
|
|
exit();
|
|
}
|
|
exit();
|
|
} elseif ($do == 'loadmoreversion') {
|
|
$rid = isset($_GET['rid']) ? trim($_GET['rid']) : '';
|
|
$fileinfo = C::t('resources')->get_property_by_rid($rid);
|
|
$fileinfo['dpath'] = dzzencode($rid);
|
|
$vstart = isset($_GET['next']) ? intval($_GET['next']) : 0;
|
|
$vlimit = 20;
|
|
$limit = ($vstart) ? $vstart . '-' . $vlimit : $vlimit;
|
|
$vnext = false;
|
|
$vnextstart = $vstart + $vlimit;
|
|
|
|
// 判断是否有更多数据
|
|
$total = C::t('resources_version')->fetch_all_by_rid($rid, '', true);
|
|
if ($total > $vnextstart) {
|
|
$vnext = $vnextstart;
|
|
}
|
|
$versions = C::t('resources_version')->fetch_all_by_rid($rid, $limit, false);
|
|
if ($vstart) {//加载多条历史版本
|
|
include template('template_historyversion_list');
|
|
exit();
|
|
} else {//加载单独历史版本页
|
|
include template('historyversion_content');
|
|
}
|
|
exit();
|
|
} elseif ($do == 'filelist') {
|
|
$order = isset($_GET['order']) ? $_GET['order'] : 'DESC';
|
|
$field = isset($_GET['sort']) ? $_GET['sort'] : 'dateline';
|
|
$limit = empty($_GET['limit']) ? 50 : $_GET['limit'];
|
|
$keyword = isset($_GET['keyword']) ? trim($_GET['keyword']) : '';
|
|
$page = (isset($_GET['page'])) ? intval($_GET['page']) : 1;
|
|
$start = ($page - 1) * $limit;
|
|
$validfields = ['body_data', 'do_obj', 'do', 'username', 'dateline'];
|
|
$validSortOrders = ['asc', 'desc'];
|
|
if (in_array($field, $validfields) && in_array($order, $validSortOrders)) {
|
|
$order = " ORDER BY e.$field $order";
|
|
} else {
|
|
$order = ' ORDER BY e.dateline DESC';
|
|
}
|
|
$condition = array();
|
|
if (!empty($_GET['doevent'])) {
|
|
$eventdo = trim($_GET['doevent']);
|
|
if ($eventdo == 'recover' || $eventdo == 'recoverfile') {
|
|
$condition['do'] = 'recover';
|
|
$condition['do'] = 'recoverfile';
|
|
} else {
|
|
$condition['do'] = $eventdo;
|
|
}
|
|
}
|
|
if (!empty($_GET['doobj'])) {
|
|
$obj = trim($_GET['doobj']);
|
|
$condition['do_obj'] = array($obj, 'like', 'and');
|
|
}
|
|
//开始时间
|
|
if (!empty($_GET['startdate']) && $_GET['startdate']) {
|
|
$startdate = strtotime($_GET['startdate']);
|
|
$condition[] = array(' e.dateline > ' . $startdate, 'stringsql', 'and');
|
|
}
|
|
|
|
//结束时间
|
|
if (!empty($_GET['enddate']) && $_GET['enddate']) {//结束时间+1天
|
|
$enddate = strtotime($_GET['enddate']) + 86400;
|
|
$condition[] = array(' e.dateline <' . $enddate, 'stringsql', 'and');
|
|
}
|
|
if (!empty($_GET['username'])) {
|
|
$username = trim($_GET['username']);
|
|
$condition['username'] = array($username, 'like', 'and');
|
|
}
|
|
if (!empty($_GET['uids'])) {
|
|
$uids = $_GET['uids'];
|
|
$condition['uidval'] = array($uids, 'nowhere');
|
|
}
|
|
$events = $list = array();
|
|
$count = C::t('resources_event')->fetch_all_event($start, $limit, $condition, $order, true);
|
|
if ($count) {
|
|
$events = C::t('resources_event')->fetch_all_event($start, $limit, $condition, $order);
|
|
foreach ($events as $data) {
|
|
$list[] = [
|
|
"username" => '<a href="user.php?uid=' . $data['uid'] . '" target="_blank">' . $data['username'] . '</a>',
|
|
"do_lang" => $data['do_lang'],
|
|
"do_obj" => $data['do_obj'],
|
|
"body_data" => $data['details'],
|
|
"do" => $data['do'],
|
|
"dateline" => dgmdate($data['dateline'], 'Y-m-d H:i:s'),
|
|
];
|
|
}
|
|
}
|
|
header('Content-Type: application/json');
|
|
$return = [
|
|
"code" => 0,
|
|
"msg" => "",
|
|
"count" => $count ? $count : 0,
|
|
"data" => $list ? $list : [],
|
|
];
|
|
$jsonReturn = json_encode($return);
|
|
if ($jsonReturn === false) {
|
|
$errorMessage = json_last_error_msg();
|
|
$errorResponse = [
|
|
"code" => 1,
|
|
"msg" => "JSON 编码失败,请刷新重试: " . $errorMessage,
|
|
"count" => 0,
|
|
"data" => [],
|
|
];
|
|
exit(json_encode($errorResponse));
|
|
}
|
|
exit($jsonReturn);
|
|
} elseif ($do == 'deletecomment') {
|
|
$id = $_GET['id'];
|
|
$return = C::t('resources_event')->delete_comment_by_id($id);
|
|
if ($return['error']) {
|
|
exit(json_encode(array('error' => $return['error'])));
|
|
} else {
|
|
exit(json_encode(array('success' => true)));
|
|
}
|
|
}
|
|
$operation_type = array(
|
|
array('addtag', lang('addtag')),
|
|
array('edit', lang('edit')),
|
|
array('down', lang('down')),
|
|
array('create', lang('create')),
|
|
array('recoverfile', lang('recoverfile')),
|
|
array('movedfolder', lang('movedfolder')),
|
|
array('movefile', lang('movefile')),
|
|
array('update_groupname', lang('update_groupname')),
|
|
array('update_setting', lang('update_setting')),
|
|
array('delfolder', lang('delfolder')),
|
|
array('delfile', lang('delfile')),
|
|
array('deleteuser', lang('deleteuser')),
|
|
array('deltag', lang('deltag')),
|
|
array('delversion', lang('delversion')),
|
|
array('finallydelete', lang('finallydelete')),
|
|
array('updatevesion', lang('updatevesion')),
|
|
array('setprimaryversion', lang('setprimaryversion')),
|
|
array('editversionname', lang('editversionname')),
|
|
array('editversiondesc', lang('editversiondesc')),
|
|
array('rename', lang('rename')),
|
|
array('share', lang('share')),
|
|
array('cancleshare', lang('cancleshare')),
|
|
array('addcomment', lang('addcomment')),
|
|
array('adduser', lang('adduser')),
|
|
array('setperm', lang('setperm')),
|
|
array('update_perm', lang('update_perm'))
|
|
);
|
|
require template('dynamic_content');
|