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.
 
 
 
 

314 lines
11 KiB

<?php
if (!defined('IN_DZZ')) {
exit('Access Denied');
}
global $_G;
Hook::listen('check_login');//检查是否登录,未登录跳转到登录界面
$do = empty($_GET['do']) ? '' : trim($_GET['do']);
$uid = $_G['uid'];
$space = dzzgetspace($uid);
$space['self'] = intval($space['self']);
$refer = dreferer();
if ($do == 'deleteIco') {//删除文件到回收站
$arr = array();
$names = array();
$i = 0;
$icoids = $_GET['rids'];
$ridarr = array();
$bz = isset($_GET['bz']) ? trim($_GET['bz']) : '';
foreach ($icoids as $icoid) {
$icoid = dzzdecode($icoid);
if (empty($icoid)) {
continue;
}
if (strpos($icoid, '../') !== false) {
$arr['msg'][$return['rid']] = lang('illegal_calls');
} else {
$return = IO::Delete($icoid);
if (!$return['error']) {
//处理数据
$arr['sucessicoids'][$return['rid']] = $return['rid'];
$arr['msg'][$return['rid']] = 'success';
$ridarr[] = $return['rid'];
$i++;
} else {
$arr['msg'][$return['rid']] = $return['error'];
}
}
}
//更新剪切板数据
if (!empty($ridarr)) {
C::t('resources_clipboard')->update_data_by_delrid($ridarr);
}
echo json_encode($arr);
exit();
} elseif ($do == 'copyfile') {//复制或者剪切文件到云粘贴板
$rids = isset($_GET['rids']) ? $_GET['rids'] : '';
$bzrid = isset($_GET['rid']) ? $_GET['rid'] : '';
$bz = isset($_GET['bz']) ? trim($_GET['bz']) : '';
$paths = array();
foreach ($rids as $rid) {
$paths[] = dzzdecode($rid);
}
$copytype = isset($_GET['copytype']) ? intval($_GET['copytype']) : 1;
$return = C::t('resources_clipboard')->insert_data($paths, $copytype, $bz);
if ($return['error']) {
$arr = array('msg' => $return['error']);
} else {
if ($bz && $bz !== 'dzz') {
$rids = $bzrid;
} else {
$rids = explode(',', $return['rid']);
}
$arr = array('msg' => 'success', 'rid' => $rids, 'copyid' => $return['copyid'], 'type' => $return['type']);
}
exit(json_encode($arr));
} elseif ($do == 'deletecopy') {
$return = C::t('resources_clipboard')->delete_by_uid();
if ($return) {
exit(json_encode(array('success' => true)));
} else {
exit(json_encode(array('error' => true)));
}
} elseif ($do == 'rename') {
$path = dzzdecode($_GET['path']);
$text = str_replace('...', '', getstr(IO::name_filter($_GET['text']), 80));
$ret = IO::rename($path, $text);
exit(json_encode($ret));
} elseif ($do == 'paste') {//粘贴复制或者剪切的文件
$copyinfo = C::t('resources_clipboard')->fetch_by_uid();
//复制文件rid
$icoids = explode(',', $copyinfo['files']);
//复制文件的bz
$obz = !empty($copyinfo['bz']) ? $copyinfo['bz'] : '';
//目标位置的bz
$tbz = trim($_GET['tbz']);
$tpath = trim($_GET['tpath']);
$icoarr = array();
$folderarr = array();
//判断是否有粘贴文件
if (!$icoids) {
$data = array('error' => lang('data_error'));
echo json_encode($data);
exit();
}
//判断是否是剪切
$iscopy = ($copyinfo['copytype'] == 1) ? 1 : 0;
$data = array();
$totalsize = 0;
$icos = $folderids = array();
//分4种情况:a:本地到api;b:api到api;c:api到本地;d:本地到本地;
foreach ($icoids as $icoid) {
if (empty($icoid)) {
$data['error'][] = $icoid . ':' . lang('forbid_operation');
continue;
}
$rid = rawurldecode($icoid);
$path = rawurldecode($tpath);
$return = IO::CopyTo($rid, $path, $iscopy);
if ($return['success'] === true) {
if (!$iscopy && $return['moved'] !== true) {
IO::DeleteByData($return);
}
$data['icoarr'][] = $return['newdata'];
if (!$tbz) {
addtoconfig($return['newdata'], $ticoid);
}
if ($return['newdata']['type'] == 'folder') $data['folderarr'][] = IO::getFolderByIcosdata($return['newdata']);
$data['successicos'][$return['rid']] = $return['newdata']['rid'];
} else {
$data['error'][] = $return['name'] . ':' . $return['success'];
}
}
if ($data['successicos']) {
$data['msg'] = 'success';
C::t('resources_clipboard')->delete_by_uid();
if (isset($data['error'])) $data['error'] = implode(';', $data['error']);
$data['copytype'] = $iscopy;
echo json_encode($data);
exit();
} else {
$data['error'] = implode(';', $data['error']);
echo json_encode($data);
exit();
}
} elseif ($do == 'recoverFile') {//恢复文件
$arr = array();
$i = 0;
$icoids = $_GET['rids'];
$ridarr = array();
$bz = isset($_GET['bz']) ? trim($_GET['bz']) : '';
foreach ($icoids as $icoid) {
$icoid = dzzdecode($icoid);
if (empty($icoid)) {
continue;
}
//判断文件是否在回收站
if (!$recycleinfo = C::t('resources_recyle')->get_data_by_rid($icoid)) {
$arr['msg'][$icoid] = lang('file_longer_exists');
} else {
$return = IO::Recover($icoid);
}
if (!$return['error']) {
//处理数据
$arr['sucessicoids'][$return['rid']] = $return['rid'];
$arr['msg'][$return['rid']] = 'success';
$arr['name'][$return['rid']] = $return['name'];
$ridarr[] = $return['rid'];
$i++;
} else {
$arr['msg'][$return['rid']] = $return['error'];
}
}
echo json_encode($arr);
exit();
} elseif ($do == 'recoverAll') {//恢复所有文件
$rids = C::t('resources_recyle')->fetch_all_rid();
if (count($rids) < 1) exit(json_encode(array('error' => lang('recycle_not_data'))));
foreach ($rids as $icoid) {
//$icoid=dzzdecode($icoid);
if (empty($icoid)) {
continue;
}
//判断文件是否在回收站
if (!$recycleinfo = C::t('resources_recyle')->get_data_by_rid($icoid)) {
$arr['msg'][$icoid] = lang('file_longer_exists');
} else {
$return = IO::Recover($icoid);
}
if (!$return['error']) {
//处理数据
$arr['sucessicoids'][$return['rid']] = $return['rid'];
$arr['msg'][$return['rid']] = 'success';
$arr['name'][$return['rid']] = $return['name'];
$ridarr[] = $return['rid'];
$i++;
} else {
$arr['msg'][$return['rid']] = $return['error'];
}
}
echo json_encode($arr);
exit();
} elseif ($do == 'finallydelete') {//彻底删除文件
$arr = array();
$i = 0;
$icoids = $_GET['rids'];
$ridarr = array();
$bz = isset($_GET['bz']) ? trim($_GET['bz']) : '';
foreach ($icoids as $icoid) {
$icoid = dzzdecode($icoid);
if (empty($icoid)) {
continue;
}
$return = IO::Delete($icoid, true);
if (!$return['error']) {
//处理数据
$arr['sucessicoids'][$return['rid']] = $return['rid'];
$arr['msg'][$return['rid']] = 'success';
$arr['name'][$return['rid']] = $return['name'];
$ridarr[] = $return['rid'];
$i++;
} else {
$arr['msg'][$return['rid']] = $return['error'];
}
}
echo json_encode($arr);
exit();
} elseif ($do == 'emptyallrecycle') {//清空回收站
$rids = C::t('resources_recyle')->fetch_all_rid();
if (count($rids) < 1) exit(json_encode(array('error' => lang('recycle_not_data'))));
foreach ($rids as $icoid) {
//$icoid=dzzdecode($icoid);
$return = IO::Delete($icoid, true);
if (!isset($return['error'])) {
//处理数据
$arr['sucessicoids'][$return['rid']] = $return['rid'];
$arr['msg'][$return['rid']] = 'success';
$arr['name'][$return['rid']] = $return['name'];
$ridarr[] = $return['rid'];
$i++;
} else {
$arr['msg'][$return['rid']] = $return['error'];
}
}
echo json_encode($arr);
exit();
} elseif ($do == 'download') {//暂无请求到此的下载
define('NOROBOT', TRUE);
$path = empty($_GET['icoid']) ? trim($_GET['path']) : $_GET['icoid'];
$patharr = explode(',', $path);
$paths = array();
foreach ($patharr as $path) {
if ($path = dzzdecode($path)) {
$paths[] = $path;
}
}
if ($paths) {
IO::download($paths, $_GET['filename']);
exit();
} else {
exit('path error!');
}
} elseif ($do == 'uploadnewVersion') {//更新文件版本
$rid = isset($_GET['rid']) ? $_GET['rid'] : '';
$setarr = array(
'uid' => $uid,
'username' => getglobal('username'),
'name' => getstr($_GET['name']),
'aid' => intval($_GET['aid']),
'size' => intval($_GET['size']),
'ext' => $_GET['ext'],
'dateline' => TIMESTAMP
);
$return = C::t('resources_version')->add_new_version_by_rid($rid, $setarr);
if ($return['error']) {
exit(json_encode(array('error' => $return['error'])));
} else {
$statisdata = array(
'uid' => getglobal('uid'),
'edits' => 1,
'editdateline' => TIMESTAMP
);
C::t('resources_statis')->add_statis_by_rid($rid, $statisdata);
$resources = C::t('resources')->fetch_by_rid($rid);
exit(json_encode(array('success' => true, 'data' => $return, 'filedata' => $resources)));
}
} elseif ($do == 'setpramiryversion') {//设置主版本
$vid = isset($_GET['vid']) ? intval($_GET['vid']) : '';
$return = C::t('resources_version')->set_primary_version_by_vid($vid);
if ($return['rid']) {
$resourcesdata = C::t('resources')->fetch_by_rid($return['rid']);
exit(json_encode(array('success' => true, 'data' => $resourcesdata)));
} else {
exit(json_encode(array('error' => true, 'msg' => $return['error'])));
}
} elseif ($do == 'setversionname') {//修改版本名称
$vid = isset($_GET['vid']) ? intval($_GET['vid']) : '';
$rid = isset($_GET['rid']) ? trim($_GET['rid']) : '';
$vname = isset($_GET['vname']) ? getstr($_GET['vname']) : '';
if (!$vname) exit(json_encode(array('error' => lang('explorer_do_failed'))));
$vdesc = isset($_GET['vdesc']) ? substr(trim($_GET['vdesc']), 0, 120) : '';
$return = array();
if ($vid) {
$return = C::t('resources_version')->update_versionname_by_vid($vid, $vname, $vdesc);
} else {
$return = C::t('resources_version')->update_versionname_by_rid($rid, $vname, $vdesc);
}
if ($return['vid']) {
exit(json_encode($return));
} else {
$msg = (!isset($return['error'])) ? lang('explorer_do_failed') : $return['error'];
exit(json_encode(array('error' => $msg)));
}
}