/** * Only delete an additional image. * * @param integer $imageId Image ID * @param string $imagesFolder A path to the images folder. * @param integer $userId * * @throws RuntimeException */ public function removeExtraImage($imageId, $imagesFolder, $userId) { jimport("itprism.file.image"); jimport("itprism.file.remover.local"); jimport("crowdfunding.image.validator.owner"); jimport("crowdfunding.image.remover.extra"); $file = new ITPrismFileImage(); // Validate owner of the project. $ownerValidator = new CrowdFundingImageValidatorOwner(JFactory::getDbo(), $imageId, $userId); if (!$ownerValidator->isValid()) { throw new RuntimeException(JText::_("COM_CROWDFUNDING_INVALID_PROJECT")); } // Remove the image. $remover = new CrowdFundingImageRemoverExtra(JFactory::getDbo(), $imageId, $imagesFolder); $file->addRemover($remover); $file->remove(); }
/** * Upload an image. * * @param array $image * @param string $destFolder * * @throws RuntimeException * * @return array */ public function uploadImage($image, $destFolder) { // Load parameters. $params = JComponentHelper::getParams($this->option); /** @var $params Joomla\Registry\Registry */ // Joomla! media extension parameters $mediaParams = JComponentHelper::getParams("com_media"); /** @var $mediaParams Joomla\Registry\Registry */ jimport("itprism.file"); jimport("itprism.file.image"); jimport("itprism.file.uploader.local"); jimport("itprism.file.validator.size"); jimport("itprism.file.validator.image"); jimport("itprism.file.validator.server"); $names = array("image" => "", "thumb" => "", "square" => ""); $KB = 1024 * 1024; $uploadMaxSize = $mediaParams->get("upload_maxsize") * $KB; $mimeTypes = explode(",", $mediaParams->get("upload_mime")); $imageExtensions = explode(",", $mediaParams->get("image_extensions")); $uploadedFile = JArrayHelper::getValue($image, 'tmp_name'); $uploadedName = JString::trim(JArrayHelper::getValue($image, 'name')); $errorCode = JArrayHelper::getValue($image, 'error'); $file = new ITPrismFileImage(); if (!empty($uploadedName)) { // Prepare size validator. $fileSize = (int) JArrayHelper::getValue($image, 'size'); // Prepare file size validator. $sizeValidator = new ITPrismFileValidatorSize($fileSize, $uploadMaxSize); // Prepare server validator. $serverValidator = new ITPrismFileValidatorServer($errorCode, array(UPLOAD_ERR_NO_FILE)); // Prepare image validator. $imageValidator = new ITPrismFileValidatorImage($uploadedFile, $uploadedName); // Get allowed mime types from media manager options $imageValidator->setMimeTypes($mimeTypes); // Get allowed image extensions from media manager options $imageValidator->setImageExtensions($imageExtensions); $file->addValidator($sizeValidator)->addValidator($imageValidator)->addValidator($serverValidator); // Validate the file if (!$file->isValid()) { throw new RuntimeException($file->getError()); } // Generate temporary file name $ext = JString::strtolower(JFile::makeSafe(JFile::getExt($image['name']))); jimport("itprism.string"); $generatedName = new ITPrismString(); $generatedName->generateRandomString(12, "reward_"); $destFile = JPath::clean($destFolder . DIRECTORY_SEPARATOR . $generatedName . "." . $ext); // Prepare uploader object. $uploader = new ITPrismFileUploaderLocal($uploadedFile); $uploader->setDestination($destFile); // Upload temporary file $file->setUploader($uploader); $file->upload(); // Get file $imageSource = $file->getFile(); if (!is_file($imageSource)) { throw new RuntimeException(JText::_("COM_CROWDFUNDING_ERROR_FILE_CANT_BE_UPLOADED")); } // Generate thumbnails. // Create thumbnail. $generatedName->generateRandomString(12, "reward_thumb_"); $options = array("width" => $params->get("rewards_image_thumb_width", 200), "height" => $params->get("rewards_image_thumb_height", 200), "destination" => JPath::clean($destFolder . DIRECTORY_SEPARATOR . $generatedName . "." . $ext)); $thumbSource = $file->createThumbnail($options); // Create square image. $generatedName->generateRandomString(12, "reward_square_"); $options = array("width" => $params->get("rewards_image_square_width", 50), "height" => $params->get("rewards_image_square_height", 50), "destination" => JPath::clean($destFolder . DIRECTORY_SEPARATOR . $generatedName . "." . $ext)); $squareSource = $file->createThumbnail($options); $names['image'] = basename($imageSource); $names["thumb"] = basename($thumbSource); $names["square"] = basename($squareSource); } return $names; }