/** * Process role before saving * * @param \Magento\Framework\Model\AbstractModel $role * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $role) { if (!$role->getId()) { $role->setCreated($this->dateTime->formatDate(true)); } $role->setModified($this->dateTime->formatDate(true)); if ($role->getId() == '') { if ($role->getIdFieldName()) { $role->unsetData($role->getIdFieldName()); } else { $role->unsetData('id'); } } if (!$role->getTreeLevel()) { if ($role->getPid() > 0) { $select = $this->getConnection()->select()->from($this->getMainTable(), ['tree_level'])->where("{$this->getIdFieldName()} = :pid"); $binds = ['pid' => (int) $role->getPid()]; $treeLevel = $this->getConnection()->fetchOne($select, $binds); } else { $treeLevel = 0; } $role->setTreeLevel($treeLevel + 1); } if ($role->getName()) { $role->setRoleName($role->getName()); } return $this; }
/** * Restore old attribute value * * @param \Magento\Framework\Model\AbstractModel $model * @param mixed $oldAttrValue * @return void */ protected function _restoreOldAttrValue(\Magento\Framework\Model\AbstractModel $model, $oldAttrValue) { $attrCode = $this->getAttribute(); if ($oldAttrValue === null) { $model->unsetData($attrCode); } else { $model->setData($attrCode, $oldAttrValue); } }
/** * Tests \Magento\Framework\Object->hasDataChanges() */ public function testHasDataChanges() { $this->assertFalse($this->model->hasDataChanges()); $this->model->setData('key', 'value'); $this->assertTrue($this->model->hasDataChanges(), 'Data changed'); $this->model->setDataChanges(false); $this->model->setData('key', 'value'); $this->assertFalse($this->model->hasDataChanges(), 'Data not changed'); $this->model->setData(['key' => 'value']); $this->assertFalse($this->model->hasDataChanges(), 'Data not changed (array)'); $this->model->unsetData(); $this->assertTrue($this->model->hasDataChanges(), 'Unset data'); }
/** * {@inheritdoc} * * Unset customAttributesChanged flag */ public function unsetData($key = null) { if (is_string($key) && isset($this->_data[self::CUSTOM_ATTRIBUTES][$key])) { unset($this->_data[self::CUSTOM_ATTRIBUTES][$key]); } return parent::unsetData($key); }
/** * Unset data from the object. * * The $key can be a string only. Array will be ignored. * * $isChanged will specify if the object needs to be saved after an update. * * @param string $key * @return $this */ public function unsetData($key = null) { if (!is_null($key) && $this->isLockedAttribute($key) || $this->isReadonly()) { return $this; } return parent::unsetData($key); }