コード例 #1
0
ファイル: Rating.class.php プロジェクト: AntiqS/altocms
 /**
  * Расчет рейтинга при голосовании за комментарий
  *
  * @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;
 }
コード例 #2
0
ファイル: Rating.class.php プロジェクト: AntiqS/altocms
 /**
  * Расчет рейтинга при голосовании за комментарий
  *
  * @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;
 }
コード例 #3
0
 /**
  * Расчет рейтинга при голосовании за комментарий
  *
  * @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;
 }
コード例 #4
0
 /**
  * Расчет рейтинга при голосовании за комментарий
  *
  * @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;
 }
コード例 #5
0
 /**
  * Расчет рейтинга при голосовании за комментарий
  *
  * @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;
 }