Browse Source

Code style fix

tags/1.1.0
Alban Jubert 9 years ago
parent
commit
9735682514
  1. 34
      src/SaveRelationsBehavior.php

34
src/SaveRelationsBehavior.php

@ -58,9 +58,7 @@ class SaveRelationsBehavior extends Behavior
public function canSetProperty($name, $checkVars = true) public function canSetProperty($name, $checkVars = true)
{ {
$getter = 'get' . $name; $getter = 'get' . $name;
if (in_array($name, $this->relations) && method_exists($this->owner, if (in_array($name, $this->relations) && method_exists($this->owner, $getter) && $this->owner->$getter() instanceof ActiveQuery) {
$getter) && $this->owner->$getter() instanceof ActiveQuery
) {
return true; return true;
} }
return parent::canSetProperty($name, $checkVars); return parent::canSetProperty($name, $checkVars);
@ -154,8 +152,7 @@ class SaveRelationsBehavior extends Behavior
if ($this->_saveRelatedRecords($model, $event)) { if ($this->_saveRelatedRecords($model, $event)) {
// If relation is has_one, try to set related model attributes // If relation is has_one, try to set related model attributes
foreach ($this->relations as $relationName) { foreach ($this->relations as $relationName) {
if (array_key_exists($relationName, if (array_key_exists($relationName, $this->_oldRelationValue)) { // Relation was not set, do nothing...
$this->_oldRelationValue)) { // Relation was not set, do nothing...
$relation = $model->getRelation($relationName); $relation = $model->getRelation($relationName);
if ($relation->multiple === false && !empty($model->{$relationName})) { if ($relation->multiple === false && !empty($model->{$relationName})) {
Yii::trace("Setting foreign keys for {$relationName}", __METHOD__); Yii::trace("Setting foreign keys for {$relationName}", __METHOD__);
@ -182,17 +179,12 @@ class SaveRelationsBehavior extends Behavior
*/ */
public function _saveRelatedRecords(ActiveRecord $model, ModelEvent $event) public function _saveRelatedRecords(ActiveRecord $model, ModelEvent $event)
{ {
if (($model->isNewRecord && $model->isTransactional($model::OP_INSERT)) if (($model->isNewRecord && $model->isTransactional($model::OP_INSERT)) || (!$model->isNewRecord && $model->isTransactional($model::OP_UPDATE)) || $model->isTransactional($model::OP_ALL)) {
|| (!$model->isNewRecord && $model->isTransactional($model::OP_UPDATE))
|| $model->isTransactional($model::OP_ALL)
) {
$this->_transaction = $model->getDb()->beginTransaction(); $this->_transaction = $model->getDb()->beginTransaction();
} }
try { try {
foreach ($this->relations as $relationName) { foreach ($this->relations as $relationName) {
if (array_key_exists($relationName, $this->_oldRelationValue)) { // Relation was not set, do nothing...
if (array_key_exists($relationName,
$this->_oldRelationValue)) { // Relation was not set, do nothing...
$relation = $model->getRelation($relationName); $relation = $model->getRelation($relationName);
if (!empty($model->{$relationName})) { if (!empty($model->{$relationName})) {
if ($relation->multiple === false) { if ($relation->multiple === false) {
@ -204,8 +196,7 @@ class SaveRelationsBehavior extends Behavior
/** @var ActiveRecord $relationModel */ /** @var ActiveRecord $relationModel */
foreach ($model->{$relationName} as $i => $relationModel) { foreach ($model->{$relationName} as $i => $relationModel) {
$pettyRelationName = Inflector::camel2words($relationName, true) . " #{$i}"; $pettyRelationName = Inflector::camel2words($relationName, true) . " #{$i}";
$this->_validateRelationModel($pettyRelationName, $relationName, $relationModel, $this->_validateRelationModel($pettyRelationName, $relationName, $relationModel, $event);
$event);
} }
} }
} }
@ -231,8 +222,7 @@ class SaveRelationsBehavior extends Behavior
*/ */
public function _saveModelRecord(ActiveRecord $model, ModelEvent $event, $pettyRelationName, $relationName) public function _saveModelRecord(ActiveRecord $model, ModelEvent $event, $pettyRelationName, $relationName)
{ {
$this->_validateRelationModel($pettyRelationName, $relationName, $model, $this->_validateRelationModel($pettyRelationName, $relationName, $model, $event);
$event);
if ($event->isValid && count($model->dirtyAttributes)) { if ($event->isValid && count($model->dirtyAttributes)) {
Yii::trace("Saving {$pettyRelationName} relation model", __METHOD__); Yii::trace("Saving {$pettyRelationName} relation model", __METHOD__);
$model->save(false); $model->save(false);
@ -251,7 +241,8 @@ class SaveRelationsBehavior extends Behavior
$relationName, $relationName,
ActiveRecord $relationModel, ActiveRecord $relationModel,
ModelEvent $event ModelEvent $event
) { )
{
/** @var ActiveRecord $model */ /** @var ActiveRecord $model */
$model = $this->owner; $model = $this->owner;
if (!is_null($relationModel) && ($relationModel->isNewRecord || count($relationModel->getDirtyAttributes()))) { if (!is_null($relationModel) && ($relationModel->isNewRecord || count($relationModel->getDirtyAttributes()))) {
@ -271,7 +262,6 @@ class SaveRelationsBehavior extends Behavior
* Link the related models. * Link the related models.
* If the models have not been changed, nothing will be done. * If the models have not been changed, nothing will be done.
* Related records will be linked to the owner model using the ActiveRecord `link()` method. * Related records will be linked to the owner model using the ActiveRecord `link()` method.
* @param ModelEvent $event
*/ */
public function afterSave() public function afterSave()
{ {
@ -286,6 +276,7 @@ class SaveRelationsBehavior extends Behavior
if ($relation->multiple === true) { // Has many relation if ($relation->multiple === true) { // Has many relation
// Process new relations // Process new relations
$existingRecords = []; $existingRecords = [];
/** @var ActiveRecord $relationModel */
foreach ($model->{$relationName} as $relationModel) { foreach ($model->{$relationName} as $relationModel) {
if ($relationModel->isNewRecord) { if ($relationModel->isNewRecord) {
if ($relation->via !== null) { if ($relation->via !== null) {
@ -300,11 +291,9 @@ class SaveRelationsBehavior extends Behavior
} }
} }
// Process existing added and deleted relations // Process existing added and deleted relations
list($addedPks, $deletedPks) = $this->_computePkDiff($this->_oldRelationValue[$relationName], list($addedPks, $deletedPks) = $this->_computePkDiff($this->_oldRelationValue[$relationName], $existingRecords);
$existingRecords);
// Deleted relations // Deleted relations
$initialModels = ArrayHelper::index($this->_oldRelationValue[$relationName], $initialModels = ArrayHelper::index($this->_oldRelationValue[$relationName], function (ActiveRecord $model) {
function (ActiveRecord $model) {
return implode("-", $model->getPrimaryKey(true)); return implode("-", $model->getPrimaryKey(true));
}); });
foreach ($deletedPks as $key) { foreach ($deletedPks as $key) {
@ -371,6 +360,7 @@ class SaveRelationsBehavior extends Behavior
foreach ($this->relations as $relationName) { foreach ($this->relations as $relationName) {
$relation = $model->getRelation($relationName); $relation = $model->getRelation($relationName);
$modelClass = $relation->modelClass; $modelClass = $relation->modelClass;
/** @var ActiveRecord $relationalModel */
$relationalModel = new $modelClass; $relationalModel = new $modelClass;
$formName = $relationalModel->formName(); $formName = $relationalModel->formName();
if (array_key_exists($formName, $data)) { if (array_key_exists($formName, $data)) {

Loading…
Cancel
Save