예제 #1
0
 /**
  * Расчет рейтинга и силы при голосовании за пользователя
  *
  * @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;
 }
예제 #2
0
 /**
  * Расчет рейтинга и силы при голосовании за пользователя
  *
  * @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;
 }
예제 #3
0
 /**
  * Расчет рейтинга и силы при голосовании за пользователя
  *
  * @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');
 }
예제 #4
0
 /**
  * Расчет рейтинга и силы при голосовании за пользователя
  *
  * @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;
 }