Alexander Ipp
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Стандартно модераторы могут исправлять постинги администраторов, однако это не всегда есть гуд. Посты могут править: 1. участник - только свой по дефолту 2. Гость не может править( установленно в последней версии) по дефолту 3. Забаненый не может править(утановленно в последней версии) по дефолту 4. Модератор - только в своем форуме по дефолту 5. Администратор везде по дефолту 6. Модератор в своем форуме посты админа ( убираем с помощью этого хака) Удалением постов. 1. участник - не может по дефолту 2. Гость не может ( установленно в последней версии) по дефолту 3. Забаненый не может (утановленно в последней версии) по дефолту 4. Модератор - только в своем форуме по дефолту 5. Администратор везде по дефолту 6. Модератор в своем форуме даже посты админа ( убираем с помощью этого хака) Предлагаю решение вопроса #1: Открываем postings.cgi Ищем: Код: Опускаемся ниже, находим: Код: if ($inmembername eq "$ibtxt{'0043'}"){$cleartoedit = "no"} | Т.е. строчку запрещающую анрегам редактировать посты. И ниже добавляем: Код: &getmember("$postermembername"); $postermembercodesec = $membercode; &getmember("$inmembername"); if (($postermembercodesec eq "ad") && ($inmembmod eq "yes") && ($membercode ne "ad")) { $cleartoedit = "no"; &error("Редактирование сообщения&Модераторы не могут изменять сообщения администраторов"); } | Т.е мы берём значение имени автора поста, узнаём его статус, присваиваем его переменной, потом снова вытаскиваем данные редактирующего пост человека, проверяем, является ли он модером и не является ли админом, если да, то выдаём сообщение о том, что он не может править посты админа. Остальные проверки уже есть в коде. Вывод сообщения об ощибке можно выкинуть. Т.е. возможность одному админу править посты второго я оставил. ;) Вариант №2 (альтернатива первому варианту, то есть вариант №1 не ставим) Редактируем postings.cgi Вот так выгледеть должно: sub processedit { Код: &getmember("$inmembername"); &moderator; &getforum("$inforum"); if ($allowedentry{$inforum} eq "yes") { $allowed = "yes"; } if (($privateforum eq "yes") && ($allowed ne "yes")) { &error("$ibtxt{'1406'}&$ibtxt{'1407'}"); } $cleartoedit = "no"; if (($membercode eq "ad") && ($inpassword eq $password)) { $cleartoedit = "yes"; } if (($inmembmod eq "yes") && ($inpassword eq $password)) { $cleartoedit = "yes"; } if (($inmembername eq $postermembername) && ($inpassword eq $password)) { $cleartoedit = "yes"; } if ($inmembername eq "$ibtxt{'0043'}"){$cleartoedit = "no"} ####Запрет модерам посты админа править start##### &getmember("$postermembername"); $postermembercodesec = $membercode; &error("Редактирование сообщения&Модераторы не могут редактировать сообщения администратора") if (($postermembercodesec eq "ad") && ($inmembmod eq "yes")); ###Запрет модерам посты админа править end unless ($cleartoedit eq "yes") { $cleartoedit eq "no"; } | Убираем возможность удалять посты админа модератором в своем форуме. (привожу целый кусок и красным что отличается от дефолтного): Код: sub deletepost { $filetoopen = "$ikondir" . "forum$inforum/$intopic.thd"; open(FILE, "$filetoopen"); @allthreads = <FILE>; close(FILE); $posttodelete = $inpostno; $posttodelete--; $postcountcheck = 0; $totalposts = @allthreads; ($postername,$trash)=split(/\|/,@allthreads[$posttodelete]); &getmember("$postername"); $postercode = $membercode; &getmember("$inmembername"); &moderator; $cleartoedit = "no"; if ($membername eq "$ibtxt{'0043'}") { &error("Posting&Внимание, Гостю запрещено править сообщения"); } if (($membercode eq "ad") && ($inpassword eq $password)) { $cleartoedit = "yes"; } if (($inmembmod eq "yes") && ($inpassword eq $password) && ($postercode ne "ad")) { $cleartoedit = "yes"; } unless ($cleartoedit eq "yes") { $cleartoedit = "no"; } if ($cleartoedit eq "no" && $checked eq "yes") { &error("$ibtxt{'1529'}&$ibtxt{'0504'}"); } if ($cleartoedit eq "yes") { if ($posttodelete == 0) { &error("$ibtxt{'1530'}&$ibtxt{'1531'}"); } ### First off, lets delete the post in the thread. | | Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 19:58 03-01-2002 | Исправлено: trew, 05:43 15-02-2005 |
|