/** * Расчет рейтинга при голосовании за комментарий * * @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; }