/** * Retrieve alert row by object parameters * * @param \Magento\Framework\Model\AbstractModel $object * @return array|false */ protected function _getAlertRow(\Magento\Framework\Model\AbstractModel $object) { $adapter = $this->_getReadAdapter(); if ($object->getCustomerId() && $object->getProductId() && $object->getWebsiteId()) { $select = $adapter->select()->from($this->getMainTable())->where('customer_id = :customer_id')->where('product_id = :product_id')->where('website_id = :website_id'); $bind = [':customer_id' => $object->getCustomerId(), ':product_id' => $object->getProductId(), ':website_id' => $object->getWebsiteId()]; return $adapter->fetchRow($select, $bind); } return false; }
/** * Change store group website * * @param \Magento\Framework\Model\AbstractModel $model * @return $this */ protected function _changeWebsite(\Magento\Framework\Model\AbstractModel $model) { if ($model->getOriginalWebsiteId() && $model->getWebsiteId() != $model->getOriginalWebsiteId()) { $select = $this->_getWriteAdapter()->select()->from($this->getTable('store_website'), 'default_group_id')->where('website_id = :website_id'); $groupId = $this->_getWriteAdapter()->fetchOne($select, ['website_id' => $model->getOriginalWebsiteId()]); if ($groupId == $model->getId()) { $bind = ['default_group_id' => 0]; $where = ['website_id = ?' => $model->getOriginalWebsiteId()]; $this->_getWriteAdapter()->update($this->getTable('store_website'), $bind, $where); } } return $this; }
/** * Before save action * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { if (is_null($object->getId()) && $object->getCustomerId() && $object->getProductId() && $object->getWebsiteId()) { if ($row = $this->_getAlertRow($object)) { $object->addData($row); $object->setStatus(0); } } if (is_null($object->getAddDate())) { $object->setAddDate($this->_dateFactory->create()->gmtDate()); $object->setStatus(0); } return parent::_beforeSave($object); }
/** * @param \Magento\Store\Model\ResourceModel\Group $object * @param callable $proceed * @param AbstractModel $group * @return \Magento\Store\Model\ResourceModel\Group * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function aroundSave(\Magento\Store\Model\ResourceModel\Group $object, \Closure $proceed, AbstractModel $group) { $originGroup = $group; $result = $proceed($originGroup); if (!$group->isObjectNew() && ($group->dataHasChangedFor('website_id') || $group->dataHasChangedFor('root_category_id'))) { $this->storeManager->reinitStores(); foreach ($group->getStoreIds() as $storeId) { $this->urlPersist->deleteByData([UrlRewrite::STORE_ID => $storeId]); } $this->urlPersist->replace($this->generateCategoryUrls($group->getRootCategoryId(), $group->getStoreIds())); $this->urlPersist->replace($this->generateProductUrls($group->getWebsiteId(), $group->getOrigData('website_id'))); } return $result; }
/** * Remove configuration data after delete website * * @param \Magento\Framework\Model\AbstractModel $model * @return $this */ protected function _afterDelete(\Magento\Framework\Model\AbstractModel $model) { $where = ['scope = ?' => \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES, 'scope_id = ?' => $model->getWebsiteId()]; $this->getConnection()->delete($this->getTable('core_config_data'), $where); return $this; }
/** * @param \Magento\Store\Model\ResourceModel\Store $object * @param callable $proceed * @param AbstractModel $store * @return \Magento\Store\Model\ResourceModel\Store * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function aroundSave(\Magento\Store\Model\ResourceModel\Store $object, \Closure $proceed, AbstractModel $store) { $originStore = $store; $result = $proceed($originStore); if ($store->isObjectNew() || $store->dataHasChangedFor('group_id')) { if (!$store->isObjectNew()) { $this->urlPersist->deleteByData([UrlRewrite::STORE_ID => $store->getId()]); } $this->urlPersist->replace($this->generateCategoryUrls($store->getRootCategoryId(), $store->getId())); $this->urlPersist->replace($this->generateProductUrls($store->getWebsiteId(), $store->getOrigData('website_id'), $store->getId())); } return $result; }