Cloudinary_Cloudinary - Version 2.6.0

Version Notes

Release 2.6.0 notes:
- Admin UX improvements
- Add module reset feature
- Remove unfoldered migration option

Download this release

Release Info

Developer Cloudinary
Extension Cloudinary_Cloudinary
Version 2.6.0
Comparing to
See all releases


Code changes from version 2.5.0 to 2.6.0

app/code/community/Cloudinary/Cloudinary/Block/Adminhtml/Manage.php CHANGED
@@ -71,19 +71,6 @@ class Cloudinary_Cloudinary_Block_Adminhtml_Manage extends Mage_Adminhtml_Block_
71
  }
72
  }
73
 
74
- public function getEnableButton()
75
- {
76
- if ($this->_cloudinaryConfig->isEnabled()) {
77
- $enableLabel = 'Disable Cloudinary';
78
- $enableAction = 'disableCloudinary';
79
- } else {
80
- $enableLabel = 'Enable Cloudinary';
81
- $enableAction = 'enableCloudinary';
82
- }
83
-
84
- return $this->_makeButton($enableLabel, $enableAction);
85
- }
86
-
87
  public function getMigrateButton()
88
  {
89
  if ($this->_migrationTask->hasStarted()) {
71
  }
72
  }
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  public function getMigrateButton()
75
  {
76
  if ($this->_migrationTask->hasStarted()) {
app/code/community/Cloudinary/Cloudinary/Block/Adminhtml/Reset/Edit.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Cloudinary_Cloudinary_Block_Adminhtml_Reset_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
4
+ {
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+
9
+ $this->_blockGroup = 'cloudinary_cloudinary';
10
+ $this->_controller = 'adminhtml_reset';
11
+ $this->_headerText = Mage::helper('cloudinary_cloudinary')->__('Reset all Cloudinary module data');
12
+ $this->setTemplate('cloudinary/reset.phtml');
13
+
14
+ $this->updateButton('save', 'label', 'Reset all Cloudinary data');
15
+ $this->updateButton('save', 'area', 'footer');
16
+ $this->updateButton('save', 'onclick', 'openCloudinaryResetConfirmation();');
17
+ }
18
+ }
app/code/community/Cloudinary/Cloudinary/Block/Adminhtml/Reset/Edit/Form.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Cloudinary_Cloudinary_Block_Adminhtml_Reset_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
4
+ {
5
+ /**
6
+ * @return Mage_Adminhtml_Block_Widget_Form
7
+ */
8
+ protected function _prepareForm()
9
+ {
10
+ $form = new Varien_Data_Form(
11
+ [
12
+ 'id' => 'edit_form',
13
+ 'action' => $this->getUrl('*/*/save'),
14
+ 'method' => 'post',
15
+ ]
16
+ );
17
+
18
+ $form->setUseContainer(true);
19
+ $this->setForm($form);
20
+
21
+ $fieldset = $form->addFieldset('display', ['class' => 'fieldset-wide']);
22
+
23
+ $fieldset->addField('password', 'password', [
24
+ 'name' => 'password',
25
+ 'label' => Mage::helper('cloudinary_cloudinary')->__('Enter your admin password to confirm reset')
26
+ ]);
27
+
28
+ return parent::_prepareForm();
29
+ }
30
+ }
app/code/community/Cloudinary/Cloudinary/Block/Adminhtml/System/Config/Form/Foldered.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
-
3
- class Cloudinary_Cloudinary_Block_Adminhtml_System_Config_Form_Foldered extends Mage_Adminhtml_Block_System_Config_Form_Field
4
- {
5
- /**
6
- * @param Varien_Data_Form_Element_Select $element
7
- * @return mixed
8
- */
9
- protected function _getElementHtml($element)
10
- {
11
- if (Mage::getModel('cloudinary_cloudinary/autoUploadMapping_configuration')->isActive()) {
12
- $element->setDisabled('disabled');
13
- }
14
- return parent::_getElementHtml($element);
15
- }
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Cloudinary/Cloudinary/Helper/Reset.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Cloudinary_Cloudinary_Helper_Reset extends Mage_Core_Helper_Abstract
4
+ {
5
+ const CONFIG_CACHE = 'config';
6
+
7
+ public function removeModuleData()
8
+ {
9
+ $this->truncateCollection('cloudinary_cloudinary/synchronisation');
10
+ $this->truncateCollection('cloudinary_cloudinary/migrationError');
11
+ $this->removeConfigurationData();
12
+ $this->removeMigration();
13
+ $this->clearConfigCache();
14
+ }
15
+
16
+ /**
17
+ * @param string $collectionName
18
+ */
19
+ private function truncateCollection($collectionName)
20
+ {
21
+ $collection = Mage::getModel($collectionName)->getCollection();
22
+ return $collection->getConnection()->query(sprintf('TRUNCATE %s', $collection->getMainTable()));
23
+ }
24
+
25
+ private function removeConfigurationData()
26
+ {
27
+ $resource = Mage::getSingleton('core/resource');
28
+ $write = $resource->getConnection('core_write');
29
+ $table = $resource->getTableName('core/config_data');
30
+ $write->delete($table, ['path LIKE (?)' => 'cloudinary/%']);
31
+ }
32
+
33
+ private function removeMigration()
34
+ {
35
+ Mage::getModel('cloudinary_cloudinary/migration')
36
+ ->load(Cloudinary_Cloudinary_Model_Migration::CLOUDINARY_MIGRATION_ID)
37
+ ->delete();
38
+ }
39
+
40
+ private function clearConfigCache()
41
+ {
42
+ Mage::app()->getCacheInstance()->cleanType(self::CONFIG_CACHE);
43
+ Mage::dispatchEvent('adminhtml_cache_refresh_type', ['type' => self::CONFIG_CACHE]);
44
+ }
45
+ }
app/code/community/Cloudinary/Cloudinary/Model/Configuration.php CHANGED
@@ -15,7 +15,7 @@ use CloudinaryExtension\UploadConfig;
15
 
16
  class Cloudinary_Cloudinary_Model_Configuration implements ConfigurationInterface
17
  {
18
- const CONFIG_PATH_ENABLED = 'cloudinary/cloud/cloudinary_enabled';
19
  const STATUS_ENABLED = 1;
20
  const STATUS_DISABLED = 0;
21
  const USER_PLATFORM_TEMPLATE = 'CloudinaryMagento/%s (Magento %s)';
15
 
16
  class Cloudinary_Cloudinary_Model_Configuration implements ConfigurationInterface
17
  {
18
+ const CONFIG_PATH_ENABLED = 'cloudinary/setup/cloudinary_enabled';
19
  const STATUS_ENABLED = 1;
20
  const STATUS_DISABLED = 0;
21
  const USER_PLATFORM_TEMPLATE = 'CloudinaryMagento/%s (Magento %s)';
app/code/community/Cloudinary/Cloudinary/Model/Observer.php CHANGED
@@ -2,12 +2,10 @@
2
 
3
  use CloudinaryExtension\CloudinaryImageProvider;
4
  use CloudinaryExtension\CredentialValidator;
5
- use CloudinaryExtension\Exception\InvalidCredentials;
6
  use CloudinaryExtension\Image;
7
  use CloudinaryExtension\Security\CloudinaryEnvironmentVariable;
8
  use CloudinaryExtension\AutoUploadMapping\RequestProcessor;
9
  use CloudinaryExtension\AutoUploadMapping\ApiClient;
10
- use Cloudinary\Api;
11
  use Mage_Adminhtml_Model_Config_Data as ConfigData;
12
  use Mage_Catalog_Model_Product as Product;
13
  use Varien_Event_Observer as EventObserver;
@@ -69,16 +67,21 @@ class Cloudinary_Cloudinary_Model_Observer extends Mage_Core_Model_Abstract
69
  */
70
  public function validateCloudinaryCredentials(EventObserver $observer)
71
  {
72
- $credentialValidator = new CredentialValidator();
73
-
74
  $configObject = $observer->getEvent()->getObject();
75
- if ($configObject->getSection() == self::CLOUDINARY_CONFIG_SECTION) {
76
- $configData = $this->flattenConfigData($configObject);
 
77
 
78
- $environmentVariable = CloudinaryEnvironmentVariable::fromString($configData['cloudinary_environment_variable']);
79
- if (!$credentialValidator->validate($environmentVariable->getCredentials())) {
80
- Mage::getSingleton('adminhtml/session')->addError(self::ERROR_WRONG_CREDENTIALS);
81
- }
 
 
 
 
 
 
82
  }
83
  }
84
 
@@ -87,6 +90,10 @@ class Cloudinary_Cloudinary_Model_Observer extends Mage_Core_Model_Abstract
87
  */
88
  public function cloudinaryConfigChanged(EventObserver $observer)
89
  {
 
 
 
 
90
  if (!$this->autoUploadRequestProcessor()->handle('media', Mage::getBaseUrl('media'))) {
91
  Mage::getSingleton('adminhtml/session')->addError(self::AUTO_UPLOAD_SETUP_FAIL_MESSAGE);
92
  }
2
 
3
  use CloudinaryExtension\CloudinaryImageProvider;
4
  use CloudinaryExtension\CredentialValidator;
 
5
  use CloudinaryExtension\Image;
6
  use CloudinaryExtension\Security\CloudinaryEnvironmentVariable;
7
  use CloudinaryExtension\AutoUploadMapping\RequestProcessor;
8
  use CloudinaryExtension\AutoUploadMapping\ApiClient;
 
9
  use Mage_Adminhtml_Model_Config_Data as ConfigData;
10
  use Mage_Catalog_Model_Product as Product;
11
  use Varien_Event_Observer as EventObserver;
67
  */
68
  public function validateCloudinaryCredentials(EventObserver $observer)
69
  {
 
 
70
  $configObject = $observer->getEvent()->getObject();
71
+ if ($configObject->getSection() != self::CLOUDINARY_CONFIG_SECTION) {
72
+ return;
73
+ }
74
 
75
+ $configData = $this->flattenConfigData($configObject);
76
+ if ($configData['cloudinary_enabled'] != '1') {
77
+ return;
78
+ }
79
+
80
+ $credentialValidator = new CredentialValidator();
81
+ $environmentVariable = CloudinaryEnvironmentVariable::fromString($configData['cloudinary_environment_variable']);
82
+
83
+ if (!$credentialValidator->validate($environmentVariable->getCredentials())) {
84
+ throw new Mage_Core_Exception(self::ERROR_WRONG_CREDENTIALS);
85
  }
86
  }
87
 
90
  */
91
  public function cloudinaryConfigChanged(EventObserver $observer)
92
  {
93
+ if (!Mage::getModel('cloudinary_cloudinary/configuration')->isEnabled()) {
94
+ return;
95
+ }
96
+
97
  if (!$this->autoUploadRequestProcessor()->handle('media', Mage::getBaseUrl('media'))) {
98
  Mage::getSingleton('adminhtml/session')->addError(self::AUTO_UPLOAD_SETUP_FAIL_MESSAGE);
99
  }
app/code/community/Cloudinary/Cloudinary/controllers/Adminhtml/CloudinaryController.php CHANGED
@@ -14,6 +14,12 @@ class Cloudinary_Cloudinary_Adminhtml_CloudinaryController extends Mage_Adminhtm
14
  */
15
  private $_cloudinaryConfig;
16
 
 
 
 
 
 
 
17
  public function preDispatch()
18
  {
19
  $this->_migrationTask = Mage::getModel('cloudinary_cloudinary/migration')->load(Cloudinary_Cloudinary_Model_Migration::CLOUDINARY_MIGRATION_ID);
@@ -29,6 +35,7 @@ class Cloudinary_Cloudinary_Adminhtml_CloudinaryController extends Mage_Adminhtm
29
  $this->_displayMigrationMessages();
30
 
31
  $layout = $this->loadLayout();
 
32
 
33
  if (!$this->_cloudinaryConfig->validateCredentials()) {
34
  $this->_displayValidationFailureMessage();
@@ -83,23 +90,6 @@ class Cloudinary_Cloudinary_Adminhtml_CloudinaryController extends Mage_Adminhtm
83
  $this->_redirectToManageCloudinary();
84
  }
85
 
86
- public function enableCloudinaryAction()
87
- {
88
- if (!$this->_cloudinaryConfig->validateCredentials()) {
89
- $this->_getSession()->addError('Validating credentials failed. Cloudinary stays disabled');
90
- } else {
91
- $this->_cloudinaryConfig->enable();
92
- }
93
- $this->_redirectToManageCloudinary();
94
- }
95
-
96
- public function disableCloudinaryAction()
97
- {
98
- $this->_cloudinaryConfig->disable();
99
-
100
- $this->_redirectToManageCloudinary();
101
- }
102
-
103
  public function clearErrorsAction()
104
  {
105
  $items = Mage::getModel('cloudinary_cloudinary/migrationError')->getCollection()->getItems();
14
  */
15
  private $_cloudinaryConfig;
16
 
17
+ private function configurePage()
18
+ {
19
+ $this->_title($this->__('Manual Migration'))
20
+ ->_setActiveMenu('cloudinary_cloudinary/manage');
21
+ }
22
+
23
  public function preDispatch()
24
  {
25
  $this->_migrationTask = Mage::getModel('cloudinary_cloudinary/migration')->load(Cloudinary_Cloudinary_Model_Migration::CLOUDINARY_MIGRATION_ID);
35
  $this->_displayMigrationMessages();
36
 
37
  $layout = $this->loadLayout();
38
+ $this->configurePage();
39
 
40
  if (!$this->_cloudinaryConfig->validateCredentials()) {
41
  $this->_displayValidationFailureMessage();
90
  $this->_redirectToManageCloudinary();
91
  }
92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  public function clearErrorsAction()
94
  {
95
  $items = Mage::getModel('cloudinary_cloudinary/migrationError')->getCollection()->getItems();
app/code/community/Cloudinary/Cloudinary/controllers/Adminhtml/CloudinaryresetController.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Cloudinary_Cloudinary_Adminhtml_CloudinaryresetController extends Mage_Adminhtml_Controller_Action
4
+ {
5
+ const RESET_SUCCESS_MESSSAGE1 = 'All Cloudinary module data has been reset. Please clear your ';
6
+ const RESET_SUCCESS_MESSSAGE2 = 'block and page caches to ensure changes take effect.';
7
+ const RESET_ERROR_MESSAGE = 'Incorrect admin password.';
8
+
9
+ public function indexAction()
10
+ {
11
+ $this->loadLayout();
12
+
13
+ $this->_title($this->__('Reset Cloudinary'));
14
+ $this->_setActiveMenu('cloudinary_cloudinary/reset');
15
+
16
+ $this->renderLayout();
17
+ }
18
+
19
+ public function saveAction()
20
+ {
21
+ $formPassword = $this->getRequest()->getPost('password');
22
+ $userPassword = Mage::getSingleton('admin/session')
23
+ ->getUser()
24
+ ->getPassword();
25
+
26
+ if ($this->_validateFormKey() && Mage::helper('core')->validateHash($formPassword, $userPassword)) {
27
+ $this->removeModuleData();
28
+ $this->_getSession()->addSuccess(self::RESET_SUCCESS_MESSSAGE1 . self::RESET_SUCCESS_MESSSAGE2);
29
+ } else {
30
+ $this->_getSession()->addError(self::RESET_ERROR_MESSAGE);
31
+ }
32
+
33
+ return $this->_redirect('*/cloudinaryreset');
34
+ }
35
+
36
+ private function removeModuleData()
37
+ {
38
+ Mage::helper('cloudinary_cloudinary/reset')->removeModuleData();
39
+ Mage::getModel('cloudinary_cloudinary/logger')->notice(
40
+ self::RESET_SUCCESS_MESSSAGE1 . self::RESET_SUCCESS_MESSSAGE2
41
+ );
42
+ }
43
+
44
+ /**
45
+ * @return bool
46
+ */
47
+ protected function _isAllowed()
48
+ {
49
+ return Mage::getSingleton('admin/session')->isAllowed('cloudinary_cloudinary/reset');
50
+ }
51
+ }
app/code/community/Cloudinary/Cloudinary/data/cloudinary_setup/data-upgrade-1.1.2-1.1.3.php DELETED
@@ -1,3 +0,0 @@
1
- <?php
2
- $config = new Mage_Core_Model_Config();
3
- $config->saveConfig('cloudinary/cloud/cloudinary_foldered_migration', '0', 'default', 0);
 
 
 
app/code/community/Cloudinary/Cloudinary/etc/adminhtml.xml CHANGED
@@ -5,8 +5,12 @@
5
  <title>Cloudinary</title>
6
  <sort_order>75</sort_order>
7
  <children>
 
 
 
 
8
  <cloudinary module="cloudinary_cloudinary">
9
- <title>Manage</title>
10
  <action>adminhtml/cloudinary</action>
11
  </cloudinary>
12
  <log>
@@ -16,6 +20,10 @@
16
  <console module="cloudinary_cloudinary">
17
  <title>Open Cloudinary Console</title>
18
  </console>
 
 
 
 
19
  </children>
20
  </cloudinary_cloudinary>
21
  </menu>
@@ -29,8 +37,11 @@
29
  <cloudinary_cloudinary module="cloudinary_cloudinary">
30
  <title>Cloudinary</title>
31
  <children>
 
 
 
32
  <cloudinary module="cloudinary_cloudinary">
33
- <title>Manage</title>
34
  </cloudinary>
35
  <log>
36
  <title>Logs</title>
@@ -38,6 +49,9 @@
38
  <console module="cloudinary_cloudinary">
39
  <title>Open Cloudinary Console</title>
40
  </console>
 
 
 
41
  </children>
42
  </cloudinary_cloudinary>
43
  <system>
5
  <title>Cloudinary</title>
6
  <sort_order>75</sort_order>
7
  <children>
8
+ <configuration>
9
+ <title>Configuration</title>
10
+ <action>adminhtml/system_config/edit/section/cloudinary</action>
11
+ </configuration>
12
  <cloudinary module="cloudinary_cloudinary">
13
+ <title>Manual Migration</title>
14
  <action>adminhtml/cloudinary</action>
15
  </cloudinary>
16
  <log>
20
  <console module="cloudinary_cloudinary">
21
  <title>Open Cloudinary Console</title>
22
  </console>
23
+ <reset module="cloudinary_cloudinary">
24
+ <title>Remove all data</title>
25
+ <action>adminhtml/cloudinaryreset</action>
26
+ </reset>
27
  </children>
28
  </cloudinary_cloudinary>
29
  </menu>
37
  <cloudinary_cloudinary module="cloudinary_cloudinary">
38
  <title>Cloudinary</title>
39
  <children>
40
+ <configuration>
41
+ <title>Configuration</title>
42
+ </configuration>
43
  <cloudinary module="cloudinary_cloudinary">
44
+ <title>Manual Migration</title>
45
  </cloudinary>
46
  <log>
47
  <title>Logs</title>
49
  <console module="cloudinary_cloudinary">
50
  <title>Open Cloudinary Console</title>
51
  </console>
52
+ <reset module="cloudinary_cloudinary">
53
+ <title>Remove all data</title>
54
+ </reset>
55
  </children>
56
  </cloudinary_cloudinary>
57
  <system>
app/code/community/Cloudinary/Cloudinary/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Cloudinary_Cloudinary>
5
- <version>2.5.0</version>
6
  </Cloudinary_Cloudinary>
7
  </modules>
8
  <global>
@@ -165,6 +165,7 @@
165
  </transformations>
166
  <configuration>
167
  <cloudinary_cdn_subdomain>1</cloudinary_cdn_subdomain>
 
168
  </configuration>
169
  <log>
170
  <cloudinary_log_active>0</cloudinary_log_active>
2
  <config>
3
  <modules>
4
  <Cloudinary_Cloudinary>
5
+ <version>2.6.0</version>
6
  </Cloudinary_Cloudinary>
7
  </modules>
8
  <global>
165
  </transformations>
166
  <configuration>
167
  <cloudinary_cdn_subdomain>1</cloudinary_cdn_subdomain>
168
+ <cloudinary_foldered_migration>1</cloudinary_foldered_migration>
169
  </configuration>
170
  <log>
171
  <cloudinary_log_active>0</cloudinary_log_active>
app/code/community/Cloudinary/Cloudinary/etc/system.xml CHANGED
@@ -35,6 +35,16 @@
35
  <show_in_website>1</show_in_website>
36
  <show_in_store>1</show_in_store>
37
  </cloudinary_environment_variable>
 
 
 
 
 
 
 
 
 
 
38
  </fields>
39
  </setup>
40
  <configuration translate="label">
@@ -54,17 +64,6 @@
54
  <show_in_store>1</show_in_store>
55
  <source_model>adminhtml/system_config_source_yesno</source_model>
56
  </cloudinary_cdn_subdomain>
57
- <cloudinary_foldered_migration>
58
- <label>Migrate images to folders relative to the magento root folder</label>
59
- <comment>When enabled, cloudinary migration will clone the folder structure of the images relative to the magento root folder. This setting is not available when using Auto Upload Mapping.</comment>
60
- <frontend_type>select</frontend_type>
61
- <sort_order>5</sort_order>
62
- <show_in_default>1</show_in_default>
63
- <show_in_website>1</show_in_website>
64
- <show_in_store>1</show_in_store>
65
- <source_model>adminhtml/system_config_source_yesno</source_model>
66
- <frontend_model>cloudinary_cloudinary/adminhtml_system_config_form_foldered</frontend_model>
67
- </cloudinary_foldered_migration>
68
  <cloudinary_auto_upload_mapping_request>
69
  <label>Use auto upload mapping to upload images</label>
70
  <comment>When enabled, Cloudinary will fetch images it does not have from your site automatically without requiring the manual migration process. Please clear the block and page cache to start this process.</comment>
35
  <show_in_website>1</show_in_website>
36
  <show_in_store>1</show_in_store>
37
  </cloudinary_environment_variable>
38
+ <cloudinary_enabled>
39
+ <label>Enable Cloudinary</label>
40
+ <comment>When Cloudinary is enabled, images will be served from Cloudinary (where available). When disabled, images will be served locally.</comment>
41
+ <frontend_type>select</frontend_type>
42
+ <sort_order>2</sort_order>
43
+ <show_in_default>1</show_in_default>
44
+ <show_in_website>1</show_in_website>
45
+ <show_in_store>1</show_in_store>
46
+ <source_model>adminhtml/system_config_source_yesno</source_model>
47
+ </cloudinary_enabled>
48
  </fields>
49
  </setup>
50
  <configuration translate="label">
64
  <show_in_store>1</show_in_store>
65
  <source_model>adminhtml/system_config_source_yesno</source_model>
66
  </cloudinary_cdn_subdomain>
 
 
 
 
 
 
 
 
 
 
 
67
  <cloudinary_auto_upload_mapping_request>
68
  <label>Use auto upload mapping to upload images</label>
69
  <comment>When enabled, Cloudinary will fetch images it does not have from your site automatically without requiring the manual migration process. Please clear the block and page cache to start this process.</comment>
app/code/community/Cloudinary/Cloudinary/sql/cloudinary_setup/upgrade-2.1.0-2.5.0.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* @var $installer Mage_Core_Model_Resource_Setup */
4
+ $installer = $this;
5
+
6
+ $installer->startSetup();
7
+
8
+ $installer->endSetup();
app/code/community/Cloudinary/Cloudinary/sql/cloudinary_setup/upgrade-2.5.0-2.6.0.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* @var $installer Mage_Core_Model_Resource_Setup */
4
+ $installer = $this;
5
+
6
+ $installer->startSetup();
7
+
8
+ $currentConfig = Mage::getStoreConfig('cloudinary/setup/cloudinary_enabled');
9
+
10
+ if (is_null($currentConfig)) {
11
+ $legacyConfig = Mage::getStoreConfig('cloudinary/cloud/cloudinary_enabled');
12
+ Mage::getModel('core/config')->saveConfig('cloudinary/setup/cloudinary_enabled', $legacyConfig)->reinit();
13
+ }
14
+
15
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/cloudinary/cloudinary.xml CHANGED
@@ -28,4 +28,19 @@
28
  </action>
29
  </reference>
30
  </adminhtml_cloudinarylog_index>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  </layout>
28
  </action>
29
  </reference>
30
  </adminhtml_cloudinarylog_index>
31
+ <adminhtml_cloudinaryreset_index>
32
+ <update handle="editor"/>
33
+ <reference name="content">
34
+ <block type="cloudinary_cloudinary/adminhtml_reset_edit" name="cloudinary_reset"></block>
35
+ </reference>
36
+ <reference name="head">
37
+ <action method="addItem">
38
+ <type>js_css</type>
39
+ <name>prototype/windows/themes/default.css</name>
40
+ </action>
41
+ <action method="addCss">
42
+ <name>lib/prototype/windows/themes/magento.css</name>
43
+ </action>
44
+ </reference>
45
+ </adminhtml_cloudinaryreset_index>
46
  </layout>
app/design/adminhtml/default/default/template/cloudinary/manage.phtml CHANGED
@@ -39,45 +39,15 @@
39
  <div class="content-header">
40
  <table cellspacing="0"><tbody>
41
  <tr>
42
- <td style="width:50%;"><h3 class="icon-head">Manage Cloudinary Images</h3></td>
43
  <td class="form-buttons">
44
-
45
  <?php echo $this->getMigrateButton() ?>
46
-
47
- <?php echo $this->getEnableButton() ?>
48
-
49
  </td>
50
  </tr>
51
  </tbody></table>
52
  </div>
53
 
54
  <p>
55
- <p>
56
- <p>
57
-
58
- Foldered migration: <strong><?php echo $this->isFolderedMigration() ? "Enabled" : "Disabled" ?> </strong><br>
59
-
60
- Foldered migration now available! (don't start migration if you want foldered migration before doing the below tasks) <br> <br>
61
- To set up foldered migration you need to: <br> <br>
62
-
63
- - <a target="_blank" href="https://cloudinary.com/console/settings/upload">https://cloudinary.com/console/settings/upload</a>
64
- and set 'Auto-create folders' - Enabled <br>
65
-
66
- - <a target="_blank" href="https://cloudinary.com/console/settings/upload">https://cloudinary.com/console/settings/upload</a>
67
- and set 'Use file name in Media Library' - Yes <br>
68
-
69
- - <a href="<?php echo $this->getUrl('adminhtml/system_config/edit/section/cloudinary'); ?>"><?php echo $this->__('Go to the Cloudinary configuration section'); ?></a>
70
- and set 'Migrate images to folders relative to the magento root folder' - Yes <br>
71
- <br>
72
-
73
- If you already use simple migration, you will have deprecated information which you can fold: <br>
74
- - `cloudinary_synchronisation` table entries (you can wipe the table clean before starting foldered migration) <br>
75
- - all previously migrated images to cloudinary are not touched and will remain in the unfoldered structure
76
- (they all are in the cloudinary root folder and can be erased safely, since all images migrated with folders
77
- will take place in the /media/... folder) <br> <br> <br>
78
- </p>
79
-
80
- </p>
81
  <?php if ($this->allImagesSynced()): ?>
82
  <div id="messages"><ul class="messages"><li class="notice-msg"><ul><li><span>All images have been successfully migrated to Cloudinary</span></li></ul></li></ul></div>
83
  <?php else: ?>
39
  <div class="content-header">
40
  <table cellspacing="0"><tbody>
41
  <tr>
42
+ <td style="width:50%;"><h3 class="icon-head">Migrate images to Cloudinary</h3></td>
43
  <td class="form-buttons">
 
44
  <?php echo $this->getMigrateButton() ?>
 
 
 
45
  </td>
46
  </tr>
47
  </tbody></table>
48
  </div>
49
 
50
  <p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  <?php if ($this->allImagesSynced()): ?>
52
  <div id="messages"><ul class="messages"><li class="notice-msg"><ul><li><span>All images have been successfully migrated to Cloudinary</span></li></ul></li></ul></div>
53
  <?php else: ?>
app/design/adminhtml/default/default/template/cloudinary/reset.phtml ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php echo $this->getFormInitScripts() ?>
2
+ <div class="content-header">
3
+ <?php echo $this->getHeaderHtml() ?>
4
+ </div>
5
+ <div class="box-left">
6
+ <p style="font-weight:bold;">Remove all Cloudinary synchronisation data and reset all configuration
7
+ back to the default settings?</p>
8
+ <p>In order for images to be served from Cloudinary after a reset, you will need to:
9
+ <ul style="list-style-type: disc;">
10
+ <li style="margin-left: 2em;">Clear Cloudinary cache (if enabled)</li>
11
+ <li style="margin-left: 2em;">Reconfigure module</li>
12
+ <li style="margin-left: 2em;">Enable the module</li>
13
+ <li style="margin-left: 2em;">Enable auto upload mapping or perform a manual migration</li>
14
+ <li style="margin-left: 2em;">Clear the block and layout caches</li>
15
+ </ul>
16
+ </p>
17
+ <p class="error-msg" style="padding: 10px 10px 10px 30px; margin: 20px 0;">The configuration cache will be cleared after the module data is reset.
18
+ We recommend that you back up your database before proceeding and run this process when your site
19
+ traffic is low.</p>
20
+ <?php echo $this->getFormHtml() ?>
21
+ <?php if ($this->hasFooterButtons()): ?>
22
+ <div class="content-footer">
23
+ <p class="form-buttons"><?php echo $this->getButtonsHtml('footer') ?></p>
24
+ </div>
25
+ <?php endif; ?>
26
+ </div>
27
+ <script type="text/javascript">
28
+
29
+ function disablePasswordFieldEnterKey(evt) {
30
+ var evt = (evt) ? evt : ((event) ? event : null);
31
+ var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
32
+ if ((evt.keyCode == 13) && (elem.type=='password')) {return false;}
33
+ }
34
+
35
+ document.onkeypress = disablePasswordFieldEnterKey;
36
+
37
+ function openCloudinaryResetConfirmation() {
38
+
39
+ if ($('browser_window') && typeof(Windows) != 'undefined') {
40
+ Windows.focus('browser_window');
41
+ return;
42
+ }
43
+
44
+ var dialogWindow = Dialog.info(null, {
45
+ closable:true,
46
+ resizable:false,
47
+ draggable:true,
48
+ className:'magento',
49
+ windowClassName:'popup-window',
50
+ title:'Reset module data',
51
+ width:400,
52
+ height:100,
53
+ zIndex:1000,
54
+ recenterAuto:true,
55
+ hideEffect:Element.hide,
56
+ showEffect:Element.show,
57
+ id:'browser_window'
58
+ });
59
+
60
+ dialogWindow.setHTMLContent('<p style="margin-top: 10px;">Are you sure you wish to remove all Cloudinary data?</p><div class="form-buttons" style="position: absolute; bottom: 10px; right: 10px;"><button title="No" type="button" class="scalable" onclick="closeCloudinaryResetConfirmation();" style="margin-right: 10px;"><span><span><span>No</span></span></span></button><button title="Yes - remove all data" type="button" class="scalable" onclick="submitCloudinaryReset();"><span><span><span>Yes - remove all data</span></span></span></button></div>');
61
+ }
62
+
63
+ function closeCloudinaryResetConfirmation() {
64
+ Windows.close('browser_window');
65
+ }
66
+
67
+ function submitCloudinaryReset() {
68
+ editForm.submit();
69
+ }
70
+
71
+ editForm = new varienForm('edit_form', '<?php echo $this->getValidationUrl() ?>');
72
+
73
+ </script>
74
+ <?php echo $this->getFormScripts() ?>
package.xml CHANGED
@@ -1,23 +1,22 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Cloudinary_Cloudinary</name>
4
- <version>2.5.0</version>
5
  <stability>stable</stability>
6
  <license>MIT License (MITL)</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Cloudinary - Image Management In The Cloud</summary>
10
  <description>Cloudinary supercharges your images! Upload images to the cloud, deliver optimized via a fast CDN, perform smart resizing and apply effects.</description>
11
- <notes> Release 2.5.0 notes:&#xD;
12
- - Configurable logging&#xD;
13
- - Synchronisation cache&#xD;
14
- - Ensure images only deleted from Cloudinary when module active&#xD;
15
- - Provision to download log files from admin panel&#xD;
16
  </notes>
17
  <authors><author><name>Cloudinary</name><user>cloudinary</user><email>accounts+magento@cloudinary.com</email></author></authors>
18
- <date>2017-06-07</date>
19
- <time>08:51:41</time>
20
- <contents><target name="magecommunity"><dir name="Cloudinary"><dir name="Cloudinary"><dir name="Block"><dir name="Adminhtml"><dir name="Log"><file name="Grid.php" hash="1f8c277b31e21a8d28bcb57716a9a1f7"/></dir><file name="Log.php" hash="d76ab8c1f2ab39137a2726437c6e487a"/><dir name="Manage"><file name="Grid.php" hash="b6a05f6ba08c5ba0d08846a7b0a06776"/></dir><file name="Manage.php" hash="9cd8997737c1191cff57dc8530daa26c"/><dir name="Page"><file name="Menu.php" hash="891d6a4c075ba03c9a20658076c86ad0"/></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Foldered.php" hash="925c3c8b3938495afe4d2f917bd58f95"/><file name="Free.php" hash="33a3aff8e241d6ca142c6dfb59c1a90b"/></dir><file name="Signup.php" hash="ed6accbe7a4ce16bb0679eaf0c2dbb22"/></dir></dir></dir></dir><dir name="Helper"><file name="Autoloader.php" hash="393b3e2fc25e63ca28157152d2542b18"/><file name="Console.php" hash="7c909e3226c51c05d6da1f6ff9cbbfc9"/><file name="Cron.php" hash="805557370a2006b15444b7a62bbbc65a"/><file name="Data.php" hash="42c9d44f1bbe530e30cf5379846dea65"/><file name="Image.php" hash="af1c1d734793d6b08feaa7e1abd591d0"/></dir><dir name="Model"><dir name="AutoUploadMapping"><file name="Configuration.php" hash="a9c2e1176ec36cea6f5183b24793dc2d"/></dir><dir name="Catalog"><dir name="Product"><file name="Image.php" hash="b5d14bcb836158890152c9fed191f8bc"/><dir name="Media"><file name="Config.php" hash="c2dbac447d4a22c920c19b0d4eb2672e"/></dir><file name="Media.php" hash="05726616a07d7d08933e9654e6107283"/></dir></dir><dir name="Cms"><dir name="Adminhtml"><dir name="Template"><file name="Filter.php" hash="792893f6b4e884a8e42847d457a6068c"/></dir></dir><file name="Synchronisation.php" hash="8d830a18f169a0ff5f7d865e3afcb710"/><dir name="Template"><file name="Filter.php" hash="c3fe64f98128043de13e92156a26ab02"/></dir><file name="Uploader.php" hash="021195c01a7e6fd9e72c5a30ebd11554"/><dir name="Wysiwyg"><dir name="Images"><file name="Storage.php" hash="0d23e557d6db06308886d9307fe92665"/></dir></dir></dir><file name="CollectionCounter.php" hash="e69953aee5d966a3ec13d33533f017e0"/><file name="Configuration.php" hash="4b8ac252cc6f92ff759dfbd15cd6427b"/><file name="Cron.php" hash="a7296d26862df0d382023d33496bb80a"/><dir name="Exception"><file name="BadFilePathException.php" hash="68135da8dfe2f0589a531b4bd36e3330"/></dir><file name="Image.php" hash="84d42417651e2feefdb1b0c048f61ca4"/><file name="Logger.php" hash="19f93cb1c0276bc522749ef60c03c351"/><file name="MagentoFolderTranslator.php" hash="37219fc1804d6ad8d1686af8509e1963"/><file name="Migration.php" hash="30f671877307d93904fd823d01d35c1d"/><file name="MigrationError.php" hash="67eca6725679a5dae6eab65efae39c64"/><file name="Observer.php" hash="495e2bed7358f9de02c7f5246504e6fe"/><dir name="Resource"><dir name="Cms"><dir name="Synchronisation"><file name="Collection.php" hash="226db91ad96a348f0d937781358f9dec"/></dir></dir><dir name="Media"><file name="Collection.php" hash="f54d914a6f79c7b3ab51f822bf64de39"/></dir><file name="Migration.php" hash="69a545d0627016afc03ea097641aa749"/><dir name="MigrationError"><file name="Collection.php" hash="3c5ef530b18b4cd7763a610b84cd3d41"/></dir><file name="MigrationError.php" hash="e6de24a80cb0daed6ead44c699dce535"/><dir name="Synchronisation"><file name="Collection.php" hash="d16275121feb30e57b9b54122e26f05c"/></dir><file name="Synchronisation.php" hash="5b721d854d8f89bc3310e46081be7153"/></dir><file name="Synchronisation.php" hash="05414c5959efc7656b8e101617005d9a"/><file name="SynchronisedMediaUnifier.php" hash="4467ead90fe094ecbea9657266984492"/><file name="SynchronizationChecker.php" hash="35e9c5ad347357d92e921e65056303a6"/><dir name="System"><dir name="Config"><file name="Free.php" hash="a4c47b0b5d60d2e40d12975c98d69eae"/><dir name="Source"><dir name="Dropdown"><file name="Dpr.php" hash="2b9bfd5f836dbdb5d7224d298264f540"/><file name="Gravity.php" hash="c241498e2093640892170673cd7550cd"/><file name="Quality.php" hash="09920e6156a1d6088879cdcea616e312"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="CloudinaryController.php" hash="d44f610256d0d7a5633a94977442787b"/><file name="CloudinaryajaxController.php" hash="dbc6b59db79182a6e9069d4a63bc0c0d"/><file name="CloudinarylogController.php" hash="6178610f821e3d2a51985c45136b8ab1"/></dir></dir><dir name="data"><dir name="cloudinary_setup"><file name="data-upgrade-0.1.0-0.1.1.php" hash="4c6ce6cd9ab0d94654afb4a398fb3d6c"/><file name="data-upgrade-1.1.2-1.1.3.php" hash="fe2026874346017303a8f41a9d0d6c0d"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="d5a79ab9eb0a35136765515b658190a7"/><file name="config.xml" hash="f1341a286aff1223be229a6f358575f2"/><file name="system.xml" hash="f324ceb7e0149053ded243b7108d78ee"/></dir><dir name="sql"><dir name="cloudinary_setup"><file name="install-0.1.0.php" hash="55d93b3dab573c2a932edbb5a2fa4865"/><file name="upgrade-0.1.0-0.1.1.php" hash="6c8d430fbf7b9714586b67db3d455008"/><file name="upgrade-1.1.3-1.1.4.php" hash="d6314fc1843b2061d0d04ae60c4d8091"/><file name="upgrade-1.1.4-1.1.5.php" hash="5b035e4b600cbbc743e9ff6a7b505230"/><file name="upgrade-1.1.5-1.1.6.php" hash="323c5e50635018be420cf524072f6a92"/><file name="upgrade-2.0.0-2.1.0.php" hash="9d053bed5099e064eed808a090755b03"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Cloudinary_Cloudinary.xml" hash="9337962a4ccf8a43164d5d71dfd2d756"/></dir></target><target name="magelib"><dir name="CloudinaryExtension"><dir name="AutoUploadMapping"><file name="ApiClient.php" hash="c37bfa114f18192ad34422a277c86afa"/><file name="Configuration.php" hash="0c28915836a4d7ba4390f2831c86aa6f"/><file name="RequestProcessor.php" hash="ef82cf531a21b4879b9facadd8085070"/></dir><file name="Cloud.php" hash="59b0debf9ae297e4e824e39ba819b1d1"/><file name="CloudinaryImageManager.php" hash="94af20e7b144adc4a27ee011aabbefe3"/><file name="CloudinaryImageProvider.php" hash="c4199a5384e6c42316ab4c5c74ed35e3"/><file name="ConfigurationBuilder.php" hash="c8832b207d9228ef14b3c74100ee74c4"/><file name="ConfigurationInterface.php" hash="4129b1e282fb0000b78946f07baa740c"/><file name="CredentialValidator.php" hash="965b0bd024f668aabcc9f30ef2e3c240"/><file name="Credentials.php" hash="71054eb4af7b6496608ffd14912bdbe4"/><dir name="Exception"><file name="ApiError.php" hash="d6fb1e32ca96183e9800c3706de37206"/><file name="FileExists.php" hash="6969387c67deef15a378cb94b9d269ac"/><file name="InvalidCredentials.php" hash="abecc635a25f6c9896c605ad16e1f7d7"/><file name="MigrationError.php" hash="92ea7aa65f4e14e606fa107d33f3ad30"/></dir><file name="FolderTranslator.php" hash="19a335acf751d67bd7efe46829602490"/><dir name="Image"><file name="ImageFactory.php" hash="0a2e066331584d33a9c4ec03787fd6e5"/><file name="LocalImage.php" hash="ab9b814b1a006baf05b9904af3ebce74"/><file name="Synchronizable.php" hash="b842f71ed25718838233207b7748f1bf"/><file name="SynchronizationChecker.php" hash="f2c45545766a81fede68138cf84dd1af"/><dir name="Transformation"><file name="Crop.php" hash="84e57281780a57326c938ac776641e8b"/><file name="Dimensions.php" hash="86a36c564aa41a08da2cf383d611c060"/><file name="Dpr.php" hash="f78cd1bfabaf3088ca8d4af972bfd453"/><file name="FetchFormat.php" hash="c745a6d80b509755cb6ae9fe37b95d76"/><file name="Freeform.php" hash="fdcbcea659f8908af54f30492b306fb5"/><file name="Gravity.php" hash="c1c2adf4dbbeaa6b06d67d2014300559"/><file name="Quality.php" hash="23a857f3910aecf6e45645194ff7f54e"/></dir><file name="Transformation.php" hash="35d6080fe0824517319164f3ba4edb44"/></dir><file name="Image.php" hash="3090cfbaa3b2a90b5ef4a2a94b165581"/><file name="ImageInterface.php" hash="4a7c7e39d7fda0b0fa99affcac78ec8c"/><file name="ImageProvider.php" hash="a615c472cdc8a6ad7d887133db35c262"/><dir name="Migration"><file name="BatchUploader.php" hash="87d9dcf1c07fb9975283d7e4f577f1b9"/><file name="Logger.php" hash="648b47bb065de0c81b386ac300b4f9a3"/><file name="Queue.php" hash="add92864192b0950c29c91ffe5e5a3ee"/><file name="SynchronizedMediaRepository.php" hash="6b4e07f253aad9b845c68d51a1ab4166"/><file name="Task.php" hash="ac11d06c531d48b38cf88f6e8f2bdc19"/></dir><dir name="Security"><file name="ApiSignature.php" hash="049c7db2684ec2a6cf5bb4efcd064951"/><file name="CloudinaryEnvironmentVariable.php" hash="418af61bdbcfef955df29ac47c54415b"/><file name="ConsoleUrl.php" hash="4e748cfe0f5a0aeab2307c623179c6f9"/><file name="EnvironmentVariable.php" hash="297fa60b819ffc028b9a32dae6eef63d"/><file name="Key.php" hash="ac3a50b59f2a7db1edcf30386759c7ec"/><file name="Secret.php" hash="b1010679976575d57752dbb07f1b94ed"/><file name="SignedConsoleUrl.php" hash="791e1f1080be23423c2ad87f431f6221"/></dir><file name="SynchroniseAssetsRepositoryInterface.php" hash="e0d8e270ae2c74214e82e53e04e3dc0f"/><file name="UploadConfig.php" hash="a68f1ea7b84574ec36a8d2fac9bd6054"/><file name="UploadResponseValidator.php" hash="2d20dba12898b277b20b010d24f18859"/><file name="UrlGenerator.php" hash="06d223e5628c68570a2af4f8fb2306ce"/><file name="ValidateRemoteUrlRequest.php" hash="c2e2eb712e5293ad508a23610dfbbd6d"/></dir><dir name="Cloudinary"><file name="Api.php" hash="d71322346c3625db7c3563cdad191e8c"/><file name="AuthToken.php" hash="bec8b856baf85d89a249c932c3eba39f"/><file name="Cloudinary.php" hash="f2ec7b7bc8fc7c978f7773c3d4ccc5dd"/><file name="CloudinaryField.php" hash="411714580d21b58115ab07737367173a"/><file name="Helpers.php" hash="4db8371fc84d34be49c8ea04eee7d6eb"/><file name="PreloadedFile.php" hash="73cc9e276f96553814f05eae592d11ee"/><file name="Uploader.php" hash="eae92a330d19654028a8d16410616421"/><file name="cacert.pem" hash="c4290b9deb70d0bef2f88b67fc68c8ec"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="cloudinary"><file name="cloudinary.xml" hash="838ecf0a99f37118d4f0ddf36f0712ba"/></dir></dir><dir name="template"><dir name="cloudinary"><file name="log.phtml" hash="ca027cf9501afc17dda51355c0243771"/><file name="manage.phtml" hash="7630d346f45d7118748b647be3501fa3"/><dir name="system"><dir name="config"><file name="free.phtml" hash="77ed47576496e0b28ff4eaf155ded5b6"/><file name="signup.phtml" hash="2a0e06990eb542f22531ac2ebb5996f5"/></dir></dir></dir></dir></dir></dir></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.4.0</min><max>7.1.0</max></php></required></dependencies>
23
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Cloudinary_Cloudinary</name>
4
+ <version>2.6.0</version>
5
  <stability>stable</stability>
6
  <license>MIT License (MITL)</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Cloudinary - Image Management In The Cloud</summary>
10
  <description>Cloudinary supercharges your images! Upload images to the cloud, deliver optimized via a fast CDN, perform smart resizing and apply effects.</description>
11
+ <notes> Release 2.6.0 notes:&#xD;
12
+ - Admin UX improvements&#xD;
13
+ - Add module reset feature&#xD;
14
+ - Remove unfoldered migration option&#xD;
 
15
  </notes>
16
  <authors><author><name>Cloudinary</name><user>cloudinary</user><email>accounts+magento@cloudinary.com</email></author></authors>
17
+ <date>2017-06-14</date>
18
+ <time>14:39:29</time>
19
+ <contents><target name="magecommunity"><dir name="Cloudinary"><dir name="Cloudinary"><dir name="Block"><dir name="Adminhtml"><dir name="Log"><file name="Grid.php" hash="1f8c277b31e21a8d28bcb57716a9a1f7"/></dir><file name="Log.php" hash="d76ab8c1f2ab39137a2726437c6e487a"/><dir name="Manage"><file name="Grid.php" hash="b6a05f6ba08c5ba0d08846a7b0a06776"/></dir><file name="Manage.php" hash="c17b5839709263d544b7e27dac52da45"/><dir name="Page"><file name="Menu.php" hash="891d6a4c075ba03c9a20658076c86ad0"/></dir><dir name="Reset"><dir name="Edit"><file name="Form.php" hash="059109b8230f9404921fb53660fdb228"/></dir><file name="Edit.php" hash="6944d440bcedcef8d8d118ecb2e61019"/></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Free.php" hash="33a3aff8e241d6ca142c6dfb59c1a90b"/></dir><file name="Signup.php" hash="ed6accbe7a4ce16bb0679eaf0c2dbb22"/></dir></dir></dir></dir><dir name="Helper"><file name="Autoloader.php" hash="393b3e2fc25e63ca28157152d2542b18"/><file name="Console.php" hash="7c909e3226c51c05d6da1f6ff9cbbfc9"/><file name="Cron.php" hash="805557370a2006b15444b7a62bbbc65a"/><file name="Data.php" hash="42c9d44f1bbe530e30cf5379846dea65"/><file name="Image.php" hash="af1c1d734793d6b08feaa7e1abd591d0"/><file name="Reset.php" hash="a7baf65e9478dc8202971c22fa383b57"/></dir><dir name="Model"><dir name="AutoUploadMapping"><file name="Configuration.php" hash="a9c2e1176ec36cea6f5183b24793dc2d"/></dir><dir name="Catalog"><dir name="Product"><file name="Image.php" hash="b5d14bcb836158890152c9fed191f8bc"/><dir name="Media"><file name="Config.php" hash="c2dbac447d4a22c920c19b0d4eb2672e"/></dir><file name="Media.php" hash="05726616a07d7d08933e9654e6107283"/></dir></dir><dir name="Cms"><dir name="Adminhtml"><dir name="Template"><file name="Filter.php" hash="792893f6b4e884a8e42847d457a6068c"/></dir></dir><file name="Synchronisation.php" hash="8d830a18f169a0ff5f7d865e3afcb710"/><dir name="Template"><file name="Filter.php" hash="c3fe64f98128043de13e92156a26ab02"/></dir><file name="Uploader.php" hash="021195c01a7e6fd9e72c5a30ebd11554"/><dir name="Wysiwyg"><dir name="Images"><file name="Storage.php" hash="0d23e557d6db06308886d9307fe92665"/></dir></dir></dir><file name="CollectionCounter.php" hash="e69953aee5d966a3ec13d33533f017e0"/><file name="Configuration.php" hash="66d648cf736d5410f26fd15f12d6f9c7"/><file name="Cron.php" hash="a7296d26862df0d382023d33496bb80a"/><dir name="Exception"><file name="BadFilePathException.php" hash="68135da8dfe2f0589a531b4bd36e3330"/></dir><file name="Image.php" hash="84d42417651e2feefdb1b0c048f61ca4"/><file name="Logger.php" hash="19f93cb1c0276bc522749ef60c03c351"/><file name="MagentoFolderTranslator.php" hash="37219fc1804d6ad8d1686af8509e1963"/><file name="Migration.php" hash="30f671877307d93904fd823d01d35c1d"/><file name="MigrationError.php" hash="67eca6725679a5dae6eab65efae39c64"/><file name="Observer.php" hash="e6bedc4a11bb83020aa906a39c19e04d"/><dir name="Resource"><dir name="Cms"><dir name="Synchronisation"><file name="Collection.php" hash="226db91ad96a348f0d937781358f9dec"/></dir></dir><dir name="Media"><file name="Collection.php" hash="f54d914a6f79c7b3ab51f822bf64de39"/></dir><file name="Migration.php" hash="69a545d0627016afc03ea097641aa749"/><dir name="MigrationError"><file name="Collection.php" hash="3c5ef530b18b4cd7763a610b84cd3d41"/></dir><file name="MigrationError.php" hash="e6de24a80cb0daed6ead44c699dce535"/><dir name="Synchronisation"><file name="Collection.php" hash="d16275121feb30e57b9b54122e26f05c"/></dir><file name="Synchronisation.php" hash="5b721d854d8f89bc3310e46081be7153"/></dir><file name="Synchronisation.php" hash="05414c5959efc7656b8e101617005d9a"/><file name="SynchronisedMediaUnifier.php" hash="4467ead90fe094ecbea9657266984492"/><file name="SynchronizationChecker.php" hash="35e9c5ad347357d92e921e65056303a6"/><dir name="System"><dir name="Config"><file name="Free.php" hash="a4c47b0b5d60d2e40d12975c98d69eae"/><dir name="Source"><dir name="Dropdown"><file name="Dpr.php" hash="2b9bfd5f836dbdb5d7224d298264f540"/><file name="Gravity.php" hash="c241498e2093640892170673cd7550cd"/><file name="Quality.php" hash="09920e6156a1d6088879cdcea616e312"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="CloudinaryController.php" hash="c3402e1e9797ecd9b18068b0eb33ee8f"/><file name="CloudinaryajaxController.php" hash="dbc6b59db79182a6e9069d4a63bc0c0d"/><file name="CloudinarylogController.php" hash="6178610f821e3d2a51985c45136b8ab1"/><file name="CloudinaryresetController.php" hash="c86108b6f9deaef13bbbc7a021bcd277"/></dir></dir><dir name="data"><dir name="cloudinary_setup"><file name="data-upgrade-0.1.0-0.1.1.php" hash="4c6ce6cd9ab0d94654afb4a398fb3d6c"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="ce3689d26ca0e8a4b74ce683c245e716"/><file name="config.xml" hash="89b5ca0bb42210eeefe3e35e3d68003e"/><file name="system.xml" hash="43325a790e33ceffde1429f588395cc1"/></dir><dir name="sql"><dir name="cloudinary_setup"><file name="install-0.1.0.php" hash="55d93b3dab573c2a932edbb5a2fa4865"/><file name="upgrade-0.1.0-0.1.1.php" hash="6c8d430fbf7b9714586b67db3d455008"/><file name="upgrade-1.1.3-1.1.4.php" hash="d6314fc1843b2061d0d04ae60c4d8091"/><file name="upgrade-1.1.4-1.1.5.php" hash="5b035e4b600cbbc743e9ff6a7b505230"/><file name="upgrade-1.1.5-1.1.6.php" hash="323c5e50635018be420cf524072f6a92"/><file name="upgrade-2.0.0-2.1.0.php" hash="9d053bed5099e064eed808a090755b03"/><file name="upgrade-2.1.0-2.5.0.php" hash="641c9aae29e22a54f52c6913e874cd56"/><file name="upgrade-2.5.0-2.6.0.php" hash="b38da8fbc177b9a64e3ba25fca434d00"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Cloudinary_Cloudinary.xml" hash="9337962a4ccf8a43164d5d71dfd2d756"/></dir></target><target name="magelib"><dir name="CloudinaryExtension"><dir name="AutoUploadMapping"><file name="ApiClient.php" hash="c37bfa114f18192ad34422a277c86afa"/><file name="Configuration.php" hash="0c28915836a4d7ba4390f2831c86aa6f"/><file name="RequestProcessor.php" hash="ef82cf531a21b4879b9facadd8085070"/></dir><file name="Cloud.php" hash="59b0debf9ae297e4e824e39ba819b1d1"/><file name="CloudinaryImageManager.php" hash="94af20e7b144adc4a27ee011aabbefe3"/><file name="CloudinaryImageProvider.php" hash="c4199a5384e6c42316ab4c5c74ed35e3"/><file name="ConfigurationBuilder.php" hash="c8832b207d9228ef14b3c74100ee74c4"/><file name="ConfigurationInterface.php" hash="4129b1e282fb0000b78946f07baa740c"/><file name="CredentialValidator.php" hash="965b0bd024f668aabcc9f30ef2e3c240"/><file name="Credentials.php" hash="71054eb4af7b6496608ffd14912bdbe4"/><dir name="Exception"><file name="ApiError.php" hash="d6fb1e32ca96183e9800c3706de37206"/><file name="FileExists.php" hash="6969387c67deef15a378cb94b9d269ac"/><file name="InvalidCredentials.php" hash="abecc635a25f6c9896c605ad16e1f7d7"/><file name="MigrationError.php" hash="92ea7aa65f4e14e606fa107d33f3ad30"/></dir><file name="FolderTranslator.php" hash="19a335acf751d67bd7efe46829602490"/><dir name="Image"><file name="ImageFactory.php" hash="0a2e066331584d33a9c4ec03787fd6e5"/><file name="LocalImage.php" hash="ab9b814b1a006baf05b9904af3ebce74"/><file name="Synchronizable.php" hash="b842f71ed25718838233207b7748f1bf"/><file name="SynchronizationChecker.php" hash="f2c45545766a81fede68138cf84dd1af"/><dir name="Transformation"><file name="Crop.php" hash="84e57281780a57326c938ac776641e8b"/><file name="Dimensions.php" hash="86a36c564aa41a08da2cf383d611c060"/><file name="Dpr.php" hash="f78cd1bfabaf3088ca8d4af972bfd453"/><file name="FetchFormat.php" hash="c745a6d80b509755cb6ae9fe37b95d76"/><file name="Freeform.php" hash="fdcbcea659f8908af54f30492b306fb5"/><file name="Gravity.php" hash="c1c2adf4dbbeaa6b06d67d2014300559"/><file name="Quality.php" hash="23a857f3910aecf6e45645194ff7f54e"/></dir><file name="Transformation.php" hash="35d6080fe0824517319164f3ba4edb44"/></dir><file name="Image.php" hash="3090cfbaa3b2a90b5ef4a2a94b165581"/><file name="ImageInterface.php" hash="4a7c7e39d7fda0b0fa99affcac78ec8c"/><file name="ImageProvider.php" hash="a615c472cdc8a6ad7d887133db35c262"/><dir name="Migration"><file name="BatchUploader.php" hash="87d9dcf1c07fb9975283d7e4f577f1b9"/><file name="Logger.php" hash="648b47bb065de0c81b386ac300b4f9a3"/><file name="Queue.php" hash="add92864192b0950c29c91ffe5e5a3ee"/><file name="SynchronizedMediaRepository.php" hash="6b4e07f253aad9b845c68d51a1ab4166"/><file name="Task.php" hash="ac11d06c531d48b38cf88f6e8f2bdc19"/></dir><dir name="Security"><file name="ApiSignature.php" hash="049c7db2684ec2a6cf5bb4efcd064951"/><file name="CloudinaryEnvironmentVariable.php" hash="418af61bdbcfef955df29ac47c54415b"/><file name="ConsoleUrl.php" hash="4e748cfe0f5a0aeab2307c623179c6f9"/><file name="EnvironmentVariable.php" hash="297fa60b819ffc028b9a32dae6eef63d"/><file name="Key.php" hash="ac3a50b59f2a7db1edcf30386759c7ec"/><file name="Secret.php" hash="b1010679976575d57752dbb07f1b94ed"/><file name="SignedConsoleUrl.php" hash="791e1f1080be23423c2ad87f431f6221"/></dir><file name="SynchroniseAssetsRepositoryInterface.php" hash="e0d8e270ae2c74214e82e53e04e3dc0f"/><file name="UploadConfig.php" hash="a68f1ea7b84574ec36a8d2fac9bd6054"/><file name="UploadResponseValidator.php" hash="2d20dba12898b277b20b010d24f18859"/><file name="UrlGenerator.php" hash="06d223e5628c68570a2af4f8fb2306ce"/><file name="ValidateRemoteUrlRequest.php" hash="c2e2eb712e5293ad508a23610dfbbd6d"/></dir><dir name="Cloudinary"><file name="Api.php" hash="d71322346c3625db7c3563cdad191e8c"/><file name="AuthToken.php" hash="bec8b856baf85d89a249c932c3eba39f"/><file name="Cloudinary.php" hash="f2ec7b7bc8fc7c978f7773c3d4ccc5dd"/><file name="CloudinaryField.php" hash="411714580d21b58115ab07737367173a"/><file name="Helpers.php" hash="4db8371fc84d34be49c8ea04eee7d6eb"/><file name="PreloadedFile.php" hash="73cc9e276f96553814f05eae592d11ee"/><file name="Uploader.php" hash="eae92a330d19654028a8d16410616421"/><file name="cacert.pem" hash="c4290b9deb70d0bef2f88b67fc68c8ec"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="cloudinary"><file name="cloudinary.xml" hash="871fd14e699e5ee23d2a44cd2332abd7"/></dir></dir><dir name="template"><dir name="cloudinary"><file name="log.phtml" hash="ca027cf9501afc17dda51355c0243771"/><file name="manage.phtml" hash="7f20f5013e2a716561f445636f3bed13"/><file name="reset.phtml" hash="6c13650ef05118b7fd06b0907c7a34ae"/><dir name="system"><dir name="config"><file name="free.phtml" hash="77ed47576496e0b28ff4eaf155ded5b6"/><file name="signup.phtml" hash="2a0e06990eb542f22531ac2ebb5996f5"/></dir></dir></dir></dir></dir></dir></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>5.4.0</min><max>7.1.0</max></php></required></dependencies>
22
  </package>