Beispiel #1
0
 public static function readDirectory($dir, $recursively, $called = false)
 {
     if (self::$_files) {
         if ($dir) {
             $files = preg_grep('/^' . str_replace('/', '\\/', preg_quote($dir . '/')) . '/', array_keys(self::$_files));
         } else {
             $files = array_keys(self::$_files);
         }
         if (!count($files)) {
             header("HTTP/1.0 404 Not Found");
             return;
         }
         $f = array();
         $d = array();
         foreach ($files as $i => $name) {
             $fname = substr($name, $dir ? strlen($dir) + 1 : 0);
             if (strpos($fname, '/') === false) {
                 // that's a file
                 $f[$fname] = 1;
             } else {
                 // that's a directory
                 $dirName = substr($fname, 0, strpos($fname, '/'));
                 if ($recursively) {
                     $d[$dirName] = self::readDirectory((strlen($dir) ? $dir . '/' : '') . $dirName, true, true);
                 } else {
                     $d[$dirName] = 2;
                 }
             }
         }
         $final = array_merge_recursive($f, $d);
         return $called ? $final : json_encode($final);
     }
     if (is_file($dir)) {
         return 'That\'s a file';
     }
     if (!is_dir($dir)) {
         header("HTTP/1.0 404 Not Found");
         return;
     }
     return json_encode(Lib::readDirectory($dir, !!strlen($recursively), false));
 }