PageRenderTime 38ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/app/code/core/Mage/DesignEditor/Model/History/Compact.php

https://bitbucket.org/sunil_nextbits/magento2
PHP | 95 lines | 32 code | 8 blank | 55 comment | 3 complexity | 1cc61371f5ac6116a9d8a2f5cbcaeb18 MD5 | raw file
  1. <?php
  2. /**
  3. * Magento
  4. *
  5. * NOTICE OF LICENSE
  6. *
  7. * This source file is subject to the Open Software License (OSL 3.0)
  8. * that is bundled with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://opensource.org/licenses/osl-3.0.php
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@magentocommerce.com so we can send you a copy immediately.
  14. *
  15. * DISCLAIMER
  16. *
  17. * Do not edit or add to this file if you wish to upgrade Magento to newer
  18. * versions in the future. If you wish to customize Magento for your
  19. * needs please refer to http://www.magentocommerce.com for more information.
  20. *
  21. * @category Mage
  22. * @package Mage_DesignEditor
  23. * @copyright Copyright (c) 2012 X.commerce, Inc. (http://www.magentocommerce.com)
  24. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  25. */
  26. /**
  27. * History compaction model
  28. */
  29. class Mage_DesignEditor_Model_History_Compact
  30. {
  31. /**
  32. * Configuration for compact model
  33. *
  34. * @var array
  35. */
  36. protected $_config = array('Mage_DesignEditor_Model_History_Compact_Layout');
  37. /**
  38. * Storage of compact strategies
  39. *
  40. * @var array
  41. */
  42. protected $_compactModels = array();
  43. /**
  44. * Compact collection of changes
  45. *
  46. * @param Mage_DesignEditor_Model_Change_Collection $collection
  47. * @throws Mage_Core_Exception
  48. * @return Mage_DesignEditor_Model_History_Compact
  49. */
  50. public function compact(Mage_DesignEditor_Model_Change_Collection $collection)
  51. {
  52. $itemType = $collection->getItemClass();
  53. if (!$itemType == 'Mage_DesignEditor_Model_ChangeAbstract') {
  54. Mage::throwException(
  55. Mage::helper('Mage_DesignEditor_Helper_Data')->__('Invalid collection items\' type "%s"', $itemType)
  56. );
  57. }
  58. /** @var $model Mage_DesignEditor_Model_History_CompactInterface */
  59. foreach ($this->_getCompactModels() as $model) {
  60. $model->compact($collection);
  61. }
  62. return $this;
  63. }
  64. /**
  65. * Get compaction strategies array ordered to minimize performance impact
  66. *
  67. * @return array
  68. */
  69. protected function _getCompactModels()
  70. {
  71. if (!$this->_compactModels) {
  72. foreach ($this->_getConfig() as $class) {
  73. $this->_compactModels[] = Mage::getModel($class);
  74. }
  75. }
  76. return $this->_compactModels;
  77. }
  78. /**
  79. * Get configuration for compact
  80. *
  81. * @return array
  82. */
  83. protected function _getConfig()
  84. {
  85. return $this->_config;
  86. }
  87. }