/** * * @param ProjectModel $projectModel * @param string $questionId * @param string $answerId * @param CommentModel $commentModel * @return string activity id */ public static function updateComment($projectModel, $questionId, $answerId, $commentModel, $mode = "update") { $activity = new ActivityModel($projectModel); $question = new QuestionModel($projectModel, $questionId); $answer = $question->readAnswer($answerId); $text = new TextModel($projectModel, $question->textRef->asString()); $user = new UserModel($commentModel->userRef->asString()); $user2 = new UserModel($answer->userRef->asString()); $activity->action = $mode == 'update' ? ActivityModel::UPDATE_COMMENT : ActivityModel::ADD_COMMENT; $activity->userRef->id = $commentModel->userRef->asString(); $activity->userRef2->id = $answer->userRef->asString(); $activity->textRef->id = $text->id->asString(); $activity->questionRef->id = $questionId; $activity->addContent(ActivityModel::TEXT, $text->title); $activity->addContent(ActivityModel::ANSWER, $answer->content); $activity->addContent(ActivityModel::QUESTION, $question->getTitleForDisplay()); $activity->addContent(ActivityModel::COMMENT, $commentModel->content); $activity->addContent(ActivityModel::USER, $user->username); $activity->addContent(ActivityModel::USER2, $user2->username); $activityId = $activity->write(); UnreadActivityModel::markUnreadForProjectMembers($activityId, $projectModel); UnreadCommentModel::markUnreadForProjectMembers($commentModel->id->asString(), $projectModel, $questionId, $commentModel->userRef->asString()); return $activityId; }
public function testUpdateAnswerTags_ExistingAnswer_ChangePersists() { $e = new MongoTestEnvironment(); $e->clean(); $project = $e->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE); $text = new TextModel($project); $text->title = "Text 1"; $usx = MongoTestEnvironment::usxSample(); $text->content = $usx; $textId = $text->write(); $question = new QuestionModel($project); $question->textRef->id = $textId; $questionId = $question->write(); $answer = new AnswerModel(); $answer->content = "the answer"; $answer->tags[] = 'originalTag'; $answerId = $question->writeAnswer($answer); $tagsArray = array('updatedTag'); $dto = QuestionCommands::updateAnswerTags($project->id->asString(), $questionId, $answerId, $tagsArray); $question->read($questionId); $newAnswer = $question->readAnswer($answerId); $this->assertEqual(count($newAnswer->tags), 1); $this->assertEqual($newAnswer->tags[0], 'updatedTag'); $this->assertEqual($dto[$answerId]['tags'][0], 'updatedTag'); }
public static function voteDown($userId, $projectId, $questionId, $answerId) { $projectModel = new ProjectModel($projectId); $questionModel = new QuestionModel($projectModel, $questionId); // Check the vote lock. $vote = new UserVoteModel($userId, $projectId, $questionId); if (!$vote->hasVote($answerId)) { // Don't throw. There's no harm in this, just don't decrement the vote. return self::encodeAnswer($questionModel->readAnswer($answerId)); } // If ok down vote the question and remove the lock. $answerModel = $questionModel->readAnswer($answerId); $answerModel->score--; $questionModel->writeAnswer($answerModel); $vote->removeVote($answerId); $vote->write(); // Return the answer dto. return self::encodeAnswer($answerModel); }