public function uploadExtraImages($files, $options) { $images = array(); $destination = JArrayHelper::getValue($options, "destination", "images/crowdfunding"); 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"); jimport("itprism.string"); // Joomla! media extension parameters $mediaParams = JComponentHelper::getParams("com_media"); /** @var $mediaParams Joomla\Registry\Registry */ // check for error foreach ($files as $image) { // Upload image if (!empty($image['name'])) { $uploadedFile = JArrayHelper::getValue($image, 'tmp_name'); $uploadedName = JArrayHelper::getValue($image, 'name'); $errorCode = JArrayHelper::getValue($image, 'error'); $file = new ITPrismFile(); // Prepare size validator. $KB = 1024 * 1024; $fileSize = JArrayHelper::getValue($image, "size"); $uploadMaxSize = $mediaParams->get("upload_maxsize") * $KB; // 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 $mimeTypes = explode(",", $mediaParams->get("upload_mime")); $imageValidator->setMimeTypes($mimeTypes); // Get allowed image extensions from media manager options $imageExtensions = explode(",", $mediaParams->get("image_extensions")); $imageValidator->setImageExtensions($imageExtensions); $file->addValidator($sizeValidator)->addValidator($imageValidator)->addValidator($serverValidator); // Validate the file if (!$file->isValid()) { throw new RuntimeException($file->getError()); } // Generate file name $ext = JString::strtolower(JFile::makeSafe(JFile::getExt($image['name']))); $generatedName = new ITPrismString(); $generatedName->generateRandomString(6); $tmpDestFile = $destination . DIRECTORY_SEPARATOR . $generatedName . "_extra." . $ext; // Prepare uploader object. $uploader = new ITPrismFileUploaderLocal($uploadedFile); $uploader->setDestination($tmpDestFile); // Upload temporary file $file->setUploader($uploader); $file->upload(); // Get file $imageSource = $file->getFile(); if (!JFile::exists($imageSource)) { throw new RuntimeException(JText::_("COM_CROWDFUNDING_ERROR_FILE_CANT_BE_UPLOADED")); } // Create thumbnail $fileImage = new ITPrismFileImage($imageSource); $options["destination"] = $destination . DIRECTORY_SEPARATOR . $generatedName . "_extra_thumb." . $ext; $thumbSource = $fileImage->createThumbnail($options); $names = array("image" => "", "thumb" => ""); $names['image'] = basename($imageSource); $names["thumb"] = basename($thumbSource); $images[] = $names; } } return $images; }
/** * Upload a pitch image. * * @param array $image * * @throws Exception * * @return array */ public function uploadPitchImage($image) { $app = JFactory::getApplication(); /** @var $app JApplicationSite */ $uploadedFile = JArrayHelper::getValue($image, 'tmp_name'); $uploadedName = JArrayHelper::getValue($image, 'name'); $errorCode = JArrayHelper::getValue($image, 'error'); // Load parameters. $params = JComponentHelper::getParams($this->option); /** @var $params Joomla\Registry\Registry */ $destFolder = JPath::clean(JPATH_ROOT . DIRECTORY_SEPARATOR . $params->get("images_directory", "images/crowdfunding")); $tmpFolder = $app->get("tmp_path"); // Joomla! media extension parameters $mediaParams = JComponentHelper::getParams("com_media"); /** @var $mediaParams Joomla\Registry\Registry */ jimport("itprism.file"); jimport("itprism.file.uploader.local"); jimport("itprism.file.validator.size"); jimport("itprism.file.validator.image"); jimport("itprism.file.validator.server"); $file = new ITPrismFile(); // Prepare size validator. $KB = 1024 * 1024; $fileSize = (int) $app->input->server->get('CONTENT_LENGTH'); $uploadMaxSize = $mediaParams->get("upload_maxsize") * $KB; $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 $mimeTypes = explode(",", $mediaParams->get("upload_mime")); $imageValidator->setMimeTypes($mimeTypes); // Get allowed image extensions from media manager options $imageExtensions = explode(",", $mediaParams->get("image_extensions")); $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(32); $tmpDestFile = $tmpFolder . DIRECTORY_SEPARATOR . $generatedName . "." . $ext; // Prepare uploader object. $uploader = new ITPrismFileUploaderLocal($uploadedFile); $uploader->setDestination($tmpDestFile); // Upload temporary file $file->setUploader($uploader); $file->upload(); // Get file $tmpDestFile = $file->getFile(); if (!is_file($tmpDestFile)) { throw new Exception('COM_CROWDFUNDING_ERROR_FILE_CANT_BE_UPLOADED'); } // Resize image $image = new JImage(); $image->loadFile($tmpDestFile); if (!$image->isLoaded()) { throw new Exception(JText::sprintf('COM_CROWDFUNDING_ERROR_FILE_NOT_FOUND', $tmpDestFile)); } $imageName = $generatedName . "_pimage.png"; $imageFile = JPath::clean($destFolder . DIRECTORY_SEPARATOR . $imageName); // Create main image $width = $params->get("pitch_image_width", 600); $height = $params->get("pitch_image_height", 400); $image->resize($width, $height, false); $image->toFile($imageFile, IMAGETYPE_PNG); // Remove the temporary if (is_file($tmpDestFile)) { JFile::delete($tmpDestFile); } return $imageName; }
/** * 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; }