/** * Расчет рейтинга и силы при голосовании за пользователя * * @param ModuleUser_EntityUser $oUser * @param ModuleUser_EntityUser $oUserTarget * @param int $iValue * * @return float */ public function VoteUser($oUser, $oUserTarget, $iValue) { if (!C::Get('plugin.rating.user.vote')) { return 0; } if (!C::Get('plugin.rating.user.dislike') && $iValue < 0) { return 0; } /** * Начисляем силу и рейтинг юзеру, используя логарифмическое распределение */ $skill = $oUser->getSkill(); $iMinSize = C::Get('plugin.rating.user.min_change'); //0.42; $iMaxSize = C::Get('plugin.rating.user.max_change'); //3.2; $iSizeRange = $iMaxSize - $iMinSize; $iMinCount = log(0 + 1); $iMaxCount = log(C::Get('plugin.rating.user.max_rating') + 1); // 500 $iCountRange = $iMaxCount - $iMinCount; if ($iCountRange == 0) { $iCountRange = 1; } if ($skill > C::Get('plugin.rating.user.left_border') and $skill < C::Get('plugin.rating.user.right_border')) { // 50-200 $skill_new = $skill / C::Get('plugin.rating.user.mid_divider'); //70 } elseif ($skill >= C::Get('plugin.rating.user.right_border')) { // 200 $skill_new = $skill / C::Get('plugin.rating.user.right_divider'); //2 } else { $skill_new = $skill / C::Get('plugin.rating.user.left_divider'); //40 } $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange); /** * Определяем новый рейтинг */ $iRatingNew = $oUserTarget->getRating() + $iValue * $iDelta; $oUserTarget->setRating($iRatingNew); return $iValue * $iDelta; }
/** * Расчет рейтинга и силы при голосовании за пользователя * * @param ModuleUser_EntityUser $oUser * @param ModuleUser_EntityUser $oUserTarget * @param int $iValue * @return float */ public function VoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget, $iValue) { /** * Начисляем силу и рейтинг юзеру, используя логарифмическое распределение */ $skill = $oUser->getSkill(); $iMinSize = 0.42; $iMaxSize = 3.2; $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 / 40; } elseif ($skill >= 200) { $skill_new = $skill / 2; } else { $skill_new = $skill / 70; } $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange); /** * Определяем новый рейтинг */ $iRatingNew = $oUserTarget->getRating() + $iValue * $iDelta; $oUserTarget->setRating($iRatingNew); return $iValue * $iDelta; }
/** * Расчет рейтинга и силы при голосовании за пользователя * * @param ModuleUser_EntityUser $oUser * @param ModuleUser_EntityUser $oUserTarget * @param int $iValue * * @return float */ public function VoteUser($oUser, $oUserTarget, $iValue) { if (!C::Get('plugin.simplerating.user.vote')) { return 0; } if (!C::Get('plugin.simplerating.user.dislike') && $iValue < 0) { return 0; } /** * Начисляем рейтинг пользователя */ $oUserTarget->setRating((double) $oUserTarget->getRating() + $iValue * (double) C::Get('plugin.simplerating.user.add')); /** * Убавляем рейтинг голосующего, если нужно */ if (C::Get('plugin.simplerating.user_remove')) { $oUser->setRating((double) $oUser->getRating() + (double) C::Get('plugin.simplerating.user.remove')); $this->User_Update($oUser); } return (double) C::Get('plugin.simplerating.user.add'); }
/** * Расчет рейтинга и силы при голосовании за пользователя * * @param ModuleUser_EntityUser $oUser * @param ModuleUser_EntityUser $oUserTarget * @param int $iValue * @return float */ public function VoteUser(ModuleUser_EntityUser $oUser, ModuleUser_EntityUser $oUserTarget, $iValue, $voted = false) { $iRatingNew = $oUserTarget->getRating() + $iValue; $oUserCurrent = $this->User_GetUserCurrent(); $oUserTarget->setRating($iRatingNew); if (!$voted) { if ($iValue > 0) { $oUserTarget->setSkill($oUserTarget->getSkill() + 10.0); } else { $oUserTarget->setSkill($oUserTarget->getSkill() - 10.0); } } $this->User_Update($oUserTarget); return $iValue; }