Наш вариант решения вопроса с рейтингом блогов
Итак, сделали рейтинг блогов зависимым от оценок постов, опубликованных в этих блогах.
в Rating.class.php
Берем функцию public function VoteTopic(UserEntity_User $oUser, TopicEntity_Topic $oTopic, $iValue)
, которая обрабатывает голосование за посты
Далее заменяем это:
/**
* Сохраняем силу и рейтинг
*/
$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;
На это:
/**
* Сохраняем силу и рейтинг
*/
$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);
$oBlog=$this->Blog_GetBlogById($oTopic->getBlogId());
$oBlog->setRating($oBlog->getRating()+$iValue*$iDelta/2.73);
$this->Blog_UpdateBlog($oBlog);
return $iDeltaRating;
То есть добавляем в блог то же значение рейтинга, которое добавляется автору поста в репутацию. Всё. Работает и с персональными блогами.
в Rating.class.php
Берем функцию public function VoteTopic(UserEntity_User $oUser, TopicEntity_Topic $oTopic, $iValue)
, которая обрабатывает голосование за посты
Далее заменяем это:
/**
* Сохраняем силу и рейтинг
*/
$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;
На это:
/**
* Сохраняем силу и рейтинг
*/
$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);
$oBlog=$this->Blog_GetBlogById($oTopic->getBlogId());
$oBlog->setRating($oBlog->getRating()+$iValue*$iDelta/2.73);
$this->Blog_UpdateBlog($oBlog);
return $iDeltaRating;
То есть добавляем в блог то же значение рейтинга, которое добавляется автору поста в репутацию. Всё. Работает и с персональными блогами.
10 комментариев