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); } } } }
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; } }