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