Beispiel #1
0
 public function classifyIntoFolder($folder_id, $files)
 {
     if (empty($files)) {
         return;
     }
     $folder = new Folder($folder_id);
     if (!$folder->id) {
         return;
     }
     $classify_dir = $this->getClassifyDir();
     if (empty($classify_dir)) {
         return;
     }
     switch ($folder->ftype) {
         case IMAGE_FOLDER:
             $type = 'image';
             PHPWS_Core::initModClass('filecabinet', 'Image.php');
             $class_name = 'PHPWS_Image';
             break;
         case DOCUMENT_FOLDER:
             $type = 'document';
             PHPWS_Core::initModClass('filecabinet', 'Document.php');
             $class_name = 'PHPWS_Document';
             break;
         case MULTIMEDIA_FOLDER:
             $type = 'media';
             PHPWS_Core::initModClass('filecabinet', 'Multimedia.php');
             $class_name = 'PHPWS_Multimedia';
             break;
     }
     $allowed_types = $this->getAllowedTypes($type);
     foreach ($files as $filename) {
         $path = $classify_dir . $filename;
         $ext = PHPWS_File::getFileExtension($filename);
         if ($this->fileTypeAllowed($path, $type) && PHPWS_File::checkMimeType($path) && in_array($ext, $allowed_types)) {
             $file_obj = new $class_name();
             $file_obj->folder_id = $folder->id;
             $file_obj->setFilename($filename);
             $file_obj->setTitle(str_replace(".{$ext}", '', $filename));
             $file_obj->setDirectory($folder->getFullDirectory());
             $folder_directory = $file_obj->getPath();
             if (!@rename($path, $folder_directory)) {
                 PHPWS_Error::log(FC_FILE_MOVE, 'filecabinet', 'Cabinet::classifyIntoFolder', $folder_directory);
                 continue;
             }
             $file_obj->file_type = PHPWS_File::getMimeType($file_obj->getPath());
             $file_obj->loadFileSize();
             if ($folder->ftype == IMAGE_FOLDER) {
                 $file_obj->loadDimensions();
                 $file_obj->save(true, false);
             } else {
                 $file_obj->save(false);
             }
         }
     }
 }
Beispiel #2
0
 public static function checkMimeType($file_path, $ext = null)
 {
     $all_file_type = PHPWS_File::getAllFileTypes();
     if (empty($ext)) {
         $ext = PHPWS_File::getFileExtension($file_path);
     }
     $ext = strtolower($ext);
     if (!isset($all_file_type[$ext])) {
         return false;
     }
     $file_info = $all_file_type[$ext];
     if ($file_info) {
         $mime_type = PHPWS_File::getMimeType($file_path);
         if (function_exists('finfo_open')) {
             foreach ($file_info['fi'] as $fi) {
                 if (preg_match("@{$fi}@i", $mime_type)) {
                     return true;
                 }
             }
         }
         if (empty($mime_type) && isset($file_info['bl'])) {
             return true;
         }
         foreach ($file_info['mct'] as $mct) {
             if (preg_match("@^{$mct}@i", $mime_type)) {
                 return true;
             }
         }
         return false;
     } else {
         return false;
     }
 }