diff --git a/framework/yii/behaviors/AutoTimestamp.php b/framework/yii/behaviors/AutoTimestamp.php index 7611712..63a3ef0 100644 --- a/framework/yii/behaviors/AutoTimestamp.php +++ b/framework/yii/behaviors/AutoTimestamp.php @@ -8,6 +8,7 @@ namespace yii\behaviors; use yii\base\Behavior; +use yii\base\Event; use yii\db\Expression; use yii\db\ActiveRecord; @@ -64,28 +65,25 @@ class AutoTimestamp extends Behavior */ public function events() { - $events = array(); - $behavior = $this; - foreach ($this->attributes as $event => $attributes) { - if (!is_array($attributes)) { - $attributes = array($attributes); - } - $events[$event] = function () use ($behavior, $attributes) { - $behavior->updateTimestamp($attributes); - }; + $events = $this->attributes; + foreach ($events as $i => $event) { + $events[$i] = 'updateTimestamp'; } return $events; } /** * Updates the attributes with the current timestamp. - * @param array $attributes list of attributes to be updated. + * @param Event $event */ - public function updateTimestamp($attributes) + public function updateTimestamp($event) { - $timestamp = $this->evaluateTimestamp(); - foreach ($attributes as $attribute) { - $this->owner->$attribute = $timestamp; + $attributes = isset($this->attributes[$event->name]) ? (array)$this->attributes[$event->name] : array(); + if (!empty($attributes)) { + $timestamp = $this->evaluateTimestamp(); + foreach ($attributes as $attribute) { + $this->owner->$attribute = $timestamp; + } } }