예제 #1
0
 private function getFilesList($path, $relation)
 {
     $fileSystemTypes = FileSystemTypes::getInstance();
     LogMaster::log("Query filesystem: " . $path);
     $dir = opendir($path . '/' . $relation);
     $result = new FileSystemResult();
     // forms fields list
     for ($i = 0; $i < count($this->config->data); $i++) {
         $fields[] = $this->config->data[$i]['db_name'];
     }
     // for every file and directory of folder
     while ($file = readdir($dir)) {
         // . and .. should not be in output list
         if ($file == '.' || $file == '..') {
             continue;
         }
         $newFile = array();
         // parse file name as Array('name', 'ext', 'is_dir')
         $fileNameExt = $this->parseFileName($path . '/' . $relation, $file);
         // checks if file should be in output array
         if (!$fileSystemTypes->checkFile($file, $fileNameExt)) {
             continue;
         }
         // takes file stat if it's need
         if (in_array('size', $fields) || in_array('date', $fields)) {
             $fileInfo = stat($path . '/' . $file);
         }
         // for every field forms list of fields
         for ($i = 0; $i < count($fields); $i++) {
             $field = $fields[$i];
             switch ($field) {
                 case 'filename':
                     $newFile['filename'] = $file;
                     break;
                 case 'full_filename':
                     $newFile['full_filename'] = $path . "/" . $file;
                     break;
                 case 'size':
                     $newFile['size'] = $fileInfo['size'];
                     break;
                 case 'extention':
                     $newFile['extention'] = $fileNameExt['ext'];
                     break;
                 case 'name':
                     $newFile['name'] = $fileNameExt['name'];
                     break;
                 case 'date':
                     $newFile['date'] = date("Y-m-d H:i:s", $fileInfo['ctime']);
                     break;
             }
             $newFile['relation_id'] = $relation . '/' . $file;
             $newFile['safe_name'] = $this->setFileName($relation . '/' . $file);
             $newFile['is_folder'] = $fileNameExt['is_dir'];
         }
         // add file in output list
         $result->addFile($newFile);
     }
     return $result;
 }
 static function getInstance()
 {
     if (self::$instance == null) {
         self::$instance = new FileSystemTypes();
     }
     return self::$instance;
 }