예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 /**
  * 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);
 }
예제 #4
0
 /**
  * @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;
 }
예제 #5
0
 /**
  * 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;
 }
예제 #6
-1
 /**
  * @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;
 }