⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 folders.inc.php

📁 创建虚拟磁盘。用户可以创建磁盘
💻 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 + -