Тег: Закрыть комментарии для обсуждения
Тег предназначен для закрытия комментариев от дальнейшего обсуждения (добавления новых).
Пример можно посмотреть тут.
1. Прежде всего надо определится с "секретным" словом, желательно пооригинальнее, например Код | 1
| [--АлесКапутТопикЗакрыт] |
для того, что бы система ненароком не сработала не в том месте, да и оставим себе про запас еще слова - это наш первый и далеко не последний bb-тег.
2. Схема работы следующая: как только админ набирает в своем сообщении секретное слово, то система блочит отправку новых комментариев к файлу и/или статье.
Соответственно юзерам показывать это слово ни к чему, воспользоваться они им не смогут, а просто для красоты. Для чего в функции function bb_decode($ sourse) файла function/ sources.php добавляем в общий список две строки
Код | 1 2
| $bb[] = "#\[АлесКапутТопикЗакрыт\]#si";
$html[] = ""; |
3. Далее редактируем файл function/comments.php
3.1. Запрос на определение оставил ли кто-то из админов секретное слово в комментариях к этому файлу будет выглядить следующим образом
Код | 1
| list($flagclose) = $db->sql_fetchrow($db->sql_query("SELECT Count(cid) FROM ".$prefix."_comment WHERE cid='$cid' AND modul='$module_name' AND (name='Serg_pnz' OR name='test1') AND comment LIKE '%[АлесКапутТопикЗакрыт]%' ")); |
3.2. Подправляем код вывода формы отправки комментария. Было
Код | 1 2 3 4 5 6 7 8 9
| if (!is_user($user) && $anonpost == 0) {
OpenTable();
echo "<center><font class=\"option\">"._NOANONCOMMENTS."</font></center>";
CloseTable();
} else {
бла-бла
} |
Делаем так, что если флаг больше 0, то выводми сообщение о том, что тема закрыта для обсуждения, включив перед этим наш запрос
Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| list($flagclose) = $db->sql_fetchrow($db->sql_query("SELECT Count(cid) FROM ".$prefix."_comment WHERE cid='$cid' AND modul='$module_name' AND (name='Serg_pnz' OR name='test1') AND comment LIKE '%[АлесКапутТопикЗакрыт]%' "));
if ($flagclose > 0) {
OpenTable();
echo "<center><font class=\"option\">Закрыто для дальнейшего обсуждения</font></center>";
CloseTable();
} elseif (!is_user($user) && $anonpost == 0) {
OpenTable();
echo "<center><font class=\"option\">"._NOANONCOMMENTS."</font></center>";
CloseTable();
} else {
бла-бла
} |
Пара послесловий:
ЗЫ1. Наверное, первое, что бы стоило сделать - это поставить запрет пользователям писать комментарии под именем зарегистрированного пользователя (для Slaed 2.1)
ЗЫ2. Для 2.2 и выше запрос будет выглядеть следующим образом Код | 1
| list($flagclose) = $db->sql_fetchrow($db->sql_query("SELECT Count(cid) FROM ".$prefix."_comment WHERE cid='$cid' AND modul='$module_name' AND (uid='Номер1_В-ТаблицеПользователей' OR uid='Номер2_В-ТаблицеПользователей') AND comment LIKE '%[АлесКапутТопикЗакрыт]%' ")); |
Вроде всё, на 2.2 не тестил
Дата публикации: 10.07.2007 Прочитано: 9119 раз |