Карма пользователей.Сила Голоса.Переголосование.

Привет Лайвстрит.У меня есть небольшое уютненькое закрытое сообщество.Хотелось бы поблагодарить всех разработчиков данного cms и плагинов.Все очень удобно, красиво, отлично работает.У меня к Вам появились вопросы на которые я не смог найти внятные ответы.В общем, со временем пользователи в моем сообществе увлеклись кармой, но так как сообщество маленькое, то установленные правила по которым начисляются очки в карму не очень их радует.Для повышения интереса к созданию новых топиков и общению я поощерял кармой активных пользователей через бд.Но это вызвало негодование у остальных.Кармой у нас очень активно пользуются, оценивают каждый комментарий почти, поэтому я вот думаю обнулить всем карму и установить новые правила начисления очков в карму и пусть пользователи сами «поощеряют» друг друга кармой.У меня есть вопросы по этому поводу:

1) При карме пользоватля 00.00, когда он голосует за топики, комментарии и в профили, чтобы его вес голоса был равен +1.00.То есть он поставил плюсик — другому пользователю, автору коммента\топика или хозяину профиля в карму натекла единичка.Аналогично с минусами.

2) Переголосование.Возможность поставиь еще раз оценку через 24 часа, потом через 24 часа еще и еще.Причем все голоса должны сохранятся.Допустим за 72 часа пользователь проголосовал за топик 3 раза и все эти три раза отражаются на карме автора топика.

Техническая сторона: Livestreet 0.4.2

11 комментариев

avatar
подскажите куда копать
avatar
classes/modules/rating/Rating.class.php
avatar
ну это я знаю, а что тут что значит объясните пожалуйста
/**
		 * Начисляем силу автору коммента, используя логарифмическое распределение
		 */		
		$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);
avatar
расчет множителя iDelta на ту + или -1 к рейтигу, который потом добавляется к текущей силе.
avatar
уточню: расчет множителя iDelta, который будучи помноженным на +1 или -1 (в зависимости от голоса) потом прибавляется к текущей силе.
avatar
плюс условия нарастания силы:
до силы 50 сила нарастает очень быстро в сравнении в количеством голосов, от 50 до 200 сила нарастает но уже не так резко, более плавно, и после 200 сила начинает расти очень медленно.

avatar
Была бы у меня сила наплюсовал бы.
Спасибо за толковое объяснение.
avatar
это конкретно для комментария расчет. там он для некоторых объектов отличается.
avatar
я видел, но не вникал в формулы. было интересно увидеть наглядно)
avatar
livestreetcms.com/addons/view/206/ останется только подправить расчет множителя iDelta
avatar
А для 0.5.1 версии не планируете плагин?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.