function checkFolders()
 {
     $baseFolder = GalleryResourceStorage::getResourcesStorageFolder();
     $userFolder = GalleryResourceStorage::getUserFolder($this->_blogInfo->getId());
     $previewsFolder = GalleryResourceStorage::getPreviewsFolder($this->_blogInfo->getId());
     $folders = "{$baseFolder}<br/>{$userFolder}<br/>{$previewsFolder}";
     $message = "";
     // check if the storage folder exists and it is readable
     if (!GalleryResourceStorage::checkBaseStorageFolder() || !GalleryResourceStorage::checkUserStorageFolder($this->_blogInfo->getId()) || !GalleryResourceStorage::checkPreviewsStorageFolder($this->_blogInfo->getId()) || !GalleryResourceStorage::checkMediumSizePreviewsStorageFolder($this->_blogInfo->getId())) {
         $message = $this->_locale->pr("error_base_storage_folder_missing_or_unreadable", $folders);
     }
     return $message;
 }
 function perform()
 {
     // first of all, fetch the resource
     $this->_resourceId = $this->_request->getValue("resourceId");
     $resources = new GalleryResources();
     $resource = $resources->getResource($this->_resourceId, $this->_blogInfo->getId());
     // check if it was loaded ok
     if (!$resource) {
         $this->_view = new AdminResourcesListView($this->_blogInfo);
         $this->_view->setErrorMessage($this->_locale->tr("error_loading_resource"));
         $this->setCommonData();
         return false;
     }
     // if so, continue... first by checking if the resource is an image or not
     // because if not, then there is no point in generating a thumbnail of it!
     if (!$resource->isImage()) {
         $this->_view = new AdminResourcesListView($this->_blogInfo);
         $this->_view->setErrorMessage($this->_locale->tr("error_resource_is_not_an_image"));
     }
     $previewHeight = $this->_config->getValue("thumbnail_height");
     $previewWidth = $this->_config->getValue("thumbnail_width");
     $previewKeepAspectRatio = $this->_config->getValue("thumbnails_keep_aspect_ratio");
     // build the filename
     $fileNameParts = explode(".", $resource->getFileName());
     $fileExt = strtolower($fileNameParts[count($fileNameParts) - 1]);
     $fileName = $resource->getOwnerId() . "-" . $resource->getId() . "." . $fileExt;
     // and start the resizing process
     $resourceStorage = new GalleryResourceStorage();
     $resizer = new GalleryResizer($resourceStorage->getResourcePath($resource));
     $resourceStorage->checkPreviewsStorageFolder($resource->getOwnerId());
     $outFile = $resourceStorage->getPreviewsFolder($resource->getOwnerId()) . $fileName;
     // and finally, we can generate the preview!
     $result = $resizer->generate($outFile, $previewHeight, $previewWidth, $previewKeepAspectRatio);
     $previewFormat = $resizer->getThumbnailFormat();
     $resource->setThumbnailFormat($previewFormat);
     $resources->updateResource($resource);
     if (!$result) {
         $this->_view = new AdminResourcesListView($this->_blogInfo);
         $this->_view->setErrorMessage($this->_locale->tr("error_generating_resource_preview"));
     } else {
         $previewHeight = $this->_config->getValue("medium_size_thumbnail_height");
         $previewWidth = $this->_config->getValue("medium_size_thumbnail_width");
         // and start the resizing process
         $resourceStorage = new GalleryResourceStorage();
         $resizer = new GalleryResizer($resourceStorage->getResourcePath($resource));
         $resourceStorage->checkMediumSizePreviewsStorageFolder($resource->getOwnerId());
         $outFile = $resourceStorage->getMediumSizePreviewsFolder($resource->getOwnerId()) . $fileName;
         // and finally, we can generate the preview!
         $result = $resizer->generate($outFile, $previewHeight, $previewWidth, $previewKeepAspectRatio);
         $previewFormat = $resizer->getThumbnailFormat();
         $resource->setThumbnailFormat($previewFormat);
         $resources->updateResource($resource);
         if (!$result) {
             $this->_view = new AdminResourcesListView($this->_blogInfo);
             $this->_view->setErrorMessage($this->_locale->tr("error_generating_resource_medium"));
         } else {
             $this->_view = new AdminEditResourceView($this->_blogInfo);
             $this->_view->setSuccessMessage($message = $this->_locale->tr("resource_preview_generated_ok"));
             $this->_view->setValue("resourceDescription", $resource->getDescription());
             $this->_view->setValue("albumId", $resource->getAlbumId());
             $this->_view->setValue("resource", $resource);
         }
     }
     $this->setCommonData();
     return true;
 }
 /**
  * @public
  */
 function checkPreviewsStorageFolder($ownerId)
 {
     $previewsFolder = GalleryResourceStorage::getPreviewsFolder($ownerId);
     if ($previewsFolder[strlen($previewsFolder) - 1] == "/") {
         $previewsFolder = substr($previewsFolder, 0, strlen($previewsFolder) - 1);
     }
     if (!File::isDir($previewsFolder)) {
         // folder does not exist, so we should try to create it
         if (!File::createDir($previewsFolder, 0755)) {
             throw new Exception("Could not create user storage folder for previews: " . $previewsFolder);
             //die();
             return false;
         }
     }
     if (!File::isReadable($previewsFolder)) {
         throw new Exception($previewsFolder . " user previews storage folder exists but it is not readable!");
         //die();
         return false;
     }
     return true;
 }
 /**
  * returns the name of the file in disk where the preview is
  * stored
  *
  * @return the path to the small preview file
  */
 function getPreviewFileName()
 {
     if ($this->getThumbnailFormat() == THUMBNAIL_OUTPUT_FORMAT_SAME_AS_IMAGE) {
         $fileParts = explode(".", $this->getFileName());
         $fileExt = $fileParts[count($fileParts) - 1];
         $fileName = $this->getOwnerId() . "-" . $this->getId() . "." . strtolower($fileExt);
         $previewFile = GalleryResourceStorage::getPreviewsFolder($this->getOwnerId()) . $fileName;
     } else {
         $previewType = $this->getThumbnailFormat();
         $fileName = $this->getOwnerId() . "-" . $this->getId() . "." . strtolower($previewType);
         $previewFile = GalleryResourceStorage::getPreviewsFolder($this->getOwnerId()) . $fileName;
     }
     return $previewFile;
 }
 /**
  * generates the thumbnail of a file that we have just added.
  *
  * @param resFile the resource file from which we're trying to generate the
  * thubmail.
  * @param fileName The name and path of the new thumbnail we're going to create
  */
 function generateResourceThumbnail($resFile, $resourceId, $ownerId)
 {
     // get some configuration settings regarding the size of the
     // thumbnails, and also the default format for thumbnails
     $config =& Config::getConfig();
     $previewHeight = $config->getValue("thumbnail_height", GALLERY_DEFAULT_THUMBNAIL_HEIGHT);
     $previewWidth = $config->getValue("thumbnail_width", GALLERY_DEFAULT_THUMBNAIL_WIDTH);
     $previewKeepAspectRatio = $config->getValue("thumbnails_keep_aspect_ratio");
     // get the file extension
     $fileParts = explode(".", $resFile);
     $fileExt = strtolower($fileParts[count($fileParts) - 1]);
     $fileName = $ownerId . "-" . $resourceId . "." . $fileExt;
     // and start the resizing process
     $resizer = new GalleryResizer($resFile);
     GalleryResourceStorage::checkPreviewsStorageFolder($ownerId);
     $outFile = GalleryResourceStorage::getPreviewsFolder($ownerId) . $fileName;
     // and finally, we can generate the preview!
     $result = $resizer->generate($outFile, $previewWidth, $previewHeight, $previewKeepAspectRatio);
     return $result;
 }