예제 #1
0
 private function getDirContents($dir, $class, $func)
 {
     $files = scandir($dir);
     foreach ($files as $key => $value) {
         $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
         // do not process virtual directories where path!=basePath
         if ($this->startsWith($path, $this->basePath)) {
             if (!is_dir($path)) {
                 $extension = self::getExtension($path);
                 if ($this->shouldProcessFile($extension)) {
                     if ($this->resetNo > 1000) {
                         set_time_limit(60);
                         $this->resetNo = 0;
                     }
                     $this->resetNo += 1;
                     $this->no += 1;
                     $subpath = substr($path, $this->basePathLen);
                     $class->{$func}($this->basePath, $subpath);
                 }
             } else {
                 if (is_dir($path) && $value != "." && $value != "..") {
                     if ($this->processFolder($path)) {
                         $this->getDirContents($path, $class, $func);
                     } else {
                         Logfile::writeWhen("Folder excluded: " . $path);
                     }
                 }
             }
         } else {
             Logfile::write("Virtual path ignored: " . $path);
         }
     }
 }