Ejemplo n.º 1
0
 /**
  * Расчет рейтинга и силы при гоосовании за топик
  *
  * @param ModuleUser_EntityUser $oUser	Объект пользователя, который голосует
  * @param ModuleTopic_EntityTopic $oTopic	Объект топика
  * @param int $iValue
  * @return int
  */
 public function VoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic, $iValue)
 {
     $oTopic->setRating($oTopic->getRating() + $iValue);
     $skill = $oUser->getSkill();
     $oUserTopic = $this->User_GetUserById($oTopic->getUserId());
     $iSkillNew = $oUserTopic->getSkill() + $iValue;
     $oUserTopic->setSkill($iSkillNew);
     $this->User_Update($oUserTopic);
     return $iValue;
 }
Ejemplo n.º 2
0
 /**
  * Расчет рейтинга и силы при гоосовании за топик
  *
  * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует
  * @param ModuleTopic_EntityTopic $oTopic Объект топика
  * @param int $iValue
  * @return int
  */
 public function VoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic, $iValue)
 {
     /**
      * Устанавливаем рейтинг топика
      */
     $oTopic->setRating($oTopic->getRating() + $iValue);
     /**
      * Меняем рейтинг автора топика
      */
     $fDeltaUser = ($iValue < 0 ? -1 : 1) * Config::Get('module.rating.topic_multiplier');
     $oUserTopic = $this->User_GetUserById($oTopic->getUserId());
     $oUserTopic->setRating($oUserTopic->getRating() + $fDeltaUser);
     $this->User_Update($oUserTopic);
     return $iValue;
 }
Ejemplo n.º 3
0
 /**
  * Расчет рейтинга и силы при гоосовании за топик
  *
  * @param ModuleUser_EntityUser   $oUser     Объект пользователя, который голосует
  * @param ModuleTopic_EntityTopic $oTopic    Объект топика
  * @param int                     $iValue
  *
  * @return int
  */
 public function VoteTopic($oUser, $oTopic, $iValue)
 {
     $iDeltaRating = 0;
     $skill = $oUser->getSkill();
     if (C::Get('plugin.rating.topic.vote') && (C::Get('plugin.rating.topic.dislike') || !C::Get('plugin.rating.topic.dislike') && $iValue > 0)) {
         /**
          * Устанавливаем рейтинг топика
          */
         $iDeltaRating = $iValue * C::Get('plugin.rating.rating.topic_k1');
         //1
         if ($skill >= C::Get('plugin.rating.rating.topic_border_1') and $skill < C::Get('plugin.rating.rating.topic_border_2')) {
             // 100-250
             $iDeltaRating = $iValue * C::Get('plugin.rating.rating.topic_k2');
             //2
         } elseif ($skill >= C::Get('plugin.rating.rating.topic_border_2') and $skill < C::Get('plugin.rating.rating.topic_border_3')) {
             //250-400
             $iDeltaRating = $iValue * C::Get('plugin.rating.rating.topic_k3');
             //3
         } elseif ($skill >= C::Get('plugin.rating.rating.topic_border_3')) {
             //400
             $iDeltaRating = $iValue * C::Get('plugin.rating.rating.topic_k4');
             //4
         }
         $oTopic->setRating($oTopic->getRating() + $iDeltaRating);
     }
     if (C::Get('plugin.rating.rating.vote') && (C::Get('plugin.rating.topic.dislike') || !C::Get('plugin.rating.topic.dislike') && $iValue > 0)) {
         /**
          * Начисляем силу и рейтинг автору топика, используя логарифмическое распределение
          */
         $iMinSize = C::Get('plugin.rating.topic.min_change');
         //0.1;
         $iMaxSize = C::Get('plugin.rating.topic.max_change');
         //8;
         $iSizeRange = $iMaxSize - $iMinSize;
         $iMinCount = log(0 + 1);
         $iMaxCount = log(C::Get('plugin.rating.topic.max_rating') + 1);
         $iCountRange = $iMaxCount - $iMinCount;
         if ($iCountRange == 0) {
             $iCountRange = 1;
         }
         if ($skill > C::Get('plugin.rating.topic.left_border') and $skill < C::Get('plugin.rating.topic.right_border')) {
             //200
             $skill_new = $skill / C::Get('plugin.rating.topic.mid_divider');
             //70;
         } elseif ($skill >= C::Get('plugin.rating.topic.right_border')) {
             //200
             $skill_new = $skill / C::Get('plugin.rating.topic.right_divider');
             //10;
         } else {
             $skill_new = $skill / C::Get('plugin.rating.topic.left_divider');
             //100;
         }
         $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange);
         /**
          * Сохраняем силу и рейтинг
          */
         $oUserTopic = $this->User_GetUserById($oTopic->getUserId());
         $iSkillNew = $oUserTopic->getSkill() + $iValue * $iDelta;
         $iSkillNew = $iSkillNew < 0 ? 0 : $iSkillNew;
         $oUserTopic->setSkill($iSkillNew);
         $oUserTopic->setRating($oUserTopic->getRating() + $iValue * $iDelta / C::Get('plugin.rating.topic.auth_coef'));
         //2.73
         $this->User_Update($oUserTopic);
     }
     if ($skill > C::Get('plugin.rating.topic.left_border') and $skill < C::Get('plugin.rating.topic.right_border')) {
         //200
         $skill_new = $skill / C::Get('plugin.rating.topic.mid_divider');
         //70;
     } elseif ($skill >= C::Get('plugin.rating.topic.right_border')) {
         //200
         $skill_new = $skill / C::Get('plugin.rating.topic.right_divider');
         //10;
     } else {
         $skill_new = $skill / C::Get('plugin.rating.topic.left_divider');
         //100;
     }
     $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange);
     /**
      * Сохраняем силу и рейтинг
      */
     $oUserTopic = $this->User_GetUserById($oTopic->getUserId());
     $iSkillNew = $oUserTopic->getSkill() + $iValue * $iDelta;
     $iSkillNew = $iSkillNew < 0 ? 0 : $iSkillNew;
     $oUserTopic->setSkill($iSkillNew);
     $oUserTopic->setRating($oUserTopic->getRating() + $iValue * $iDelta / C::Get('plugin.rating.topic.auth_coef'));
     //2.73
     $this->User_Update($oUserTopic);
     return $iDeltaRating;
 }
Ejemplo n.º 4
0
 /**
  * Обновляет топик
  *
  * @param ModuleTopic_EntityTopic $oTopic Объект топика
  * @return bool
  */
 public function UpdateTopic(ModuleTopic_EntityTopic $oTopic)
 {
     $sql = "UPDATE " . Config::Get('db.table.topic') . "\n\t\t\tSET \n\t\t\t\tblog_id= ?d,\n\t\t\t\tblog_id2= ?d,\n\t\t\t\tblog_id3= ?d,\n\t\t\t\tblog_id4= ?d,\n\t\t\t\tblog_id5= ?d,\n\t\t\t\ttopic_title= ?,\n\t\t\t\ttopic_slug= ?,\n\t\t\t\ttopic_tags= ?,\n\t\t\t\ttopic_date_add = ?,\n\t\t\t\ttopic_date_edit = ?,\n\t\t\t\ttopic_date_edit_content = ?,\n\t\t\t\ttopic_date_publish = ?,\n\t\t\t\ttopic_user_ip= ?,\n\t\t\t\ttopic_publish= ?d ,\n\t\t\t\ttopic_publish_draft= ?d ,\n\t\t\t\ttopic_publish_index= ?d,\n\t\t\t\ttopic_skip_index= ?d,\n\t\t\t\ttopic_rating= ?f,\n\t\t\t\ttopic_count_vote= ?d,\n\t\t\t\ttopic_count_vote_up= ?d,\n\t\t\t\ttopic_count_vote_down= ?d,\n\t\t\t\ttopic_count_vote_abstain= ?d,\n\t\t\t\ttopic_count_read= ?d,\n\t\t\t\ttopic_count_comment= ?d, \n\t\t\t\ttopic_count_favourite= ?d,\n\t\t\t\ttopic_cut_text = ? ,\n\t\t\t\ttopic_forbid_comment = ? ,\n\t\t\t\ttopic_text_hash = ? \n\t\t\tWHERE\n\t\t\t\ttopic_id = ?d\n\t\t";
     $res = $this->oDb->query($sql, $oTopic->getBlogId(), $oTopic->getBlogId2(), $oTopic->getBlogId3(), $oTopic->getBlogId4(), $oTopic->getBlogId5(), $oTopic->getTitle(), $oTopic->getSlug(), $oTopic->getTags(), $oTopic->getDateAdd(), $oTopic->getDateEdit(), $oTopic->getDateEditContent(), $oTopic->getDatePublish(), $oTopic->getUserIp(), $oTopic->getPublish(), $oTopic->getPublishDraft(), $oTopic->getPublishIndex(), $oTopic->getSkipIndex(), $oTopic->getRating(), $oTopic->getCountVote(), $oTopic->getCountVoteUp(), $oTopic->getCountVoteDown(), $oTopic->getCountVoteAbstain(), $oTopic->getCountRead(), $oTopic->getCountComment(), $oTopic->getCountFavourite(), $oTopic->getCutText(), $oTopic->getForbidComment(), $oTopic->getTextHash(), $oTopic->getId());
     if ($res !== false and !is_null($res)) {
         $this->UpdateTopicContent($oTopic);
         return true;
     }
     return false;
 }
Ejemplo n.º 5
0
 /**
  * Расчет рейтинга и силы при гоосовании за топик
  *
  * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует
  * @param ModuleTopic_EntityTopic $oTopic Объект топика
  * @param int $iValue
  *
  * @return int
  */
 public function VoteTopic($oUser, $oTopic, $iValue)
 {
     if (!C::Get('plugin.simplerating.topic.vote')) {
         return 0;
     }
     if (!C::Get('plugin.simplerating.topic.dislike') && $iValue < 0) {
         return 0;
     }
     /**
      * Устанавливаем рейтинг топика
      */
     if (C::Get('plugin.simplerating.topic.add')) {
         $oTopic->setRating((double) $oTopic->getRating() + $iValue * (double) C::Get('plugin.simplerating.topic.add'));
     }
     /**
      * Устанавливаем рейтинг автора
      */
     if (C::Get('plugin.simplerating.topic.user_add')) {
         $oUserTopic = $this->User_GetUserById($oTopic->getUserId());
         $oUserTopic->setRating((double) $oUserTopic->getRating() + $iValue * (double) C::Get('plugin.simplerating.topic.user_add'));
         $this->User_Update($oUserTopic);
     }
     /**
      * Убавляем рейтинг голосующего, если нужно
      */
     if (C::Get('plugin.simplerating.topic.user_remove')) {
         $oUser->setRating((double) $oUser->getRating() + (double) C::Get('plugin.simplerating.topic.user_remove'));
         $this->User_Update($oUser);
     }
     return (double) C::Get('plugin.simplerating.topic.add');
 }
Ejemplo n.º 6
0
 public function UpdateTopic(ModuleTopic_EntityTopic $oTopic)
 {
     $sql = "UPDATE " . Config::Get('db.table.topic') . " \n\t\t\tSET \n\t\t\t\tblog_id= ?d,\n\t\t\t\ttopic_title= ?,\t\t\t\t\n\t\t\t\ttopic_tags= ?,\n\t\t\t\ttopic_date_add = ?,\n\t\t\t\ttopic_date_edit = ?,\n\t\t\t\ttopic_user_ip= ?,\n\t\t\t\ttopic_publish= ?d ,\n\t\t\t\ttopic_publish_draft= ?d ,\n\t\t\t\ttopic_publish_index= ?d,\n\t\t\t\ttopic_rating= ?f,\n\t\t\t\ttopic_count_vote= ?d,\n\t\t\t\ttopic_count_read= ?d,\n\t\t\t\ttopic_count_comment= ?d, \n\t\t\t\ttopic_cut_text = ? ,\n\t\t\t\ttopic_forbid_comment = ? ,\n\t\t\t\ttopic_text_hash = ? \n\t\t\tWHERE\n\t\t\t\ttopic_id = ?d\n\t\t";
     if ($this->oDb->query($sql, $oTopic->getBlogId(), $oTopic->getTitle(), $oTopic->getTags(), $oTopic->getDateAdd(), $oTopic->getDateEdit(), $oTopic->getUserIp(), $oTopic->getPublish(), $oTopic->getPublishDraft(), $oTopic->getPublishIndex(), $oTopic->getRating(), $oTopic->getCountVote(), $oTopic->getCountRead(), $oTopic->getCountComment(), $oTopic->getCutText(), $oTopic->getForbidComment(), $oTopic->getTextHash(), $oTopic->getId())) {
         $this->UpdateTopicContent($oTopic);
         return true;
     }
     return false;
 }
Ejemplo n.º 7
0
 /**
  * Обновляет топик
  *
  * @param ModuleTopic_EntityTopic $oTopic    Объект топика
  *
  * @return bool
  */
 public function UpdateTopic(ModuleTopic_EntityTopic $oTopic)
 {
     $sql = "UPDATE ?_topic\n\t\t\tSET \n\t\t\t\tblog_id = ?d,\n\t\t\t\ttopic_title = ?,\n\t\t\t\ttopic_tags = ?,\n\t\t\t\ttopic_date_add = ?,\n\t\t\t\ttopic_date_edit = ?,\n\t\t\t\ttopic_date_show = ?,\n\t\t\t\ttopic_user_ip = ?,\n\t\t\t\ttopic_publish = ?d ,\n\t\t\t\ttopic_publish_draft = ?d ,\n\t\t\t\ttopic_publish_index = ?d,\n\t\t\t\ttopic_rating = ?f,\n\t\t\t\ttopic_count_vote = ?d,\n\t\t\t\ttopic_count_vote_up = ?d,\n\t\t\t\ttopic_count_vote_down = ?d,\n\t\t\t\ttopic_count_vote_abstain = ?d,\n\t\t\t\ttopic_count_read = ?d,\n\t\t\t\ttopic_count_comment = ?d,\n\t\t\t\ttopic_count_favourite = ?d,\n\t\t\t\ttopic_cut_text = ? ,\n\t\t\t\ttopic_forbid_comment = ? ,\n\t\t\t\ttopic_text_hash = ?,\n\t\t\t\ttopic_url = ?,\n\t\t\t\ttopic_index_ignore = ?d\n\t\t\tWHERE\n\t\t\t\ttopic_id = ?d\n\t\t";
     $bResult = $this->oDb->query($sql, $oTopic->getBlogId(), $oTopic->getTitle(), $oTopic->getTags(), $oTopic->getDateAdd(), $oTopic->getDateEdit(), $oTopic->getDateShow(), $oTopic->getUserIp(), $oTopic->getPublish() ? 1 : 0, $oTopic->getPublishDraft() ? 1 : 0, $oTopic->getPublishIndex() ? 1 : 0, $oTopic->getRating(), $oTopic->getCountVote(), $oTopic->getCountVoteUp(), $oTopic->getCountVoteDown(), $oTopic->getCountVoteAbstain(), $oTopic->getCountRead(), $oTopic->getCountComment(), $oTopic->getCountFavourite(), $oTopic->getCutText(), $oTopic->getForbidComment(), $oTopic->getTextHash(), $oTopic->getTopicUrl(), $oTopic->getTopicIndexIgnore(), $oTopic->getId());
     if ($bResult !== false) {
         $this->UpdateTopicContent($oTopic);
         return true;
     }
     return false;
 }
Ejemplo n.º 8
0
 /**
  * Расчет рейтинга и силы при гоосовании за топик
  *
  * @param ModuleUser_EntityUser $oUser Объект пользователя, который голосует
  * @param ModuleTopic_EntityTopic $oTopic Объект топика
  * @param int $iValue
  * @return int
  */
 public function VoteTopic(ModuleUser_EntityUser $oUser, ModuleTopic_EntityTopic $oTopic, $iValue)
 {
     $skill = $oUser->getSkill();
     /**
      * Устанавливаем рейтинг топика
      */
     $iDeltaRating = $iValue;
     if ($skill >= 100 and $skill < 250) {
         $iDeltaRating = $iValue * 2;
     } elseif ($skill >= 250 and $skill < 400) {
         $iDeltaRating = $iValue * 3;
     } elseif ($skill >= 400) {
         $iDeltaRating = $iValue * 4;
     }
     $oTopic->setRating($oTopic->getRating() + $iDeltaRating);
     /**
      * Начисляем силу и рейтинг автору топика, используя логарифмическое распределение
      */
     $iMinSize = 0.1;
     $iMaxSize = 8;
     $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 / 100;
     }
     $iDelta = $iMinSize + (log($skill_new + 1) - $iMinCount) * ($iSizeRange / $iCountRange);
     /**
      * Сохраняем силу и рейтинг
      */
     $oUserTopic = $this->User_GetUserById($oTopic->getUserId());
     $iSkillNew = $oUserTopic->getSkill() + $iValue * $iDelta;
     $iSkillNew = $iSkillNew < 0 ? 0 : $iSkillNew;
     $oUserTopic->setSkill($iSkillNew);
     $oUserTopic->setRating($oUserTopic->getRating() + $iValue * $iDelta / 2.73);
     $this->User_Update($oUserTopic);
     return $iDeltaRating;
 }