↑ 

Блог им. Palmaвопрос

Люди, подскажите, что такое сила на сайте и от чего она зависит.
  • +1
  • Palma
  • 29 декабря 2010, 20:04

Комментарии (19)

rss свернуть / развернуть
Как я понял сила это плюсы за комментарии — один плюс = 0,1 силы. А рейтинг складывается из плюсов поставленных Вашим топикам.
свернуть ветку
Наверное. не совсем так. И рейтинг и сила — до сотых.
свернуть ветку
что то подсказывает что сила еще и от количества постов зависит, но могу и ошибаться…
свернуть ветку
Получается, что рейтинг повышаем(или понижаем) вручную тому, кто понравился(или наоборот)
свернуть ветку
схема расчета силы и рейтинга не изменена и полностью аналогична таковой в базовом варианте LS.

цитирую разработчика:

сила пользователя это его «авторитет», который он заработал своими топиками и комментариями.
а рейтинг пользователя это то как его оценили другие пользователи напрямую используя свою силу(«авторитет»)

рейтинг — по сути твой статус в сети, чем выше тем ты «круче»
сила — твоя степень влияние в сети на происходящее

свернуть ветку
вообщем, формулы мы пока не видим: сколько весит один плюс
свернуть ветку
формула есть. разбираться в ней желания нет)))

<?php
/*-------------------------------------------------------
*
*   LiveStreet Engine Social Networking
*   Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
*   Official site: www.livestreet.ru
*   Contact e-mail: rus.engine@gmail.com
*
*   GNU General Public License, version 2:
*   http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/

/**
 * Модуль управления рейтингами и силой 
 *
 */
class ModuleRating extends Module {

	/**
	 * Инициализация модуля
	 *
	 */
	public function Init() {		
		
	}
	/**
	 * Расчет рейтинга при голосовании за комментарий
	 *
	 * @param ModuleUser_EntityUser $oUser
	 * @param CommentEntity_TopicComment $oComment
	 */
	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;
	}
	/**
	 * Расчет рейтинга и силы при гоосовании за топик
	 *
	 * @param ModuleUser_EntityUser $oUser
	 * @param ModuleTopic_EntityTopic $oTopic
	 * @param unknown_type $iValue
	 */
	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;
	}
	/**
	 * Расчет рейтинга и силы при голосовании за блог
	 *
	 * @param ModuleUser_EntityUser $oUser
	 * @param ModuleBlog_EntityBlog $oBlog
	 * @param unknown_type $iValue
	 */
	public function VoteBlog(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog, $iValue) {		
		/**
		 * Устанавливаем рейтинг блога, используя логарифмическое распределение
		 */		
		$skill=$oUser->getSkill();	
		$iMinSize=1.13;
		$iMaxSize=15;
		$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/20;
		} elseif ($skill>=200) {
			$skill_new=$skill/10;
		} else {
			$skill_new=$skill/50;
		}
		$iDelta=$iMinSize+(log($skill_new+1)-$iMinCount)*($iSizeRange/$iCountRange);
		/**
		 * Сохраняем рейтинг
		 */
		$oBlog->setRating($oBlog->getRating()+$iValue*$iDelta);
		return $iValue*$iDelta;
	}
	/**
	 * Расчет рейтинга и силы при голосовании за пользователя
	 *
	 * @param ModuleUser_EntityUser $oUser
	 * @param ModuleUser_EntityUser $oUserTarget
	 * @param unknown_type $iValue
	 */
	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;		
		//$iSkillNew=$oUserTarget->getSkill()+$iValue*$iDelta/3.67;
		//$iSkillNew=($iSkillNew<0) ? 0 : $iSkillNew;		
		//$oUserTarget->setSkill($iSkillNew);
		$oUserTarget->setRating($iRatingNew);
		///$this->User_Update($oUserTarget);
		return $iValue*$iDelta;
	}
}
?>

свернуть ветку
спасибо.все понятно:)
свернуть ветку
benny, ты обалдел такое выкладывать? Я даже не знаю, как голову надо держать, чтоб правильно видеть. И от сплошных «иначе-если» голова заболела, хотя тройное param очень даже понравилось — есть в нём что-то музыкальное: парам-парам-парам…
свернуть ветку
:))))))
И правда, как мы сразу не догадались. Это же элементарно!!! :)

«формула есть. разбираться в ней желания нет)))»

Как в старом анекдоте:

Приходит сын сисадмина(СС) к папе, сисадмину,(ПС)…
Папа, как всегда, трое суток не вылазя из-за компьютера что-то хачит…
СС — Папа, почему Солнце всходит на востоке, а заходит на Западе?
Папа — ноль эмоций…
СС — Папа, ну почему Солнце каждый день всходит на востоке,
а заходит на Западе?
Папа — опять ноль эмоций…
СС — (нетрпеливо дергая папу за рукав) Папа, папа, ну почему Солнце
каждый день всходит на востоке, а заходит на Западе?
ПС — (оторвавшись от Клавы и глядя мутным взором на сына) Солнце…
СС — Да
ПС — Всходит на востоке…
СС — Да
ПС — Заходит на западе…
СС — Да, папа
ПС — Каждый день?!
СС — Да…
ПС — И давно так?
СС — Ну, я не знаю… Всегда…
ПС — Знаешь что, Сынок? Работает — не трогай!!!

свернуть ветку
Может, и старый, но отменный =)))
свернуть ветку
только рейтинг у меня был 1,63. Написал я здесь парочку слов, несамых умных кстати, и вдруг — рейтинг уже 2,11.
Ох как все заморочено:)
свернуть ветку
«Чудеса не противоречат законам природы. Они противоречат нашим знаниям об этих законах» © Блаженный Августин.

На самом деле никаких заморочек. Это я поставил плюс. :))
свернуть ветку
Спасибо Сергей!:) Я щас проэкспериментировал это на Бегемоте. ПоднялОся. Вот пошел человек вперед: двое суток здесь, а как попер-а как попер:)
свернуть ветку
Спасибо Большое bakugan! Я уже давно с Вами. Просто в один прекрасный день решил перестать быть читателем и стать писателем :-) Да и время свободное появилось :-) В любом случае заходить сюда интересно и познавательно. Надеюсь не сильно тут всех достал :-)
свернуть ветку
  • avatar
  • Palma
  • 29 декабря 2010, 21:53
  • #
  • 0
Да-а-а… после формулки benny-benassi все стало ясно донельзя:))))
Но, вообще-то, прояснение наступило) Спасибо.
свернуть ветку
  • avatar
  • pain
  • 30 декабря 2010, 00:24
  • #
  • 0
чушь это какая то, посещаю сайт с момента его первого еще создания а голосовать до сих пор ни за что не могу)
свернуть ветку
рейтинг у тебя в минусах, чего-то. с кем-то поспорил, видать. ну и заминусовали.
свернуть ветку
да пофиг))
свернуть ветку
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Вставка изображения