/** * 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); }
/** * 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; }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * @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; }
/** * 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; }
/** * 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); }
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); }
/** * 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; }
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); }
/** * 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; }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }