Cloudinary_Cloudinary - Version 2.5.0

Version Notes

Release 2.5.0 notes:
- Configurable logging
- Synchronisation cache
- Ensure images only deleted from Cloudinary when module active
- Provision to download log files from admin panel

Download this release

Release Info

Developer Cloudinary
Extension Cloudinary_Cloudinary
Version 2.5.0
Comparing to
See all releases


Code changes from version 2.4.0 to 2.5.0

app/code/community/Cloudinary/Cloudinary/Block/Adminhtml/Log.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Cloudinary_Cloudinary_Block_Adminhtml_Log extends Mage_Adminhtml_Block_Widget_Grid_Container
4
+ {
5
+ public function __construct()
6
+ {
7
+ $this->_blockGroup = 'cloudinary_cloudinary';
8
+ $this->_controller = 'adminhtml_log';
9
+ $this->_headerText = Mage::helper('cloudinary_cloudinary')->__('Logs');
10
+
11
+ parent::__construct();
12
+ }
13
+
14
+ /**
15
+ * @param int $bytes
16
+ * @param int $precision
17
+ * @return string
18
+ */
19
+ public function formatBytes($bytes, $precision = 2)
20
+ {
21
+ if ($bytes <= 0) {
22
+ return '0 Bytes';
23
+ }
24
+
25
+ $base = log((int)$bytes, 1024);
26
+ $suffixes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
27
+
28
+ return sprintf(
29
+ '%s %s',
30
+ round(pow(1024, $base - floor($base)), $precision),
31
+ $suffixes[floor($base)]
32
+ );
33
+ }
34
+ }
app/code/community/Cloudinary/Cloudinary/Block/Adminhtml/Log/Grid.php ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?php
2
+
3
+ class Cloudinary_Cloudinary_Block_Adminhtml_Log_Grid extends Mage_Adminhtml_Block_Widget_Grid
4
+ {
5
+ }
app/code/community/Cloudinary/Cloudinary/Model/Configuration.php CHANGED
@@ -28,6 +28,8 @@ class Cloudinary_Cloudinary_Model_Configuration implements ConfigurationInterfac
28
  const CONFIG_CDN_SUBDOMAIN = 'cloudinary/configuration/cloudinary_cdn_subdomain';
29
  const CONFIG_FOLDERED_MIGRATION = 'cloudinary/configuration/cloudinary_foldered_migration';
30
  const CONFIG_GLOBAL_FREEFORM = 'cloudinary/transformations/cloudinary_free_transform_global';
 
 
31
 
32
  private $environmentVariable;
33
 
@@ -167,6 +169,22 @@ class Cloudinary_Cloudinary_Model_Configuration implements ConfigurationInterfac
167
  return Mage::getModel('cloudinary_cloudinary/autoUploadMapping_configuration')->isActive();
168
  }
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  private function setStoreConfig($configPath, $value)
171
  {
172
  Mage::getModel('core/config')->saveConfig($configPath, $value)->reinit();
28
  const CONFIG_CDN_SUBDOMAIN = 'cloudinary/configuration/cloudinary_cdn_subdomain';
29
  const CONFIG_FOLDERED_MIGRATION = 'cloudinary/configuration/cloudinary_foldered_migration';
30
  const CONFIG_GLOBAL_FREEFORM = 'cloudinary/transformations/cloudinary_free_transform_global';
31
+ const CONFIG_LOG_ACTIVE = 'cloudinary/log/cloudinary_log_active';
32
+ const CONFIG_LOG_FILENAME = 'cloudinary/log/cloudinary_log_filename';
33
 
34
  private $environmentVariable;
35
 
169
  return Mage::getModel('cloudinary_cloudinary/autoUploadMapping_configuration')->isActive();
170
  }
171
 
172
+ /**
173
+ * @return bool
174
+ */
175
+ public function hasLoggingActive()
176
+ {
177
+ return Mage::getStoreConfig(self::CONFIG_LOG_ACTIVE) == "1";
178
+ }
179
+
180
+ /**
181
+ * @return string
182
+ */
183
+ public function getLoggingFilename()
184
+ {
185
+ return Mage::getStoreConfig(self::CONFIG_LOG_FILENAME);
186
+ }
187
+
188
  private function setStoreConfig($configPath, $value)
189
  {
190
  Mage::getModel('core/config')->saveConfig($configPath, $value)->reinit();
app/code/community/Cloudinary/Cloudinary/Model/Logger.php CHANGED
@@ -3,22 +3,39 @@
3
  class Cloudinary_Cloudinary_Model_Logger extends Mage_Core_Model_Abstract implements \CloudinaryExtension\Migration\Logger
4
  {
5
  const SIGNATURE_TEMPLATE = "%s::%s ";
 
 
6
 
 
 
 
 
7
  public function warning($message, array $context = array())
8
  {
9
- Mage::log($message, Zend_Log::WARN);
10
  }
11
 
 
 
 
 
12
  public function notice($message, array $context = array())
13
  {
14
- Mage::log($message, Zend_Log::NOTICE);
15
  }
16
 
 
 
 
 
17
  public function error($message, array $context = array())
18
  {
19
- Mage::log($message, Zend_Log::ERR);
20
  }
21
 
 
 
 
22
  public function debugLog($message)
23
  {
24
  if (Mage::getIsDeveloperMode()){
@@ -26,6 +43,39 @@ class Cloudinary_Cloudinary_Model_Logger extends Mage_Core_Model_Abstract implem
26
  }
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /**
30
  * Add extra information to a log entry: class and funcion name from which the log is called
31
  * @return string
3
  class Cloudinary_Cloudinary_Model_Logger extends Mage_Core_Model_Abstract implements \CloudinaryExtension\Migration\Logger
4
  {
5
  const SIGNATURE_TEMPLATE = "%s::%s ";
6
+ const ALPHANUM_REGEX = '/[^A-Za-z0-9]/';
7
+ const IGNORE_GLOBAL_LOG_FLAG = true;
8
 
9
+ /**
10
+ * @param string $message
11
+ * @param array $context
12
+ */
13
  public function warning($message, array $context = array())
14
  {
15
+ $this->log($message, Zend_Log::WARN);
16
  }
17
 
18
+ /**
19
+ * @param string $message
20
+ * @param array $context
21
+ */
22
  public function notice($message, array $context = array())
23
  {
24
+ $this->log($message, Zend_Log::NOTICE);
25
  }
26
 
27
+ /**
28
+ * @param string $message
29
+ * @param array $context
30
+ */
31
  public function error($message, array $context = array())
32
  {
33
+ $this->log($message, Zend_Log::ERR);
34
  }
35
 
36
+ /**
37
+ * @param string $message
38
+ */
39
  public function debugLog($message)
40
  {
41
  if (Mage::getIsDeveloperMode()){
43
  }
44
  }
45
 
46
+ /**
47
+ * @param string $message
48
+ * @param string $type
49
+ */
50
+ private function log($message, $type)
51
+ {
52
+ if ($this->isActive()) {
53
+ Mage::log($message, $type, $this->filename(), self::IGNORE_GLOBAL_LOG_FLAG);
54
+ }
55
+ }
56
+
57
+ /**
58
+ * @return bool
59
+ */
60
+ public function isActive()
61
+ {
62
+ return Mage::getModel('cloudinary_cloudinary/configuration')->hasLoggingActive();
63
+ }
64
+
65
+ /**
66
+ * @return string|null
67
+ */
68
+ public function filename()
69
+ {
70
+ $filename = preg_replace(
71
+ self::ALPHANUM_REGEX,
72
+ '',
73
+ Mage::getModel('cloudinary_cloudinary/configuration')->getLoggingFilename()
74
+ );
75
+
76
+ return $filename ? sprintf('%s.log', $filename) : null;
77
+ }
78
+
79
  /**
80
  * Add extra information to a log entry: class and funcion name from which the log is called
81
  * @return string
app/code/community/Cloudinary/Cloudinary/Model/Observer.php CHANGED
@@ -49,7 +49,13 @@ class Cloudinary_Cloudinary_Model_Observer extends Mage_Core_Model_Abstract
49
  */
50
  public function deleteImagesFromCloudinary(EventObserver $event)
51
  {
 
52
  $configuration = Mage::getModel('cloudinary_cloudinary/configuration');
 
 
 
 
 
53
  $imageProvider = CloudinaryImageProvider::fromConfiguration($configuration);
54
 
55
  foreach ($this->getImagesToDelete($event->getProduct()) as $image) {
49
  */
50
  public function deleteImagesFromCloudinary(EventObserver $event)
51
  {
52
+ /** @var ConfigurationInterface $configuration */
53
  $configuration = Mage::getModel('cloudinary_cloudinary/configuration');
54
+
55
+ if (!$configuration->isEnabled()) {
56
+ return;
57
+ }
58
+
59
  $imageProvider = CloudinaryImageProvider::fromConfiguration($configuration);
60
 
61
  foreach ($this->getImagesToDelete($event->getProduct()) as $image) {
app/code/community/Cloudinary/Cloudinary/Model/SynchronizationChecker.php CHANGED
@@ -4,6 +4,13 @@ use CloudinaryExtension\Image\SynchronizationChecker as SynchronizationCheckerIn
4
 
5
  class Cloudinary_Cloudinary_Model_SynchronizationChecker implements SynchronizationCheckerInterface
6
  {
 
 
 
 
 
 
 
7
  public function isSynchronized($imageName)
8
  {
9
  if (!$imageName) {
@@ -14,6 +21,29 @@ class Cloudinary_Cloudinary_Model_SynchronizationChecker implements Synchronizat
14
  return true;
15
  }
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  $coll = Mage::getModel('cloudinary_cloudinary/synchronisation')->getCollection();
18
  $table = $coll->getMainTable();
19
  // case sensitive check
@@ -22,10 +52,29 @@ class Cloudinary_Cloudinary_Model_SynchronizationChecker implements Synchronizat
22
  }
23
 
24
  /**
 
 
 
 
 
 
 
 
 
 
 
25
  * @return bool
26
  */
27
- private function hasAutoUploadMapping()
28
  {
29
- return Mage::getModel('cloudinary_cloudinary/autoUploadMapping_configuration')->isActive();
 
 
 
 
 
 
 
 
30
  }
31
  }
4
 
5
  class Cloudinary_Cloudinary_Model_SynchronizationChecker implements SynchronizationCheckerInterface
6
  {
7
+ const CACHE_NAME = 'cloudinary';
8
+ const CACHE_TAG = 'CLOUDINARY';
9
+
10
+ /**
11
+ * @param string $imageName
12
+ * @return bool
13
+ */
14
  public function isSynchronized($imageName)
15
  {
16
  if (!$imageName) {
21
  return true;
22
  }
23
 
24
+ $cache = Mage::app()->getCacheInstance();
25
+
26
+ if ($cache->canUse(self::CACHE_NAME)) {
27
+ return $this->cachedSynchronizationCheck($cache, $imageName);
28
+ }
29
+
30
+ return $this->synchronizationCheck($imageName);
31
+ }
32
+
33
+ /**
34
+ * @return bool
35
+ */
36
+ private function hasAutoUploadMapping()
37
+ {
38
+ return Mage::getModel('cloudinary_cloudinary/autoUploadMapping_configuration')->isActive();
39
+ }
40
+
41
+ /**
42
+ * @param $imageName
43
+ * @return bool
44
+ */
45
+ private function synchronizationCheck($imageName)
46
+ {
47
  $coll = Mage::getModel('cloudinary_cloudinary/synchronisation')->getCollection();
48
  $table = $coll->getMainTable();
49
  // case sensitive check
52
  }
53
 
54
  /**
55
+ * @param string $imageName
56
+ * @return string
57
+ */
58
+ private function cacheKey($imageName)
59
+ {
60
+ return sprintf('cloudinary_%s', md5($imageName));
61
+ }
62
+
63
+ /**
64
+ * @param Mage_Core_Model_Cache $cache
65
+ * @param string $imageName
66
  * @return bool
67
  */
68
+ private function cachedSynchronizationCheck(Mage_Core_Model_Cache $cache, $imageName)
69
  {
70
+ $key = $this->cacheKey($imageName);
71
+ $value = $cache->load($key);
72
+
73
+ if ($value === false) {
74
+ $value = $this->synchronizationCheck($imageName) ? '1' : '0';
75
+ $cache->save($value, $key, [self::CACHE_TAG]);
76
+ }
77
+
78
+ return $value === '1' ? true : false;
79
  }
80
  }
app/code/community/Cloudinary/Cloudinary/controllers/Adminhtml/CloudinarylogController.php ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Cloudinary_Cloudinary_Adminhtml_CloudinarylogController extends Mage_Adminhtml_Controller_Action
4
+ {
5
+ const LOG_MISSING_ERROR = 'No logs have been made to logfile: %s';
6
+ const LOG_PERMISSION_ERROR = 'The log file cannot be read by your web server. Please check file permissions.';
7
+
8
+ private function configurePage()
9
+ {
10
+ $this->_title($this->__('Download Cloudinary log file'))
11
+ ->_setActiveMenu('cloudinary_cloudinary/log');
12
+ }
13
+
14
+ public function indexAction()
15
+ {
16
+ $this->loadLayout();
17
+ $this->configurePage();
18
+
19
+ $logSizeInBytes = 0;
20
+ $error = '';
21
+ $downloadUrl = Mage::helper('adminhtml')->getUrl('adminhtml/cloudinarylog/download');
22
+ $filename = $this->logFilename();
23
+
24
+ try {
25
+ $stat = $this->fileStat($filename, $this->logPath($filename));
26
+ $logSizeInBytes = $stat['size'];
27
+ } catch (Exception $e) {
28
+ $error = $e->getMessage();
29
+ }
30
+
31
+ $block = $this->getLayout()->getBlock('cloudinary_log');
32
+ $block->assign('logSizeInBytes', $logSizeInBytes);
33
+ $block->assign('error', $error);
34
+ $block->assign('downloadUrl', $downloadUrl);
35
+ $block->assign('name', $filename);
36
+ $block->assign('isActive', Mage::getModel('cloudinary_cloudinary/logger')->isActive());
37
+
38
+ $this->renderLayout();
39
+ }
40
+
41
+ public function downloadAction()
42
+ {
43
+ $filename = $this->logFilename();
44
+ $filepath = $this->logPath($filename);
45
+
46
+ try {
47
+ $this->_prepareDownloadResponse($filename, array('type' => 'filename', 'value' => $filepath));
48
+ } catch (Exception $e) {
49
+ $this->_getSession()->addError($e->getMessage());
50
+ }
51
+ }
52
+
53
+ /**
54
+ * @param $filename
55
+ * @param $filepath
56
+ * @return mixed
57
+ * @throws Exception
58
+ */
59
+ private function fileStat($filename, $filepath)
60
+ {
61
+ $ioAdapter = new Varien_Io_File();
62
+
63
+ try {
64
+ $ioAdapter->open(array('path' => $ioAdapter->dirname($filepath)));
65
+ $this->validateFileExists($ioAdapter, $filepath);
66
+ } catch (Exception $e) {
67
+ throw new Exception(sprintf(self::LOG_MISSING_ERROR, $filename));
68
+ }
69
+
70
+ try {
71
+ $ioAdapter->streamOpen($filepath, 'r');
72
+ } catch (Exception $e) {
73
+ throw new Exception(self::LOG_PERMISSION_ERROR);
74
+ }
75
+
76
+ $stat = $ioAdapter->streamStat();
77
+ $ioAdapter->streamClose();
78
+
79
+ return $stat;
80
+ }
81
+
82
+ /**
83
+ * @param Varien_Io_File $adapter
84
+ * @param $filepath
85
+ * @throws Exception
86
+ */
87
+ private function validateFileExists(Varien_Io_File $adapter, $filepath)
88
+ {
89
+ if (!$adapter->fileExists($filepath)) {
90
+ throw new Exception(sprintf(self::LOG_MISSING_ERROR, $filepath));
91
+ }
92
+ }
93
+
94
+ /**
95
+ * @param string $filename
96
+ * @return string
97
+ */
98
+ private function logPath($filename)
99
+ {
100
+ return sprintf('%s%s', $this->logDirectory(), $filename);
101
+ }
102
+
103
+ /**
104
+ * @return string
105
+ */
106
+ private function logFilename()
107
+ {
108
+ $customLogFilename = Mage::getModel('cloudinary_cloudinary/logger')->filename();
109
+
110
+ if ($customLogFilename) {
111
+ return $customLogFilename;
112
+ }
113
+
114
+ return Mage::getStoreConfig('dev/log/file') ?: 'system.log';
115
+ }
116
+
117
+ /**
118
+ * @return string
119
+ */
120
+ private function logDirectory()
121
+ {
122
+ return Mage::getBaseDir('var') . DS . 'log' . DS;
123
+ }
124
+ }
app/code/community/Cloudinary/Cloudinary/etc/adminhtml.xml CHANGED
@@ -9,6 +9,10 @@
9
  <title>Manage</title>
10
  <action>adminhtml/cloudinary</action>
11
  </cloudinary>
 
 
 
 
12
  <console module="cloudinary_cloudinary">
13
  <title>Open Cloudinary Console</title>
14
  </console>
@@ -28,6 +32,9 @@
28
  <cloudinary module="cloudinary_cloudinary">
29
  <title>Manage</title>
30
  </cloudinary>
 
 
 
31
  <console module="cloudinary_cloudinary">
32
  <title>Open Cloudinary Console</title>
33
  </console>
9
  <title>Manage</title>
10
  <action>adminhtml/cloudinary</action>
11
  </cloudinary>
12
+ <log>
13
+ <title>Logs</title>
14
+ <action>adminhtml/cloudinarylog</action>
15
+ </log>
16
  <console module="cloudinary_cloudinary">
17
  <title>Open Cloudinary Console</title>
18
  </console>
32
  <cloudinary module="cloudinary_cloudinary">
33
  <title>Manage</title>
34
  </cloudinary>
35
+ <log>
36
+ <title>Logs</title>
37
+ </log>
38
  <console module="cloudinary_cloudinary">
39
  <title>Open Cloudinary Console</title>
40
  </console>
app/code/community/Cloudinary/Cloudinary/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Cloudinary_Cloudinary>
5
- <version>2.4.0</version>
6
  </Cloudinary_Cloudinary>
7
  </modules>
8
  <global>
@@ -115,6 +115,15 @@
115
  </setup>
116
  </cloudinary_setup>
117
  </resources>
 
 
 
 
 
 
 
 
 
118
  </global>
119
  <adminhtml>
120
  <events>
@@ -157,6 +166,10 @@
157
  <configuration>
158
  <cloudinary_cdn_subdomain>1</cloudinary_cdn_subdomain>
159
  </configuration>
 
 
 
 
160
  </cloudinary>
161
  </default>
162
  <crontab>
2
  <config>
3
  <modules>
4
  <Cloudinary_Cloudinary>
5
+ <version>2.5.0</version>
6
  </Cloudinary_Cloudinary>
7
  </modules>
8
  <global>
115
  </setup>
116
  </cloudinary_setup>
117
  </resources>
118
+ <cache>
119
+ <types>
120
+ <cloudinary translate="label,description" module="cloudinary">
121
+ <label>Cloudinary</label>
122
+ <description>Cache of all images migrated to Cloudinary. Not required when using auto upload mapping.</description>
123
+ <tags>CLOUDINARY</tags>
124
+ </cloudinary>
125
+ </types>
126
+ </cache>
127
  </global>
128
  <adminhtml>
129
  <events>
166
  <configuration>
167
  <cloudinary_cdn_subdomain>1</cloudinary_cdn_subdomain>
168
  </configuration>
169
+ <log>
170
+ <cloudinary_log_active>0</cloudinary_log_active>
171
+ <cloudinary_log_filename>cloudinary</cloudinary_log_filename>
172
+ </log>
173
  </cloudinary>
174
  </default>
175
  <crontab>
app/code/community/Cloudinary/Cloudinary/etc/system.xml CHANGED
@@ -136,6 +136,34 @@
136
  </cloudinary_free_transform_global>
137
  </fields>
138
  </transformations>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  </groups>
140
  </cloudinary>
141
  </sections>
136
  </cloudinary_free_transform_global>
137
  </fields>
138
  </transformations>
139
+ <log translate="label">
140
+ <label>Logging</label>
141
+ <show_in_default>1</show_in_default>
142
+ <sort_order>4</sort_order>
143
+ <show_in_website>1</show_in_website>
144
+ <show_in_store>1</show_in_store>
145
+ <fields>
146
+ <cloudinary_log_active>
147
+ <label>Enable Logging</label>
148
+ <frontend_type>select</frontend_type>
149
+ <sort_order>1</sort_order>
150
+ <show_in_default>1</show_in_default>
151
+ <show_in_website>1</show_in_website>
152
+ <show_in_store>1</show_in_store>
153
+ <source_model>adminhtml/system_config_source_yesno</source_model>
154
+ </cloudinary_log_active>
155
+ <cloudinary_log_filename>
156
+ <label>Filename for Logging</label>
157
+ <comment>Leave blank to use system default.</comment>
158
+ <frontend_type>text</frontend_type>
159
+ <validate>validate-alphanum</validate>
160
+ <sort_order>2</sort_order>
161
+ <show_in_default>1</show_in_default>
162
+ <show_in_website>1</show_in_website>
163
+ <show_in_store>1</show_in_store>
164
+ </cloudinary_log_filename>
165
+ </fields>
166
+ </log>
167
  </groups>
168
  </cloudinary>
169
  </sections>
app/design/adminhtml/default/default/layout/cloudinary/cloudinary.xml CHANGED
@@ -14,4 +14,18 @@
14
  </action>
15
  </reference>
16
  </adminhtml_cloudinary_index>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  </layout>
14
  </action>
15
  </reference>
16
  </adminhtml_cloudinary_index>
17
+ <adminhtml_cloudinarylog_index>
18
+ <reference name="content">
19
+ <block type="cloudinary_cloudinary/adminhtml_log" name="cloudinary_log" template="cloudinary/log.phtml"></block>
20
+ </reference>
21
+ <reference name="head">
22
+ <action method="addItem">
23
+ <type>js_css</type>
24
+ <name>prototype/windows/themes/default.css</name>
25
+ </action>
26
+ <action method="addCss">
27
+ <name>lib/prototype/windows/themes/magento.css</name>
28
+ </action>
29
+ </reference>
30
+ </adminhtml_cloudinarylog_index>
31
  </layout>
app/design/adminhtml/default/default/template/cloudinary/log.phtml ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $logSize = $error ? 'File does not exist' : $this->formatBytes($logSizeInBytes);
4
+
5
+ ?>
6
+
7
+ <div class="content-header">
8
+ <table cellspacing="0">
9
+ <tbody>
10
+ <tr>
11
+ <td style="width:50%;"><h3 class="icon-head">Download log file</h3></td>
12
+ </tr>
13
+ </tbody>
14
+ </table>
15
+ </div>
16
+
17
+ <?php if ($error): ?>
18
+ <ul class="messages">
19
+ <li class="error-msg"><?php echo $error; ?></li>
20
+ </ul>
21
+ <?php endif ?>
22
+
23
+ <div class="grid">
24
+ <table cellspacing="0" class="data" style="width: 600px;">
25
+ <tbody>
26
+ <tr class="even">
27
+ <td>Cloudinary logging enabled</td>
28
+ <td><?php echo $isActive ? 'Yes' : 'No'; ?></td>
29
+ </tr>
30
+
31
+ <tr>
32
+ <td>Cloudinary logfile name</td>
33
+ <td><?php echo $name; ?></td>
34
+ </tr>
35
+
36
+ <tr class="even">
37
+ <td>Cloudinary logfile size</td>
38
+ <td><?php echo $logSize; ?></td>
39
+ </tr>
40
+ </tbody>
41
+ </table>
42
+ </div>
43
+
44
+ <?php if (!$error && $logSizeInBytes): ?>
45
+ <div style="margin-top: 5px;">
46
+ <a class="form-button" href="<?php echo $downloadUrl; ?>" style="text-decoration: none;">
47
+ Download <?php echo $name; ?>
48
+ </a>
49
+ </div>
50
+ <?php endif ?>
package.xml CHANGED
@@ -1,22 +1,23 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Cloudinary_Cloudinary</name>
4
- <version>2.4.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.4.0 notes:&#xD;
12
- - Provide free default transform field to extend default transformation capabilities&#xD;
13
- - Update documentation&#xD;
14
- - Update automated tests&#xD;
 
15
  </notes>
16
  <authors><author><name>Cloudinary</name><user>cloudinary</user><email>accounts+magento@cloudinary.com</email></author></authors>
17
- <date>2017-05-24</date>
18
- <time>10:42:40</time>
19
- <contents><target name="magecommunity"><dir name="Cloudinary"><dir name="Cloudinary"><dir name="Block"><dir name="Adminhtml"><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="2a7dd1504e77f3e1b7ffd67e3a1b9f02"/><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="ab5e45b0769c9dbee33025a202a87fee"/><file name="MagentoFolderTranslator.php" hash="37219fc1804d6ad8d1686af8509e1963"/><file name="Migration.php" hash="30f671877307d93904fd823d01d35c1d"/><file name="MigrationError.php" hash="67eca6725679a5dae6eab65efae39c64"/><file name="Observer.php" hash="e8437f1dd16c3251f0b0d69a80aa8f8b"/><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="f01a4eab976e491d201206ce838dc686"/><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"/></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="46e365e2f4b1d543aad248dfcfb99c50"/><file name="config.xml" hash="23eb36fc50149011960cad7e1fc5a392"/><file name="system.xml" hash="eebd58fc59405594c4599baee1c94365"/></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="e5a2def3fccdb6a365364dcf23964d08"/></dir></dir><dir name="template"><dir name="cloudinary"><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>
20
  <compatible/>
21
  <dependencies><required><php><min>5.4.0</min><max>7.1.0</max></php></required></dependencies>
22
  </package>
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>