diff --git a/app/code/community/Cloudinary/Cloudinary/Model/Catalog/Product/Media/Config.php b/app/code/community/Cloudinary/Cloudinary/Model/Catalog/Product/Media/Config.php index 850c7f2..49e58c2 100644 --- a/app/code/community/Cloudinary/Cloudinary/Model/Catalog/Product/Media/Config.php +++ b/app/code/community/Cloudinary/Cloudinary/Model/Catalog/Product/Media/Config.php @@ -51,8 +51,12 @@ public function getMediaUrl($file) */ public function getTmpMediaUrl($file) { + //Comment this line & uncomment the next paragraph if you insist on using cloudinary for tmp media images + return parent::getTmpMediaUrl($file); + /* + $file = DS . ltrim($this->getBaseTmpMediaUrlAddition(), DS) . $file; $image = $this->_imageFactory->build($file, function() use($file) { return parent::getTmpMediaUrl($file); }); - return $this->_urlGenerator->generateFor($image); + */ } } diff --git a/app/code/community/Cloudinary/Cloudinary/Model/Configuration.php b/app/code/community/Cloudinary/Cloudinary/Model/Configuration.php index 317f012..6ad291c 100644 --- a/app/code/community/Cloudinary/Cloudinary/Model/Configuration.php +++ b/app/code/community/Cloudinary/Cloudinary/Model/Configuration.php @@ -36,6 +36,7 @@ class Cloudinary_Cloudinary_Model_Configuration implements ConfigurationInterfac //= Advanced const CONFIG_PATH_REMOVE_VERSION_NUMBER = 'cloudinary/advanced/remove_version_number'; const CONFIG_PATH_USE_ROOT_PATH = 'cloudinary/advanced/use_root_path'; + const CONFIG_PATH_USE_SIGNED_URLS = 'cloudinary/advanced/use_signed_urls'; private $environmentVariable; @@ -250,8 +251,8 @@ private function getDefaultGlobalFreeform() } /** - * @return bool - */ + * @return bool + */ public function getRemoveVersionNumber() { return (bool) Mage::getStoreConfig(self::CONFIG_PATH_REMOVE_VERSION_NUMBER); @@ -263,4 +264,12 @@ public function getUseRootPath() { return (bool) Mage::getStoreConfig(self::CONFIG_PATH_REMOVE_VERSION_NUMBER); } + + /** + * @return bool + */ + public function getUseSignedUrls() + { + return (bool) Mage::getStoreConfig(self::CONFIG_PATH_USE_SIGNED_URLS); + } } diff --git a/app/code/community/Cloudinary/Cloudinary/Model/MagentoFolderTranslator.php b/app/code/community/Cloudinary/Cloudinary/Model/MagentoFolderTranslator.php index 7a919b0..229d641 100644 --- a/app/code/community/Cloudinary/Cloudinary/Model/MagentoFolderTranslator.php +++ b/app/code/community/Cloudinary/Cloudinary/Model/MagentoFolderTranslator.php @@ -14,7 +14,7 @@ public function __construct() $this->absolutePathRegex = "#^$baseDir/.*#"; //anything starting with the magento base dir $this->mediaPathRegex = "#^$mediaDir/.*#"; //anything starting with the media folder $this->wysiwygPathRegex = "#^/wysiwyg/.*#"; // anything starting with the /wysiwyg folder - $this->productPathRegex = "#(^/cache/.*|^/(\\w/){2})#"; // any path that has '/cache/' prefix, or '/l/l/' structure, where l is a single letter + $this->productPathRegex = "#(^/cache/.*|^/([\\w-]/){2})#"; // any path that has '/cache/' prefix, or '/l/l/' structure, where l is a single letter } /** diff --git a/app/code/community/Cloudinary/Cloudinary/Model/Resource/Cms/Synchronisation/Collection.php b/app/code/community/Cloudinary/Cloudinary/Model/Resource/Cms/Synchronisation/Collection.php index 704e1ab..729bd03 100644 --- a/app/code/community/Cloudinary/Cloudinary/Model/Resource/Cms/Synchronisation/Collection.php +++ b/app/code/community/Cloudinary/Cloudinary/Model/Resource/Cms/Synchronisation/Collection.php @@ -17,8 +17,15 @@ class Cloudinary_Cloudinary_Model_Resource_Cms_Synchronisation_Collection public function __construct() { $categoryImages = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'category'; - $this->addTargetDir($categoryImages); - $this->addTargetDir(Mage::getBaseDir('media').DS.Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY); + if(realpath($categoryImages)){ + $this->addTargetDir($categoryImages); + } + + $wysiwygImages = Mage::getBaseDir('media') . DS . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY; + if(realpath($wysiwygImages)){ + $this->addTargetDir($wysiwygImages); + } + $this->setItemObjectClass('cloudinary_cloudinary/cms_synchronisation'); $this->setFilesFilter( sprintf('#^[a-z0-9\.\-\_]+\.(?:%s)$#i', implode('|', $this->allowedImgExtensions)) diff --git a/app/code/community/Cloudinary/Cloudinary/etc/config.xml b/app/code/community/Cloudinary/Cloudinary/etc/config.xml index e2ca737..616c174 100644 --- a/app/code/community/Cloudinary/Cloudinary/etc/config.xml +++ b/app/code/community/Cloudinary/Cloudinary/etc/config.xml @@ -2,7 +2,7 @@ - 2.8.4 + 2.9.0 diff --git a/app/code/community/Cloudinary/Cloudinary/etc/system.xml b/app/code/community/Cloudinary/Cloudinary/etc/system.xml index 8cdc284..6de4394 100644 --- a/app/code/community/Cloudinary/Cloudinary/etc/system.xml +++ b/app/code/community/Cloudinary/Cloudinary/etc/system.xml @@ -202,6 +202,16 @@ 0 adminhtml/system_config_source_yesno + + + A signed Cloudinary image delivery URL is a dynamic URL that has its signature validated before making it available for view + select + 1 + 1 + 0 + 0 + adminhtml/system_config_source_yesno + diff --git a/lib/CloudinaryExtension/CloudinaryImageProvider.php b/lib/CloudinaryExtension/CloudinaryImageProvider.php index c80dd17..96f0b29 100644 --- a/lib/CloudinaryExtension/CloudinaryImageProvider.php +++ b/lib/CloudinaryExtension/CloudinaryImageProvider.php @@ -68,7 +68,11 @@ public function upload(Image $image) public function retrieveTransformed(Image $image, Transformation $transformation) { - $imagePath = \cloudinary_url($image->getId(), ['transformation' => $transformation->build(), 'secure' => true]); + $imagePath = \cloudinary_url($image->getId(), [ + 'transformation' => $transformation->build(), + 'secure' => true, + 'sign_url' => $this->configuration->getUseSignedUrls() + ]); if ($this->configuration->getUseRootPath()) { $imagePath = str_replace(".com/{$this->configuration->getCloud()}/image/upload/", ".com/{$this->configuration->getCloud()}/", $imagePath); diff --git a/lib/CloudinaryExtension/Image/Transformation.php b/lib/CloudinaryExtension/Image/Transformation.php index 6cb8b0a..87223de 100644 --- a/lib/CloudinaryExtension/Image/Transformation.php +++ b/lib/CloudinaryExtension/Image/Transformation.php @@ -24,14 +24,14 @@ class Transformation public function __construct() { - $this->crop = 'pad'; + $this->crop = 'lpad'; $this->flags = []; } public function withGravity(Gravity $gravity) { $this->gravity = $gravity; - $this->crop = ((string)$gravity) ? 'crop' : 'pad'; + $this->crop = ((string)$gravity) ? 'crop' : 'lpad'; return $this; } diff --git a/lib/CloudinaryExtension/Image/Transformation/Crop.php b/lib/CloudinaryExtension/Image/Transformation/Crop.php index 5eb0b0c..6a0290d 100644 --- a/lib/CloudinaryExtension/Image/Transformation/Crop.php +++ b/lib/CloudinaryExtension/Image/Transformation/Crop.php @@ -4,7 +4,7 @@ class Crop { - const PAD = 'pad'; + const PAD = 'lpad'; const FIT = 'fit'; private $value;