Файл: ban_m.txt
Строк: 44
/// *** Автор: Sanek_OS9 *** ///
/// *** ICQ: 441511772 *** ///
///
*** E-mail: Sanek_OS9@mail.ru *** ///
/// *** R924686967739 *** ///
///
*** U150434321351 *** ///
/// *** Z815724990373 *** ///
/// *** DCMS
v.6.6.4 *** ///
/// *** Офф.сайт: http://dcms.su *** ///
/// ***
Бесплатные скрипты: http://for-dcms.ru *** ///
/// ***
Пишу скрипты под заказ для DCMS v.6.6.4 ***
///
Бан по модулям v.1.0.0 (Ban on
Modules)
Описание: скрипт позволяет
ограничить пользователя на определенное
действие на сайте. Теперь если
пользователь нарушил гдето на сайте не
нужно его полностью банить, а можно с
помощью этого скрипта ограничить его на
определенное действия. Имеем 8
ограничений: Оставлять посты в форуме,
Создавать темы в форуме, Оставлять посты
в чате, Выгрузка фото в альбоме, Создание
дневников, Личная почта, Писать в
гостевой, Комментирование новостей. По
желанию можно еще добавить.
Сам бан
пользователя происходит через файл
/ban_m.php. Все довольно просто и
понятно.
Возможности:
- просмотр всего
списка нарушений;
- просмотр списка
нарушений определенного пользователя;
-
при просмотре выводит: ник забаненого,
время окончания бана, ник забаневшего,
причина бана, место бана.
- при
добавлении в список забаненых нужно
ввести следующее: ID или Ник кого баним
(если смотреите спиок определенного
пользователя то это поле пропадет, а ID
нарушителя подставится автоматически),
причина бана, время бана и тип
ограничения;
- опираясь от стандартной
привилегии в движке Пользователи - бан (max
1 сутки), эта привилегия также действует и
сдесь.
Установка:
1. Скинуть ban_m.php в
корень сайта.
2. Залить таблицы с ban_m.sql
3.
Собствено ставим ограничения.
Разберем
пример как поставить ограничение на
создание тем, для этого нужно всавить код
в файл /forum/inc/new_t.php (это в оригинальном dcms),
в то место где идут проверки на ошибки
при создании темы, например проверка на
то сколько символов в названии темы,
рядышком вставляем этот код:
#######################################
if
(mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_m` WHERE
`id_user` = '$user[id]' AND (`time_last` > '$time') AND `sel` = '1'
"), 0)!=0)
{
$ban = mysql_fetch_assoc(mysql_query("SELECT *
FROM `ban_m` WHERE `id_user` = '$user[id]' AND `time_last` > '$time' AND
`sel` = '1' ORDER BY `time` DESC LIMIT
1"));
$ank=get_user($ban['id_ban']);
$err[]='Извините но
Вам запрещено создавать темы до
'.vremja($ban['time_last']);
}
Обрати внимания на
поле `sel`, именно по нему опредиляется
какой тип ограничения стоит, как видешь в
теме `sel` = '1'.
Вот пример на добавления
поста в теме, также само возле проверок
на ошибки (/forum/inc/them.php) вставляешь этот
код:
#######################################
if
(mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_m` WHERE
`id_user` = '$user[id]' AND (`time_last` > '$time') AND `sel` = '0'
"), 0)!=0)
{
$ban = mysql_fetch_assoc(mysql_query("SELECT *
FROM `ban_m` WHERE `id_user` = '$user[id]' AND `time_last` > '$time' AND
`sel` = '0' ORDER BY `time` DESC LIMIT
1"));
$ank=get_user($ban['id_ban']);
$err[]='Извините но
Вам запрещено оставлять сообщения до
'.vremja($ban['time_last']);
}
#######################################
Как видешь сдесь `sel` = '1'.
Так же само
возле проверок вставляешь и на остальные
модули, меняешь только параметр `sel`. А
именно:
- Оставлять посты в форуме: `sel` =
'0'
- Создавать темы в форуме: `sel` = '1'
-
Оставлять посты в чате: `sel` = '2'
- Выгрузка
фото в альбоме: `sel` = '3'
- Создание
дневников: `sel` = '4'
- Личная почта: `sel` = '5'
- Писать в гостевой: `sel` = '6'
-
Комментирование новостей: `sel` = '7'.
Вот
еще покажу пример для новостей, в своем
файле возле проверок пишешь:
#######################################
if
(mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_m` WHERE
`id_user` = '$user[id]' AND (`time_last` > '$time') AND `sel` = '7'
"), 0)!=0)
{
$ban = mysql_fetch_assoc(mysql_query("SELECT *
FROM `ban_m` WHERE `id_user` = '$user[id]' AND `time_last` > '$time' AND
`sel` = '7' ORDER BY `time` DESC LIMIT
1"));
$ank=get_user($ban['id_ban']);
$err[]='Извините но
Вам запрещено комментировать новости до
'.vremja($ban['time_last']);
}
#######################################
---------------------
Хочу
еще сказать несколько моментов при бане
пользователя, вожно ID или Ник писать в
ручную, а можно сделать чтоб он
вставлялся автоматически, для этого в
анкете пользователя (в DCMS это /info.php)
пропишите:
#######################################
if
(user_access('user_ban_m'))echo "»<a
href='/ban_m.php?user=$ank[id]'>Нарушения (бан по
модулям)</a><br
/>\n";
#######################################
4.
Выполнить этот запрос:
INSERT INTO `all_accesses`
(`type` , `name`) VALUES ('user_ban_m', 'Пользователи - бан
по модулю');
5. Поставить эту привилегию
для необходимых груп.
-------------
И так, при
переходе на файл http://ваш_сайт/ban_m.php вы
увидете весь список нарушений, есть
возможность просматривать нарушения
определенного пользователя. Для этого
нужно в анкете прописать:
if
(user_access('user_ban_m'))echo "»<a
href='/ban_m.php?user=$ank[id]'>Нарушения (бан по
модулям)</a><br />\n";
При переходе
по такой ссылке вы увидите нарушения
только этого пользователя, при этом если
захотите выдать ему новое нарушение его
ID или Ник уже вводить не нужно, поле ввода
пропадет в этом случае.
Вот и всё! ;-)