Пример #1
0
 /**
  * Converts a file instance to a JSON serializable object.
  *
  * @param MOXMAN_Vfs_IFile $file File to convert into JSON format.
  * @param Boolean $meta State if the meta data should be returned or not.
  * @return stdClass JSON serializable object.
  */
 public static function fileToJson($file, $meta = false)
 {
     $config = $file->getConfig();
     $renameFilter = MOXMAN_Vfs_CombinedFileFilter::createFromConfig($config, "rename");
     $editFilter = MOXMAN_Vfs_CombinedFileFilter::createFromConfig($config, "edit");
     $viewFilter = MOXMAN_Vfs_CombinedFileFilter::createFromConfig($config, "view");
     $configuredFilter = new MOXMAN_Vfs_BasicFileFilter();
     $configuredFilter->setIncludeDirectoryPattern($config->get('filesystem.include_directory_pattern'));
     $configuredFilter->setExcludeDirectoryPattern($config->get('filesystem.exclude_directory_pattern'));
     $configuredFilter->setIncludeFilePattern($config->get('filesystem.include_file_pattern'));
     $configuredFilter->setExcludeFilePattern($config->get('filesystem.exclude_file_pattern'));
     $configuredFilter->setIncludeExtensions($config->get('filesystem.extensions'));
     $result = (object) array("path" => $file->getPublicPath(), "size" => $file->getSize(), "lastModified" => $file->getLastModified(), "isFile" => $file->isFile(), "canRead" => $file->canRead(), "canWrite" => $file->canWrite(), "canEdit" => $file->isFile() && $editFilter->accept($file), "canRename" => $renameFilter->accept($file), "canView" => $file->isFile() && $viewFilter->accept($file), "canPreview" => $file->isFile() && MOXMAN_Media_ImageAlter::canEdit($file), "visible" => $configuredFilter->accept($file), "exists" => $file->exists());
     if ($meta) {
         $args = new MOXMAN_Vfs_CustomInfoEventArgs(MOXMAN_Vfs_CustomInfoEventArgs::INSERT_TYPE, $file);
         MOXMAN::getPluginManager()->get("core")->fire("CustomInfo", $args);
         $metaData = (object) array_merge($file->getMetaData()->getAll(), $args->getInfo());
         if (MOXMAN_Media_ImageAlter::canEdit($file)) {
             $thumbnailFolderPath = MOXMAN_Util_PathUtils::combine($file->getParent(), $config->get('thumbnail.folder'));
             $thumbnailFile = MOXMAN::getFile($thumbnailFolderPath, $config->get('thumbnail.prefix') . $file->getName());
             // TODO: Implement stat info cache layer here
             if ($file instanceof MOXMAN_Vfs_Local_File) {
                 $info = MOXMAN_Media_MediaInfo::getInfo($file->getPath());
                 $metaData->width = $info["width"];
                 $metaData->height = $info["height"];
             }
             if ($thumbnailFile->exists()) {
                 $metaData->thumb_url = $thumbnailFile->getUrl();
                 // Get image size server side only on local filesystem
                 if ($file instanceof MOXMAN_Vfs_Local_File) {
                     $info = MOXMAN_Media_MediaInfo::getInfo($thumbnailFile->getPath());
                     $metaData->thumb_width = $info["width"];
                     $metaData->thumb_height = $info["height"];
                 }
             }
         }
         $metaData->url = $file->getUrl();
         $result->meta = $metaData;
     }
     return $result;
 }