/** * Compact collection of changes * * @param Mage_DesignEditor_Model_Change_Collection $collection * @throws Mage_Core_Exception * @return Mage_DesignEditor_Model_History_Compact */ public function compact(Mage_DesignEditor_Model_Change_Collection $collection) { $itemType = $collection->getItemClass(); if (!$itemType == 'Mage_DesignEditor_Model_ChangeAbstract') { Mage::throwException(Mage::helper('Mage_DesignEditor_Helper_Data')->__('Invalid collection items\' type "%s"', $itemType)); } /** @var $model Mage_DesignEditor_Model_History_CompactInterface */ foreach ($this->_getCompactModels() as $model) { $model->compact($collection); } return $this; }
/** * Add change to internal collection * * @param Mage_DesignEditor_Model_ChangeAbstract|Varien_Object|array $item * @return Mage_DesignEditor_Model_History */ public function addChange($item) { $baseChangeClass = self::BASE_CHANGE_CLASS; if (!$item instanceof $baseChangeClass) { $item = $this->_getChangeItem($item); } $this->_collection->addItem($item); return $this; }
/** * Get Layout update out of collection of changes * * @param Mage_DesignEditor_Model_Change_Collection $collection * @param string|null $handle * @return string */ public function render(Mage_DesignEditor_Model_Change_Collection $collection, $handle = null) { $element = new Varien_Simplexml_Element($this->_getInitialXml()); foreach ($collection as $item) { if ($item instanceof Mage_DesignEditor_Model_Change_LayoutAbstract) { $this->_render($element, $item); } } if ($handle && $collection->count() > 0) { $layoutUpdate = ''; $element = $element->{$handle}; /** @var $node Varien_Simplexml_Element */ foreach ($element->children() as $node) { $layoutUpdate .= $node->asNiceXml(); } } else { $layoutUpdate = $element->asNiceXml(); } return $layoutUpdate; }
/** * Test toArray method * * @covers Mage_DesignEditor_Model_Change_Collection::toArray */ public function testToArray() { $this->assertInternalType('array', $this->_model->toArray()); }