コード例 #1
0
ファイル: Set.php プロジェクト: pradeep-wagento/magento2
 /**
  * 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);
 }
コード例 #2
0
ファイル: Store.php プロジェクト: mrbadao/magento-ce
 /**
  * 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;
 }
コード例 #3
0
ファイル: Instance.php プロジェクト: pradeep-wagento/magento2
 /**
  * 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);
 }
コード例 #4
0
ファイル: Thesaurus.php プロジェクト: smile-sa/elasticsuite
 /**
  * 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;
 }
コード例 #5
0
 /**
  * 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);
 }
コード例 #6
0
 /**
  * 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);
 }
コード例 #7
0
ファイル: Group.php プロジェクト: pradeep-wagento/magento2
 /**
  * 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);
 }
コード例 #8
0
ファイル: AbstractDb.php プロジェクト: Doability/magento2dev
 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);
 }
コード例 #9
0
ファイル: Packages.php プロジェクト: shipperhq/module-shipper
 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;
 }
コード例 #10
0
ファイル: Variable.php プロジェクト: pradeep-wagento/magento2
 /**
  * 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;
 }
コード例 #11
0
ファイル: Fieldset.php プロジェクト: tingyeeh/magento2
 /**
  * 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);
 }
コード例 #12
0
ファイル: Option.php プロジェクト: Doability/magento2dev
 /**
  * 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;
 }
コード例 #13
0
ファイル: Entity.php プロジェクト: swissup/easytabs
 /**
  * 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);
 }
コード例 #14
0
 /**
  * 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);
 }
コード例 #15
0
 /**
  * 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);
 }
コード例 #16
0
ファイル: Update.php プロジェクト: tingyeeh/magento2
 /**
  * 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);
 }
コード例 #17
0
ファイル: Type.php プロジェクト: pradeep-wagento/magento2
 /**
  * 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);
 }
コード例 #18
0
ファイル: Item.php プロジェクト: kidaa30/magento2-platformsh
 /**
  * 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;
 }
コード例 #19
0
ファイル: Author.php プロジェクト: sz-bill/Magento2.x
 /**
  * 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);
 }
コード例 #20
0
ファイル: Option.php プロジェクト: Doability/magento2dev
 /**
  * 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);
 }
コード例 #21
0
 /**
  * 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);
 }
コード例 #22
0
 /**
  * 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;
 }
コード例 #23
0
 /**
  * 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);
 }
コード例 #24
0
ファイル: StringUtils.php プロジェクト: razbakov/magento2
    /**
     * 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);
    }
コード例 #25
0
ファイル: Post.php プロジェクト: magefan/module-blog
 /**
  * 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);
 }
コード例 #26
0
 /**
  * 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);
 }
コード例 #27
0
 /**
  * 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);
 }
コード例 #28
0
 /**
  * @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);
         }
     }
 }
コード例 #29
0
 /**
  * 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);
 }