|  | @@ -0,0 +1,520 @@
 | 
	
		
			
				|  |  | +<?php
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*******************************************************************
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + * This is NOT a freeware, use is subject to license terms
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + * @Filename io.han.php $
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + * @Date 2011-09-28 19:16:47 1467070159 594879472 15049 $
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + *******************************************************************/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 文件名:io.han.php
 | 
	
		
			
				|  |  | + * 版本号:JishiGou 1.0.0 beta
 | 
	
		
			
				|  |  | + * 最后修改时间: 2010年6月12日
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + * 功能描述:磁盘的检测,读取,以及文件目录的操作
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class IoHandler
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	function IoHandler()
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function Compare($file1, $file2)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if (md5_file($file1) == md5_file($file2))
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return true;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function SizeConvert($filesize)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if ($filesize >= 1073741824)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$filesize = round($filesize / 1073741824 , 2) . "G";
 | 
	
		
			
				|  |  | +		}elseif ($filesize >= 1048576)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$filesize = round($filesize / 1048576, 2) . "M";
 | 
	
		
			
				|  |  | +		}elseif ($filesize >= 1024)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$filesize = round($filesize / 1024, 2) . "k";
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$filesize = $filesize . "b";
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		Return $filesize;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	function ConvertSize($filesize)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		Return IoHandler::SizeConvert($filesize);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function ReadDir($dir, $children = 0)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if(is_dir($dir) === false)Return false;;
 | 
	
		
			
				|  |  | +		$dir = rtrim(str_replace("\\", "/", $dir), "/") ;
 | 
	
		
			
				|  |  | +		$dirfp = @opendir($dir);
 | 
	
		
			
				|  |  | +		if ($dirfp === false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			trigger_error("{$dir}目录名不存在或者无效,请检查您的目录设置!<br>", E_USER_NOTICE);
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		while (false !== ($file = readdir($dirfp)))
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if ($file != '.' and $file != '..')
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$abspath = $dir . '/' . $file;
 | 
	
		
			
				|  |  | +				if (is_file($abspath) !== false)
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					$files[] = $abspath ;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				if(is_dir($abspath) !== false)
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					if ($children == '1')
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						$files = array_merge((array) $files, (array) IoHandler::ReadDir($abspath, $children));
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		closedir($dirfp);
 | 
	
		
			
				|  |  | +		return (array) $files;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function ReadFile($file_name)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if (is_readable($file_name) != false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if (function_exists('file_get_contents') != false)
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$file_contents = file_get_contents($file_name);
 | 
	
		
			
				|  |  | +				Return $file_contents;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$file_handler = @fopen($file_name, 'rb');
 | 
	
		
			
				|  |  | +				if ($file_handler)
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					$file_contents = @fread($file_handler, filesize($file_name));
 | 
	
		
			
				|  |  | +					fclose($file_handler);
 | 
	
		
			
				|  |  | +					Return $file_contents;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				else
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					Return false;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function WriteFile($file_name, $file_contents, $mode = 'wb')
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if (($mode == 'w' || $mode == 'wb') && function_exists('file_put_contents'))
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return file_put_contents($file_name, $file_contents);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$file_handler = @fopen($file_name, $mode);
 | 
	
		
			
				|  |  | +			if ($file_handler)
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$len=fwrite($file_handler, $file_contents);
 | 
	
		
			
				|  |  | +				fclose($file_handler);
 | 
	
		
			
				|  |  | +				Return $len;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				Return false;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function GetDiskList()
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if (strpos(PHP_OS, 'WIN') === false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		$disks = range('c', 'w');
 | 
	
		
			
				|  |  | +		foreach($disks as $disk)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$disk = $disk . ":";
 | 
	
		
			
				|  |  | +			if (is_dir($disk) !== false && disk_total_space($disk) > 0)
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$disk_list[] = $disk;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		Return $disk_list;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function GetDiskSpace($disk_name, $convert_size = false)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if (is_dir($disk_name) === false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		$disk_space['total'] = (float)disk_total_space($disk_name);
 | 
	
		
			
				|  |  | +		$disk_space['free'] = (float)disk_free_space($disk_name);
 | 
	
		
			
				|  |  | +		$disk_space['used'] = $disk_space['total'] - $disk_space['free'];
 | 
	
		
			
				|  |  | +		@$disk_space['percent'] = (float)round($disk_space['used'] / $disk_space['total'] * 100);
 | 
	
		
			
				|  |  | +		if ($convert_size === false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return $disk_space;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		$disk_space['total'] = IoHandler::ConvertSize($disk_space['total']);
 | 
	
		
			
				|  |  | +		$disk_space['free'] = IoHandler::ConvertSize($disk_space['free']);
 | 
	
		
			
				|  |  | +		$disk_space['used'] = IoHandler::ConvertSize($disk_space['used']);
 | 
	
		
			
				|  |  | +		$disk_space['percent'] = $disk_space['percent'] . '%';
 | 
	
		
			
				|  |  | +		Return $disk_space;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function GetPatternFiles($path, $pattern)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if (is_dir($path) == false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		$file_pattern = rtrim($path, '/') . "/"."*.{" . str_replace("|", ",", $pattern) . "}";
 | 
	
		
			
				|  |  | +		$file_list = glob($file_pattern, GLOB_BRACE);
 | 
	
		
			
				|  |  | +		if (count($file_list) == 0)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		Return $file_list;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function CopyFile($from, $to)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		$copy_count = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if (is_string($from))
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if (copy($from, $to . '/' . IoHandler::BaseName($from)))
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$copy_count = 1;
 | 
	
		
			
				|  |  | +				Return $copy_count;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if (is_array($from))
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				if (is_dir($to) == false)
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					if (IoHandler::MakeDir($to) == false)
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						Return $copy_count;
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				foreach($from as $file_name)
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					if (copy($file_name, $to . '/' . IoHandler::BaseName($file_name)))
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						$copy_count++;
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		Return $copy_count;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function DeleteFile($file)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if('' == trim($file)) return ;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		$delete = @unlink($file);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				clearstatcache();
 | 
	
		
			
				|  |  | +		@$filesys = preg_replace("~\/+~","\\",$file);
 | 
	
		
			
				|  |  | +		if(is_file($filesys) and file_exists($filesys))
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$delete = @system("del $filesys");
 | 
	
		
			
				|  |  | +			clearstatcache();
 | 
	
		
			
				|  |  | +			if(file_exists($file))
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$delete = @chmod($file, 0777);
 | 
	
		
			
				|  |  | +				$delete = @unlink($file);
 | 
	
		
			
				|  |  | +				$delete = @system("del $filesys");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		clearstatcache();
 | 
	
		
			
				|  |  | +		if(file_exists($file))
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			return true;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function MakeDir($dir_name, $mode = 0777)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if(false!==strpos($dir_name,'\\'))
 | 
	
		
			
				|  |  | +    	{
 | 
	
		
			
				|  |  | +    		$dir_name = str_replace("\\", "/", $dir_name);
 | 
	
		
			
				|  |  | +    	}
 | 
	
		
			
				|  |  | +    	if(false!==strpos($dir_name,'/'.'/'))
 | 
	
		
			
				|  |  | +    	{
 | 
	
		
			
				|  |  | +    		$dir_name = preg_replace("#(/"."/+)#", "/", $dir_name);
 | 
	
		
			
				|  |  | +    	}
 | 
	
		
			
				|  |  | +    	if (is_dir($dir_name))
 | 
	
		
			
				|  |  | +    	{
 | 
	
		
			
				|  |  | +    		return true;
 | 
	
		
			
				|  |  | +    	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $dirs = '';
 | 
	
		
			
				|  |  | +        $_dir_name = $dir_name;
 | 
	
		
			
				|  |  | +    	$dir_name = explode("/", $dir_name);
 | 
	
		
			
				|  |  | +        if('/'==$_dir_name{0})
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            $dirs = '/';
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    	foreach($dir_name as $dir)
 | 
	
		
			
				|  |  | +    	{
 | 
	
		
			
				|  |  | +    		$dir = trim($dir);
 | 
	
		
			
				|  |  | +            if ('' != $dir)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                $dirs .= $dir;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if ('..' == $dir || '.' == $dir)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                    $dirs .= '/';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            $dirs .= '/';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (!@is_dir($dirs))
 | 
	
		
			
				|  |  | +    		{
 | 
	
		
			
				|  |  | +    			@mkdir($dirs, $mode);
 | 
	
		
			
				|  |  | +    		}
 | 
	
		
			
				|  |  | +    	}
 | 
	
		
			
				|  |  | +    	
 | 
	
		
			
				|  |  | +    	clearstatcache();
 | 
	
		
			
				|  |  | +    	
 | 
	
		
			
				|  |  | +    	$ret = is_dir($_dir_name);
 | 
	
		
			
				|  |  | +    	
 | 
	
		
			
				|  |  | +    	return $ret;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function ClearDir($dir_name)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		clearstatcache();
 | 
	
		
			
				|  |  | +		if(is_dir($dir_name) == false)Return false;
 | 
	
		
			
				|  |  | +		$dir_handle = opendir($dir_name);
 | 
	
		
			
				|  |  | +		while(($file = readdir($dir_handle)) !== false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if($file != '.' and $file != "..")
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				clearstatcache();
 | 
	
		
			
				|  |  | +				if(is_dir($dir_name . '/' . $file))
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					IoHandler::RemoveDir($dir_name . '/' . $file);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				if(is_file($dir_name . '/' . $file))
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					@unlink($dir_name . '/' . $file);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		closedir($dir_handle);
 | 
	
		
			
				|  |  | +		Return true;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function RemoveDir($dir_name)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		clearstatcache();
 | 
	
		
			
				|  |  | +		if(is_dir($dir_name) == false)Return false;
 | 
	
		
			
				|  |  | +		$dir_handle = opendir($dir_name);
 | 
	
		
			
				|  |  | +		while(($file = readdir($dir_handle)) !== false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if($file != '.' and $file != "..")
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				clearstatcache();
 | 
	
		
			
				|  |  | +				if(is_dir($dir_name . '/' . $file))
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					IoHandler::RemoveDir($dir_name . '/' . $file);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				if(is_file($dir_name . '/' . $file))
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					IoHandler::DeleteFile($dir_name . '/' . $file);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		closedir($dir_handle);
 | 
	
		
			
				|  |  | +		rmdir($dir_name);
 | 
	
		
			
				|  |  | +		Return true;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function CopyDir($from, $to, $children = true)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		if(is_dir($from) == false)Return false;
 | 
	
		
			
				|  |  | +		if(is_dir($to) == false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if(IoHandler::MakeDir($to) == false)
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				Return false;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		$from_handle = opendir($from);
 | 
	
		
			
				|  |  | +		while(($file = readdir($from_handle)) !== false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			if($file != '.' and $file != '..')
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				$from_abs_path = $from . '/' . $file;
 | 
	
		
			
				|  |  | +				$to_abs_path = $to . '/' . $file;
 | 
	
		
			
				|  |  | +				if(is_dir($from_abs_path) != false and $children == true)
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					IoHandler::MakeDir($to_abs_path);
 | 
	
		
			
				|  |  | +					IoHandler::CopyDir($from_abs_path, $to_abs_path, $children);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				if(is_file($from_abs_path) != false)
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					if(copy($from_abs_path, $to_abs_path) == false)
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						Return false;
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		closedir($from_handle);
 | 
	
		
			
				|  |  | +		Return true;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function FilePermission($file_name)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		Return substr(base_convert(fileperms($file_name), 10, 8), -4);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +		function FileExt($file_name, $no_case = 1)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		$ext = trim(substr($file_name, strrpos($file_name, '.')));
 | 
	
		
			
				|  |  | +		if($no_case)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$ext = strtolower($ext);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		return $ext;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function BaseName($path, $suffix = false)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		$name = trim($path);
 | 
	
		
			
				|  |  | +		$name = str_replace('\\', '/', $name);
 | 
	
		
			
				|  |  | +		if(strpos($name, '/') !== false)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$name = substr(strrchr($path, '/'), 1);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$name = ltrim($path, '.');
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if($suffix)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$suffix = strrchr($name, '.');
 | 
	
		
			
				|  |  | +			$name = str_replace($suffix, '', $name);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return $name;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function updateFileArray($file, $name, $array)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		$out = "<?php\n";
 | 
	
		
			
				|  |  | +		foreach($array as $key => $val)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			$out .= "\${$name}['{$key}'] = '{$val}';\n";
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		$out .= '?>';
 | 
	
		
			
				|  |  | +		if(IoHandler::WriteFile($file, $out, "wb"))
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return true;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			Return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	function ReadDiskSpace($drive)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		$disk_space['size']['total'] = disk_total_space($drive);
 | 
	
		
			
				|  |  | +		$disk_space['size']['free'] = disk_free_space($drive);
 | 
	
		
			
				|  |  | +		$disk_space['size']['used'] = $disk_space['size']['total'] - $disk_space['size']['free'];
 | 
	
		
			
				|  |  | +		$disk_space['size_converted']['used'] = IoHandler::SizeConvert($disk_space['size']['total'] - $disk_space['size']['free']);
 | 
	
		
			
				|  |  | +		$disk_space['size_converted']['total'] = IoHandler::SizeConvert($disk_space['size']['total']);
 | 
	
		
			
				|  |  | +		$disk_space['size_converted']['free'] = IoHandler::SizeConvert($disk_space['size']['free']);
 | 
	
		
			
				|  |  | +		Return $disk_space;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    function initPath($path)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $return = $path;
 | 
	
		
			
				|  |  | +        $path = (substr($path, -1) == '/') ? $path : dirname($path);
 | 
	
		
			
				|  |  | +        if ( !is_dir($path) )
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            $list = explode('/', $path);
 | 
	
		
			
				|  |  | +            $path = (substr($path, 0, 1) == '/') ? '/' : '';
 | 
	
		
			
				|  |  | +            foreach ($list as $i => $dir)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                if ($dir == '') continue;
 | 
	
		
			
				|  |  | +                $path .= $dir.'/';
 | 
	
		
			
				|  |  | +                clearstatcache();
 | 
	
		
			
				|  |  | +                if ( !is_dir($path) )
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    @mkdir($path, 0777);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return $return;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +?>
 |