Paha_W
Full Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору trew Вот мой первоначальный код: Код: &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"; } $tempfile = "$ikondir" . "forum$inforum/$intopic.pl"; open (ENT, $tempfile); flock ENT, 1; $temp = <ENT>; close (ENT); ($trash, $trash, $trash, $threadstate, $trash) = split(/\|/,$temp); if (($inmembername eq $postermembername) && ($inpassword eq $password) && ($threadstate ne "closed")) { $cleartoedit = "yes"; } if ($inmembername eq "$ibtxt{'0043'}"){$cleartoedit = "no"} unless ($cleartoedit eq "yes") { $cleartoedit eq "no"; } | Это бэкапный кусок. Теперь как говорите вы: Код: &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 (($postermembername eq "ad") && ($membercode ne "ad")&&($inpassword eq $password)) { $cleartoedit = "no"; } $tempfile = "$ikondir" . "forum$inforum/$intopic.pl"; open (ENT, $tempfile); flock ENT, 1; $temp = <ENT>; close (ENT); ($trash, $trash, $trash, $threadstate, $trash) = split(/\|/,$temp); if (($inmembername eq $postermembername) && ($inpassword eq $password) && ($threadstate ne "closed")) { $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"; } | Я так понял что этот кусок Цитата: if (($postermembername eq "ad") && ($membercode ne "ad")&&($inpassword eq $password)) { $cleartoedit = "no"; } | можно не вставлять. Я пробовал с ним и без него. Все ок посты администратора модераторы не могут править, но теперь и просто участники не могут править свои сообщения например участник со статусом Junior member. Выдает ошибку: Цитата: Определенные причины для Исправление вашего сообщения Ошибка: Неправильный пароль или имя пользователя, либо вы не автор этого сообщения Вы хотите получить доступ к форуму - Файлы помощи? Возможные причины для Исправление вашего сообщения Ошибка: | Теперь на счет удаления потсов админа: Мой код до изменения: Код: sub deletepost { $filetoopen = "$ikondir" . "forum$inforum/$intopic.thd"; open(FILE, "$filetoopen"); @allthreads = <FILE>; close(FILE); $posttodelete = $inpostno; $posttodelete--; $postcountcheck = 0; $totalposts = @allthreads; &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)) { $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. | После изменения: Код: 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 (($inmembmod eq "yes") && ($inpassword eq $password)) { $cleartoedit = "yes"; } | И строчка Код: if ($membername eq "$ibtxt{'0043'}") { &error("Posting&Внимание, Гостю запрещено править сообщения"); } | была закоментрирована. Теперь при попытки модератора удалить пост администратора он пишет что Цитата: Определенные причины для Posting Ошибка: Внимание, Гостю запрещено править сообщения Вы хотите получить доступ к форуму - Файлы помощи? Возможные причины для Posting Ошибка: | От сюда вопрос как сделать так чтобы каждому свое, тоесть каждому кто правит сообщение, свой ответ об ошибке, тоесть если человек модератор, то ему пишется при попытке редактирования сообщения администратора: Цитата: Данное сообщение можно править только администатору | А если вы участник, то при редактировании сообщения администратора/модератора писалось бы Цитата: Данное сообщение можно править только администатору/модератору | Либо что-то в таком духе. Перечень того что у меня работает и что нет: 1. Работает: а) Правка сообщения администатора самим администратором; б) Удаление сообщения администатора самим администратором; в) Правка сообщения модератора самим модератором; г) Удаление сообщения модератора самим модератором; д) Правка сообщения участника самим модератором; e) Правка сообщения администратора самим модератором; ё) Удаление сообщения администратора самим модератором; ж) Под гостем все работает. 2. Не работает: а) Правка сообщения участников и модераторов самим администратором; б) Удаление сообщения участников и модераторов самим администратором; в) Удаление сообщения участников самим модератором; Я хотел реализовать такую структуру: Цитата: Admin |Правит сообщения всех и удаляет соответсвенно в том числе и свои. Moderator |Правит сообщения и удаляет соответсвенно свои и ниже стоящих участников. Участник |Только свои правит, но не удаляет. Гость |Ничего не править, не удалять. | Вроде все описал, так что БОЛЬШАЯ просьба помочь. с тем что не работает! И помочь в реализации вот такой структуры. Заранее благодарен! |