diff --git a/web/file_manager/files.php b/web/file_manager/files.php index 657194dca..c11cd917e 100644 --- a/web/file_manager/files.php +++ b/web/file_manager/files.php @@ -4,18 +4,25 @@ //define(LISTING_TIMEOUT, 0.000001); define(LISTING_TIMEOUT, 5); + + + //echo 'files: '; //$files = scandir(__DIR__); + //echo '
'; //print_r($files); + //$_REQUEST['sort_field'] = 'size'; $_REQUEST['sort_field'] = 'name'; //$_REQUEST['sort_field'] = 'atime'; //$_REQUEST['sort_field'] = 'mtime'; $_REQUEST['sort_desc'] = 1; + + /* +- copy file / dir [ recursive ] +- rename(move) file / dir @@ -26,7 +33,7 @@ $_REQUEST['sort_desc'] = 1; +- create dir */ -switch($_REQUEST['action']) { +switch($_REQUEST['action']){ case 'copy': fm_copy($_REQUEST['source'], $_REQUEST['dest']); break; case 'rename': fm_rename($_REQUEST['source'], $_REQUEST['dest']); break; case 'delete': fm_delete($_REQUEST['source']); break; @@ -46,12 +53,24 @@ switch($_REQUEST['action']) { break; } + + + + + //echo $_GET['sort_field']; // if(in_array($_GET['sort_field'], $available_sort_fields)){ // echo '1'; // } + + + + + + + /* upload_file @@ -68,16 +87,17 @@ switch($_REQUEST['action']) { download file / image */ -function fm_create_file($filename) -{ + + +function fm_create_file($filename){ if(is_file($filename)) return array('error' => 'file exists', 'code' => 1); - return (bool) fopen($filename, 'w'); // (bool) > !!, sorry + return !!fopen($filename, 'w'); } -function fm_create_dir($dirname) -{ + +function fm_create_dir($dirname){ if(is_dir($filename)) return array('error' => 'directory exists', 'code' => 1); @@ -85,49 +105,49 @@ function fm_create_dir($dirname) return mkdir($dirname); } -function fm_chown($filename, $recursive = 0, $uid = FALSE, $gid = FALSE) -{ - if (is_dir($filename) && $recursive) { + +function fm_chown($filename, $recursive = 0, $uid = FALSE, $gid = FALSE){ + if(is_dir($filename) && $recursive){ $dir_handle = opendir($dir); - while ($item = readdir($dir_handle)) { - if (!in_array($item, array('.','..'))) { + while ($item = readdir($dir_handle)){ + if (!in_array($item, array('.','..'))){ $new_item = $filename.'/'.$item; - if ($uid !== FALSE) chown($new_item, (int)$uid); - if ($gid !== FALSE) chgrp($new_item, (int)$gid); + if($uid !== FALSE) chown($new_item, (int)$uid); + if($gid !== FALSE) chgrp($new_item, (int)$gid); - if (is_dir($new_item)) { + if(is_dir($new_item)){ fm_chown($new_item, $recursive, $uid, $gid); } } } - } else { + }else{ if($uid !== FALSE) chown($filename, (int)$uid); if($gid !== FALSE) chgrp($filename, (int)$gid); } } -function fm_chmod($filename, $recursive = 0, $mode) -{ - if(is_dir($filename) && $recursive) { + +function fm_chmod($filename, $recursive = 0, $mode){ + if(is_dir($filename) && $recursive){ $dir_handle = opendir($dir); - while ($item = readdir($dir_handle)) { - if (!in_array($item, array('.','..'))) { + while ($item = readdir($dir_handle)){ + if (!in_array($item, array('.','..'))){ $new_item = $filename.'/'.$item; chmod($new_item, octdec($mode)); - if (is_dir($new_item)) { + if(is_dir($new_item)){ fm_chmod($new_item, $recursive, $mode); } } } - } else { + }else{ chmod($filename, octdec($mode)); } } -function fm_delete($filename) -{ + +function fm_delete($filename){ if(is_dir($filename)){ foreach ( $iterator = new RecursiveIteratorIterator( @@ -142,21 +162,19 @@ function fm_delete($filename) // copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName()); } } - } else { + }else{ return unlink($filename); } } -function fm_rename($source, $dest) -{ +function fm_rename($source, $dest){ return rename($source, $dest); } -function fm_copy($source, $dest) -{ - if (is_dir($source)) { +function fm_copy($source, $dest){ + if(is_dir($source)){ foreach ( $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS), @@ -169,13 +187,14 @@ function fm_copy($source, $dest) copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName()); } } + }else{ return copy($source, $dest); } } -function list_dir() -{ + +function list_dir(){ $dir_iterator = new RecursiveDirectoryIterator("/path"); $iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST); // could use CHILD_FIRST if you so wish @@ -195,9 +214,12 @@ function list_dir() echo "\nTotal file size: ", $size, " bytes\n"; } + + + /// fast removing directory -function rmrf($dir) -{ +function rmrf($dir) { + foreach (glob($dir) as $file) { if (is_dir($file)) { rmrf("$file/*"); @@ -208,6 +230,9 @@ function rmrf($dir) } } + + + function dir_list($dir, $sort = 0) { $sort_order_for_filename = SORT_ASC; @@ -227,7 +252,7 @@ function dir_list($dir, $sort = 0) if (!in_array($object, array('.','..'))){ $filename = $dir . $object; $time = microtime(true) - $start; - if ($time <= LISTING_TIMEOUT) { + if($time <= LISTING_TIMEOUT){ $stats = stat($filename); $mode = explain_mode($stats['mode']); $perms = decoct(fileperms($filename)); @@ -249,11 +274,8 @@ function dir_list($dir, $sort = 0) ); }else{ $listing['timeout_exeeded'] = TRUE; - if (is_dir($filename)) { - $type = 'd'; - } else { - $type = '-'; - } + if(is_dir($filename)){ $type = 'd'; + }else{ $type = '-'; } $item = array( 'name' => $object, @@ -272,6 +294,7 @@ function dir_list($dir, $sort = 0) ); } + $listing['count']++; if($item['type'] == 'd'){ @@ -288,6 +311,7 @@ function dir_list($dir, $sort = 0) } $listing['time'] = microtime(TRUE) - $start; + if(!$listing['timeout_exeeded']){ if(in_array($_REQUEST['sort_field'], $available_sort_fields)){ if($_REQUEST['sort_desc']){ @@ -300,6 +324,7 @@ function dir_list($dir, $sort = 0) return $listing; } + function explain_mode($mode) { @@ -330,3 +355,5 @@ function explain_mode($mode) return $info; } + +?>