/** * Perform actions before object save * * @param \Magento\Framework\Model\AbstractModel $object * @return \Magento\Framework\Model\ModelResource\Db\AbstractDb */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { if (!$object->getSortOrder()) { $object->setSortOrder($this->_getMaxSortOrder($object) + 1); } return parent::_beforeSave($object); }
/** * Perform actions before object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ public function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { if ($date = $object->getDateFrom()) { $object->setDateFrom($this->dateTime->formatDate($date)); } else { $object->setDateFrom(null); } if ($date = $object->getDateTo()) { $object->setDateTo($this->dateTime->formatDate($date)); } else { $object->setDateTo(null); } if (!is_null($object->getDateFrom()) && !is_null($object->getDateTo()) && (new \DateTime($object->getDateFrom()))->getTimestamp() > (new \DateTime($object->getDateTo()))->getTimestamp()) { throw new \Magento\Framework\Exception\LocalizedException(__('The start date can\'t follow the end date.')); } $check = $this->_checkIntersection($object->getStoreId(), $object->getDateFrom(), $object->getDateTo(), $object->getId()); if ($check) { throw new \Magento\Framework\Exception\LocalizedException(__('The date range for this design change overlaps another design change for the specified store.')); } if ($object->getDateFrom() === null) { $object->setDateFrom(new \Zend_Db_Expr('null')); } if ($object->getDateTo() === null) { $object->setDateTo(new \Zend_Db_Expr('null')); } parent::_beforeSave($object); }
/** * Validate website code before object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { if (!preg_match('/^[a-z]+[a-z0-9_]*$/', $object->getCode())) { throw new \Magento\Framework\Exception\LocalizedException(__('Website code may only contain letters (a-z), numbers (0-9) or underscore (_),' . ' and the first character must be a letter.')); } return parent::_beforeSave($object); }
/** * Set template type, added at and modified at time * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _beforeSave(AbstractModel $object) { if ($object->isObjectNew()) { $object->setAddedAt($this->dateTime->formatDate(true)); } $object->setModifiedAt($this->dateTime->formatDate(true)); $object->setTemplateType((int) $object->getTemplateType()); return parent::_beforeSave($object); }
/** * Convert array to comma separated value * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { if (!$object->getId()) { $this->_checkUnique($object); } if (is_array($object->getValue())) { $object->setValue(join(',', $object->getValue())); } return parent::_beforeSave($object); }
/** * Perform actions before object save * * @param AbstractModel $object * @return $this */ public function _beforeSave(AbstractModel $object) { if (!$object->getExpirationDate()) { $object->setExpirationDate(null); } elseif ($object->getExpirationDate() instanceof \DateTimeInterface) { $object->setExpirationDate($object->getExpirationDate()->format('Y-m-d H:i:s')); } // maintain single primary coupon per rule $object->setIsPrimary($object->getIsPrimary() ? 1 : null); return parent::_beforeSave($object); }
/** * Method to run before save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { // format height $height = $object->getContentHeight(); $height = $this->filterManager->stripTags($height); if (!$height) { $height = ''; } if ($height && preg_match('/[0-9]$/', $height)) { $height .= 'px'; } $object->setContentHeight($height); return parent::_beforeSave($object); }
/** * Prepare rule's active "from" and "to" dates * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ public function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { $fromDate = $object->getFromDate(); if ($fromDate instanceof \DateTime) { $object->setFromDate($fromDate->format('Y-m-d H:i:s')); } elseif (!is_string($fromDate) || empty($fromDate)) { $object->setFromDate(null); } $toDate = $object->getToDate(); if ($toDate instanceof \DateTime) { $object->setToDate($toDate->format('Y-m-d H:i:s')); } elseif (!is_string($toDate) || empty($toDate)) { $object->setToDate(null); } parent::_beforeSave($object); return $this; }
/** * Process page data before saving * * @param \Magento\Framework\Model\AbstractModel $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { /* * For two attributes which represent timestamp data in DB * we should make converting such as: * If they are empty we need to convert them into DB * type NULL so in DB they will be empty and not some default value */ foreach (['custom_theme_from', 'custom_theme_to'] as $field) { $value = !$object->getData($field) ? null : $object->getData($field); $object->setData($field, $this->dateTime->formatDate($value)); } if (!$this->isValidPageIdentifier($object)) { throw new \Magento\Framework\Exception\LocalizedException(__('The page URL key contains capital letters or disallowed symbols.')); } if ($this->isNumericPageIdentifier($object)) { throw new \Magento\Framework\Exception\LocalizedException(__('The page URL key cannot be made of only numbers.')); } if ($object->isObjectNew() && !$object->hasCreationTime()) { $object->setCreationTime($this->_date->gmtDate()); } $object->setUpdateTime($this->_date->gmtDate()); return parent::_beforeSave($object); }
/** * Set created/modified values before user save * * @param \Magento\Framework\Model\AbstractModel $user * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $user) { if ($user->isObjectNew()) { $user->setCreated($this->dateTime->formatDate(true)); } $user->setModified($this->dateTime->formatDate(true)); return parent::_beforeSave($user); }
/** * Set updated_at automatically before saving * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ public function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { $object->setUpdatedAt($this->_dateTime->formatDate(time())); return parent::_beforeSave($object); }
/** * Validate attribute data before save * * @param EntityAttribute|AbstractModel $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ protected function _beforeSave(AbstractModel $object) { $frontendLabel = $object->getFrontendLabel(); if (is_array($frontendLabel)) { if (!isset($frontendLabel[0]) || $frontendLabel[0] === null || $frontendLabel[0] == '') { throw new \Magento\Framework\Exception\LocalizedException(__('The storefront label is not defined.')); } $object->setFrontendLabel($frontendLabel[0])->setStoreLabels($frontendLabel); } /** * @todo need use default source model of entity type !!! */ if (!$object->getId()) { if ($object->getFrontendInput() == 'select') { $object->setSourceModel('Magento\\Eav\\Model\\Entity\\Attribute\\Source\\Table'); } } return parent::_beforeSave($object); }
/** * Before save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { $connection = $this->getConnection(); $select = $connection->select()->from($this->getMainTable(), 'key_id')->where('string = :string')->where('store_id = :store_id'); $bind = ['string' => $object->getString(), 'store_id' => \Magento\Store\Model\Store::DEFAULT_STORE_ID]; $object->setId($connection->fetchOne($select, $bind)); return parent::_beforeSave($object); }
/** * Perform actions before object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { if ($this->checkCodeUsage($object)) { throw new \Magento\Framework\Exception\LocalizedException(__('Duplicate template code')); } if (!$object->hasTemplateActual()) { $object->setTemplateActual(1); } if (!$object->hasAddedAt()) { $object->setAddedAt($this->_date->gmtDate()); } $object->setModifiedAt($this->_date->gmtDate()); return parent::_beforeSave($object); }