Beispiel #1
0
 /**
  * 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);
 }
Beispiel #6
0
 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());
     }
 }
Beispiel #8
0
 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);
 }
Beispiel #10
0
 /**
  * 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);
 }
Beispiel #11
0
 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);
 }
Beispiel #13
0
 /** 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);
 }
Beispiel #18
0
 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);
 }
Beispiel #21
0
 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);
 }