/** * Triggered before the model saves, this is where the slug attribute is actually set * @see CActiveRecordBehavior::beforeSave() */ public function beforeSave($event) { if ($this->owner->isNewRecord || $this->owner->{$this->slugAttribute} == "") { $this->owner->{$this->slugAttribute} = $this->createSlug(); } return parent::beforeSave($event); }
public function beforeSave($event) { if ($this->_value !== NULL) { $this->getOwner()->setAttribute($this->getBackupAttribute(), $this->_value); } return parent::beforeSave($event); }
/** * @param \CModelEvent $event */ public function beforeSave($event) { if ($this->getOwner()->getIsNewRecord()) { $position = Yii::app()->getDb()->createCommand("select max({$this->attributeName}) from {$this->getOwner()->tableName()}")->queryScalar(); $this->getOwner()->{$this->attributeName} = (int) $position + 1; } return parent::beforeSave($event); }
/** * @param CModelEvent $event */ public function beforeSave($event) { if (method_exists($this->getOwner(), 'setDefaultAttributes')) { $this->getOwner()->setDefaultAttributes(); } // will the following will be called twice? return parent::beforeSave($event); }
public function beforeSave($event) { $model = $this->getOwner(); $column = $this->column; if ($model->isNewRecord) { $model->{$column} = Yii::app()->db->createCommand("SELECT MAX({$this->column}) FROM " . $model->tableName())->queryScalar() + 1; } parent::beforeSave($event); }
public function beforeSave($event) { $owner = $this->getOwner(); //concatenate the salt with password if ($owner->hasAttribute('password') && ($owner->getIsNewRecord() || $owner->getScenario() === Users::SCENARIO_CHANGE_PASSWORD || $owner->getScenario() === Users::SCENARIO_RESET_PASSWORD)) { $owner->genericField = $owner->password; $owner->password = $owner->salt . md5($owner->password); } return parent::beforeSave($event); }
public function beforeSave($event) { parent::beforeSave($event); if (!$this->owner->isNewRecord) { list($utub, $video) = $this->getVideo(); $video->setVideoDescription($this->owner->description); $video->setVideoTitle($this->owner->title); $utub->updateEntry($video, $video->getEditLink()->getHref()); } }
public function beforeSave($event) { parent::beforeSave($event); if ($this->resolveMetaDataModel() !== null && $this->resolveMetaDataModel()->checkAccessUpdate) { if (Yii::app()->user->checkAccess($this->resolveMetaDataModel()->checkAccessUpdate) === false) { throw new CHttpException(403, "You are not authorized to perform this action. Access restricted by P3MetaDataBehavior."); return false; } } return true; }
public function afterSave($event) { $model = $this->getOwner(); if ($model->isNewRecord) { $files = FileManager::model()->findAllByAttributes(array('object_id' => 'tmp_' . Yii::app()->user->id, 'model_id' => get_class($model))); foreach ($files as $file) { $file->object_id = $model->id; $file->save(); } } return parent::beforeSave($event); }
/** * Convert from $dateFormat to ISO 9075 dates before saving */ public function beforeSave($event) { foreach ($this->dateColumns as $date) { $_dt = $this->Owner->{$date}; if (preg_match("/([0-9]{1,2})\\/([0-9]{1,2})\\/([0-9]{4})/", $_dt, $regs)) { //var_dump($regs); $_dt = $regs[3] . "-" . $regs[2] . "-" . $regs[1]; } $this->Owner->{$date} = $_dt; } return parent::beforeSave($event); }
public function beforeSave($event) { parent::beforeSave($event); if (!$this->owner->isNewRecord) { foreach ($this->fields as $field) { if (!$this->owner->{$field}) { $this->owner->{$field} = $this->owner->model()->findByPk($this->owner->primaryKey)->{$field}; } } } return true; }
/** * Encrypts the value of specified attributes before saving to database * @param CEvent $event * @return parent::beforeSave */ public function beforeSave($event) { foreach ($this->getOwner()->getAttributes() as $key => $value) { if (in_array($key, $this->attributes) && !empty($value)) { if ($this->useAESMySql) { $this->getOwner()->{$key} = $this->mysqlAESEncrypt($value, Yii::app()->securityManager->getEncryptionKey()); } else { $this->getOwner()->{$key} = utf8_encode(Yii::app()->securityManager->encrypt($value)); } } } return parent::beforeSave($event); }
/** Will create new gallery after save if no associated gallery exists */ public function beforeSave($event) { parent::beforeSave($event); if ($event->isValid) { if (empty($this->getOwner()->{$this->idAttribute})) { $gallery = new Gallery(); $gallery->name = $this->name; $gallery->description = $this->description; $gallery->versions = $this->versions; $gallery->save(); $this->getOwner()->{$this->idAttribute} = $gallery->id; } } }
public function beforeSave($event) { $model = $this->getOwner(); if ($model->isNewRecord) { if (array_key_exists('date_create', $model->attributes)) { $model->date_create = new CDbExpression('NOW()'); } } else { if (array_key_exists('date_update', $model->attributes)) { $model->date_update = new CDbExpression('NOW()'); } } return parent::beforeSave($event); }
/** * Responds to {@link CActiveRecord::onBeforeSave} event. * @param CModelEvent $event event parameter */ public function beforeSave($event) { $sender = $event->sender; if ($sender->isNewRecord) { $model = call_user_func(array(get_class($sender), 'model')); $last_record = $model->find(array('order' => '`' . $this->orderField . '` DESC', 'limit' => 1)); if ($last_record) { $sender->{$this->orderField} = $last_record->{$this->orderField} + 1; } else { $sender->{$this->orderField} = 1; } } return parent::beforeSave($event); }
public function beforeSave($event) { if (true !== $this->update && $this->owner->slug) { return parent::beforeSave($event); } if (!is_array($this->columns)) { throw new CException('Columns have to be in array format.'); } $availableColumns = array_keys($this->owner->tableSchema->columns); // Try to guess the right columns if (0 === count($this->columns)) { $this->columns = array_intersect($this->_defaultColumnsToCheck, $availableColumns); } else { // Unknown columns on board? foreach ($this->columns as $col) { if (!in_array($col, $availableColumns)) { throw new CException('Unable to build slug, column ' . $col . ' not found.'); } } } // No columns to build a slug? if (0 === count($this->columns)) { throw new CException('You must define "columns" to your sluggable behavior.'); } // Fetch values $values = array(); foreach ($this->columns as $col) { $values[] = $this->owner->{$col}; } // First version of slug $slug = $checkslug = Doctrine_Inflector::urlize(implode('-', $values)); // Check if slug has to be unique if (false === $this->unique) { $this->owner->slug = $slug; } else { $counter = 0; while ($this->owner->findByAttributes(array('slug' => $checkslug))) { $checkslug = sprintf('%s-%d', $slug, ++$counter); } $this->owner->slug = $counter > 0 ? $checkslug : $slug; } return parent::beforeSave($event); }
/** * Yii model behavior executed before a record set is saved. * * @param CModelEvent $event * * @author Florian Fackler */ public function beforeSave(CModelEvent $event) { $username = '******'; // If the user is logged in, use his username if (isset(Yii::app()->user)) { $username = Yii::app()->user->id; } $availableColumns = array_keys($this->getOwner()->tableSchema->columns); if ($this->getOwner()->isNewRecord && empty($this->getOwner()->{$this->createdByColumn})) { if (in_array($this->createdByColumn, $availableColumns)) { $this->getOwner()->{$this->createdByColumn} = $username; } } if (true === $this->setUpdateOnCreate && empty($this->getOwner()->{$this->updatedByColumn})) { if (in_array($this->updatedByColumn, $availableColumns)) { $this->getOwner()->{$this->updatedByColumn} = $username; } } return parent::beforeSave($event); }
public function beforeSave($event) { parent::beforeSave($event); $now = date('Y-m-d H:i:s'); $owner = $this->owner; $behaviors = $owner->behaviors(); foreach ($this->attributes as $key => $value) { $attribute = is_array($value) ? $key : $value; $isDateAttribute = array_key_exists('dateBehavior', $behaviors) && isset($behaviors['dateBehavior']['dateAttribute']) && (is_array($behaviors['dateBehavior']['dateAttribute']) ? in_array($attribute, $behaviors['dateBehavior']['dateAttribute']) : $behaviors['dateBehavior']['dateAttribute'] == $attribute); $changed = false; //проверка на несовпадение //если это дата, и дата указана в DateBehavior, то проверку делаем по другому if ($isDateAttribute && $owner->isDateChanged($attribute)) { $changed = true; } elseif (!$isDateAttribute && $owner->oldAttributes->{$attribute} != $owner->{$attribute}) { $changed = true; } if ($changed) { $dateField = is_array($value) && isset($value['dateField']) ? $value['dateField'] : $attribute . '_date'; if ($owner->hasAttribute($dateField) && !Common::isCLI()) { $owner->{$dateField} = $now; } $userField = is_array($value) && isset($value['userField']) ? $value['userField'] : $attribute . '_user'; if ($owner->hasAttribute($userField) && !Common::isCLI()) { $owner->{$userField} = user()->id; } if ($this->saveHistory) { $this->waitForSave[] = ['id_user' => !Common::isCLI() && !user()->isGuest ? user()->id : null, 'action' => $owner->isNewRecord ? 'create' : 'update', 'id_object' => $owner->id, 'date' => $now, 'field_name' => $attribute, 'old_value' => $owner->oldAttributes->{$attribute}, 'new_value' => $owner->{$attribute}]; } if ($owner->hasEvent('on' . $attribute . 'Change')) { $event = new CEvent($this); // событию можно присвоить для передачи любые параметры // используя его свойство params $event->params = array('old_' . $attribute => $owner->oldAttributes->{$attribute}, 'new_' . $attribute => $owner->{$attribute}); $owner->{'on' . $attribute . 'Change'}($event); } } } return true; }
public function beforeSave($event) { $model = $this->owner; if (!$model->hasAttribute($this->createdField)) { throw new InvalidArgumentException('Field ' . $this->createdField . ' is not found in a model of class ' . get_class($model)); } if (!$model->hasAttribute($this->createdByField)) { throw new InvalidArgumentException('Field ' . $this->createdByField . ' is not found in a model of class ' . get_class($model)); } if (!$model->hasAttribute($this->modifiedField)) { throw new InvalidArgumentException('Field ' . $this->modifiedField . ' is not found in a model of class ' . get_class($model)); } if (!$model->hasAttribute($this->modifiedByField)) { throw new InvalidArgumentException('Field ' . $this->modifiedByField . ' is not found in a model of class ' . get_class($model)); } if ($model->isNewRecord) { $model->{$this->createdField} = date("Y-m-d H:i:s"); $model->{$this->createdByField} = isset(Yii::app()->user->id) ? Yii::app()->user->id : 0; } $model->{$this->modifiedField} = date("Y-m-d H:i:s"); $model->{$this->modifiedByField} = isset(Yii::app()->user->id) ? Yii::app()->user->id : 0; parent::beforeSave($event); }
/** * Convert from $dateFormat to UNIX timestamp dates before saving */ public function beforeSave($event) { $this->format($this->dateColumns, $this->dateFormat); $this->format($this->dateTimeColumns, $this->dateTimeFormat); return parent::beforeSave($event); }
public function beforeSave($event) { $model = $this->getOwner(); self::usernameFieldsSet($model, $this->editingUsername); return parent::beforeSave($event); }
public function beforeSave($event) { parent::beforeSave($event); $this->processAttributes($event->sender, self::DIRECTION_DB); }
public function beforeSave($event) { parent::beforeSave($event); $this->handleCollection(); }
/** * @param CEvent $event */ public function beforeSave($event) { $this->_saving = true; $this->_convertAttributesToDB(); parent::beforeSave($event); }
/** * beforeSave * * @param CModelEvent $event * * @throws CException * @access public */ public function beforeSave($event) { // Slug already created and no updated needed if (true !== $this->update && !empty($this->getOwner()->{$this->slugColumn})) { Yii::trace('Slug found - no update needed.', __CLASS__ . '::' . __FUNCTION__); return parent::beforeSave($event); } $availableColumns = array_keys($this->getOwner()->tableSchema->columns); // Try to guess the right columns if (0 === count($this->columns)) { $this->columns = array_intersect($this->_defaultColumnsToCheck, $availableColumns); } else { // Unknown columns on board? foreach ($this->columns as $col) { if (!in_array($col, $availableColumns)) { if (false !== strpos($col, '.')) { Yii::trace('Dependencies to related models found', __CLASS__); list($model, $attribute) = explode('.', $col); $externalColumns = array_keys($this->getOwner()->{$model}->tableSchema->columns); if (!in_array($attribute, $externalColumns)) { throw new CException("Model {$model} does not haz {$attribute}"); } } else { throw new CException('Unable to build slug, column ' . $col . ' not found.'); } } } } // No columns to build a slug? if (0 === count($this->columns)) { throw new CException('You must define "columns" to your sluggable behavior.'); } // Fetch values $values = array(); foreach ($this->columns as $col) { if (false === strpos($col, '.')) { $values[] = $this->getOwner()->{$col}; } else { list($model, $attribute) = explode('.', $col); $values[] = $this->getOwner()->{$model}->{$attribute}; } } // First version of slug if (true === $this->useInflector) { $slug = $checkslug = Doctrine_Inflector::urlize(implode('-', $values)); } else { $slug = $checkslug = $this->simpleSlug(implode('-', $values)); } // Check if slug has to be unique if (false === $this->unique || !$this->getOwner()->getIsNewRecord() && $slug === $this->getOwner()->{$this->slugColumn}) { Yii::trace('Non unique slug or slug already set', __CLASS__); $this->getOwner()->{$this->slugColumn} = $slug; } else { $counter = 0; while ($this->getOwner()->resetScope()->exists($this->slugColumn . '=:sluggable', array(':sluggable' => $checkslug))) { Yii::trace("{$checkslug} found, iterating", __CLASS__); $checkslug = sprintf('%s-%d', $slug, ++$counter); } $this->getOwner()->{$this->slugColumn} = $counter > 0 ? $checkslug : $slug; } return parent::beforeSave($event); }
public function beforeSave($event) { $this->ensureNULL(); $this->fixBELONGS_TO(); return parent::beforeSave($event); }
/** * @param CModelEvent $event */ public function beforeSave($event) { $this->getOwner()->setDefaultAttributes(); return parent::beforeSave($event); }
/** * Overrides parent implementation to set owner's creator and revision name. * * @see CActiveRecordBehavior::beforeSave() */ public function beforeSave($event) { if ($this->owner->isNewRecord) { $app = Yii::app(); if (($user = $app->getComponent('user')) && !$user->getIsGuest()) { $this->setCreatorId($user->getLogged()->id); } if ($this->getRevisionType() != SandboxBehavior::SANDBOX_REVISION) { $counter = $this->getSandbox()->getCounter('revision'); $this->setRevisionName($this->getRevisionLabel($counter)); } } return parent::beforeSave($event); }