Skip to content
Permalink
Browse files

Fix additional issues with saveAll().

Fixes #2857
  • Loading branch information...
markstory committed May 8, 2012
1 parent a1e06b9 commit fbba3621b5e522d1c7f7fe4c175a3298871469de
@@ -318,10 +318,19 @@ public function beforeValidate(Model $model) {
/**
* beforeSave callback.
*
* Copies data into the runtime property when `$options['validate']` is
* disabled. Or the runtime data hasn't been set yet.
*
* @param Model $model Model save was called on.
* @return boolean true.
*/
public function beforeSave(Model $model) {
public function beforeSave(Model $model, $options = array()) {
if (isset($options['validate']) && $options['validate'] == false) {
unset($this->runtime[$model->alias]['beforeSave']);
}
if (isset($this->runtime[$model->alias]['beforeSave'])) {
return true;
}
$this->_setRuntimeData($model);
return true;
}
@@ -338,7 +347,7 @@ public function beforeSave(Model $model) {
*/
protected function _setRuntimeData(Model $model) {
$locale = $this->_getLocale($model);
if (empty($locale) || isset($this->runtime[$model->alias]['beforeSave'])) {
if (empty($locale)) {
return true;
}
$fields = array_merge($this->settings[$model->alias], $this->runtime[$model->alias]['fields']);
@@ -370,12 +379,17 @@ protected function _setRuntimeData(Model $model) {
* @return void
*/
public function afterSave(Model $model, $created) {
if (!isset($this->runtime[$model->alias]['beforeSave'])) {
if (!isset($this->runtime[$model->alias]['beforeValidate']) && !isset($this->runtime[$model->alias]['beforeSave'])) {
return true;
}
$locale = $this->_getLocale($model);
$tempData = $this->runtime[$model->alias]['beforeSave'];
unset($this->runtime[$model->alias]['beforeSave']);
if (isset($this->runtime[$model->alias]['beforeValidate'])) {
$tempData = $this->runtime[$model->alias]['beforeValidate'];
} else {
$tempData = $this->runtime[$model->alias]['beforeSave'];
}
unset($this->runtime[$model->alias]['beforeValidate'], $this->runtime[$model->alias]['beforeSave']);
$conditions = array('model' => $model->alias, 'foreign_key' => $model->id);
$RuntimeModel = $this->translateModel($model);
@@ -742,6 +742,8 @@ public function testSaveAllTranslatedAssociations() {
'conditions' => array('translated_article_id' => $Model->id)
));
$this->assertCount(2, $result);
$this->assertEquals($data['TranslatedItem'][0]['title'], $result[0]['TranslatedItem']['title']);
$this->assertEquals($data['TranslatedItem'][1]['title'], $result[1]['TranslatedItem']['title']);
}
/**

0 comments on commit fbba362

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.