📄 folders.inc.php
字号:
<?php
##
# Project: PHPDisk
# This is NOT a freeware, use is subject to license terms.
#
# Site: http://www.phpdisk.com
#
# $Id: folders.inc.php 227 2009-03-07 09:09:07Z along $
#
# Copyright (C) 2008-2009 PHPDisk Team. All Rights Reserved.
#
##
if(!defined('IN_PHPDISK') || !defined('IN_MYDISK')) {
exit('[PHPDisk] Access Denied');
}
phpdisk_user();
define('SCRIPT_NAME',$item);
require_once lang(SCRIPT_NAME);
$lang = array_merge($pub_lang,$lang);
switch($action){
case 'index':
case 'folder_modify':
$folder_id = (int)gpc('folder_id','GP',0);
if($task == 'folder_modify'){
if($p_formhash != formhash()){
exit($lang['system_error']);
}
$disk_id = (int)gpc('disk_id','P',0);
$new_folder = array('name'=>'','description'=>'');
$folder = gpc('folder','P',$new_folder);
$ins = array(
'folder_name' => $db->escape($folder['name']),
'folder_description' => $db->escape($folder['description']),
);
if(checklength($folder['name'],1,100)){
$error = true;
$sysmsg[] = $lang['folder_min_max'];
}
$rs = $db->fetch_one_array("select folder_id from pd_folders where userid='$pd_uid' and folder_name='{$folder['name']}' and folder_id<>'$folder_id' and disk_id='$disk_id'");
if($rs['folder_id']){
$error = true;
$sysmsg[] = $lang['folder_exists'];
}
if(!$error){
$db->query("update pd_folders set ".$db->sql_array($ins)." where folder_id='{$folder_id}' and userid='$pd_uid';");
redirect(urr("mydisk","item=folders&action=index"),'',0);
}else{
redirect($_SERVER['HTTP_REFERER'],$sysmsg);
}
}elseif($task == 'move'){
$folder_ids = gpc('folder_ids','P',array(''));
$dest_disk = (int)gpc('dest_disk','P','');
if(count($folder_ids) <1){
$error = true;
$sysmsg[] = $lang['please_select_move_folders'];
}
if(!$dest_disk){
$error = true;
$sysmsg[] = $lang['please_select_dest_disk'];
}
if(!$error){
for($i=0;$i<count($folder_ids);$i++){
$folder_str .= $folder_ids[$i].',';
}
$folder_str = substr($folder_str,0,-1);
$sql = "update pd_folders set disk_id='$dest_disk' where folder_id in ($folder_str)";
$db->query_unbuffered($sql);
redirect($_SERVER['HTTP_REFERER'],'',0);
}else{
redirect($_SERVER['HTTP_REFERER'],$sysmsg);
}
}else{
$q = $db->query("select * from pd_disks where userid='$pd_uid'");
$disks_array = array();
while($rs = $db->fetch_array($q)){
$disks_array[] = $rs;
}
$db->free($q);
$disk_id = (int)gpc('disk_id','G',0);
$disk_str = $disk_id ? " and dk.disk_id='$disk_id'" : '';
$sql_do = "pd_folders fd,pd_disks dk where fd.userid='$pd_uid' and fd.disk_id=dk.disk_id and fd.in_recycle=0 {$disk_str}";
$rs = $db->fetch_one_array("select count(*) as total_num from {$sql_do}");
$total_num = $rs['total_num'];
$start_num = ($pg-1) * $perpage;
$q = $db->query("select folder_id,folder_name,folder_description,fd.in_share,dk.disk_id,dk.disk_name from {$sql_do} order by fd.folder_order asc,fd.folder_id asc limit $start_num,$perpage");
$folders_array = array();
while($rs = $db->fetch_array($q)){
$q2 = $db->query("select file_size from pd_files where folder_id='{$rs['folder_id']}'");
$folder_count = $folder_size = 0;
while($rs2 = $db->fetch_array($q2)){
$folder_size += $rs2['file_size'];
$folder_count++;
}
$db->free($q2);
unset($rs2);
$rs['folder_icon'] = $rs['in_share'] ? 'share_folder' : 'folder';
$rs['folder_size'] = get_size($folder_size);
$rs['folder_count'] = $folder_count;
$rs['href'] = urr("mydisk","item=files&action=index&folder_id=".$rs['folder_id']);
$rs['is_folder'] =1;
$folders_array[] = $rs;
}
$db->free($q);
unset($rs);
$folder_edit = $db->fetch_one_array("select * from pd_folders where userid='$pd_uid' and folder_id='$folder_id'");
$folder = $db->fetch_one_array("select folder_id,folder_name,folder_description from pd_folders where folder_id='$folder_id'");
$page_nav = multi($total_num, $perpage, $pg, urr("mydisk","item=$item&action=$action"));
require_once template(SCRIPT_NAME,TPL_NAME);
}
break;
case 'folder_create':
$group_set = $group_settings[$gid];
if($task == 'folder_create'){
if($p_formhash != formhash()){
exit($lang['system_error']);
}
$disk_id = (int)gpc('disk_id','P',0);
$folder_name = trim(gpc('folder_name','P',''));
$folder_description = trim(gpc('folder_description','P',''));
$ins = array(
'folder_name' => $db->escape($folder_name),
'folder_description' => $db->escape($folder_description),
'disk_id' => $disk_id,
'userid' => $pd_uid,
'in_time' => $timestamp,
);
$rs = $db->fetch_one_array("select count(*) as total from pd_folders where userid='$pd_uid'");
if($group_set['max_folders'] && $rs['total'] >= $group_set['max_folders']){
$error = true;
$sysmsg[] = $lang['exceed_max_folders'];
}
if(checklength($folder_name,1,100)){
$error = true;
$sysmsg[] = $lang['folder_min_max'];
}
if($folder_name){
$rs = $db->fetch_one_array("select count(*) as total from pd_folders where userid='$pd_uid' and folder_name='{$folder_name}' and disk_id='$disk_id'");
if($rs['total'] >0){
$error = true;
$sysmsg[] = $lang['folder_exists'];
}
}
if(!$error){
if(!$disk_id){
$ins2 = array(
'disk_name' => 'A',
'disk_description' => '',
'userid' => $pd_uid,
'in_time' => $timestamp,
);
$db->query("insert into pd_disks set ".$db->sql_array($ins2).";");
$rs = $db->fetch_one_array("select disk_id from pd_disks where userid='$pd_uid' limit 1");
if($rs){
$ins['disk_id'] = $rs['disk_id'];
}
unset($rs);
}
$db->query("insert into pd_folders set ".$db->sql_array($ins).";");
$sysmsg[] = $lang['folder_create_success'];
redirect(urr("mydisk","item=folders&action=index"),$sysmsg);
}else{
redirect('javascript:history.back();',$sysmsg);
}
}else{
$q = $db->query("select folder_id,folder_name from pd_folders where userid='$pd_uid' and in_recycle=0 order by folder_order asc,folder_id asc");
$folders_array = array();
while($rs = $db->fetch_array($q)){
$folders_array[] = $rs;
}
$db->free($q);
unset($rs);
$q = $db->query("select * from pd_disks where userid='$pd_uid'");
$disk_array = array();
while($rs = $db->fetch_array($q)){
$disk_array[] = $rs;
}
$db->free($q);
unset($rs);
require_once template(SCRIPT_NAME,TPL_NAME);
}
break;
case 'folder_delete':
$folder_id = (int)gpc('folder_id','G',0);
$sql = "update pd_folders set in_recycle=1 where folder_id='$folder_id' and userid='$pd_uid'";
$db->query_unbuffered($sql);
$sysmsg[] = $lang['folder_delete_success'];
redirect(urr("mydisk","item=folders&action=index"),$sysmsg,1000);
break;
case 'folder_recycle':
$q = $db->query("select folder_id,folder_name,disk_name from pd_folders fd,pd_disks dk where fd.userid='$pd_uid' and fd.disk_id=dk.disk_id and in_recycle=1 order by folder_order asc,fd.folder_id asc");
$folders_array = array();
while($rs = $db->fetch_array($q)){
$q2 = $db->query("select file_size from pd_files where folder_id='{$rs['folder_id']}'");
$folder_count = $folder_size = 0;
while($rs2 = $db->fetch_array($q2)){
$folder_size += $rs2['file_size'];
$folder_count++;
}
$db->free($q2);
unset($rs2);
$rs['disk_name'] = $rs['disk_name'].':';
$rs['folder_size'] = get_size($folder_size);
$rs['folder_count'] = $folder_count;
$rs['href'] = urr("mydisk","item=files&action=recycle&folder_id=".$rs['folder_id']);
$rs['is_folder'] =1;
$folders_array[] = $rs;
}
$db->free($q);
unset($rs);
$q = $db->query("select fl.*,fd.folder_name,dk.disk_name from pd_files fl,pd_folders fd,pd_disks dk where fl.userid='$pd_uid' and (fl.folder_id=fd.folder_id and fl.disk_id=dk.disk_id) and fl.in_recycle=1 order by fl.file_id desc");
while($rs = $db->fetch_array($q)){
$rs['disk_name'] = $rs['disk_name'].":\\".$rs['folder_name'];
$rs['folder_name'] = $rs['file_name'];
$rs['folder_size'] = get_size($rs['file_size']);
$rs['folder_count'] = '-';
$rs['href'] = '###';
$rs['is_folder'] = 0;
$folders_array[] = $rs;
}
$db->free($q);
unset($rs);
require_once template(SCRIPT_NAME,TPL_NAME);
break;
case 'folder_restore':
$folder_id = (int)gpc('folder_id','G',0);
$sql = "update pd_folders set in_recycle=0 where folder_id='$folder_id' and userid='$pd_uid'";
$db->query_unbuffered($sql);
redirect(urr("mydisk","item=folders&action=index"),'',0);
break;
case 'folder_delete_complete':
$folder_id = (int)gpc('folder_id','G',0);
$q = $db->query("select * from pd_files where folder_id='$folder_id' and userid='$pd_uid'");
while($rs = $db->fetch_array($q)){
@unlink(PHPDISK_ROOT.$settings['file_path'].'/'.$pd_uid.'/'.$rs['folder_index'].'/'.$rs['file_real_name']);
}
$db->free($q);
unset($rs);
$sql = "delete from pd_files where folder_id='$folder_id' and userid='$pd_uid'";
$db->query_unbuffered($sql);
$sql = "delete from pd_folders where folder_id='$folder_id' and userid='$pd_uid' and in_recycle=1";
$db->query_unbuffered($sql);
redirect(urr("mydisk","item=folders&action=folder_recycle"),'',0);
break;
case 'share_folder':
$folder_id = (int)gpc('folder_id','G',0);
$go = trim(gpc('go','G',''));
$rs = $db->fetch_one_array("select in_share from pd_folders where folder_id='$folder_id' and userid='$pd_uid'");
$in_share = $rs['in_share'] ? 0 : 1;
unset($rs);
$db->query_unbuffered("update pd_folders set in_share='$in_share' where folder_id='$folder_id' and userid='$pd_uid'");
$ref = ($go == '') ? "item=folders&action=index" : "item=folders&action=share_manage";
redirect(urr("mydisk",$ref),'',0);
break;
case 'share_manage':
$disk_id = (int)gpc('disk_id','G',0);
$q = $db->query("select * from pd_disks where userid='$pd_uid' and in_share=1 order by disk_id asc");
$disk_array = array();
while($rs = $db->fetch_array($q)){
$disk_array[] = $rs;
}
$db->free($q);
unset($rs);
$sql_ext = $disk_id ? " and fd.disk_id='$disk_id'" : "";
$q = $db->query("select fd.*,dk.disk_name from pd_folders fd,pd_disks dk where fd.userid='$pd_uid' and fd.in_share=1 and fd.disk_id=dk.disk_id {$sql_ext}");
$folders_array = array();
while($rs = $db->fetch_array($q)){
$q2 = $db->query("select file_id,file_size from pd_files where userid='$pd_uid' and folder_id='".$rs['folder_id']."'");
$folder_count = $folder_size = 0;
while($rs2 = $db->fetch_array($q2)){
$folder_size += $rs2['file_size'];
$folder_count++;
}
$db->free($q2);
unset($rs2);
$rs['folder_icon'] = $rs['in_share'] ? 'share_folder' : 'folder';
$rs['folder_size'] = get_size($folder_size);
$rs['folder_count'] = $folder_count;
$rs['selected'] = ifselected($rs['folder_id'],$folder_id);
$folders_array[] = $rs;
}
$db->free($q);
unset($rs);
require_once template(SCRIPT_NAME,TPL_NAME);
break;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -