/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * * @return int */ public function VoteComment($oUser, $oComment, $iValue) { if (!C::Get('plugin.simplerating.comment.vote')) { return 0; } if (!C::Get('plugin.simplerating.comment.dislike') && $iValue < 0) { return 0; } /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем рейтинг автору комментария */ if (C::Get('plugin.simplerating.comment.user_add')) { $oUserComment = $this->User_GetUserById($oComment->getUserId()); $oUserComment->setRating((double) $oUserComment->getRating() + $iValue * (double) C::Get('plugin.simplerating.comment.user_add')); $this->User_Update($oUserComment); } /** * Убавляем рейтинг голосующего, если нужно */ if (C::Get('plugin.simplerating.comment.user_remove')) { $oUser->setRating((double) $oUser->getRating() + (double) C::Get('plugin.simplerating.comment.user_remove')); $this->User_Update($oUser); } return $iValue; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * * @return int */ public function VoteComment($oUser, $oComment, $iValue) { if (!C::Get('plugin.rating.comment.vote')) { return 0; } if (!C::Get('plugin.rating.comment.dislike') && $iValue < 0) { return 0; } /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем силу автору коммента, используя логарифмическое распределение */ $skill = $oUser->getSkill(); $iMinSize = C::Get('plugin.rating.comment.min_change'); //0.004; $iMaxSize = C::Get('plugin.rating.comment.max_change'); //0.5; $iSizeRange = $iMaxSize - $iMinSize; $iMinCount = log(0 + 1); $iMaxCount = log(C::Get('plugin.rating.comment.max_rating') + 1); //500 $iCountRange = $iMaxCount - $iMinCount; if ($iCountRange == 0) { $iCountRange = 1; } if ($skill > C::Get('plugin.rating.comment.left_border') and $skill < C::Get('plugin.rating.comment.right_border')) { //50-200 $skill_new = $skill / C::Get('plugin.rating.comment.mid_divider'); //70 } elseif ($skill >= C::Get('plugin.rating.comment.right_border')) { //200 $skill_new = $skill / C::Get('plugin.rating.comment.right_divider'); //10 } else { $skill_new = $skill / C::Get('plugin.rating.comment.left_divider'); //130 } $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange); /** * Сохраняем силу */ $oUserComment = $this->User_GetUserById($oComment->getUserId()); $iSkillNew = $oUserComment->getSkill() + $iValue * $iDelta; $iSkillNew = $iSkillNew < 0 ? 0 : $iSkillNew; $oUserComment->setSkill($iSkillNew); $this->User_Update($oUserComment); return $iValue; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * @return int */ public function VoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment, $iValue) { /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Меняем рейтинг автора коммента */ $fDeltaUser = ($iValue < 0 ? -1 : 1) * Config::Get('module.rating.comment_multiplier'); $oUserComment = $this->User_GetUserById($oComment->getUserId()); $oUserComment->setRating($oUserComment->getRating() + $fDeltaUser); $this->User_Update($oUserComment); return $iValue; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * @return int */ public function VoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment, $iValue) { /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем силу автору коммента, используя логарифмическое распределение */ $skill = $oUser->getSkill(); /** * Сохраняем силу */ $oUserComment = $this->User_GetUserById($oComment->getUserId()); $iSkillNew = $oUserComment->getSkill() + $iValue / 10; $oUserComment->setSkill($iSkillNew); $this->User_Update($oUserComment); return $iValue; }
/** * Расчет рейтинга при голосовании за комментарий * * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует * @param ModuleComment_EntityComment $oComment Объект комментария * @param int $iValue * @return int */ public function VoteComment(ModuleUser_EntityUser $oUser, ModuleComment_EntityComment $oComment, $iValue) { /** * Устанавливаем рейтинг комментария */ $oComment->setRating($oComment->getRating() + $iValue); /** * Начисляем силу автору коммента, используя логарифмическое распределение */ $skill = $oUser->getSkill(); $iMinSize = 0.004; $iMaxSize = 0.5; $iSizeRange = $iMaxSize - $iMinSize; $iMinCount = log(0 + 1); $iMaxCount = log(500 + 1); $iCountRange = $iMaxCount - $iMinCount; if ($iCountRange == 0) { $iCountRange = 1; } if ($skill > 50 and $skill < 200) { $skill_new = $skill / 70; } elseif ($skill >= 200) { $skill_new = $skill / 10; } else { $skill_new = $skill / 130; } $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange); /** * Сохраняем силу */ $oUserComment = $this->User_GetUserById($oComment->getUserId()); $iSkillNew = $oUserComment->getSkill() + $iValue * $iDelta; $iSkillNew = $iSkillNew < 0 ? 0 : $iSkillNew; $oUserComment->setSkill($iSkillNew); $this->User_Update($oUserComment); return $iValue; }
/** * Обновляет коммент * * @param ModuleComment_EntityComment $oComment Объект комментария * @return bool */ public function UpdateComment(ModuleComment_EntityComment $oComment) { $sql = "UPDATE " . Config::Get('db.table.comment') . "\n\t\t\tSET \n\t\t\t\tcomment_text= ?,\n\t\t\t\tcomment_text_source= ?,\n\t\t\t\tcomment_rating= ?f,\n\t\t\t\tcomment_count_vote= ?d,\n\t\t\t\tcomment_count_favourite= ?d,\n\t\t\t\tcomment_count_edit= ?d,\n\t\t\t\tcomment_date_edit= ?,\n\t\t\t\tcomment_delete = ?d ,\n\t\t\t\tcomment_publish = ?d ,\n\t\t\t\tcomment_text_hash = ?\n\t\t\tWHERE\n\t\t\t\tcomment_id = ?d\n\t\t"; $res = $this->oDb->query($sql, $oComment->getText(), $oComment->getTextSource(), $oComment->getRating(), $oComment->getCountVote(), $oComment->getCountFavourite(), $oComment->getCountEdit(), $oComment->getDateEdit(), $oComment->getDelete(), $oComment->getPublish(), $oComment->getTextHash(), $oComment->getId()); return $this->IsSuccessful($res); }
public function UpdateComment(ModuleComment_EntityComment $oComment) { $sql = "UPDATE " . Config::Get('db.table.comment') . " \n\t\t\tSET \n\t\t\t\tcomment_text= ?,\n\t\t\t\tcomment_rating= ?f,\n\t\t\t\tcomment_count_vote= ?d,\n\t\t\t\tcomment_delete = ?d ,\n\t\t\t\tcomment_publish = ?d ,\n\t\t\t\tcomment_text_hash = ?\n\t\t\tWHERE\n\t\t\t\tcomment_id = ?d\n\t\t"; if ($this->oDb->query($sql, $oComment->getText(), $oComment->getRating(), $oComment->getCountVote(), $oComment->getDelete(), $oComment->getPublish(), $oComment->getTextHash(), $oComment->getId())) { return true; } return false; }
/** * Обновляет коммент * * @param ModuleComment_EntityComment $oComment Объект комментария * * @return bool */ public function UpdateComment(ModuleComment_EntityComment $oComment) { $sql = "UPDATE ?_comment\n\t\t\tSET \n\t\t\t\tcomment_text= ?,\n\t\t\t\tcomment_rating= ?f,\n\t\t\t\tcomment_count_vote= ?d,\n\t\t\t\tcomment_count_favourite= ?d,\n\t\t\t\tcomment_delete = ?d ,\n\t\t\t\tcomment_publish = ?d ,\n\t\t\t\tcomment_date_edit = CASE comment_text_hash WHEN ? THEN comment_date_edit ELSE ? END,\n\t\t\t\tcomment_text_hash = ?\n\t\t\tWHERE\n\t\t\t\tcomment_id = ?d\n\t\t"; $bResult = $this->oDb->query($sql, $oComment->getText(), $oComment->getRating(), $oComment->getCountVote(), $oComment->getCountFavourite(), $oComment->getDelete(), $oComment->getPublish(), $oComment->getTextHash(), F::Now(), $oComment->getTextHash(), $oComment->getId()); return $bResult !== false; }