Плагин "Magic Rule"


Плагин позволяет определить правила для голосования и добавления контента.
Есть возможность создавать правила для блокировки голосования на определенное время, например, тех, кто часто голосует в минус.

GitHubgithub.com/livestreet/lsplugin-magicrule

Пример стандартной конфигурации:
/**
 * Список правил
 * Для каждого действия составляется отдельная группа правил, групп может быть несколько
 * Список действий: vote_comment, vote_topic, vote_user, create_comment, create_topic
 * В параметре msg можно указать сообщение, которое будет отображаться пользователю, можно использовать просто текст или указать ключ из языкового файла, например, 'message_cant_vote'
 *
 * Список доступных критериев:
 *	registration_time - время в секундах с момента регистрации пользователя
 *	rating - необходимый минимальный рейтинг
 *	skill - необходимая минимальная сила
 *	count_comment - необходимое минимальное количество комментариев у пользователя
 *	count_topic - необходимое минимальное количество топиков у пользователя
 * Любой из критериев можно опустить.
 */
$config['rule']=array(
	// действие
	'vote_comment' => array(
		'msg' => 'Вы еще не достаточно окрепли!', // Сообщение, которое будет отображаться пользователю
		'groups' => array(
			// Пример группы правил: разрешаем голосование за комментарии, если пользователь зарегистрировался больше суток назад, имеет рейтинг от -5, написал 2 коммента и 1 топик
			array(
				// критерии
				'registration_time' => 60*60*24*1, // Время с момента регистрации пользователя
				'rating' => -5, // Необходимый минимальный рейтинг
				'count_comment' => 2, // Необходимое минимальное количество комментариев у пользователя
				'count_topic' => 1, // Необходимое минимальное количество топиков у пользователя
			),
		),
	),
	'vote_topic' => array(
		'msg' => 'Вы еще не достаточно окрепли!',
		'groups' => array(
			// Пример: голосование за топик, если рейтинг пользователя от -3, зарегистрировался сутки назад и написал хотя бы 1 топик или комментарий
			array(
				'registration_time' => 60*60*24*1,
				'rating' => -3,
				'count_comment' => 2,
			),
			array(
				'registration_time' => 60*60*24*1,
				'rating' => -3,
				'count_topic' => 1,
			),
		),
	),
);

/**
 * Правила для создания блокировок
 * Группы правил необходимо располагать по приоритету - вверху самые главные
 * Если группа правил сработала, то создается блокировка и обход нижестоящих правил прекращается
 *
 * Параметры правил:
 *	name - название правила блокировки, для учета в таблице блокировок. Название ограничено в 50 символов
 * 	type - список типов голосований, up - за, down - против
 *	target - список сущностей за которые голосуют
 * 	count - количество голосований
 * 	period - период, за который необходимо считать количество голосований, в секундах
 * 	block_time - время, на которое необходимо блокировать возможность голосования
 * 	block_msg - сообщение, которое будет видеть пользователь при попытке голосования
 */
$config['block_rule_vote']=array(
	/**
	 * Пример группы правил: если пользователь за 10 минут успел поставить 3 минуса, то блокируем ему голосование на 3 часа
	 */
	array(
		'name' => 'block 1', //
		'type' => array('down'),
		'target' => array('topic','comment'),
		'count' => 3,
		'period' => 60*10,
		'block_time' => 60*60*3,
		'block_msg' => 'Вы слишком агрессивны, нужно отдохнуть!',
	),
);

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

avatar
В избранное. Спасибо, очень нужная штука!
avatar
Солидарен, в избранное, Спасибо Максиму.
avatar
Замечательный плагин!
avatar
ха а мы сами хотели такой делать :) вот угодили!
avatar
Отлииично! И очень вовремя. Спасибо!
avatar
Как раз был очень нужен такой плагин. Очень бы хотелось возможность учитывать за чьи топики и комментарии были даны голоса. Например на моём проекте очень нужно реализовать ограничение на 2 голоса в сутки за топики одного и того же пользователя. Так как было замечено несколько раз, что «поклонник» одного из пользователей регистрировался и ставил лайки за все топики пользователя, за которые ещё можно голосовать. По мне, так этого нельзя допускать, рейтинг можно накручивать.
avatar
было бы просто замечательно если бы можно было настроить систему как на джойреакторе. когда ты зарегистрирован — ты влияешь на рейтинг только на 0,1 за раз. но с добавлением силы и рейтинга ты получаешь свои полноценные 1 ил 2.
avatar
Можно ли с помощью этого плагина, разрешить голосования не зареганым пользователям?
avatar
нет
avatar
а есть ли готовое решение?
avatar
думается мне, что для этого можно подпилить плагин countview
avatar
Друзья, важный вопрос, у меня довольно старая версия ливстрит, там нельзя в профиле рейтинг пользователю по менять с минуса на плюс (допустим, исправился человек). Это так?
Может ли этот плагин помочь? И что нужно сделать, чтобы можно было менять?
avatar
Всем привет! У меня у одного не появляется всплывающее окно для юзера, если тот, например, слишком много минусует? Тестировал на 2ух сайтах, со всеми выключенными плагинами и на чистой synio. Не появляется, но вроде как все работает. Может быть я что-то не так делаю? Подскажите пожалуйста.
avatar
Такая же проблема. Правила работают, но сообщение не всплывает. Удалось исправить?
avatar
Ау. У кого-то было такая же проблема? Напишите пожалуйста из-за чего она может быть и как её можно решить?
avatar
Скажите, пожалуйста, как это можно исправить? Попытался вникнуть, но знаний не хватило. LS 1.0.3.

Strict Standards: Declaration of PluginMagicrule_ModuleVote::AddVote() should be compatible with ModuleVote::AddVote(ModuleVote_EntityVote $oVote) in site.ru/plugins/magicrule/classes/modules/vote/Vote.class.php on line 18
avatar
эту строчку github.com/livestreet/lsplugin-magicrule/blob/master/classes/modules/vote/Vote.class.php#L20 заменить на
public function AddVote(ModuleVote_EntityVote $oVote) {
avatar
Отлично. Всё работает. Спасибо.
avatar
Глючил без вывода ошибки шаблон synio с установленным magic rule на чистой livestreet 1.0.3, использовал предложенную вами замену — проблема исчезла.
avatar
Сделал как сказал Ort, при авторизации все равно сверху на какое то время проскакивает строчка Strict Standards: Only variables should be passed by reference in /......./plugins/autoopenid/classes/modules/openid/Openid.class.php on line 170

Подскажите пожалуйста что можно еще поправить.PHP Version 5.4.4.
avatar
А можно плагином ограничить постинг на стены до достижения определенного рейтинга? Если да, то как?
avatar
avatar
Спасибо!
ПС: Не проверял, но пока тихо, видимо работает.
avatar
не могу понять — ни одно ограничение не работает, проверяю на конфликты с др. плагинами…
avatar
Обнови кэш, удали временные JS-файлы.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.