/** * Perform actions after object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { if ($object->getGroups()) { /* @var $group \Magento\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 \Magento\Eav\Model\Entity\Attribute\Group */ $group->delete(); } $this->_attrGroupFactory->create()->updateDefaultGroup($object->getId()); } if ($object->getRemoveAttributes()) { foreach ($object->getRemoveAttributes() as $attribute) { /* @var $attribute \Magento\Eav\Model\Entity\Attribute */ $attribute->deleteEntity(); } } return parent::_afterSave($object); }
/** * Update Store Group data after save store * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { parent::_afterSave($object); $this->_updateGroupDefaultStore($object->getGroupId(), $object->getId()); $this->_changeGroup($object); return $this; }
/** * Perform actions after object save * * @param \Magento\Widget\Model\Widget\Instance $object * @return $this */ protected function _afterSave(AbstractModel $object) { $pageTable = $this->getTable('widget_instance_page'); $pageLayoutTable = $this->getTable('widget_instance_page_layout'); $connection = $this->getConnection(); $select = $connection->select()->from($pageTable, 'page_id')->where('instance_id = ?', (int) $object->getId()); $pageIds = $connection->fetchCol($select); $removePageIds = array_diff($pageIds, $object->getData('page_group_ids')); if (is_array($pageIds) && count($pageIds) > 0) { $inCond = $connection->prepareSqlCondition('page_id', ['in' => $pageIds]); $select = $connection->select()->from($pageLayoutTable, 'layout_update_id')->where($inCond); $removeLayoutUpdateIds = $connection->fetchCol($select); $connection->delete($pageLayoutTable, $inCond); $this->_deleteLayoutUpdates($removeLayoutUpdateIds); } $this->_deleteWidgetInstancePages($removePageIds); foreach ($object->getData('page_groups') as $pageGroup) { $pageLayoutUpdateIds = $this->_saveLayoutUpdates($object, $pageGroup); $data = ['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)) { $connection->update($pageTable, $data, ['page_id = ?' => (int) $pageId]); } else { $connection->insert($pageTable, array_merge(['instance_id' => $object->getId()], $data)); $pageId = $connection->lastInsertId($pageTable); } foreach ($pageLayoutUpdateIds as $layoutUpdateId) { $connection->insert($pageLayoutTable, ['page_id' => $pageId, 'layout_update_id' => $layoutUpdateId]); } } return parent::_afterSave($object); }
/** * Saves thesaurus linking to terms and stores after save * * @SuppressWarnings(PHPMD.CamelCaseMethodName) * * @param \Magento\Framework\Model\AbstractModel $object Thesaurus to save * * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { parent::_afterSave($object); $this->saveStoreRelation($object); $this->saveTermsRelation($object); return $this; }
/** * Method to run after save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $this->getConnection()->delete($this->getTable('checkout_agreement_store'), ['agreement_id = ?' => $object->getId()]); foreach ((array) $object->getData('stores') as $storeId) { $storeArray = ['agreement_id' => $object->getId(), 'store_id' => $storeId]; $this->getConnection()->insert($this->getTable('checkout_agreement_store'), $storeArray); } return parent::_afterSave($object); }
/** * Perform actions after object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { if ($object->getIsDefault()) { $this->getConnection()->update($this->getMainTable(), ['is_default' => 0]); $where = ['website_id = ?' => $object->getId()]; $this->getConnection()->update($this->getMainTable(), ['is_default' => 1], $where); } return parent::_afterSave($object); }
/** * Perform actions after object save * * @param \Magento\Framework\Model\AbstractModel $object * @return \Magento\Framework\Model\ResourceModel\Db\AbstractDb */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { if ($object->getAttributes()) { foreach ($object->getAttributes() as $attribute) { $attribute->setAttributeGroupId($object->getId()); $attribute->save(); } } return parent::_afterSave($object); }
protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { // TODO test it on magento 2.0 // fix for Varien\Db\Adapter\Pdo\Mysql::prepareColumnValue // an empty string cannot be saved -> NULL is saved instead // for Magento version > 1.6.x.x foreach ($object->getData() as $key => $value) { if ($value instanceof \Zend_Db_Expr && $value->__toString() === '\'\'') { $object->setData($key, ''); } } return parent::_afterSave($object); }
protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { parent::_afterSave($object); // now save the package items $this->getConnection()->delete($this->getTable('shipperhq_order_package_items'), ['package_id = ?' => $object->getId()]); foreach ((array) $object->getData('items') as $item) { if (is_object($item)) { $item = (array) $item; } $itemArray = ['package_id' => $object->getId(), 'sku' => $item['sku'], 'weight_packed' => $item['weight_packed'], 'qty_packed' => $item['qty_packed']]; $this->getConnection()->insert($this->getTable('shipperhq_order_package_items'), $itemArray); } return $this; }
/** * Perform actions after object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { parent::_afterSave($object); if ($object->getUseDefaultValue()) { /* * remove store value */ $this->getConnection()->delete($this->getTable('variable_value'), ['variable_id = ?' => $object->getId(), 'store_id = ?' => $object->getStoreId()]); } else { $data = ['variable_id' => $object->getId(), 'store_id' => $object->getStoreId(), 'plain_value' => $object->getPlainValue(), 'html_value' => $object->getHtmlValue()]; $data = $this->_prepareDataForTable(new \Magento\Framework\DataObject($data), $this->getTable('variable_value')); $this->getConnection()->insertOnDuplicate($this->getTable('variable_value'), $data, ['plain_value', 'html_value']); } return $this; }
/** * After save (save labels) * * @param FormFieldset|AbstractModel $object * @return $this * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function _afterSave(AbstractModel $object) { if ($object->hasLabels()) { $new = $object->getLabels(); $old = $this->getLabels($object); $connection = $this->getConnection(); $insert = array_diff(array_keys($new), array_keys($old)); $delete = array_diff(array_keys($old), array_keys($new)); $update = []; 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 = []; foreach ($insert as $storeId) { $label = $new[$storeId]; if (empty($label)) { continue; } $data[] = ['fieldset_id' => (int) $object->getId(), 'store_id' => (int) $storeId, 'label' => $label]; } if ($data) { $connection->insertMultiple($this->getTable('eav_form_fieldset_label'), $data); } } if (!empty($delete)) { $where = ['fieldset_id = ?' => $object->getId(), 'store_id IN(?)' => $delete]; $connection->delete($this->getTable('eav_form_fieldset_label'), $where); } if (!empty($update)) { foreach ($update as $storeId => $label) { $bind = ['label' => $label]; $where = ['fieldset_id =?' => $object->getId(), 'store_id =?' => $storeId]; $connection->update($this->getTable('eav_form_fieldset_label'), $bind, $where); } } } return parent::_afterSave($object); }
/** * After save process * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { parent::_afterSave($object); $condition = ['option_id = ?' => $object->getId(), 'store_id = ? OR store_id = 0' => $object->getStoreId()]; $connection = $this->getConnection(); $connection->delete($this->getTable('catalog_product_bundle_option_value'), $condition); $data = new \Magento\Framework\DataObject(); $data->setOptionId($object->getId())->setStoreId($object->getStoreId())->setTitle($object->getTitle()); $connection->insert($this->getTable('catalog_product_bundle_option_value'), $data->getData()); /** * also saving default value if this store view scope */ if ($object->getStoreId()) { $data->setStoreId(0); $data->setTitle($object->getDefaultTitle()); $connection->insert($this->getTable('catalog_product_bundle_option_value'), $data->getData()); } return $this; }
/** * Perform operations after object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $oldStores = $this->lookupStoreIds($object->getId()); $newStores = (array) $object->getStores(); $table = $this->getTable('swissup_easytabs_store'); $insert = array_diff($newStores, $oldStores); $delete = array_diff($oldStores, $newStores); if ($delete) { $where = ['tab_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $delete]; $this->getConnection()->delete($table, $where); } if ($insert) { $data = []; foreach ($insert as $storeId) { $data[] = ['tab_id' => (int) $object->getId(), 'store_id' => (int) $storeId]; } $this->getConnection()->insertMultiple($table, $data); } return parent::_afterSave($object); }
/** * Assign page to store views * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $oldProductIds = $this->lookupProductIds($object->getId()); $newProductIds = array_filter(array_unique($this->getProductIds($object->getData('product_id')))); $table = $this->getTable('kuzman_product_faq_id'); $insert = array_diff($newProductIds, $oldProductIds); $delete = array_diff($oldProductIds, $newProductIds); if ($delete) { $where = ['question_id = ?' => (int) $object->getId(), 'product_id IN (?)' => $delete]; $this->getConnection()->delete($table, $where); } if ($insert) { $data = []; foreach ($insert as $storeId) { $data[] = ['question_id' => (int) $object->getId(), 'product_id' => (int) $storeId]; } $this->getConnection()->insertMultiple($table, $data); } return parent::_afterSave($object); }
/** * Assign post to store views, categories, related posts, etc. * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $oldIds = $this->lookupStoreIds($object->getId()); $newIds = (array) $object->getStores(); if (empty($newIds)) { $newIds = (array) $object->getStoreId(); } $this->_updateLinks($object, $newIds, $oldIds, 'magefan_blog_post_store', 'store_id'); $newIds = (array) $object->getCategories(); if (is_array($newIds)) { $oldIds = $this->lookupCategoryIds($object->getId()); $this->_updateLinks($object, $newIds, $oldIds, 'magefan_blog_post_category', 'category_id'); } $newIds = $object->getRelatedPostIds(); if (is_array($newIds)) { $oldIds = $this->lookupRelatedPostIds($object->getId()); $this->_updateLinks($object, $newIds, $oldIds, 'magefan_blog_post_relatedpost', 'related_id'); } $newIds = $object->getRelatedProductIds(); if (is_array($newIds)) { $oldIds = $this->lookupRelatedProductIds($object->getId()); $this->_updateLinks($object, $newIds, $oldIds, 'magefan_blog_post_relatedproduct', 'related_id'); } return parent::_afterSave($object); }
/** * Update a "layout update link" if relevant data is provided * * @param \Magento\Widget\Model\Layout\Update|\Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $data = $object->getData(); if (isset($data['store_id']) && isset($data['theme_id'])) { $this->getConnection()->insertOnDuplicate($this->getTable('layout_link'), ['store_id' => $data['store_id'], 'theme_id' => $data['theme_id'], 'layout_update_id' => $object->getId(), 'is_temporary' => (int) $object->getIsTemporary()]); } $this->_cache->clean(); return parent::_afterSave($object); }
/** * Save entity types after save form type * * @see \Magento\Framework\Model\ResourceModel\Db\AbstractDb#_afterSave($object) * * @param FormType|AbstractModel $object * @return $this */ protected function _afterSave(AbstractModel $object) { if ($object->hasEntityTypes()) { $new = $object->getEntityTypes(); $old = $this->getEntityTypes($object); $insert = array_diff($new, $old); $delete = array_diff($old, $new); $connection = $this->getConnection(); if (!empty($insert)) { $data = []; foreach ($insert as $entityId) { if (empty($entityId)) { continue; } $data[] = ['entity_type_id' => (int) $entityId, 'type_id' => $object->getId()]; } if ($data) { $connection->insertMultiple($this->getTable('eav_form_type_entity'), $data); } } if (!empty($delete)) { $where = ['entity_type_id IN (?)' => $delete, 'type_id = ?' => $object->getId()]; $connection->delete($this->getTable('eav_form_type_entity'), $where); } } return parent::_afterSave($object); }
/** * Reindex CatalogInventory save event * * @param AbstractModel $object * @return $this */ protected function _afterSave(AbstractModel $object) { parent::_afterSave($object); /** @var StockItemInterface $object */ if ($this->processIndexEvents) { $this->stockIndexerProcessor->reindexRow($object->getProductId()); } return $this; }
/** * Assign author to store views * * @param AbstractModel|\Sample\News\Model\Author $object * @return $this */ protected function _afterSave(AbstractModel $object) { $this->saveStoreRelation($object); $this->saveProductRelation($object); $this->saveCategoryRelation($object); return parent::_afterSave($object); }
/** * Save options store data * * @param \Magento\Framework\Model\AbstractModel $object * @return \Magento\Framework\Model\ResourceModel\Db\AbstractDb */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $this->_saveValuePrices($object); $this->_saveValueTitles($object); return parent::_afterSave($object); }
/** * after save callback * * @param \Magento\Framework\Model\AbstractModel|\Mageplaza\Blog\Model\Topic $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $this->savePostRelation($object); return parent::_afterSave($object); }
/** * Actions after save * * @param \Magento\Framework\Model\AbstractModel|\Magento\Review\Model\Rating $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { parent::_afterSave($object); if ($object->hasRatingCodes()) { $this->processRatingCodes($object); } if ($object->hasStores()) { $this->processRatingStores($object); } return $this; }
/** * Save additional attribute data after save attribute * * @param EntityAttribute|AbstractModel $object * @return $this */ protected function _afterSave(AbstractModel $object) { $this->_saveStoreLabels($object)->_saveAdditionalAttributeData($object)->saveInSetIncluding($object)->_saveOption($object); return parent::_afterSave($object); }
/** * After save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $connection = $this->getConnection(); $select = $connection->select()->from( $this->getMainTable(), ['store_id', 'key_id'] )->where( 'string = :string' ); $stores = $connection->fetchPairs($select, ['string' => $object->getString()]); $translations = $object->getStoreTranslations(); if (is_array($translations)) { foreach ($translations as $storeId => $translate) { if ($translate === null || $translate == '') { $where = ['store_id = ?' => $storeId, 'string = ?' => $object->getString()]; $connection->delete($this->getMainTable(), $where); } else { $data = ['store_id' => $storeId, 'string' => $object->getString(), 'translate' => $translate]; if (isset($stores[$storeId])) { $connection->update($this->getMainTable(), $data, ['key_id = ?' => $stores[$storeId]]); } else { $connection->insert($this->getMainTable(), $data); } } } } return parent::_afterSave($object); }
/** * Assign post to store views, categories, related posts, etc. * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $oldIds = $this->lookupStoreIds($object->getId()); $newIds = (array) $object->getStoreIds(); if (!$newIds) { $newIds = [0]; } $this->_updateLinks($object, $newIds, $oldIds, 'magefan_blog_post_store', 'store_id'); /* Save category & tag links */ foreach (['category' => 'categories', 'tag' => 'tags'] as $linkType => $dataKey) { $newIds = (array) $object->getData($dataKey); foreach ($newIds as $key => $id) { if (!$id) { // e.g.: zero unset($newIds[$key]); } } if (is_array($newIds)) { $lookup = 'lookup' . ucfirst($linkType) . 'Ids'; $oldIds = $this->{$lookup}($object->getId()); $this->_updateLinks($object, $newIds, $oldIds, 'magefan_blog_post_' . $linkType, $linkType . '_id'); } } /* Save tags links */ $newIds = (array) $object->getTags(); foreach ($newIds as $key => $id) { if (!$id) { // e.g.: zero unset($newIds[$key]); } } if (is_array($newIds)) { $oldIds = $this->lookupTagIds($object->getId()); $this->_updateLinks($object, $newIds, $oldIds, 'magefan_blog_post_tag', 'tag_id'); } /* Save related post & product links */ if ($links = $object->getData('links')) { if (is_array($links)) { foreach (['post', 'product'] as $linkType) { if (!empty($links[$linkType]) && is_array($links[$linkType])) { $linksData = $links[$linkType]; $lookup = 'lookupRelated' . ucfirst($linkType) . 'Ids'; $oldIds = $this->{$lookup}($object->getId()); $this->_updateLinks($object, array_keys($linksData), $oldIds, 'magefan_blog_post_related' . $linkType, 'related_id', $linksData); } } } } return parent::_afterSave($object); }
/** * after save callback * * @param \Magento\Framework\Model\AbstractModel|\Mageplaza\Blog\Model\Category $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { /** @var \Mageplaza\Blog\Model\Category $object */ if (substr($object->getPath(), -1) == '/') { $object->setPath($object->getPath() . $object->getId()); $this->savePath($object); } $this->savePostRelation($object); return parent::_afterSave($object); }
/** * after save callback * * @param \Magento\Framework\Model\AbstractModel|\Mageplaza\Blog\Model\Post $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $this->saveTagRelation($object); $this->saveTopicRelation($object); $this->saveCategoryRelation($object); return parent::_afterSave($object); }
/** * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { if (isset($object['bannerIds'])) { $oldBanners = $this->resourceBanner->lookupBannerIds($object->getId()); $newBanners = (array) $object->getItemsId(); $table = $this->getTable('magebase_carousel_join'); $insert = array_diff($newBanners, $oldBanners); $delete = array_diff($oldBanners, $newBanners); if ($delete) { $where = ['slider_id = ?' => (int) $object->getId(), 'banner_id IN (?)' => $delete]; $this->getConnection()->delete($table, $where); } if ($insert) { $data = []; foreach ($insert as $bannerId) { $data[] = ['slider_id' => (int) $object->getId(), 'banner_id' => (int) $bannerId]; } $this->getConnection()->insertMultiple($table, $data); } return parent::_afterSave($object); } if (isset($object['stores'])) { $oldStores = $this->lookupStoreIds($object->getId()); $newStores = (array) $object->getStores(); if (empty($newStores)) { $newStores = (array) $object->getStoreId(); } $table = $this->getTable('slider_store_join'); $storeInsert = array_diff($newStores, $oldStores); $storeDelete = array_diff($oldStores, $newStores); if ($storeDelete) { $where = ['slider_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $storeDelete]; $this->getConnection()->delete($table, $where); } if ($storeInsert) { $data = []; foreach ($storeInsert as $storeId) { $data[] = ['slider_id' => (int) $object->getId(), 'store_id' => (int) $storeId]; } $this->getConnection()->insertMultiple($table, $data); } } }
/** * Assign page to store views * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { /** @var \AddictedToMagento\DynamicForms\Model\Form $object */ $oldStores = $this->lookupStoreIds($object->getId()); $newStores = (array) $object->getStores(); if (empty($newStores)) { $newStores = (array) $object->getStoreId(); } $table = $this->getTable(self::STORE_TABLE_NAME); $insert = array_diff($newStores, $oldStores); $delete = array_diff($oldStores, $newStores); if ($delete) { $where = ['form_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $delete]; $this->getConnection()->delete($table, $where); } if ($insert) { $data = []; foreach ($insert as $storeId) { $data[] = ['form_id' => (int) $object->getId(), 'store_id' => (int) $storeId]; } $this->getConnection()->insertMultiple($table, $data); } return parent::_afterSave($object); }