Exemplo n.º 1
0
 /**
  * Perform actions after object save
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Eav_Model_Resource_Entity_Attribute_Set
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if ($object->getGroups()) {
         /* @var $group Mage_Eav_Model_Entity_Attribute_Group */
         foreach ($object->getGroups() as $group) {
             $group->setAttributeSetId($object->getId());
             if ($group->itemExists() && !$group->getId()) {
                 continue;
             }
             $group->save();
         }
     }
     if ($object->getRemoveGroups()) {
         foreach ($object->getRemoveGroups() as $group) {
             /* @var $group Mage_Eav_Model_Entity_Attribute_Group */
             $group->delete();
         }
         Mage::getResourceModel('eav/entity_attribute_group')->updateDefaultGroup($object->getId());
     }
     if ($object->getRemoveAttributes()) {
         foreach ($object->getRemoveAttributes() as $attribute) {
             /* @var $attribute Mage_Eav_Model_Entity_Attribute */
             $attribute->deleteEntity();
         }
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 2
0
 /**
  * Update Store Group data after save store
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Store
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     parent::_afterSave($object);
     $this->_updateGroupDefaultStore($object->getGroupId(), $object->getId());
     $this->_changeGroup($object);
     return $this;
 }
Exemplo n.º 3
0
 /**
  * Update a "layout update link" if relevant data is provided
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Layout
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $data = $object->getData();
     if (isset($data['store_id']) && isset($data['area']) && isset($data['package']) && isset($data['theme'])) {
         $this->_getWriteAdapter()->insertOnDuplicate($this->getTable('core_layout_link'), array('store_id' => $data['store_id'], 'area' => $data['area'], 'package' => $data['package'], 'theme' => $data['theme'], 'layout_update_id' => $object->getId()));
     }
     return parent::_afterSave($object);
 }
 /**
  * Assign shipping rule to store views and linking rules
  *
  * @param Mage_Core_Model_Abstract $object
  *
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $this->_addLinkStores($object);
     if ($object->hasCustomMethodRules()) {
         $rules = Mage::helper('adminhtml/js')->decodeGridSerializedInput($object->getCustomMethodRules());
         $this->_addLinkRules($object, $rules);
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 5
0
 /**
  * Processing object after save data
  * Update app_code as Store + Device + 123 (increment).
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $appCode = $object->getCode();
     $isCodePrefixed = $object->isCodePrefixed();
     if (!$isCodePrefixed) {
         $this->_getWriteAdapter()->update($this->getMainTable(), array('code' => $appCode . $object->getId()), $this->_getWriteAdapter()->quoteInto($this->getIdFieldName() . '=?', $object->getId()));
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 6
0
 /**
  * Update a "layout update link" if relevant data is provided
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Layout
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $data = $object->getData();
     if (isset($data['store_id']) && isset($data['area']) && isset($data['package']) && isset($data['theme'])) {
         $this->_getWriteAdapter()->insertOnDuplicate($this->getTable('core_layout_link'), array('store_id' => $data['store_id'], 'area' => $data['area'], 'package' => $data['package'], 'theme' => $data['theme'], 'layout_update_id' => $object->getId()));
     }
     Mage::app()->cleanCache(array('layout', Mage_Core_Model_Layout_Merge::LAYOUT_GENERAL_CACHE_TAG));
     return parent::_afterSave($object);
 }
Exemplo n.º 7
0
 /**
  * Perform actions after object save
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Website
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if ($object->getIsDefault()) {
         $this->_getWriteAdapter()->update($this->getMainTable(), array('is_default' => 0));
         $where = array('website_id = ?' => $object->getId());
         $this->_getWriteAdapter()->update($this->getMainTable(), array('is_default' => 1), $where);
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 8
0
 /**
  * Perform actions after object save
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if ($object->getAttributes()) {
         foreach ($object->getAttributes() as $attribute) {
             $attribute->setAttributeGroupId($object->getId());
             $attribute->save();
         }
     }
     return parent::_afterSave($object);
 }
 /**
  * Method to run after save
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $condition = array('agreement_id = ?' => $object->getId());
     $this->_getWriteAdapter()->delete($this->getTable('checkout/agreement_store'), $condition);
     foreach ((array) $object->getData('stores') as $store) {
         $storeArray = array();
         $storeArray['agreement_id'] = $object->getId();
         $storeArray['store_id'] = $store;
         $this->_getWriteAdapter()->insert($this->getTable('checkout/agreement_store'), $storeArray);
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 10
0
 /**
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $condition = $this->_getWriteAdapter()->quoteInto('slider_id = ?', $object->getId());
     $this->_getWriteAdapter()->delete($this->getTable('slider/slider_store'), $condition);
     foreach ((array) $object->getData('stores') as $store) {
         $storeArray = array();
         $storeArray['slider_id'] = $object->getId();
         $storeArray['store_id'] = $store;
         $this->_getWriteAdapter()->insert($this->getTable('slider/slider_store'), $storeArray);
     }
     return parent::_afterSave($object);
 }
 /**
  * Prepare system report data to be saved
  *
  * @param Mage_Core_Model_Abstract $object
  *
  * @return Enterprise_Support_Model_Resource_Sysreport
  */
 protected function _beforeSave(Mage_Core_Model_Abstract $object)
 {
     $object->setClientHost($this->getTool()->getClientHost());
     $object->setReportVersion($this->getTool()->getVersion());
     $object->setCreatedAt(Mage::getSingleton('core/date')->gmtDate());
     $object->setMagentoVersion(Mage::getVersion());
     $types = $object->getReportTypes();
     $flags = $this->_dataHelper->getSysReportCommandsListByReportTypes($types);
     $object->setReportFlags(implode(',', $flags));
     $object->setReportTypes(implode(',', $types));
     $object->setReportData(serialize($object->getReportData()));
     parent::_afterSave($object);
     return $this;
 }
Exemplo n.º 12
0
 /**
  * Perform actions after object save
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Variable
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     parent::_afterSave($object);
     if ($object->getUseDefaultValue()) {
         /*
          * remove store value
          */
         $this->_getWriteAdapter()->delete($this->getTable('core/variable_value'), array('variable_id = ?' => $object->getId(), 'store_id = ?' => $object->getStoreId()));
     } else {
         $data = array('variable_id' => $object->getId(), 'store_id' => $object->getStoreId(), 'plain_value' => $object->getPlainValue(), 'html_value' => $object->getHtmlValue());
         $data = $this->_prepareDataForTable(new Varien_Object($data), $this->getTable('core/variable_value'));
         $this->_getWriteAdapter()->insertOnDuplicate($this->getTable('core/variable_value'), $data, array('plain_value', 'html_value'));
     }
     return $this;
 }
Exemplo n.º 13
0
 /**
  * Save assigned processes
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Index_Model_Resource_Event
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $processIds = $object->getProcessIds();
     if (is_array($processIds)) {
         $processTable = $this->getTable('index/process_event');
         if (empty($processIds)) {
             $this->_getWriteAdapter()->delete($processTable);
         } else {
             foreach ($processIds as $processId => $processStatus) {
                 $data = array('process_id' => $processId, 'event_id' => $object->getId(), 'status' => $processStatus);
                 $this->_getWriteAdapter()->insertOnDuplicate($processTable, $data, array('status'));
             }
         }
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 14
0
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if ($object->hasStoreLabels()) {
         $labels = $object->getStoreLabels();
         $this->_getWriteAdapter()->delete($this->_labelsTable, array('status = ?' => $object->getStatus()));
         $data = array();
         foreach ($labels as $storeId => $label) {
             if (empty($label)) {
                 continue;
             }
             $data[] = array('status' => $object->getStatus(), 'store_id' => $storeId, 'label' => $label);
         }
         if (!empty($data)) {
             $this->_getWriteAdapter()->insertMultiple($this->_labelsTable, $data);
         }
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 15
0
 /**
  * After save process
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Bundle_Model_Resource_Option
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     parent::_afterSave($object);
     $condition = array('option_id = ?' => $object->getId(), 'store_id = ? OR store_id = 0' => $object->getStoreId());
     $write = $this->_getWriteAdapter();
     $write->delete($this->getTable('bundle/option_value'), $condition);
     $data = new Varien_Object();
     $data->setOptionId($object->getId())->setStoreId($object->getStoreId())->setTitle($object->getTitle());
     $write->insert($this->getTable('bundle/option_value'), $data->getData());
     /**
      * also saving default value if this store view scope
      */
     if ($object->getStoreId()) {
         $data->setStoreId(0);
         $data->setTitle($object->getDefaultTitle());
         $write->insert($this->getTable('bundle/option_value'), $data->getData());
     }
     return $this;
 }
Exemplo n.º 16
0
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $oldStores = $this->lookupStoreIds($object->getId());
     $newStores = (array) $object->getStores();
     $table = $this->getTable('themeframework/page_store');
     $insert = array_diff($newStores, $oldStores);
     $delete = array_diff($oldStores, $newStores);
     if ($delete) {
         $where = array('page_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $delete);
         $this->_getWriteAdapter()->delete($table, $where);
     }
     if ($insert) {
         $data = array();
         foreach ($insert as $storeId) {
             $data[] = array('page_id' => (int) $object->getId(), 'store_id' => (int) $storeId);
         }
         $this->_getWriteAdapter()->insertMultiple($table, $data);
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 17
0
 /**
  * Actions after save
  *
  * @param Mage_Rating_Model_Rating $object
  * @return Mage_Rating_Model_Resource_Rating
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     parent::_afterSave($object);
     $adapter = $this->_getWriteAdapter();
     $ratingId = (int) $object->getId();
     if ($object->hasRatingCodes()) {
         $ratingTitleTable = $this->getTable('rating/rating_title');
         $adapter->beginTransaction();
         try {
             $select = $adapter->select()->from($ratingTitleTable, array('store_id', 'value'))->where('rating_id = :rating_id');
             $old = $adapter->fetchPairs($select, array(':rating_id' => $ratingId));
             $new = array_filter(array_map('trim', $object->getRatingCodes()));
             $insert = array_diff_assoc($new, $old);
             $delete = array_diff_assoc($old, $new);
             if (!empty($delete)) {
                 $where = array('rating_id = ?' => $ratingId, 'store_id IN(?)' => array_keys($delete));
                 $adapter->delete($ratingTitleTable, $where);
             }
             if ($insert) {
                 $data = array();
                 foreach ($insert as $storeId => $title) {
                     $data[] = array('rating_id' => $ratingId, 'store_id' => (int) $storeId, 'value' => $title);
                 }
                 if (!empty($data)) {
                     $adapter->insertMultiple($ratingTitleTable, $data);
                 }
             }
             $adapter->commit();
         } catch (Exception $e) {
             Mage::logException($e);
             $adapter->rollBack();
         }
     }
     if ($object->hasStores()) {
         $ratingStoreTable = $this->getTable('rating/rating_store');
         $adapter->beginTransaction();
         try {
             $select = $adapter->select()->from($ratingStoreTable, array('store_id'))->where('rating_id = :rating_id');
             $old = $adapter->fetchCol($select, array(':rating_id' => $ratingId));
             $new = $object->getStores();
             $insert = array_diff($new, $old);
             $delete = array_diff($old, $new);
             if ($delete) {
                 $where = array('rating_id = ?' => $ratingId, 'store_id IN(?)' => $delete);
                 $adapter->delete($ratingStoreTable, $where);
             }
             if ($insert) {
                 $data = array();
                 foreach ($insert as $storeId) {
                     $data[] = array('rating_id' => $ratingId, 'store_id' => (int) $storeId);
                 }
                 $adapter->insertMultiple($ratingStoreTable, $data);
             }
             $adapter->commit();
         } catch (Exception $e) {
             Mage::logException($e);
             $adapter->rollBack();
         }
     }
     return $this;
 }
Exemplo n.º 18
0
 /**
  * After save
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Translate_String
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $adapter = $this->_getWriteAdapter();
     $select = $adapter->select()->from($this->getMainTable(), array('store_id', 'key_id'))->where('string = :string');
     $stores = $adapter->fetchPairs($select, array('string' => $object->getString()));
     $translations = $object->getStoreTranslations();
     if (is_array($translations)) {
         foreach ($translations as $storeId => $translate) {
             if (is_null($translate) || $translate == '') {
                 $where = array('store_id = ?' => $storeId, 'string = ?' => $object->getString());
                 $adapter->delete($this->getMainTable(), $where);
             } else {
                 $data = array('store_id' => $storeId, 'string' => $object->getString(), 'translate' => $translate);
                 if (isset($stores[$storeId])) {
                     $adapter->update($this->getMainTable(), $data, array('key_id = ?' => $stores[$storeId]));
                 } else {
                     $adapter->insert($this->getMainTable(), $data);
                 }
             }
         }
     }
     return parent::_afterSave($object);
 }
 /**
  * Perform action after object is saved - saving data to the eventTable
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $data = array();
     foreach ($object->getStaticTypeIds() as $code) {
         $objectData = $object->getData($code);
         if ($objectData) {
             $data[$code] = $objectData;
         }
     }
     if ($object->getId()) {
         $data['entity_id'] = (int) $object->getId();
         $this->_getWriteAdapter()->insertOnDuplicate($this->_eventTable, $data, array_keys($data));
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 20
0
 /**
  * After model save
  *
  * @param Mage_Core_Model_Abstract $group
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $group)
 {
     $this->_saveGroupUserRelation($group);
     return parent::_afterSave($group);
 }
Exemplo n.º 21
0
 /**
  * Assign page to store views
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Cms_Model_Resource_Page
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $oldStores = $this->lookupStoreIds($object->getId());
     $newStores = (array) $object->getStores();
     if (empty($newStores)) {
         $newStores = (array) $object->getStoreId();
     }
     $table = $this->getTable('cms/page_store');
     $insert = array_diff($newStores, $oldStores);
     $delete = array_diff($oldStores, $newStores);
     if ($delete) {
         $where = array('page_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $delete);
         $this->_getWriteAdapter()->delete($table, $where);
     }
     if ($insert) {
         $data = array();
         foreach ($insert as $storeId) {
             $data[] = array('page_id' => (int) $object->getId(), 'store_id' => (int) $storeId);
         }
         $this->_getWriteAdapter()->insertMultiple($table, $data);
     }
     //Mark layout cache as invalidated
     Mage::app()->getCacheInstance()->invalidateType('layout');
     return parent::_afterSave($object);
 }
Exemplo n.º 22
0
 /**
  * Save options store data
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $this->_saveValuePrices($object);
     $this->_saveValueTitles($object);
     return parent::_afterSave($object);
 }
Exemplo n.º 23
0
 /**
  * Save entity types after save form type
  *
  * @see Mage_Core_Model_Resource_Db_Abstract#_afterSave($object)
  *
  * @param Mage_Eav_Model_Form_Type $object
  * @return Mage_Eav_Model_Resource_Form_Type
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if ($object->hasEntityTypes()) {
         $new = $object->getEntityTypes();
         $old = $this->getEntityTypes($object);
         $insert = array_diff($new, $old);
         $delete = array_diff($old, $new);
         $adapter = $this->_getWriteAdapter();
         if (!empty($insert)) {
             $data = array();
             foreach ($insert as $entityId) {
                 if (empty($entityId)) {
                     continue;
                 }
                 $data[] = array('entity_type_id' => (int) $entityId, 'type_id' => $object->getId());
             }
             if ($data) {
                 $adapter->insertMultiple($this->getTable('eav/form_type_entity'), $data);
             }
         }
         if (!empty($delete)) {
             $where = array('entity_type_id IN (?)' => $delete, 'type_id = ?' => $object->getId());
             $adapter->delete($this->getTable('eav/form_type_entity'), $where);
         }
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 24
0
 /**
  * Process cmspage data after save cmspage object
  *
  * @access protected
  * @param Varien_Object $object
  * @return Ibrams_CmsExtended_Model_Resource_Cmspage
  * @author Ultimate Module Creator
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if (substr($object->getPath(), -1) == '/') {
         $object->setPath($object->getPath() . $object->getId());
         $this->_savePath($object);
     }
     $oldStores = $this->lookupStoreIds($object->getId());
     $newStores = (array) $object->getStores();
     if (empty($newStores)) {
         $newStores = (array) $object->getStoreId();
     }
     $table = $this->getTable('ibrams_cmsextended/cmspage_store');
     $insert = array_diff($newStores, $oldStores);
     $delete = array_diff($oldStores, $newStores);
     if ($delete) {
         $where = array('cmspage_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $delete);
         $this->_getWriteAdapter()->delete($table, $where);
     }
     if ($insert) {
         $data = array();
         foreach ($insert as $storeId) {
             $data[] = array('cmspage_id' => (int) $object->getId(), 'store_id' => (int) $storeId);
         }
         $this->_getWriteAdapter()->insertMultiple($table, $data);
     }
     return parent::_afterSave($object);
 }
 /**
  * Assign page to store views
  *
  * @param Mage_Core_Model_Abstract $object
  *
  * @return Demac_MultiLocationInventory_Model_Resource_Location
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $this->saveStores($object);
     return parent::_afterSave($object);
 }
Exemplo n.º 26
0
 /**
  * Saving tag's base popularity
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Mage_Core_Model_Resource_Db_Abstract
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if (!$object->getStore() || !Mage::app()->getStore()->isAdmin()) {
         return parent::_afterSave($object);
     }
     $tagId = $object->isObjectNew() ? $object->getTagId() : $object->getId();
     $writeAdapter = $this->_getWriteAdapter();
     $writeAdapter->insertOnDuplicate($this->getTable('tag/properties'), array('tag_id' => $tagId, 'store_id' => $object->getStore(), 'base_popularity' => !$object->getBasePopularity() ? 0 : $object->getBasePopularity()));
     return parent::_afterSave($object);
 }
Exemplo n.º 27
0
 /**
  * After save (save labels)
  *
  * @param Mage_Eav_Model_Form_Fieldset $object
  * @return Mage_Eav_Model_Resource_Form_Fieldset
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     if ($object->hasLabels()) {
         $new = $object->getLabels();
         $old = $this->getLabels($object);
         $adapter = $this->_getWriteAdapter();
         $insert = array_diff(array_keys($new), array_keys($old));
         $delete = array_diff(array_keys($old), array_keys($new));
         $update = array();
         foreach ($new as $storeId => $label) {
             if (isset($old[$storeId]) && $old[$storeId] != $label) {
                 $update[$storeId] = $label;
             } elseif (isset($old[$storeId]) && empty($label)) {
                 $delete[] = $storeId;
             }
         }
         if (!empty($insert)) {
             $data = array();
             foreach ($insert as $storeId) {
                 $label = $new[$storeId];
                 if (empty($label)) {
                     continue;
                 }
                 $data[] = array('fieldset_id' => (int) $object->getId(), 'store_id' => (int) $storeId, 'label' => $label);
             }
             if ($data) {
                 $adapter->insertMultiple($this->getTable('eav/form_fieldset_label'), $data);
             }
         }
         if (!empty($delete)) {
             $where = array('fieldset_id = ?' => $object->getId(), 'store_id IN(?)' => $delete);
             $adapter->delete($this->getTable('eav/form_fieldset_label'), $where);
         }
         if (!empty($update)) {
             foreach ($update as $storeId => $label) {
                 $bind = array('label' => $label);
                 $where = array('fieldset_id =?' => $object->getId(), 'store_id =?' => $storeId);
                 $adapter->update($this->getTable('eav/form_fieldset_label'), $bind, $where);
             }
         }
     }
     return parent::_afterSave($object);
 }
Exemplo n.º 28
0
 /**
  * Save additional attribute data after save attribute
  *
  * @param Mage_Eav_Model_Entity_Attribute|Mage_Core_Model_Abstract $object
  * @return Mage_Eav_Model_Resource_Entity_Attribute
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $this->_saveStoreLabels($object)->_saveAdditionalAttributeData($object)->saveInSetIncluding($object)->_saveOption($object);
     return parent::_afterSave($object);
 }
Exemplo n.º 29
0
 /**
  * Process data after save
  *
  * @param Mage_Core_Model_Abstract $object
  * @return Enterprise_Cms_Model_Resource_Page_Revision
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $this->_aggregateVersionData((int) $object->getVersionId());
     return parent::_afterSave($object);
 }
Exemplo n.º 30
0
 /**
  * Perform actions after object save
  *
  * @param Mage_Widget_Model_Widget_Instance $object
  * @return Mage_Widget_Model_Resource_Widget_Instance
  */
 protected function _afterSave(Mage_Core_Model_Abstract $object)
 {
     $pageTable = $this->getTable('widget/widget_instance_page');
     $pageLayoutTable = $this->getTable('widget/widget_instance_page_layout');
     $readAdapter = $this->_getReadAdapter();
     $writeAdapter = $this->_getWriteAdapter();
     $select = $readAdapter->select()->from($pageTable, 'page_id')->where('instance_id = ?', (int) $object->getId());
     $pageIds = $readAdapter->fetchCol($select);
     $removePageIds = array_diff($pageIds, $object->getData('page_group_ids'));
     if (is_array($pageIds) && count($pageIds) > 0) {
         $inCond = $readAdapter->prepareSqlCondition('page_id', array('in' => $pageIds));
         $select = $readAdapter->select()->from($pageLayoutTable, 'layout_update_id')->where($inCond);
         $removeLayoutUpdateIds = $readAdapter->fetchCol($select);
         $writeAdapter->delete($pageLayoutTable, $inCond);
         $this->_deleteLayoutUpdates($removeLayoutUpdateIds);
     }
     $this->_deleteWidgetInstancePages($removePageIds);
     foreach ($object->getData('page_groups') as $pageGroup) {
         $pageLayoutUpdateIds = $this->_saveLayoutUpdates($object, $pageGroup);
         $data = array('page_group' => $pageGroup['group'], 'layout_handle' => $pageGroup['layout_handle'], 'block_reference' => $pageGroup['block_reference'], 'page_for' => $pageGroup['for'], 'entities' => $pageGroup['entities'], 'page_template' => $pageGroup['template']);
         $pageId = $pageGroup['page_id'];
         if (in_array($pageGroup['page_id'], $pageIds)) {
             $writeAdapter->update($pageTable, $data, array('page_id = ?' => (int) $pageId));
         } else {
             $writeAdapter->insert($pageTable, array_merge(array('instance_id' => $object->getId()), $data));
             $pageId = $writeAdapter->lastInsertId($pageTable);
         }
         foreach ($pageLayoutUpdateIds as $layoutUpdateId) {
             $writeAdapter->insert($pageLayoutTable, array('page_id' => $pageId, 'layout_update_id' => $layoutUpdateId));
         }
     }
     return parent::_afterSave($object);
 }