protected function beforeSave() { if ($this->isNewRecord) { $this->reopen_count = 0; } else { if (BugInfo::ACTION_ACTIVATE == $this->scenario) { $this->reopen_count += 1; } } if (!$this->isNewRecord && self::DUPLICATE_SOLUTION == $this->solution) { $oldRecord = self::model()->findByPk($this->id); $oldDuplicatedIdArr = CommonService::splitStringToArray(',', $oldRecord->duplicate_id); $duplicatedIdArr = CommonService::splitStringToArray(',', $this->duplicate_id); $diffDuplicatedIdArr = array_diff($duplicatedIdArr, $oldDuplicatedIdArr); foreach ($diffDuplicatedIdArr as $dupId) { $basicInfo = new BugInfo(); $basicInfo->id = $dupId; $basicInfo->action_note = 'Bug #<a href="Bug.php?BugID=' . $this->id . '" target="_blank">' . $this->id . '</a> is resolved as duplicate to this bug.'; $addActionResult = InfoService::addActionNotes(Info::TYPE_BUG, Info::ACTION_OPEN_EDIT, $basicInfo, array('basic' => array(), 'custom' => array())); } } return parent::beforeSave(); }