note 68957 deleted from function.filetype by betz
| From: | betz@php.net | Date: | Thu, 17 Aug 2006 14:27:20 +0000 |
| Subject: | note 68957 deleted from function.filetype by betz | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-116008@lists.php.net to get a copy of this message | ||
Note Submitter: development at lab-9 dot com
Reason: useless
----
<?php
// hopefully self explaining :-)
// take care about WHAT you're going to delete ;-D
function copyRecursive($source, $dest, $overwrite = false)
{
if($handle = opendir($source))
{
while(false !== ($file = readdir($handle)))
{
if($file != '.' && $file != '..')
{
$path = $source . '/' . $file;
if(is_file($path))
{
if(!is_file($dest . '/' . $file) || $overwrite)
{
if(!@copy($path, $dest . '/' . $file))
{
trigger_error('File ('.$path.') could not be copied to
('.$dest.')', E_USER_ERROR);
}
}
}
else if(is_dir($path))
{
if(!is_dir($dest . '/' . $file))
{ mkdir($dest . '/' . $file); }
copyRecursive($path, $dest . '/' . $file, $overwrite);
}
}
}
closedir($handle);
}
}
function deleteRecursive2($dir, &$file_deleted, &$dir_deleted)
{
if(!$dh = @opendir($dir))
{
// if it's a file, remove it
if(is_file($dir))
{
if(is_writable($dir))
{
if(@unlink($dir))
$file_deleted++;
else
trigger_error("could not remove file ".$dir, E_USER_NOTICE);
}
else
{
trigger_error("could not remove file ".$dir.", please check permissions
(".fileperms2($dir).")", E_USER_NOTICE);
}
}
else if(is_dir($dir))
{
trigger_error("could not remove directory ".$dir, E_USER_NOTICE);
}
else
{
trigger_error("could not remove ".filetype($dir)." ".$dir, E_USER_NOTICE);
}
return;
}
while(($obj = readdir($dh)))
{
if($obj=='.' || $obj=='..')
{ continue; }
if(!@unlink($dir.'/'.$obj))
{
deleteRecursive2($dir.'/'.$obj, $file_deleted, $dir_deleted);
}
else
{
$file_deleted++;
}
}
if(@rmdir($dir))
$dir_deleted++;
else
trigger_error("could not remove directory ".$dir, E_USER_NOTICE);
}
function deleteRecursive($dir)
{
//echo "removing ".$dir;
deleteRecursive2($dir, $var1=0, $var2=0);
//echo ", removed ".$var1." files and ".$var2." dirs";
}
function moveRecursive($source, $target)
{
copyRecursive($source, $target);
deleteRecursive($source);
}
// originally found at php.net/fileperms
function fileperms2($file)
{
$perms = fileperms($file);
if (($perms & 0xC000) == 0xC000) {
// Socket
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
// Symbolic Link
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
// Regular
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
// Block special
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
// Directory
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
// Character special
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
// FIFO pipe
$info = 'p';
} else {
// Unknown
$info = 'u';
}
// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
return $info;
}
?>