setRating($oComment->getRating()+$iValue); /** * Начисляем силу автору коммента, используя логарифмическое распределение */ $skill=$oUser->getSkill(); $rating=$oUser->getRating(); // $iDeltaSkill=log($skill/200+1.001,10); $iDeltaSkill=log($skill/3.85+1,10)/40; $iDeltaRating=(log($rating+1,10)+log(log($skill/1.2+1,10)+1,10))/40; /** * Сохраняем силу */ $oUserComment=$this->User_GetUserById($oComment->getUserId()); $iRatingNew=$oUserComment->getRating()+$iValue*$iDeltaRating; $iSkillNew=$oUserComment->getSkill()+$iValue*$iDeltaSkill; $iSkillNew=($iSkillNew<0) ? 0 : $iSkillNew; $oUserComment->setSkill($iSkillNew); $oUserComment->setRating($iRatingNew); $this->User_Update($oUserComment); } /** * Расчет рейтинга и силы при гоосовании за топик * * @param UserEntity_User $oUser * @param TopicEntity_Topic $oTopic * @param unknown_type $iValue */ public function VoteTopic(UserEntity_User $oUser, TopicEntity_Topic $oTopic, $iValue) { $skill=$oUser->getSkill(); $rating=$oUser->getRating(); $oUserTopic=$this->User_GetUserById($oTopic->getUserId()); /** * Устанавливаем рейтинг топика */ $iDeltaRating=round($iValue*log($skill*3+1,10)+0.12); $oTopic->setRating($oTopic->getRating()+$iDeltaRating); /** * Начисляем силу и рейтинг автору топика, используя логарифмическое распределение */ // $iDeltaSkill=log($skill/20+1.01,10); $iDeltaSkill=log($skill/3.85+1,10)/4; $iDeltaRating=(log($rating+1,10)+log(log($skill/1.2+1,10)+1,10))/4; $iSkillNew=$oUserTopic->getSkill()+$iValue*$iDeltaSkill; $iSkillNew=($iSkillNew<0) ? 0 : $iSkillNew; /** * Сохраняем силу и рейтинг */ $oUserTopic=$this->User_GetUserById($oTopic->getUserId()); $iSkillNew=$oUserTopic->getSkill()+$iValue*$iDeltaSkill; $iSkillNew=($iSkillNew<0) ? 0 : $iSkillNew; $oUserTopic->setSkill($iSkillNew); $oUserTopic->setRating($oUserTopic->getRating()+$iValue*$iDeltaRating); $this->User_Update($oUserTopic); } /** * Расчет рейтинга и силы при голосовании за блог * * @param UserEntity_User $oUser * @param BlogEntity_Blog $oBlog * @param unknown_type $iValue */ public function VoteBlog(UserEntity_User $oUser, BlogEntity_Blog $oBlog, $iValue) { /** * Устанавливаем рейтинг блога, используя логарифмическое распределение */ $skill=$oUser->getSkill(); $iDelta=$iMinSize+log($skill+1,10); /** * Сохраняем рейтинг */ $oBlog->setRating($oBlog->getRating()+$iValue*$iDelta); } /** * Расчет рейтинга и силы при голосовании за пользователя * * @param UserEntity_User $oUser * @param UserEntity_User $oUserTarget * @param unknown_type $iValue */ public function VoteUser(UserEntity_User $oUser, UserEntity_User $oUserTarget, $iValue) { /** * Начисляем силу и рейтинг юзеру, используя логарифмическое распределение */ $skill=$oUser->getSkill(); $rating=$oUser->getRating(); $iDeltaSkill=log($skill/3.85+1,10); $iDeltaRating=log($rating+1,10)+log(log($skill/1.2+1,10)+1,10); $iRatingNew=$oUserTarget->getRating()+$iValue*$iDeltaRating; $iSkillNew=$oUserTarget->getSkill()+$iValue*$iDeltaSkill; $iSkillNew=($iSkillNew<0) ? 0 : $iSkillNew; /** * Сохраняем силу и рейтинг */ $oUserTarget->setSkill($iSkillNew); $oUserTarget->setRating($iRatingNew); } } ?>