From 3c5aff38618d59ff6fc481c8f11ae19dd38c49be Mon Sep 17 00:00:00 2001 From: pini-girit Date: Thu, 11 Jul 2019 11:39:40 +0300 Subject: [PATCH] CLOUDINARY-143: Fixed issue When installing the M2 module the error: Uncaught Error: Call to a member function getCloud() on null... --- Core/AutoUploadMapping/ApiClient.php | 17 ++++++++++++----- Core/CloudinaryImageProvider.php | 21 ++++++++++++++++----- Model/Configuration.php | 2 +- composer.json | 2 +- etc/module.xml | 2 +- marketplace.composer.json | 2 +- 6 files changed, 32 insertions(+), 14 deletions(-) diff --git a/Core/AutoUploadMapping/ApiClient.php b/Core/AutoUploadMapping/ApiClient.php index f261016..297780a 100644 --- a/Core/AutoUploadMapping/ApiClient.php +++ b/Core/AutoUploadMapping/ApiClient.php @@ -14,6 +14,11 @@ class ApiClient const FOLDER_KEY = 'folder'; const URL_KEY = 'template'; + /** + * @var bool + */ + private $_authorised; + /** * @var ConfigurationInterface */ @@ -43,9 +48,6 @@ public function __construct( $this->configuration = $configuration; $this->configurationBuilder = $configurationBuilder; $this->api = $api; - if ($this->configuration->isEnabled()) { - $this->authorise(); - } } /** @@ -54,6 +56,7 @@ public function __construct( */ public static function fromConfiguration(ConfigurationInterface $configuration) { + $this->authorise(); return new ApiClient( $configuration, new ConfigurationBuilder($configuration), @@ -69,6 +72,7 @@ public static function fromConfiguration(ConfigurationInterface $configuration) public function prepareMapping($folder, $url) { try { + $this->authorise(); $existingMappings = $this->parseFetchMappingsResponse($this->api->upload_mappings()); if ($this->hasMapping($existingMappings, $folder)) { @@ -145,8 +149,11 @@ function (array $mapping) use ($url) { private function authorise() { - Cloudinary::config($this->configurationBuilder->build()); - Cloudinary::$USER_PLATFORM = $this->configuration->getUserPlatform(); + if (!$this->_authorised && $configuration->isEnabled()) { + Cloudinary::config($this->configurationBuilder->build()); + Cloudinary::$USER_PLATFORM = $this->configuration->getUserPlatform(); + $this->_authorised = true; + } } /** diff --git a/Core/CloudinaryImageProvider.php b/Core/CloudinaryImageProvider.php index ffd36a8..fafb1b7 100644 --- a/Core/CloudinaryImageProvider.php +++ b/Core/CloudinaryImageProvider.php @@ -9,6 +9,11 @@ class CloudinaryImageProvider implements ImageProvider { + /** + * @var bool + */ + private $_authorised; + /** * @var ConfigurationInterface */ @@ -37,9 +42,6 @@ public function __construct( $this->configuration = $configuration; $this->uploadResponseValidator = $uploadResponseValidator; $this->configurationBuilder = $configurationBuilder; - if ($configuration->isEnabled()) { - $this->authorise(); - } } /** @@ -48,6 +50,7 @@ public function __construct( */ public static function fromConfiguration(ConfigurationInterface $configuration) { + $this->authorise(); return new CloudinaryImageProvider( $configuration, new ConfigurationBuilder($configuration), @@ -61,6 +64,7 @@ public static function fromConfiguration(ConfigurationInterface $configuration) */ public function upload(Image $image) { + $this->authorise(); if (!$this->configuration->isEnabled()) { return false; } @@ -83,6 +87,7 @@ public function upload(Image $image) */ public function retrieveTransformed(Image $image, Transformation $transformation) { + $this->authorise(); $imagePath = \cloudinary_url( $image->getId(), [ @@ -114,6 +119,7 @@ public function retrieveTransformed(Image $image, Transformation $transformation */ public function retrieve(Image $image) { + $this->authorise(); return $this->retrieveTransformed($image, $this->configuration->getDefaultTransformation()); } @@ -123,6 +129,7 @@ public function retrieve(Image $image) */ public function delete(Image $image) { + $this->authorise(); if ($this->configuration->isEnabled()) { Uploader::destroy($image->getIdWithoutExtension()); } @@ -134,6 +141,7 @@ public function delete(Image $image) public function validateCredentials() { try { + $this->authorise(); $pingValidation = $this->api->ping(); if (!(isset($pingValidation["status"]) && $pingValidation["status"] === "ok")) { return false; @@ -148,7 +156,10 @@ public function validateCredentials() private function authorise() { - Cloudinary::config($this->configurationBuilder->build()); - Cloudinary::$USER_PLATFORM = $this->configuration->getUserPlatform(); + if (!$this->_authorised && $configuration->isEnabled()) { + Cloudinary::config($this->configurationBuilder->build()); + Cloudinary::$USER_PLATFORM = $this->configuration->getUserPlatform(); + $this->_authorised = true; + } } } diff --git a/Model/Configuration.php b/Model/Configuration.php index b073791..531705d 100644 --- a/Model/Configuration.php +++ b/Model/Configuration.php @@ -199,7 +199,7 @@ public function getCdnSubdomainStatus() */ public function getUserPlatform() { - return sprintf(self::USER_PLATFORM_TEMPLATE, '1.9.2', '2.0.0'); + return sprintf(self::USER_PLATFORM_TEMPLATE, '1.9.3', '2.0.0'); } /** diff --git a/composer.json b/composer.json index 8abfb61..fda36ac 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "cloudinary/cloudinary-magento2", "description": "Cloudinary Magento 2 Integration.", "type": "magento2-module", - "version": "1.9.2", + "version": "1.9.3", "license": "MIT", "require": { "cloudinary/cloudinary_php": "*" diff --git a/etc/module.xml b/etc/module.xml index 83d7a65..d511725 100644 --- a/etc/module.xml +++ b/etc/module.xml @@ -1,6 +1,6 @@ - + diff --git a/marketplace.composer.json b/marketplace.composer.json index bfd7a20..a596da3 100644 --- a/marketplace.composer.json +++ b/marketplace.composer.json @@ -1,7 +1,7 @@ { "name": "cloudinary/cloudinary", "type": "magento2-module", - "version": "1.9.2", + "version": "1.9.3", "description": "Cloudinary Magento 2 Integration.", "license": "MIT", "require": {