checkQuestion($id); $user = $this->getLoginUser(); $validator = new QuestionValidator(); $validator->checkOwner($user->id, $question->owner_id); $validator->checkIfAllowDelete($question); $question->deleted = 1; $question->update(); $this->recountUserQuestions($user); $this->rebuildQuestionIndex($question); $this->eventsManager->fire('Question:afterDelete', $this, $question); return $question; } protected function recountUserQuestions(UserModel $user) { $userRepo = new UserRepo(); $questionCount = $userRepo->countQuestions($user->id); $user->question_count = $questionCount; $user->update(); } protected function rebuildQuestionIndex(QuestionModel $question) { $sync = new QuestionIndexSync(); $sync->addItem($question->id); } }