|
|
@@ -318,10 +318,19 @@ class TranslateBehavior extends ModelBehavior {
|
|
|
/**
|
|
|
* 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 @@ class TranslateBehavior extends ModelBehavior {
|
|
|
*/
|
|
|
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 @@ class TranslateBehavior extends ModelBehavior {
|
|
|
* @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);
|
|
|
|