Lib_Varien - Version 1.9.2.0

Version Notes

1.9.2.0

Download this release

Release Info

Developer Magento Core Team
Extension Lib_Varien
Version 1.9.2.0
Comparing to
See all releases


Code changes from version 1.9.1.1 to 1.9.2.0

lib/Varien/Cache/Backend/Database.php CHANGED
@@ -42,14 +42,16 @@ CREATE TABLE IF NOT EXISTS `core_cache_tag` (
42
  `cache_id` VARCHAR(255) NOT NULL,
43
  KEY `IDX_TAG` (`tag`),
44
  KEY `IDX_CACHE_ID` (`cache_id`),
45
- CONSTRAINT `FK_CORE_CACHE_TAG` FOREIGN KEY (`cache_id`) REFERENCES `core_cache` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 
46
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
47
  */
48
 
49
  /**
50
  * Database cache backend
51
  */
52
- class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
 
53
  {
54
  /**
55
  * Available options
@@ -171,16 +173,18 @@ class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_C
171
  }
172
 
173
  /**
174
- * Save some string datas into a cache record
175
  *
176
  * Note : $data is always "string" (serialization is done by the
177
  * core not by the backend)
178
  *
179
- * @param string $data Datas to cache
180
- * @param string $id Cache id
181
- * @param array $tags Array of strings, the cache record will be tagged by each string entry
182
- * @param int $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
183
- * @return boolean true if no problem
 
 
184
  */
185
  public function save($data, $id, $tags = array(), $specificLifetime = false)
186
  {
@@ -221,13 +225,35 @@ class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_C
221
  */
222
  public function remove($id)
223
  {
 
 
224
  if ($this->_options['store_data']) {
225
- $adapter = $this->_getAdapter();
226
- $result = $adapter->delete($this->_getDataTable(), array('id=?'=>$id));
227
- return $result;
228
- } else {
229
- return false;
230
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  }
232
 
233
  /**
@@ -250,23 +276,18 @@ class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_C
250
  public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
251
  {
252
  $adapter = $this->_getAdapter();
 
 
253
  switch($mode) {
254
  case Zend_Cache::CLEANING_MODE_ALL:
255
  if ($this->_options['store_data']) {
256
- $result = $adapter->query('TRUNCATE TABLE '.$this->_getDataTable());
257
- } else {
258
- $result = true;
259
  }
260
- $result = $result && $adapter->query('TRUNCATE TABLE '.$this->_getTagsTable());
261
  break;
262
  case Zend_Cache::CLEANING_MODE_OLD:
263
  if ($this->_options['store_data']) {
264
- $result = $adapter->delete($this->_getDataTable(), array(
265
- 'expire_time> ?' => 0,
266
- 'expire_time<= ?' => time()
267
- ));
268
- } else {
269
- $result = true;
270
  }
271
  break;
272
  case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
@@ -282,6 +303,47 @@ class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_C
282
  return $result;
283
  }
284
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  /**
286
  * Return an array of stored cache ids
287
  *
@@ -472,6 +534,7 @@ class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_C
472
  ->where('cache_id=?', $id)
473
  ->where('tag IN(?)', $tags);
474
 
 
475
  $existingTags = $adapter->fetchCol($select);
476
  $insertTags = array_diff($tags, $existingTags);
477
  if (!empty($insertTags)) {
@@ -483,10 +546,10 @@ class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_C
483
  $bind[] = $tag;
484
  $bind[] = $id;
485
  }
486
- $query.= implode(',', $lines);
487
- $adapter->query($query, $bind);
488
  }
489
- $result = true;
490
  return $result;
491
  }
492
 
@@ -499,46 +562,51 @@ class Varien_Cache_Backend_Database extends Zend_Cache_Backend implements Zend_C
499
  */
500
  protected function _cleanByTags($mode, $tags)
501
  {
502
- if ($this->_options['store_data']) {
503
- $adapter = $this->_getAdapter();
504
- $select = $adapter->select()
505
- ->from($this->_getTagsTable(), 'cache_id');
506
- switch ($mode) {
507
- case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
508
- $select->where('tag IN (?)', $tags)
509
- ->group('cache_id')
510
- ->having('COUNT(cache_id)='.count($tags));
511
  break;
512
- case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
513
- $select->where('tag NOT IN (?)', $tags);
514
  break;
515
- case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
516
- $select->where('tag IN (?)', $tags);
517
  break;
518
- default:
519
- Zend_Cache::throwException('Invalid mode for _cleanByTags() method');
520
  break;
521
- }
522
 
523
- $result = true;
524
- $ids = array();
525
- $counter = 0;
526
- $stmt = $adapter->query($select);
527
- while ($row = $stmt->fetch()) {
528
- $ids[] = $row['cache_id'];
529
- $counter++;
530
- if ($counter>100) {
531
- $result = $result && $adapter->delete($this->_getDataTable(), array('id IN (?)' => $ids));
532
- $ids = array();
533
- $counter = 0;
 
534
  }
 
 
 
535
  }
536
- if (!empty($ids)) {
537
- $result = $result && $adapter->delete($this->_getDataTable(), array('id IN (?)' => $ids));
 
 
538
  }
539
- return $result;
540
- } else {
541
- return true;
542
  }
 
543
  }
544
  }
42
  `cache_id` VARCHAR(255) NOT NULL,
43
  KEY `IDX_TAG` (`tag`),
44
  KEY `IDX_CACHE_ID` (`cache_id`),
45
+ CONSTRAINT `FK_CORE_CACHE_TAG` FOREIGN KEY (`cache_id`)
46
+ REFERENCES `core_cache` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
47
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
48
  */
49
 
50
  /**
51
  * Database cache backend
52
  */
53
+ class Varien_Cache_Backend_Database
54
+ extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
55
  {
56
  /**
57
  * Available options
173
  }
174
 
175
  /**
176
+ * Save data into a cache storage
177
  *
178
  * Note : $data is always "string" (serialization is done by the
179
  * core not by the backend)
180
  *
181
+ * @param string $data Data to cache
182
+ * @param string $id Cache id
183
+ * @param array $tags Array of strings, the cache record will be tagged by each string entry
184
+ * @param int|bool|null $specificLifetime If != false, set a specific lifetime for this cache record
185
+ * (null => infinite lifetime)
186
+ *
187
+ * @return bool true if no problem
188
  */
189
  public function save($data, $id, $tags = array(), $specificLifetime = false)
190
  {
225
  */
226
  public function remove($id)
227
  {
228
+ $adapter = $this->_getAdapter();
229
+ $result = true;
230
  if ($this->_options['store_data']) {
231
+ $result = $adapter->delete($this->_getDataTable(), array('id = ?' => $id));
 
 
 
 
232
  }
233
+
234
+ return $result && $adapter->delete($this->_getTagsTable(), array('cache_id = ?' => $id));
235
+ }
236
+
237
+ /**
238
+ * Delete cache rows from Data table
239
+ *
240
+ * @param $cacheIdsToRemove
241
+ * @return int
242
+ */
243
+ protected function _deleteCachesFromDataTable($cacheIdsToRemove)
244
+ {
245
+ return $this->_getAdapter()->delete($this->_getDataTable(), array('id IN (?)' => $cacheIdsToRemove));
246
+ }
247
+
248
+ /**
249
+ * Delete cache rows from Tags table
250
+ *
251
+ * @param $cacheIdsToRemove
252
+ * @return int
253
+ */
254
+ protected function _deleteCachesFromTagsTable($cacheIdsToRemove)
255
+ {
256
+ return $this->_getAdapter()->delete($this->_getTagsTable(), array('cache_id IN (?)' => $cacheIdsToRemove));
257
  }
258
 
259
  /**
276
  public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
277
  {
278
  $adapter = $this->_getAdapter();
279
+ $result = true;
280
+
281
  switch($mode) {
282
  case Zend_Cache::CLEANING_MODE_ALL:
283
  if ($this->_options['store_data']) {
284
+ $result = $adapter->query('TRUNCATE TABLE ' . $this->_getDataTable());
 
 
285
  }
286
+ $result = $result && $adapter->query('TRUNCATE TABLE ' . $this->_getTagsTable());
287
  break;
288
  case Zend_Cache::CLEANING_MODE_OLD:
289
  if ($this->_options['store_data']) {
290
+ $result = $this->_cleanOldCache();
 
 
 
 
 
291
  }
292
  break;
293
  case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
303
  return $result;
304
  }
305
 
306
+ /**
307
+ * Clean old cache data and related cache tag data
308
+ *
309
+ * @return bool
310
+ */
311
+ protected function _cleanOldCache()
312
+ {
313
+ $time = time();
314
+ $counter = 0;
315
+ $result = true;
316
+ $adapter = $this->_getAdapter();
317
+ $cacheIdsToRemove = array();
318
+
319
+ $select = $adapter->select()
320
+ ->from($this->_getDataTable(), 'id')
321
+ ->where('expire_time > ?', 0)
322
+ ->where('expire_time <= ?', $time)
323
+ ;
324
+
325
+ $statement = $adapter->query($select);
326
+ while ($row = $statement->fetch()) {
327
+ if (!$result) {
328
+ break;
329
+ }
330
+ $cacheIdsToRemove[] = $row['id'];
331
+ $counter++;
332
+ if ($counter > 100) {
333
+ $result = $result && $this->_deleteCachesFromDataTable($cacheIdsToRemove);
334
+ $result = $result && $this->_deleteCachesFromTagsTable($cacheIdsToRemove);
335
+ $cacheIdsToRemove = array();
336
+ $counter = 0;
337
+ }
338
+ }
339
+ if (!empty($cacheIdsToRemove)) {
340
+ $result = $result && $this->_deleteCachesFromDataTable($cacheIdsToRemove);
341
+ $result = $result && $this->_deleteCachesFromTagsTable($cacheIdsToRemove);
342
+ }
343
+
344
+ return $result;
345
+ }
346
+
347
  /**
348
  * Return an array of stored cache ids
349
  *
534
  ->where('cache_id=?', $id)
535
  ->where('tag IN(?)', $tags);
536
 
537
+ $result = true;
538
  $existingTags = $adapter->fetchCol($select);
539
  $insertTags = array_diff($tags, $existingTags);
540
  if (!empty($insertTags)) {
546
  $bind[] = $tag;
547
  $bind[] = $id;
548
  }
549
+ $query .= implode(',', $lines);
550
+ $result = $adapter->query($query, $bind);
551
  }
552
+
553
  return $result;
554
  }
555
 
562
  */
563
  protected function _cleanByTags($mode, $tags)
564
  {
565
+ $adapter = $this->_getAdapter();
566
+ $result = true;
567
+ $select = $adapter->select()
568
+ ->from($this->_getTagsTable(), 'cache_id');
569
+ switch ($mode) {
570
+ case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
571
+ $select->where('tag IN (?)', $tags)
572
+ ->group('cache_id')
573
+ ->having('COUNT(cache_id) = ' . count($tags));
574
  break;
575
+ case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
576
+ $select->where('tag NOT IN (?)', $tags);
577
  break;
578
+ case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
579
+ $select->where('tag IN (?)', $tags);
580
  break;
581
+ default:
582
+ Zend_Cache::throwException('Invalid mode for _cleanByTags() method');
583
  break;
584
+ }
585
 
586
+ $cacheIdsToRemove = array();
587
+ $counter = 0;
588
+ $statement = $adapter->query($select);
589
+ while ($row = $statement->fetch()) {
590
+ if (!$result) {
591
+ break;
592
+ }
593
+ $cacheIdsToRemove[] = $row['cache_id'];
594
+ $counter++;
595
+ if ($counter > 100) {
596
+ if ($this->_options['store_data']) {
597
+ $result = $result && $this->_deleteCachesFromDataTable($cacheIdsToRemove);
598
  }
599
+ $result = $result && $this->_deleteCachesFromTagsTable($cacheIdsToRemove);
600
+ $cacheIdsToRemove = array();
601
+ $counter = 0;
602
  }
603
+ }
604
+ if (!empty($cacheIdsToRemove)) {
605
+ if ($this->_options['store_data']) {
606
+ $result = $result && $this->_deleteCachesFromDataTable($cacheIdsToRemove);
607
  }
608
+ $result = $result && $this->_deleteCachesFromTagsTable($cacheIdsToRemove);
 
 
609
  }
610
+ return $result;
611
  }
612
  }
lib/Varien/Crypt/Mcrypt.php CHANGED
@@ -41,9 +41,20 @@ class Varien_Crypt_Mcrypt extends Varien_Crypt_Abstract
41
  */
42
  public function __construct(array $data=array())
43
  {
 
44
  parent::__construct($data);
45
  }
46
 
 
 
 
 
 
 
 
 
 
 
47
  /**
48
  * Initialize mcrypt module
49
  *
@@ -119,17 +130,6 @@ class Varien_Crypt_Mcrypt extends Varien_Crypt_Abstract
119
  return mdecrypt_generic($this->getHandler(), $data);
120
  }
121
 
122
- /**
123
- * Desctruct cipher module
124
- *
125
- */
126
- public function __destruct()
127
- {
128
- if ($this->getHandler()) {
129
- $this->_reset();
130
- }
131
- }
132
-
133
  protected function _reset()
134
  {
135
  mcrypt_generic_deinit($this->getHandler());
41
  */
42
  public function __construct(array $data=array())
43
  {
44
+ register_shutdown_function(array($this, 'destruct'));
45
  parent::__construct($data);
46
  }
47
 
48
+ /**
49
+ * Close mcrypt module on shutdown
50
+ */
51
+ public function destruct()
52
+ {
53
+ if ($this->getHandler()) {
54
+ $this->_reset();
55
+ }
56
+ }
57
+
58
  /**
59
  * Initialize mcrypt module
60
  *
130
  return mdecrypt_generic($this->getHandler(), $data);
131
  }
132
 
 
 
 
 
 
 
 
 
 
 
 
133
  protected function _reset()
134
  {
135
  mcrypt_generic_deinit($this->getHandler());
lib/Varien/Db/Adapter/Pdo/Mysql.php CHANGED
@@ -48,6 +48,14 @@ class Varien_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql implements V
48
  const LENGTH_INDEX_NAME = 64;
49
  const LENGTH_FOREIGN_NAME = 64;
50
 
 
 
 
 
 
 
 
 
51
  /**
52
  * MEMORY engine type for MySQL tables
53
  */
@@ -294,6 +302,61 @@ class Varien_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql implements V
294
  return $this->formatDate($datetime, true);
295
  }
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  /**
298
  * Creates a PDO object and connects to the database.
299
  *
@@ -309,11 +372,24 @@ class Varien_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql implements V
309
  throw new Zend_Db_Adapter_Exception('pdo_mysql extension is not installed');
310
  }
311
 
312
- if (strpos($this->_config['host'], '/') !== false) {
313
- $this->_config['unix_socket'] = $this->_config['host'];
314
- unset($this->_config['host']);
315
- } else if (strpos($this->_config['host'], ':') !== false) {
316
- list($this->_config['host'], $this->_config['port']) = explode(':', $this->_config['host']);
 
 
 
 
 
 
 
 
 
 
 
 
 
317
  }
318
 
319
  $this->_debugTimer();
@@ -1560,6 +1636,23 @@ class Varien_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql implements V
1560
  return $this;
1561
  }
1562
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1563
  /**
1564
  * Returns the column descriptions for a table.
1565
  *
@@ -1593,7 +1686,13 @@ class Varien_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql implements V
1593
  $cacheKey = $this->_getTableName($tableName, $schemaName);
1594
  $ddl = $this->loadDdlCache($cacheKey, self::DDL_DESCRIBE);
1595
  if ($ddl === false) {
1596
- $ddl = parent::describeTable($tableName, $schemaName);
 
 
 
 
 
 
1597
  /**
1598
  * Remove bug in some MySQL versions, when int-column without default value is described as:
1599
  * having default empty string value
@@ -1786,6 +1885,9 @@ class Varien_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql implements V
1786
  case 'decimal':
1787
  case 'numeric':
1788
  return Varien_Db_Ddl_Table::TYPE_DECIMAL;
 
 
 
1789
  }
1790
  }
1791
 
48
  const LENGTH_INDEX_NAME = 64;
49
  const LENGTH_FOREIGN_NAME = 64;
50
 
51
+ /**
52
+ * Those constants are defining the possible address types
53
+ */
54
+ const ADDRESS_TYPE_HOSTNAME = 'hostname';
55
+ const ADDRESS_TYPE_UNIX_SOCKET = 'unix_socket';
56
+ const ADDRESS_TYPE_IPV4_ADDRESS = 'ipv4';
57
+ const ADDRESS_TYPE_IPV6_ADDRESS = 'ipv6';
58
+
59
  /**
60
  * MEMORY engine type for MySQL tables
61
  */
302
  return $this->formatDate($datetime, true);
303
  }
304
 
305
+ /**
306
+ * Parse a source hostname and generate a host info
307
+ * @param $hostName
308
+ *
309
+ * @return Varien_Object
310
+ */
311
+ protected function _getHostInfo($hostName)
312
+ {
313
+ $hostInfo = new Varien_Object();
314
+ $matches = array();
315
+ if (strpos($hostName, '/') !== false) {
316
+ $hostInfo->setAddressType(self::ADDRESS_TYPE_UNIX_SOCKET)
317
+ ->setUnixSocket($hostName);
318
+ } elseif (
319
+ preg_match(
320
+ '/^\[(([0-9a-f]{1,4})?(:([0-9a-f]{1,4})?){1,}:([0-9a-f]{1,4}))(%[0-9a-z]+)?\](:([0-9]+))?$/i',
321
+ $hostName,
322
+ $matches
323
+ )
324
+ ) {
325
+ $hostName = isset($matches[1]) ? $matches[1] : null;
326
+ !is_null($hostName) && isset($matches[6]) && ($hostName .= $matches[6]);
327
+ $hostInfo->setAddressType(self::ADDRESS_TYPE_IPV6_ADDRESS)
328
+ ->setHostName($hostName)
329
+ ->setPort(isset($matches[8]) ? $matches[8] : null);
330
+ } elseif (
331
+ preg_match(
332
+ '/^(([0-9a-f]{1,4})?(:([0-9a-f]{1,4})?){1,}:([0-9a-f]{1,4}))(%[0-9a-z]+)?$/i',
333
+ $hostName,
334
+ $matches
335
+ )
336
+ ) {
337
+ $hostName = isset($matches[1]) ? $matches[1] : null;
338
+ !is_null($hostName) && isset($matches[6]) && ($hostName .= $matches[6]);
339
+ $hostInfo->setAddressType(self::ADDRESS_TYPE_IPV6_ADDRESS)
340
+ ->setHostName($hostName);
341
+ } elseif (strpos($hostName, ':') !== false) {
342
+ list($hostAddress, $hostPort) = explode(':', $hostName);
343
+ $hostInfo->setAddressType(
344
+ filter_var($hostAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)
345
+ ? self::ADDRESS_TYPE_IPV4_ADDRESS
346
+ : self::ADDRESS_TYPE_HOSTNAME
347
+ )->setHostName($hostAddress)
348
+ ->setPort($hostPort);
349
+ } else {
350
+ $hostInfo->setAddressType(
351
+ filter_var($hostName, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)
352
+ ? self::ADDRESS_TYPE_IPV4_ADDRESS
353
+ : self::ADDRESS_TYPE_HOSTNAME
354
+ )->setHostName($hostName);
355
+ }
356
+
357
+ return $hostInfo;
358
+ }
359
+
360
  /**
361
  * Creates a PDO object and connects to the database.
362
  *
372
  throw new Zend_Db_Adapter_Exception('pdo_mysql extension is not installed');
373
  }
374
 
375
+
376
+ $hostInfo = $this->_getHostInfo($this->_config['host']);
377
+
378
+ switch ($hostInfo->getAddressType()) {
379
+ case self::ADDRESS_TYPE_UNIX_SOCKET:
380
+ $this->_config['unix_socket'] = $hostInfo->getUnixSocket();
381
+ unset($this->_config['host']);
382
+ break;
383
+ case self::ADDRESS_TYPE_IPV6_ADDRESS: // break intentionally omitted
384
+ case self::ADDRESS_TYPE_IPV4_ADDRESS: // break intentionally omitted
385
+ case self::ADDRESS_TYPE_HOSTNAME:
386
+ $this->_config['host'] = $hostInfo->getHostName();
387
+ if ($hostInfo->getPort()) {
388
+ $this->_config['port'] = $hostInfo->getPort();
389
+ }
390
+ break;
391
+ default:
392
+ break;
393
  }
394
 
395
  $this->_debugTimer();
1636
  return $this;
1637
  }
1638
 
1639
+ /**
1640
+ * Decorate a table info by detecting and parsing the binary/varbinary fields
1641
+ * @param $tableColumnInfo
1642
+ *
1643
+ * @return mixed
1644
+ */
1645
+ public function decorateTableInfo($tableColumnInfo)
1646
+ {
1647
+ $matches = array();
1648
+ if (preg_match('/^((?:var)?binary)\((\d+)\)/', $tableColumnInfo['DATA_TYPE'], $matches)) {
1649
+ list ($fieldFullDescription, $fieldType, $fieldLength) = $matches;
1650
+ $tableColumnInfo['DATA_TYPE'] = $fieldType;
1651
+ $tableColumnInfo['LENGTH'] = $fieldLength;
1652
+ }
1653
+ return $tableColumnInfo;
1654
+ }
1655
+
1656
  /**
1657
  * Returns the column descriptions for a table.
1658
  *
1686
  $cacheKey = $this->_getTableName($tableName, $schemaName);
1687
  $ddl = $this->loadDdlCache($cacheKey, self::DDL_DESCRIBE);
1688
  if ($ddl === false) {
1689
+ $ddl = array_map(
1690
+ array(
1691
+ $this,
1692
+ 'decorateTableInfo'
1693
+ ),
1694
+ parent::describeTable($tableName, $schemaName)
1695
+ );
1696
  /**
1697
  * Remove bug in some MySQL versions, when int-column without default value is described as:
1698
  * having default empty string value
1885
  case 'decimal':
1886
  case 'numeric':
1887
  return Varien_Db_Ddl_Table::TYPE_DECIMAL;
1888
+ case 'varbinary':
1889
+ return Varien_Db_Ddl_Table::TYPE_VARBINARY;
1890
+ break;
1891
  }
1892
  }
1893
 
lib/Varien/File/Uploader/Image.php CHANGED
@@ -37,9 +37,18 @@ class Varien_File_Uploader_Image extends Varien_File_Uploader
37
 
38
  function __construct($file=null)
39
  {
 
40
  $this->newUploader($file);
41
  }
42
 
 
 
 
 
 
 
 
 
43
  /**
44
  * Resizes an image
45
  * Set parameters to the wanted (or maximum/minimum) width for the processed image, in pixels
@@ -148,7 +157,7 @@ class Varien_File_Uploader_Image extends Varien_File_Uploader
148
  * $absoluteY sets the twatermark absolute Y position within the image
149
  *
150
  * Value is in pixels, representing the distance between the left of the image and the watermark
151
- * If a negative value is used, it will represent the distance between the right of the image and the watermark
152
  *
153
  */
154
  public function addWatermark($fileName=null, $position="BL", $absoluteX=null, $absoluteY=null)
@@ -168,11 +177,11 @@ class Varien_File_Uploader_Image extends Varien_File_Uploader
168
  *
169
  * Value is an integer in pixels, or a string which format can be in pixels or percentage.
170
  * For instance, values can be : 40, '40', '40px' or '40%'
171
- *
172
  * $space sets the space between the source image and its relection
173
  *
174
  * Value is an integer in pixels, which can be negative
175
- *
176
  * $color sets the color of the reflection background.
177
  *
178
  * Value is an hexadecimal color, such as #FFFFFF
@@ -180,14 +189,14 @@ class Varien_File_Uploader_Image extends Varien_File_Uploader
180
  * $opacity sets the initial opacity of the reflection
181
  *
182
  * Value is an integer between 0 (no opacity) and 100 (full opacity).
183
- *
184
  */
185
  public function addReflection($height="10%", $space=0, $color="#FFFFFF", $opacity=60)
186
  {
187
  if( intval($height) == 0 ) {
188
  return;
189
  }
190
-
191
  $this->uploader->image_reflection_height = $height;
192
  $this->uploader->image_reflection_space = $space;
193
  $this->uploader->image_reflection_color = $color;
@@ -353,13 +362,8 @@ class Varien_File_Uploader_Image extends Varien_File_Uploader
353
  {
354
  $this->uploader->image_background_color = $color;
355
  }
356
-
357
- function __destruct()
358
- {
359
- $this->uploader->Clean();
360
- }
361
  }
362
-
363
  // ft:php
364
  // fileformat:unix
365
  // tabstop:4
37
 
38
  function __construct($file=null)
39
  {
40
+ register_shutdown_function(array($this, 'destruct'));
41
  $this->newUploader($file);
42
  }
43
 
44
+ /**
45
+ * Uploader clean on shutdown
46
+ */
47
+ public function destruct()
48
+ {
49
+ $this->uploader->Clean();
50
+ }
51
+
52
  /**
53
  * Resizes an image
54
  * Set parameters to the wanted (or maximum/minimum) width for the processed image, in pixels
157
  * $absoluteY sets the twatermark absolute Y position within the image
158
  *
159
  * Value is in pixels, representing the distance between the left of the image and the watermark
160
+ * If a negative value is used, it will represent the distance between the right of the image and the watermark
161
  *
162
  */
163
  public function addWatermark($fileName=null, $position="BL", $absoluteX=null, $absoluteY=null)
177
  *
178
  * Value is an integer in pixels, or a string which format can be in pixels or percentage.
179
  * For instance, values can be : 40, '40', '40px' or '40%'
180
+ *
181
  * $space sets the space between the source image and its relection
182
  *
183
  * Value is an integer in pixels, which can be negative
184
+ *
185
  * $color sets the color of the reflection background.
186
  *
187
  * Value is an hexadecimal color, such as #FFFFFF
189
  * $opacity sets the initial opacity of the reflection
190
  *
191
  * Value is an integer between 0 (no opacity) and 100 (full opacity).
192
+ *
193
  */
194
  public function addReflection($height="10%", $space=0, $color="#FFFFFF", $opacity=60)
195
  {
196
  if( intval($height) == 0 ) {
197
  return;
198
  }
199
+
200
  $this->uploader->image_reflection_height = $height;
201
  $this->uploader->image_reflection_space = $space;
202
  $this->uploader->image_reflection_color = $color;
362
  {
363
  $this->uploader->image_background_color = $color;
364
  }
 
 
 
 
 
365
  }
366
+
367
  // ft:php
368
  // fileformat:unix
369
  // tabstop:4
lib/Varien/Filter/Template/Simple.php CHANGED
@@ -24,12 +24,32 @@
24
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
  */
26
 
27
-
 
 
28
  class Varien_Filter_Template_Simple extends Varien_Object implements Zend_Filter_Interface
29
  {
 
 
 
 
 
30
  protected $_startTag = '{{';
 
 
 
 
 
 
31
  protected $_endTag = '}}';
32
 
 
 
 
 
 
 
 
33
  public function setTags($start, $end)
34
  {
35
  $this->_startTag = $start;
@@ -37,8 +57,30 @@ class Varien_Filter_Template_Simple extends Varien_Object implements Zend_Filter
37
  return $this;
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  public function filter($value)
41
  {
42
- return preg_replace('#'.$this->_startTag.'(.*?)'.$this->_endTag.'#e', '$this->getData("$1")', $value);
 
 
 
 
43
  }
44
  }
 
24
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
  */
26
 
27
+ /**
28
+ * Class Varien_Filter_Template_Simple
29
+ */
30
  class Varien_Filter_Template_Simple extends Varien_Object implements Zend_Filter_Interface
31
  {
32
+ /**
33
+ * Start tag for variable in template
34
+ *
35
+ * @var string
36
+ */
37
  protected $_startTag = '{{';
38
+
39
+ /**
40
+ * End tag for variable in template
41
+ *
42
+ * @var string
43
+ */
44
  protected $_endTag = '}}';
45
 
46
+ /**
47
+ * Define start tag and end tag
48
+ *
49
+ * @param string $start
50
+ * @param string $end
51
+ * @return Varien_Filter_Template_Simple
52
+ */
53
  public function setTags($start, $end)
54
  {
55
  $this->_startTag = $start;
57
  return $this;
58
  }
59
 
60
+ /**
61
+ * Return result of getData method for matched variables
62
+ *
63
+ * @param array $matches
64
+ * @return mixed
65
+ */
66
+ protected function _filterDataItem($matches)
67
+ {
68
+ return $this->getData($matches[1]);
69
+ }
70
+
71
+ /**
72
+ * Insert data to template
73
+ *
74
+ * @param string $value
75
+ * @return string
76
+ */
77
  public function filter($value)
78
  {
79
+ return preg_replace_callback(
80
+ '#' . $this->_startTag . '(.*?)' . $this->_endTag . '#',
81
+ array($this, '_filterDataItem'),
82
+ $value
83
+ );
84
  }
85
  }
86
+
lib/Varien/Image/Adapter/Gd2.php CHANGED
@@ -43,6 +43,20 @@ class Varien_Image_Adapter_Gd2 extends Varien_Image_Adapter_Abstract
43
  */
44
  protected $_resized = false;
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  /**
47
  * Opens image file.
48
  *
@@ -68,26 +82,56 @@ class Varien_Image_Adapter_Gd2 extends Varien_Image_Adapter_Abstract
68
  protected function _isMemoryLimitReached()
69
  {
70
  $limit = $this->_convertToByte(ini_get('memory_limit'));
 
 
 
 
 
 
71
  $size = getimagesize($this->_fileName);
72
  $requiredMemory = $size[0] * $size[1] * 3;
 
73
  return (memory_get_usage(true) + $requiredMemory) > $limit;
74
  }
75
 
76
  /**
77
- * Converts memory value (e.g. 64M, 129KB) to bytes.
78
- * Case insensitive value might be used.
 
79
  *
80
  * @param string $memoryValue
 
 
 
 
81
  * @return int
82
  */
83
  protected function _convertToByte($memoryValue)
84
  {
85
- if (stripos($memoryValue, 'M') !== false) {
86
- return (int)$memoryValue * 1024 * 1024;
87
- } elseif (stripos($memoryValue, 'KB') !== false) {
88
- return (int)$memoryValue * 1024;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  }
90
- return (int)$memoryValue;
 
 
91
  }
92
 
93
  public function save($destination=null, $newName=null)
@@ -577,10 +621,6 @@ class Varien_Image_Adapter_Gd2 extends Varien_Image_Adapter_Abstract
577
  $this->_imageSrcHeight = imagesy($this->_imageHandler);
578
  }
579
 
580
- function __destruct()
581
- {
582
- @imagedestroy($this->_imageHandler);
583
- }
584
 
585
  /*
586
  * Fixes saving PNG alpha channel
43
  */
44
  protected $_resized = false;
45
 
46
+ public function __construct()
47
+ {
48
+ // Initialize shutdown function
49
+ register_shutdown_function(array($this, 'destruct'));
50
+ }
51
+
52
+ /**
53
+ * Destroy object image on shutdown
54
+ */
55
+ public function destruct()
56
+ {
57
+ @imagedestroy($this->_imageHandler);
58
+ }
59
+
60
  /**
61
  * Opens image file.
62
  *
82
  protected function _isMemoryLimitReached()
83
  {
84
  $limit = $this->_convertToByte(ini_get('memory_limit'));
85
+ /**
86
+ * In case if memory limit was converted to 0, treat it as unlimited
87
+ */
88
+ if ($limit === 0) {
89
+ return false;
90
+ }
91
  $size = getimagesize($this->_fileName);
92
  $requiredMemory = $size[0] * $size[1] * 3;
93
+
94
  return (memory_get_usage(true) + $requiredMemory) > $limit;
95
  }
96
 
97
  /**
98
+ * Convert PHP memory limit value into bytes
99
+ * Notation in value is supported only for PHP
100
+ * Shorthand byte options are case insensitive
101
  *
102
  * @param string $memoryValue
103
+ *
104
+ * @throws Varien_Exception
105
+ * @see http://php.net/manual/en/faq.using.php#faq.using.shorthandbytes
106
+ *
107
  * @return int
108
  */
109
  protected function _convertToByte($memoryValue)
110
  {
111
+ $memoryValue = trim($memoryValue);
112
+ if (empty($memoryValue)) {
113
+ return 0;
114
+ }
115
+ if (preg_match('~^([1-9][0-9]*)[\s]*(k|m|g)b?$~i', $memoryValue, $matches)) {
116
+ $option = strtolower($matches[2]);
117
+ $memoryValue = $matches[1];
118
+ switch ($option) {
119
+ case 'g':
120
+ $memoryValue *= 1024;
121
+ // no break
122
+ case 'm':
123
+ $memoryValue *= 1024;
124
+ // no break
125
+ case 'k':
126
+ $memoryValue *= 1024;
127
+ break;
128
+ default:
129
+ break;
130
+ }
131
  }
132
+ $memoryValue = (int)$memoryValue;
133
+
134
+ return $memoryValue > 0 ? $memoryValue : 0;
135
  }
136
 
137
  public function save($destination=null, $newName=null)
621
  $this->_imageSrcHeight = imagesy($this->_imageHandler);
622
  }
623
 
 
 
 
 
624
 
625
  /*
626
  * Fixes saving PNG alpha channel
lib/Varien/Io/File.php CHANGED
@@ -99,10 +99,16 @@ class Varien_Io_File extends Varien_Io_Abstract
99
  */
100
  protected $_streamLocked = false;
101
 
 
 
 
 
 
 
102
  /**
103
- * Destruct
104
  */
105
- public function __destruct()
106
  {
107
  if ($this->_streamHandler) {
108
  $this->streamClose();
@@ -226,6 +232,17 @@ class Varien_Io_File extends Varien_Io_Abstract
226
  if (!$this->_streamHandler) {
227
  return false;
228
  }
 
 
 
 
 
 
 
 
 
 
 
229
  return @fputcsv($this->_streamHandler, $row, $delimiter, $enclosure);
230
  }
231
 
99
  */
100
  protected $_streamLocked = false;
101
 
102
+ public function __construct()
103
+ {
104
+ // Initialize shutdown function
105
+ register_shutdown_function(array($this, 'destruct'));
106
+ }
107
+
108
  /**
109
+ * stream close on shutdown
110
  */
111
+ public function destruct()
112
  {
113
  if ($this->_streamHandler) {
114
  $this->streamClose();
232
  if (!$this->_streamHandler) {
233
  return false;
234
  }
235
+
236
+ /**
237
+ * Security enchancement for CSV data processing by Excel-like applications.
238
+ * @see https://bugzilla.mozilla.org/show_bug.cgi?id=1054702
239
+ */
240
+ foreach ($row as $key => $value) {
241
+ if (substr($value, 0, 1) === '=') {
242
+ $row[$key] = ' ' . $value;
243
+ }
244
+ }
245
+
246
  return @fputcsv($this->_streamHandler, $row, $delimiter, $enclosure);
247
  }
248
 
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Lib_Varien</name>
4
- <version>1.9.1.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Varien Library</summary>
10
  <description>Varien Library</description>
11
- <notes>1.9.1.1</notes>
12
  <authors><author><name>Magento Core Team</name><user>core</user><email>core@magentocommerce.com</email></author></authors>
13
- <date>2015-04-29</date>
14
- <time>12:01:16</time>
15
- <contents><target name="magelib"><dir name="Varien"><file name="Autoload.php" hash="dc766f666b682fe85691c496d2b1ce7c"/><dir name="Cache"><dir name="Backend"><file name="Database.php" hash="ab6f03ab9e8acf55aa30794482694e12"/><file name="Eaccelerator.php" hash="aa8840e2fff1ea84b643931feb7e89a0"/><file name="Memcached.php" hash="a602dda3f1a951ac779ec567b10d022e"/></dir><file name="Core.php" hash="afe76b8b6f0a641e420369a11da19a53"/></dir><dir name="Convert"><dir name="Action"><file name="Abstract.php" hash="b0748e1973155e3358471318dd690f54"/><file name="Interface.php" hash="b872ae40e0fe7a6a293cc9c2f0ecf8fb"/></dir><file name="Action.php" hash="f84e93e12575d66637c719a5ace10048"/><dir name="Adapter"><file name="Abstract.php" hash="c1b5d3898623903decab5b357f3042fb"/><dir name="Db"><file name="Table.php" hash="98fde56f12db1913f48130d3815766c5"/></dir><dir name="Http"><file name="Curl.php" hash="e9862db1732ae6976320e03fb31bbbd4"/></dir><file name="Http.php" hash="e54efc7a0a96aa888fcd186246493376"/><file name="Interface.php" hash="2f274fc1f48fffa9c671e1137be8aa74"/><file name="Io.php" hash="3d6b294c17c0ec1aa008d04a0a4d7241"/><file name="Soap.php" hash="c8562680e671f55ad1bd52aa5458fbe0"/><file name="Std.php" hash="155af022ca5a37f5635a364550af868a"/><dir name="Zend"><file name="Cache.php" hash="ea07c530e19a4007416be5c8d30f0ebe"/><file name="Db.php" hash="ed8c973b6f73239a8827467907c526e5"/></dir></dir><dir name="Container"><file name="Abstract.php" hash="9951bcccf153f812574291802cc3c16b"/><file name="Collection.php" hash="db70f8aa7534eff8fae7294bd8697d03"/><file name="Generic.php" hash="1335a7ba43def19bc79e6d0e9c842f36"/><file name="Interface.php" hash="98dd1b9d1207127e120fe52a0a3b3488"/></dir><file name="Exception.php" hash="002048d6913a53d76e5eab3defb90cac"/><dir name="Mapper"><file name="Abstract.php" hash="db499970eb5428470d8f229ba57aca02"/><file name="Column.php" hash="7e62b7cff2fe33358bb91fa3df41d2e8"/><file name="Interface.php" hash="603d0788e329635024810f928b49fa4f"/></dir><dir name="Parser"><file name="Abstract.php" hash="cc1941daffcd4b9cce0a86ee5d7ab471"/><file name="Csv.php" hash="7d0d9ee5d331615f1b8265501f9be71e"/><file name="Interface.php" hash="a616758d6ddab992ca89d38f00fdc76d"/><file name="Serialize.php" hash="8b41217392591f2c15c44a613e4e9ae9"/><dir name="Xml"><file name="Excel.php" hash="fa2359e440f0b3d70751d23fd299f8d8"/></dir></dir><dir name="Profile"><file name="Abstract.php" hash="3b1b884474c7947b812ed99e5eecf990"/><file name="Collection.php" hash="bdb09b51f16897f5254edc076ffce681"/></dir><file name="Profile.php" hash="96fab155f31ec5ef3e7b4bdf9248b2b8"/><dir name="Validator"><file name="Abstract.php" hash="5ee13d15f5c1d20a69e60f2a5c9d635d"/><file name="Column.php" hash="96de1db93ae007be456f1f56e88a9939"/><file name="Dryrun.php" hash="e43002dc3a8025dfcabf13f0a485965e"/><file name="Interface.php" hash="f54198b10cd39596a831e0e78c56dc11"/></dir></dir><file name="Convert.php" hash="d56a14d6636dd1ee7f6f1a81b384f2f5"/><dir name="Crypt"><file name="Abstract.php" hash="3867789b8516cda284a8f6177adb22d1"/><file name="Mcrypt.php" hash="b0fe1a04187faadb16e71a4877080c71"/></dir><file name="Crypt.php" hash="7372f5e6f7d7b96f0181f13834e56f4b"/><dir name="Data"><dir name="Collection"><file name="Db.php" hash="8b18a93b1f8b43c8e5f333a283fff495"/><file name="Filesystem.php" hash="40661586b77407a71ee1f756e5553adb"/></dir><file name="Collection.php" hash="6d5170bb9dbec7a7ee864dd973e0d500"/><dir name="Form"><file name="Abstract.php" hash="864c5ddad40817e65f8188390c33eb15"/><dir name="Element"><file name="Abstract.php" hash="b484d100f5693cd4e912c9ca93857603"/><file name="Button.php" hash="57ebd4aeb6f96fdf6e08f864a134729d"/><file name="Checkbox.php" hash="0a0e8a35e7f4a71b264747685d00f122"/><file name="Checkboxes.php" hash="ec5ca55d06b8aab1f9e9a224b38a0e94"/><file name="Collection.php" hash="115eeeed84dbcf8f43c6ca92f4339eb7"/><file name="Column.php" hash="541d994eaee258e5ebbc458628ade2c3"/><file name="Date.php" hash="855de0485c028fd315d47b35b0c6a8be"/><file name="Datetime.php" hash="72ed0fdbe0770cc967232aef07c90e80"/><file name="Editor.php" hash="f536ae5cab23ed5dfaba6fffcacee69d"/><file name="Fieldset.php" hash="3c8946dd8ec889719376ab59a346da4f"/><file name="File.php" hash="a95837ceeea1be891a7f55b198585c2b"/><file name="Gallery.php" hash="ba27a76f65df878bf55565ac75de8f17"/><file name="Hidden.php" hash="fd70cf5f1a27d969578de0ffef5f0a38"/><file name="Image.php" hash="1fecc228200ce23a307f4ff95511ee36"/><file name="Imagefile.php" hash="ced6ccd0ee7a48d60887dab8d2f4e5a5"/><file name="Label.php" hash="d1cc044aa76571e90848aa69db749285"/><file name="Link.php" hash="4ac31ec26330bbef008e5917e2cec619"/><file name="Multiline.php" hash="5ad29f476881912bc6d21445133ceafd"/><file name="Multiselect.php" hash="e51e5a49c816b0da1ab61adfa9e11a5e"/><file name="Note.php" hash="b599a56b74f6e851b61d9d529621907c"/><file name="Obscure.php" hash="1ec4d2b87a537698932a60f0a1c26364"/><file name="Password.php" hash="7e78125059c1d8ee405ba946e3779e62"/><file name="Radio.php" hash="14d9ac8df9b00d3061c9c0528dcb8f05"/><file name="Radios.php" hash="142d3afe02f03f40b0b2cff371135d64"/><dir name="Renderer"><file name="Interface.php" hash="1333c6ebb3e531ce1cc62880a76df176"/></dir><file name="Reset.php" hash="cfaa070a01ff533534c93e40cb8a8a50"/><file name="Select.php" hash="4cfded15810a229390ccde56370848bc"/><file name="Submit.php" hash="d873762f62e3acc9a89ee48ba0ea5c04"/><file name="Text.php" hash="4f52cc4fbb36a0fff6ce4df87cf02839"/><file name="Textarea.php" hash="67a4950f867a996bed2b5e1ec6f8f909"/><file name="Time.php" hash="3f3b2f792cbcbfeddea892527e02d4c2"/></dir><dir name="Filter"><file name="Date.php" hash="5e4a78a6346f1bad02568591a8f22ffc"/><file name="Datetime.php" hash="b959e710b5444364e1c289118305fa20"/><file name="Escapehtml.php" hash="9b45defc86b0a40e6b01e815b776c64c"/><file name="Interface.php" hash="7f80d12ed17a0e59e9fda5e597832898"/><file name="Striptags.php" hash="155804951f94a18cf1ce080a31ad231f"/></dir></dir><file name="Form.php" hash="c763be17e07293924af068a9d6f5b2cc"/><dir name="Tree"><file name="Db.php" hash="b3511f3bba2c4cb3b48b5c06b2f61962"/><file name="Dbp.php" hash="52a556c1c672cf1b6edd74f7f8a1c22f"/><dir name="Node"><file name="Collection.php" hash="2eba70122d32e195945d0608546eefb7"/></dir><file name="Node.php" hash="247635d415b01075f976de73477628ca"/></dir><file name="Tree.php" hash="65ad695cdb2d44624e3f8a6d4bded2fc"/></dir><file name="Date.php" hash="cf75993db21737871d847c40cf69eabd"/><dir name="Db"><dir name="Adapter"><file name="Interface.php" hash="20618cca9ec0970359a758a7bb19aa1d"/><file name="Mysqli.php" hash="34bfba6a62779cc52afa45d94e4204b0"/><dir name="Pdo"><file name="Mysql.php" hash="c2b2d1b45a815dbdeac53c14c83a976c"/></dir></dir><dir name="Ddl"><file name="Table.php" hash="4ea54d6f0da26b7b3ebdf53a22bce157"/></dir><file name="Exception.php" hash="459a3ba64822195d1716394b0666c6ef"/><file name="Helper.php" hash="068814d81e6d2c10fb02abfd075f9732"/><file name="Select.php" hash="cae369c5e0ace008e64c4eef0742eec9"/><dir name="Statement"><file name="Parameter.php" hash="3c876a17bbdb2fa8285e3a2c931b29a2"/><dir name="Pdo"><file name="Mysql.php" hash="989ef975be060d75bcfb56b88d8b5dc4"/></dir></dir><dir name="Tree"><file name="Exception.php" hash="d9a2ded99bd0a0f48c30ea373b053d2e"/><dir name="Node"><file name="Exception.php" hash="e0a051b9da1620549cbf001ccd08b46b"/></dir><file name="Node.php" hash="1181ffb30d23bad0abdb2a00760c6b5c"/><dir name="NodeSet"><file name="Exception.php" hash="464e6f22c47148e847a7d70635b03e9d"/></dir><file name="NodeSet.php" hash="5d94f8d55e6a85e9d1843b4b4ab0f523"/></dir><file name="Tree.php" hash="0224ac5093e6e20a894ef8598c642962"/></dir><file name="Debug.php" hash="1fe7210f700b50eefa42d72107d5c77d"/><dir name="Directory"><file name="Collection.php" hash="55fa81e35a94e276dd58b80f616c4b3b"/><file name="Factory.php" hash="fd3cc7bede04563dcf240465be02b114"/><file name="IFactory.php" hash="462a88798efd2980a110f5d5bcd0cf91"/><file name="a.txt" hash="026e450c46ac92ea375302955a4f42fb"/></dir><dir name="Event"><file name="Collection.php" hash="6e3aa26a760229de731e5deb7586271e"/><dir name="Observer"><file name="Collection.php" hash="5b75ddd0cdf40e3c7ebdc6caef6b49fc"/><file name="Cron.php" hash="dbc005bcbf59d24766b22fe0e1ea7ec2"/><file name="Regex.php" hash="e8b73dd83e6a0181a3b902ce670d33f8"/></dir><file name="Observer.php" hash="529a4e7a186686946161acb751d80088"/></dir><file name="Event.php" hash="bde863ce12014af6d26891917313471c"/><file name="Exception.php" hash="80e9a22385477d5410f3493eafcda326"/><dir name="File"><file name="Csv.php" hash="f3879e8a8d0ece43bd1ed82a97f6fa78"/><file name="CsvMulty.php" hash="4370e09d0fea88df8079096fe6c89c2f"/><file name="Object.php" hash="81831a7af12515faf48db2064dd2b700"/><dir name="Transfer"><dir name="Adapter"><file name="Http.php" hash="0f2df4d6d534bfc4fd1ba35cdcabf425"/></dir></dir><dir name="Uploader"><file name="Image.php" hash="e4476d02c53e4b932132f90511eb33eb"/></dir><file name="Uploader.php" hash="29bd46737e32230216c90b3fa7b9d81f"/></dir><dir name="Filter"><dir name="Array"><file name="Grid.php" hash="3a1e7d366046fbb806f4df65b5d43bce"/></dir><file name="Array.php" hash="ee2c63311116db215a17d5c6a6d53ea8"/><file name="Email.php" hash="ef31a8b4a24efef65f233c5cbc469d48"/><file name="Money.php" hash="fcfbf636218ac3b9175d743ab601712d"/><dir name="Object"><file name="Grid.php" hash="b905567ede56769d4af9642ea77361b4"/></dir><file name="Object.php" hash="226c84edc99ad7c95ae89fabb0625ed4"/><file name="Sprintf.php" hash="6c534392c58d387ff09e88bd272d4d11"/><dir name="Template"><file name="Simple.php" hash="224e0e605a0ca3ddcb4d1c04d6de3a4f"/><dir name="Tokenizer"><file name="Abstract.php" hash="1553cf9ad676e024bd50e68998d5c2f3"/><file name="Parameter.php" hash="a71db1a7a12e505409a8eb396b4fac53"/><file name="Variable.php" hash="6db874de901ba51215acc834251ac7d6"/></dir></dir><file name="Template.php" hash="d35924fef8fb2015af97cdf93ce942af"/></dir><dir name="Http"><dir name="Adapter"><file name="Curl.php" hash="967d7ebda9ca4407578663bd56d91e30"/></dir><file name="Client.php" hash="8e8c9badb27cf839870c9cac33256522"/></dir><dir name="Image"><dir name="Adapter"><file name="Abstract.php" hash="95fa6f5dcbfe5e14505f62f32eaac03d"/><file name="Gd2.php" hash="daf9a5a37ab1718d297a9d26be7687f2"/></dir><file name="Adapter.php" hash="6ee7421d63c8ce983b29087be640a3f1"/></dir><file name="Image.php" hash="f22e05f3df7c6daa13daa5ecd4284fa1"/><dir name="Io"><file name="Abstract.php" hash="f452d74122309888e459dec9ce357f6c"/><file name="Exception.php" hash="cdd1b92cc59bac44bb83cac2d270b27f"/><file name="File.php" hash="64d1d903e62b3cb13615a67f9f2ad9b1"/><file name="Ftp.php" hash="4234722492e84b962c1936a4b3fe9467"/><file name="Interface.php" hash="f9fbf2011c2d76bfce45ed2eb11b0fc3"/><file name="Sftp.php" hash="38e78f345ab1699c60209276f36bdce7"/></dir><dir name="Object"><file name="Cache.php" hash="6ee96c531c7ed6abebe6e088f083269e"/><file name="Mapper.php" hash="e01cd2fc8ce04f2301ae5272eb0eb8fe"/></dir><file name="Object.php" hash="a73a915543d26fbb8ec8d5bfad926813"/><dir name="Pear"><file name="Frontend.php" hash="2a364509ecb3509d88b394f2ff8e379c"/><file name="Package.php" hash="00d889cdae532e40bf231a6dc49f43a2"/><file name="Registry.php" hash="20f14ad14bc6e5ff404ef919e9e03ad9"/></dir><file name="Pear.php" hash="989e1140ba8cb691a6eb29ec6ca14e4e"/><file name="Profiler.php" hash="8f0833c09792a44cf4cec3c4ca1ab83e"/><dir name="Simplexml"><dir name="Config"><dir name="Cache"><file name="Abstract.php" hash="2d903ac5990d3adb281ea817f683a2b1"/><file name="File.php" hash="99fe5b7935433870674d6244f4f24996"/></dir></dir><file name="Config.php" hash="59765741a00934da08bb2acfeae3e95d"/><file name="Element.php" hash="3af48d7f8053cc49d7f52b6b00aec648"/></dir></dir></target></contents>
16
  <compatible/>
17
- <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><package><name>Lib_ZF</name><channel>community</channel><min>1.12.7.0</min><max>1.12.7.0</max></package><extension><name>PDO</name><min/><max/></extension><extension><name>SPL</name><min/><max/></extension><extension><name>curl</name><min/><max/></extension><extension><name>SimpleXML</name><min/><max/></extension><extension><name>dom</name><min/><max/></extension><extension><name>gd</name><min/><max/></extension><extension><name>iconv</name><min/><max/></extension><extension><name>pdo_mysql</name><min/><max/></extension><extension><name>mcrypt</name><min/><max/></extension><extension><name>pcre</name><min/><max/></extension><extension><name>Reflection</name><min/><max/></extension><extension><name>session</name><min/><max/></extension></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Lib_Varien</name>
4
+ <version>1.9.2.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Varien Library</summary>
10
  <description>Varien Library</description>
11
+ <notes>1.9.2.0</notes>
12
  <authors><author><name>Magento Core Team</name><user>core</user><email>core@magentocommerce.com</email></author></authors>
13
+ <date>2015-06-26</date>
14
+ <time>13:48:53</time>
15
+ <contents><target name="magelib"><dir name="Varien"><file name="Autoload.php" hash="dc766f666b682fe85691c496d2b1ce7c"/><dir name="Cache"><dir name="Backend"><file name="Database.php" hash="20e586bd013bb7cb436e0ac02186e49d"/><file name="Eaccelerator.php" hash="aa8840e2fff1ea84b643931feb7e89a0"/><file name="Memcached.php" hash="a602dda3f1a951ac779ec567b10d022e"/></dir><file name="Core.php" hash="afe76b8b6f0a641e420369a11da19a53"/></dir><dir name="Convert"><dir name="Action"><file name="Abstract.php" hash="b0748e1973155e3358471318dd690f54"/><file name="Interface.php" hash="b872ae40e0fe7a6a293cc9c2f0ecf8fb"/></dir><file name="Action.php" hash="f84e93e12575d66637c719a5ace10048"/><dir name="Adapter"><file name="Abstract.php" hash="c1b5d3898623903decab5b357f3042fb"/><dir name="Db"><file name="Table.php" hash="98fde56f12db1913f48130d3815766c5"/></dir><dir name="Http"><file name="Curl.php" hash="e9862db1732ae6976320e03fb31bbbd4"/></dir><file name="Http.php" hash="e54efc7a0a96aa888fcd186246493376"/><file name="Interface.php" hash="2f274fc1f48fffa9c671e1137be8aa74"/><file name="Io.php" hash="3d6b294c17c0ec1aa008d04a0a4d7241"/><file name="Soap.php" hash="c8562680e671f55ad1bd52aa5458fbe0"/><file name="Std.php" hash="155af022ca5a37f5635a364550af868a"/><dir name="Zend"><file name="Cache.php" hash="ea07c530e19a4007416be5c8d30f0ebe"/><file name="Db.php" hash="ed8c973b6f73239a8827467907c526e5"/></dir></dir><dir name="Container"><file name="Abstract.php" hash="9951bcccf153f812574291802cc3c16b"/><file name="Collection.php" hash="db70f8aa7534eff8fae7294bd8697d03"/><file name="Generic.php" hash="1335a7ba43def19bc79e6d0e9c842f36"/><file name="Interface.php" hash="98dd1b9d1207127e120fe52a0a3b3488"/></dir><file name="Exception.php" hash="002048d6913a53d76e5eab3defb90cac"/><dir name="Mapper"><file name="Abstract.php" hash="db499970eb5428470d8f229ba57aca02"/><file name="Column.php" hash="7e62b7cff2fe33358bb91fa3df41d2e8"/><file name="Interface.php" hash="603d0788e329635024810f928b49fa4f"/></dir><dir name="Parser"><file name="Abstract.php" hash="cc1941daffcd4b9cce0a86ee5d7ab471"/><file name="Csv.php" hash="7d0d9ee5d331615f1b8265501f9be71e"/><file name="Interface.php" hash="a616758d6ddab992ca89d38f00fdc76d"/><file name="Serialize.php" hash="8b41217392591f2c15c44a613e4e9ae9"/><dir name="Xml"><file name="Excel.php" hash="fa2359e440f0b3d70751d23fd299f8d8"/></dir></dir><dir name="Profile"><file name="Abstract.php" hash="3b1b884474c7947b812ed99e5eecf990"/><file name="Collection.php" hash="bdb09b51f16897f5254edc076ffce681"/></dir><file name="Profile.php" hash="96fab155f31ec5ef3e7b4bdf9248b2b8"/><dir name="Validator"><file name="Abstract.php" hash="5ee13d15f5c1d20a69e60f2a5c9d635d"/><file name="Column.php" hash="96de1db93ae007be456f1f56e88a9939"/><file name="Dryrun.php" hash="e43002dc3a8025dfcabf13f0a485965e"/><file name="Interface.php" hash="f54198b10cd39596a831e0e78c56dc11"/></dir></dir><file name="Convert.php" hash="d56a14d6636dd1ee7f6f1a81b384f2f5"/><dir name="Crypt"><file name="Abstract.php" hash="3867789b8516cda284a8f6177adb22d1"/><file name="Mcrypt.php" hash="3022218cb5206a5f95db75a78e7c7527"/></dir><file name="Crypt.php" hash="7372f5e6f7d7b96f0181f13834e56f4b"/><dir name="Data"><dir name="Collection"><file name="Db.php" hash="8b18a93b1f8b43c8e5f333a283fff495"/><file name="Filesystem.php" hash="40661586b77407a71ee1f756e5553adb"/></dir><file name="Collection.php" hash="6d5170bb9dbec7a7ee864dd973e0d500"/><dir name="Form"><file name="Abstract.php" hash="864c5ddad40817e65f8188390c33eb15"/><dir name="Element"><file name="Abstract.php" hash="b484d100f5693cd4e912c9ca93857603"/><file name="Button.php" hash="57ebd4aeb6f96fdf6e08f864a134729d"/><file name="Checkbox.php" hash="0a0e8a35e7f4a71b264747685d00f122"/><file name="Checkboxes.php" hash="ec5ca55d06b8aab1f9e9a224b38a0e94"/><file name="Collection.php" hash="115eeeed84dbcf8f43c6ca92f4339eb7"/><file name="Column.php" hash="541d994eaee258e5ebbc458628ade2c3"/><file name="Date.php" hash="855de0485c028fd315d47b35b0c6a8be"/><file name="Datetime.php" hash="72ed0fdbe0770cc967232aef07c90e80"/><file name="Editor.php" hash="f536ae5cab23ed5dfaba6fffcacee69d"/><file name="Fieldset.php" hash="3c8946dd8ec889719376ab59a346da4f"/><file name="File.php" hash="a95837ceeea1be891a7f55b198585c2b"/><file name="Gallery.php" hash="ba27a76f65df878bf55565ac75de8f17"/><file name="Hidden.php" hash="fd70cf5f1a27d969578de0ffef5f0a38"/><file name="Image.php" hash="1fecc228200ce23a307f4ff95511ee36"/><file name="Imagefile.php" hash="ced6ccd0ee7a48d60887dab8d2f4e5a5"/><file name="Label.php" hash="d1cc044aa76571e90848aa69db749285"/><file name="Link.php" hash="4ac31ec26330bbef008e5917e2cec619"/><file name="Multiline.php" hash="5ad29f476881912bc6d21445133ceafd"/><file name="Multiselect.php" hash="e51e5a49c816b0da1ab61adfa9e11a5e"/><file name="Note.php" hash="b599a56b74f6e851b61d9d529621907c"/><file name="Obscure.php" hash="1ec4d2b87a537698932a60f0a1c26364"/><file name="Password.php" hash="7e78125059c1d8ee405ba946e3779e62"/><file name="Radio.php" hash="14d9ac8df9b00d3061c9c0528dcb8f05"/><file name="Radios.php" hash="142d3afe02f03f40b0b2cff371135d64"/><dir name="Renderer"><file name="Interface.php" hash="1333c6ebb3e531ce1cc62880a76df176"/></dir><file name="Reset.php" hash="cfaa070a01ff533534c93e40cb8a8a50"/><file name="Select.php" hash="4cfded15810a229390ccde56370848bc"/><file name="Submit.php" hash="d873762f62e3acc9a89ee48ba0ea5c04"/><file name="Text.php" hash="4f52cc4fbb36a0fff6ce4df87cf02839"/><file name="Textarea.php" hash="67a4950f867a996bed2b5e1ec6f8f909"/><file name="Time.php" hash="3f3b2f792cbcbfeddea892527e02d4c2"/></dir><dir name="Filter"><file name="Date.php" hash="5e4a78a6346f1bad02568591a8f22ffc"/><file name="Datetime.php" hash="b959e710b5444364e1c289118305fa20"/><file name="Escapehtml.php" hash="9b45defc86b0a40e6b01e815b776c64c"/><file name="Interface.php" hash="7f80d12ed17a0e59e9fda5e597832898"/><file name="Striptags.php" hash="155804951f94a18cf1ce080a31ad231f"/></dir></dir><file name="Form.php" hash="c763be17e07293924af068a9d6f5b2cc"/><dir name="Tree"><file name="Db.php" hash="b3511f3bba2c4cb3b48b5c06b2f61962"/><file name="Dbp.php" hash="52a556c1c672cf1b6edd74f7f8a1c22f"/><dir name="Node"><file name="Collection.php" hash="2eba70122d32e195945d0608546eefb7"/></dir><file name="Node.php" hash="247635d415b01075f976de73477628ca"/></dir><file name="Tree.php" hash="65ad695cdb2d44624e3f8a6d4bded2fc"/></dir><file name="Date.php" hash="cf75993db21737871d847c40cf69eabd"/><dir name="Db"><dir name="Adapter"><file name="Interface.php" hash="20618cca9ec0970359a758a7bb19aa1d"/><file name="Mysqli.php" hash="34bfba6a62779cc52afa45d94e4204b0"/><dir name="Pdo"><file name="Mysql.php" hash="9306a10cb16b5f4fcaa2a18dac0bd31a"/></dir></dir><dir name="Ddl"><file name="Table.php" hash="4ea54d6f0da26b7b3ebdf53a22bce157"/></dir><file name="Exception.php" hash="459a3ba64822195d1716394b0666c6ef"/><file name="Helper.php" hash="068814d81e6d2c10fb02abfd075f9732"/><file name="Select.php" hash="cae369c5e0ace008e64c4eef0742eec9"/><dir name="Statement"><file name="Parameter.php" hash="3c876a17bbdb2fa8285e3a2c931b29a2"/><dir name="Pdo"><file name="Mysql.php" hash="989ef975be060d75bcfb56b88d8b5dc4"/></dir></dir><dir name="Tree"><file name="Exception.php" hash="d9a2ded99bd0a0f48c30ea373b053d2e"/><dir name="Node"><file name="Exception.php" hash="e0a051b9da1620549cbf001ccd08b46b"/></dir><file name="Node.php" hash="1181ffb30d23bad0abdb2a00760c6b5c"/><dir name="NodeSet"><file name="Exception.php" hash="464e6f22c47148e847a7d70635b03e9d"/></dir><file name="NodeSet.php" hash="5d94f8d55e6a85e9d1843b4b4ab0f523"/></dir><file name="Tree.php" hash="0224ac5093e6e20a894ef8598c642962"/></dir><file name="Debug.php" hash="1fe7210f700b50eefa42d72107d5c77d"/><dir name="Directory"><file name="Collection.php" hash="55fa81e35a94e276dd58b80f616c4b3b"/><file name="Factory.php" hash="fd3cc7bede04563dcf240465be02b114"/><file name="IFactory.php" hash="462a88798efd2980a110f5d5bcd0cf91"/><file name="a.txt" hash="026e450c46ac92ea375302955a4f42fb"/></dir><dir name="Event"><file name="Collection.php" hash="6e3aa26a760229de731e5deb7586271e"/><dir name="Observer"><file name="Collection.php" hash="5b75ddd0cdf40e3c7ebdc6caef6b49fc"/><file name="Cron.php" hash="dbc005bcbf59d24766b22fe0e1ea7ec2"/><file name="Regex.php" hash="e8b73dd83e6a0181a3b902ce670d33f8"/></dir><file name="Observer.php" hash="529a4e7a186686946161acb751d80088"/></dir><file name="Event.php" hash="bde863ce12014af6d26891917313471c"/><file name="Exception.php" hash="80e9a22385477d5410f3493eafcda326"/><dir name="File"><file name="Csv.php" hash="f3879e8a8d0ece43bd1ed82a97f6fa78"/><file name="CsvMulty.php" hash="4370e09d0fea88df8079096fe6c89c2f"/><file name="Object.php" hash="81831a7af12515faf48db2064dd2b700"/><dir name="Transfer"><dir name="Adapter"><file name="Http.php" hash="0f2df4d6d534bfc4fd1ba35cdcabf425"/></dir></dir><dir name="Uploader"><file name="Image.php" hash="e1a33ce7c7f42c92ff7a1afb4dc85440"/></dir><file name="Uploader.php" hash="29bd46737e32230216c90b3fa7b9d81f"/></dir><dir name="Filter"><dir name="Array"><file name="Grid.php" hash="3a1e7d366046fbb806f4df65b5d43bce"/></dir><file name="Array.php" hash="ee2c63311116db215a17d5c6a6d53ea8"/><file name="Email.php" hash="ef31a8b4a24efef65f233c5cbc469d48"/><file name="Money.php" hash="fcfbf636218ac3b9175d743ab601712d"/><dir name="Object"><file name="Grid.php" hash="b905567ede56769d4af9642ea77361b4"/></dir><file name="Object.php" hash="226c84edc99ad7c95ae89fabb0625ed4"/><file name="Sprintf.php" hash="6c534392c58d387ff09e88bd272d4d11"/><dir name="Template"><file name="Simple.php" hash="57d6179c99972f24b272bad6987a2969"/><dir name="Tokenizer"><file name="Abstract.php" hash="1553cf9ad676e024bd50e68998d5c2f3"/><file name="Parameter.php" hash="a71db1a7a12e505409a8eb396b4fac53"/><file name="Variable.php" hash="6db874de901ba51215acc834251ac7d6"/></dir></dir><file name="Template.php" hash="d35924fef8fb2015af97cdf93ce942af"/></dir><dir name="Http"><dir name="Adapter"><file name="Curl.php" hash="967d7ebda9ca4407578663bd56d91e30"/></dir><file name="Client.php" hash="8e8c9badb27cf839870c9cac33256522"/></dir><dir name="Image"><dir name="Adapter"><file name="Abstract.php" hash="95fa6f5dcbfe5e14505f62f32eaac03d"/><file name="Gd2.php" hash="1d4e06ea2d76031e5083ff766d06d98a"/></dir><file name="Adapter.php" hash="6ee7421d63c8ce983b29087be640a3f1"/></dir><file name="Image.php" hash="f22e05f3df7c6daa13daa5ecd4284fa1"/><dir name="Io"><file name="Abstract.php" hash="f452d74122309888e459dec9ce357f6c"/><file name="Exception.php" hash="cdd1b92cc59bac44bb83cac2d270b27f"/><file name="File.php" hash="73ca38dbf70b9142a84a68d4cb604366"/><file name="Ftp.php" hash="4234722492e84b962c1936a4b3fe9467"/><file name="Interface.php" hash="f9fbf2011c2d76bfce45ed2eb11b0fc3"/><file name="Sftp.php" hash="38e78f345ab1699c60209276f36bdce7"/></dir><dir name="Object"><file name="Cache.php" hash="6ee96c531c7ed6abebe6e088f083269e"/><file name="Mapper.php" hash="e01cd2fc8ce04f2301ae5272eb0eb8fe"/></dir><file name="Object.php" hash="a73a915543d26fbb8ec8d5bfad926813"/><dir name="Pear"><file name="Frontend.php" hash="2a364509ecb3509d88b394f2ff8e379c"/><file name="Package.php" hash="00d889cdae532e40bf231a6dc49f43a2"/><file name="Registry.php" hash="20f14ad14bc6e5ff404ef919e9e03ad9"/></dir><file name="Pear.php" hash="989e1140ba8cb691a6eb29ec6ca14e4e"/><file name="Profiler.php" hash="8f0833c09792a44cf4cec3c4ca1ab83e"/><dir name="Simplexml"><dir name="Config"><dir name="Cache"><file name="Abstract.php" hash="2d903ac5990d3adb281ea817f683a2b1"/><file name="File.php" hash="99fe5b7935433870674d6244f4f24996"/></dir></dir><file name="Config.php" hash="59765741a00934da08bb2acfeae3e95d"/><file name="Element.php" hash="3af48d7f8053cc49d7f52b6b00aec648"/></dir></dir></target></contents>
16
  <compatible/>
17
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><package><name>Lib_ZF</name><channel>community</channel><min>1.12.10.0</min><max>1.12.10.0</max></package><extension><name>PDO</name><min></min><max></max></extension><extension><name>SPL</name><min></min><max></max></extension><extension><name>curl</name><min></min><max></max></extension><extension><name>SimpleXML</name><min></min><max></max></extension><extension><name>dom</name><min></min><max></max></extension><extension><name>gd</name><min></min><max></max></extension><extension><name>iconv</name><min></min><max></max></extension><extension><name>pdo_mysql</name><min></min><max></max></extension><extension><name>mcrypt</name><min></min><max></max></extension><extension><name>pcre</name><min></min><max></max></extension><extension><name>Reflection</name><min></min><max></max></extension><extension><name>session</name><min></min><max></max></extension></required></dependencies>
18
  </package>