Файл: adultscript-2.0.3-pro/files/libraries/framework/folder.php
Строк: 52
<?php
defined('_VALID') or die('Restricted Access!');
class VFolder
{
public static function create($path, $mode=0755)
{
$path = self::safe($path);
if (self::exists($path)) {
return TRUE;
}
$origmask = @umask(0);
if (mkdir($path, $mode, TRUE)) {
@umask($origmask);
return TRUE;
}
@umask($origmask);
return FALSE;
}
public static function files($path, $fullpath=TRUE, $recursive=FALSE, $ext='', $exclude=array())
{
$path = self::safe($path);
if (!is_dir($path)) {
return FALSE;
}
$files = array();
$handle = opendir($path);
while (($file = readdir($handle)) !== FALSE) {
if (($file != '.') && ($file != '..')) {
if ($exclude) {
if (in_array($file, $exclude)) {
continue;
}
}
if (is_dir($path.'/'.$file)) {
if ($recursive !== FALSE) {
$arr = self::files($path.'/'.$file, $fullpath, $recursive, $ext, $exclude);
$files = array_merge($files, $arr);
}
continue;
}
if (is_array($ext)) {
if (!in_array(VFile::ext($file), $ext)) {
continue;
}
} else {
if ($ext != '') {
if (VFile::ext($file) != $ext) {
continue;
}
}
}
if ($fullpath) {
$files[] = $path.'/'.$file;
} else {
$files[] = $file;
}
}
}
return $files;
}
public static function folders($path, $fullpath=TRUE, $recursive=FALSE, $exclude=array())
{
$path = self::safe($path);
if (!is_dir($path)) {
return FALSE;
}
$folders = array();
$handle = opendir($path);
while (($folder = readdir($handle)) !== FALSE) {
if (($folder != '.') && ($folder != '..')) {
if ($exclude) {
if (in_array($folder, $exclude)) {
continue;
}
}
if (is_dir($path.'/'.$folder)) {
if ($recursive !== FALSE) {
$arr = self::folders($path.'/'.$folder, $fullpath, $recursive, $exclude);
$folders = array_merge($folders, $arr);
}
if ($fullpath) {
$folders[] = $path.'/'.$folder;
} else {
$folders[] = $folder;
}
}
}
}
return $folders;
}
public static function delete($path, $recursive=TRUE)
{
$path = self::safe($path);
if (!file_exists($path)) {
return TRUE;
}
if (!is_dir($path) OR is_link($path)) {
return unlink($path);
}
foreach (scandir($path) as $item) {
if ($item == '.' OR $item == '..') {
continue;
}
if (!self::delete($path.'/'.$item)) {
@chmod($path.'/'.$item, 0777);
if (!self::delete($path.'/'.$item)) {
return FALSE;
}
}
}
return rmdir($path);
}
public static function exists($path)
{
return (is_dir(self::safe($path))) ? TRUE : FALSE;
}
public static function safe($path)
{
$regex = array('#[^A-Za-z0-9:_-.'.DIRECTORY_SEPARATOR.' ]#');
return preg_replace($regex, '', $path);
}
}
?>