checkAnswer($id); $question = $this->checkQuestion($answer->question_id); $user = $this->getLoginUser(); $validator = new AnswerValidator(); $validator->checkOwner($user->id, $answer->owner_id); if ($question->solved == 1) return $answer; $answer->accepted = 1; $answer->update(); $question->last_answer_id = $answer->id; $question->last_reply_time = time(); $question->solved = 1; $question->update(); $this->handleAcceptNotice($answer, $user); $this->eventsManager->fire('Answer:afterAccept', $this, $answer); return $answer; } protected function handleAcceptPoint(AnswerModel $answer) { $service = new AnswerAcceptPointHistory(); $service->handle($answer); } protected function handleAcceptNotice(AnswerModel $answer, UserModel $sender) { $notice = new AnswerAcceptedNotice(); $notice->handle($answer, $sender); } }