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