Исчезла возможность редактирования для модеров

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Olegus
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 2 месяца
Откуда: Москва

Исчезла возможность редактирования для модеров

Сообщение Olegus »

Друзья!

На форуме исчезла возможность редактирования сообщений как модераторами раздела так и пользователями (своих сообщений). при этом все права стоят как надо.
Подозреваю, что где-то накосячил при установке модов, но к сожалению, поставил их уже немало и не отследилось когда начался косяк.

Проявляется следующим образом:
Кнопка "правка" видна. Нажимаю - идет переадресация на страницу, а там просто таблица под названием "Информация", а в ней все пусто.
Администратор без проблем все правит.

Просьба такая, подскажите, плиз, где смотреть? В каком файле находится код, ответственный за данную функцию?


Ставил моды:
Password-protected topics 0.2
topic_in_whoisonline_1.2.9em.zip
last_forum_topic_on_index.zip
pmsender.zip
ip_in_topic.zip
who_viewed_a_topic_1.0.3em.zip
anti-bot-question-mod.zip

И еще менял цвет админам.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Olegus писал(а):Ставил моды
Это не немало. Это мало.
functions.php (посмотрите function_post) и posting.php

Мне так кажется что это ABQ, в смысле косяк при его установке.
я люблю daft punk | новый sugoi.ru
Olegus
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 2 месяца
Откуда: Москва

Сообщение Olegus »

VVVas писал(а): functions.php (посмотрите function_post) и posting.php

Мне так кажется что это ABQ, в смысле косяк при его установке.
Благодарю, сейчас посмотрю.
Olegus
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 2 месяца
Откуда: Москва

Сообщение Olegus »

VVVas писал(а):
Olegus писал(а):Ставил моды
Это не немало. Это мало.
functions.php (посмотрите function_post) и posting.php

Мне так кажется что это ABQ, в смысле косяк при его установке.
Похоже нашел причину. Это posting.php. Как только удаляю из него все связанное с Password-protected topics правка постов восстанавливается...
Два раза проверил инструкцию по установке Мода с внесенными правками. все совпадает.
Где может быть косяк?
posting.php

#
#-----[ FIND ]--------------------------------------------
#
$sql = "SELECT f.*, t.topic_status, t.topic_title
FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t

#
#-----[ INLINE, FIND ]------------------------------------
#
, t.topic_title

#
#-----[ AFTER, ADD ]--------------------------------------
#
, t.topic_password

#
#-----[ FIND ]--------------------------------------------
#
$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "
FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f" . $from_sql . "

#
#-----[ INLINE, FIND ]------------------------------------
#
, t.topic_vote

#
#-----[ AFTER, ADD ]--------------------------------------
#
, t.topic_password

#
#-----[ FIND ]--------------------------------------------
#
if ( $mode == 'editpost' || $mode == 'delete' || $mode == 'poll_delete' )
{

#
#-----[ BEFORE, ADD ]-------------------------------------
#
$show_password_box = ( $mode == 'newtopic' || ($mode == 'editpost' && $post_info['topic_first_post_id'] == $post_id) ) ? TRUE : 0;
if( $userdata['user_level'] != ADMIN && ($mode == 'editpost' || $mode == 'delete' || $mode == 'poll_delete') && $post_info['topic_first_post_id'] == $post_id )
{
message_die(GENERAL_MESSAGE, $lang['Not_auth_edit_topic']);
}

#
#-----[ FIND ]--------------------------------------------
#
//
// Set toggles for various options
//

#
#-----[ BEFORE, ADD ]-------------------------------------
#
//
// Password check
//
if( !$is_auth['auth_mod'] && $userdata['user_level'] != ADMIN )
{
$redirect = str_replace("&", "&", preg_replace('#.*?([a-z]+?\.' . $phpEx . '.*?)$#i', '\1', htmlspecialchars($HTTP_SERVER_VARS['REQUEST_URI'])));
if( $HTTP_POST_VARS['cancel'] )
{
redirect(append_sid("index.$phpEx"));
}
else if( $HTTP_POST_VARS['pass_login'] )
{
if( $post_info['topic_password'] != '' )
{
password_check('topic', $topic_id, $HTTP_POST_VARS['password'], $redirect);
}
else if( $post_info['forum_password'] != '' )
{
password_check('forum', $forum_id, $HTTP_POST_VARS['password'], $redirect);
}
}

if( $post_info['topic_password'] != '' && $mode != 'newtopic' )
{
$passdata = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_tpass']) ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_tpass'])) : '';
if( $passdata[$topic_id] != md5($post_info['topic_password']) )
{
password_box('topic', $redirect);
}
}
else if( $post_info['forum_password'] != '' )
{
$passdata = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_fpass']) ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_fpass'])) : '';
if( $passdata[$forum_id] != md5($post_info['forum_password']) )
{
password_box('forum', $redirect);
}
}
}
//
// END: Password check
//

#
#-----[ FIND ]--------------------------------------------
#
case 'reply':
$username = ( !empty($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : '';
$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';
$message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';

#
#-----[ AFTER, ADD ]--------------------------------------
#
$topic_password = ( !empty($HTTP_POST_VARS['topicpassword']) ) ? $HTTP_POST_VARS['topicpassword'] : '';

#
#-----[ FIND ]--------------------------------------------
#
prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);

#
#-----[ INLINE, FIND ]------------------------------------
#
, $poll_length

#
#-----[ AFTER, ADD ]--------------------------------------
#
, $topic_password

#
#-----[ FIND ]--------------------------------------------
#
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);

#
#-----[ INLINE, FIND ]------------------------------------
#
, $poll_length

#
#-----[ AFTER, ADD ]--------------------------------------
#
, $topic_password

#
#-----[ FIND ]--------------------------------------------
#
$message = ( !empty($HTTP_POST_VARS['message']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['message']))) : '';

#
#-----[ AFTER, ADD ]--------------------------------------
#
$topic_password = ( !empty($HTTP_POST_VARS['topicpassword']) ) ? trim($HTTP_POST_VARS['topicpassword']) : '';

#
#-----[ FIND ]--------------------------------------------
#
$poll_length = '';

#
#-----[ AFTER, ADD ]--------------------------------------
#
$topic_password = '';

#
#-----[ FIND ]--------------------------------------------
#
$subject = ( $post_data['first_post'] ) ? $post_info['topic_title'] : $post_info['post_subject'];
$message = $post_info['post_text'];

#
#-----[ AFTER, ADD ]--------------------------------------
#
$topic_password = ($post_data['first_post'] ) ? $post_info['topic_password'] : '';

#
#-----[ FIND ]--------------------------------------------
#
$template->assign_block_vars('switch_not_privmsg', array());

#
#-----[ AFTER, ADD ]--------------------------------------
#
//
// Topic password
//
if( $show_password_box && $userdata['user_level'] == ADMIN )
{
$template->assign_block_vars('switch_password_box', array());
}

#
#-----[ FIND ]--------------------------------------------
#
'MESSAGE' => $message,

#
#-----[ AFTER, ADD ]--------------------------------------
#
'TOPIC_PASSWORD' => $topic_password,

#
#-----[ FIND ]--------------------------------------------
#
'L_MESSAGE_BODY' => $lang['Message_body'],

#
#-----[ AFTER, ADD ]--------------------------------------
#
'L_TOPIC_PASSWORD' => $lang['Topic_password'],

#
Добавлено спустя 5 минут 52 секунды:

Еще возник вопрос по ходу дела. Когда сравнивал инструкции к Моду с своими правками нашел вот такое:
includes/functions_post.php

#-----[ FIND ]--------------------------------------------
#
# >= 2.0.5
#
$sql = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote) VALUES ('$post_subject', " . $userdata['user_id'] . ", $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote)" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . " WHERE topic_id = $topic_id";

#
#-----[ INLINE, FIND ]------------------------------------
#
, topic_vote

#
#-----[ AFTER, ADD ]--------------------------------------
#
, topic_password

#
#-----[ INLINE, FIND ]------------------------------------
#
, $topic_vote

#
#-----[ AFTER, ADD ]--------------------------------------
#
, '$topic_password'

#-----[ INLINE, FIND ]------------------------------------
#
# >= 2.0.5
#
" . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . "

#
#-----[ AFTER, ADD ]--------------------------------------
#
, topic_password = '$topic_password'

#
В выделенном месте действительно нужны одиночные кавычки?

Добавлено спустя 1 час 4 минуты 37 секунд:

методом инженерного тыка выявилась прака, после которой начинаются сбои. Сейчас в файл внесены все изменения, кроме этой строки:
#-----[ FIND ]--------------------------------------------
#
if ( $mode == 'editpost' || $mode == 'delete' || $mode == 'poll_delete' )
{

#
#-----[ BEFORE, ADD ]-------------------------------------
#
$show_password_box = ( $mode == 'newtopic' || ($mode == 'editpost' && $post_info['topic_first_post_id'] == $post_id) ) ? TRUE : 0;
if( $userdata['user_level'] != ADMIN && ($mode == 'editpost' || $mode == 'delete' || $mode == 'poll_delete') && $post_info['topic_first_post_id'] == $post_id )
{
message_die(GENERAL_MESSAGE, $lang['Not_auth_edit_topic']);
}

#
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

После

Код: Выделить всё

$userdata['user_level'] != ADMIN
добавьте

Код: Выделить всё

&& $userdata['user_level'] != MOD
Изображение
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Этот участок кода запрещает. редактирование, удаление первого сообщения всем кроме администраторов... Судя по всему это своеобразная защита мода от редактирования этого самого сообщения, при котором видимо и задаются логин-пароль для темы.

Добавлено спустя 53 секунды:

А пустое окно говорит о том что в актвном языке отсуствует переменная

Код: Выделить всё

$lang['Not_auth_edit_topic']
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Olegus
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 2 месяца
Откуда: Москва

Сообщение Olegus »

rxu писал(а):После

Код: Выделить всё

$userdata['user_level'] != ADMIN
добавьте

Код: Выделить всё

&& $userdata['user_level'] != MOD
Не помогло...
Первый пост действительно править могут только Админы...

Добавлено спустя 17 минут:
Xpert писал(а):Этот участок кода запрещает. редактирование, удаление первого сообщения всем кроме администраторов...
Похоже на то. Я проверил и действительно так все и есть. Второй пост можно редактировать, а вот первый - только Админы.

Добавлено спустя 11 минут 28 секунд:
Xpert писал(а):
А пустое окно говорит о том что в актвном языке отсуствует переменная

Код: Выделить всё

$lang['Not_auth_edit_topic']
Точно.... там другая переменная - $lang['Not_auth_edit_post']
Olegus
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 2 месяца
Откуда: Москва

Сообщение Olegus »

rxu писал(а):После

Код: Выделить всё

$userdata['user_level'] != ADMIN
добавьте

Код: Выделить всё

&& $userdata['user_level'] != MOD
Я балда! Не там пробовал добавить...

Спасибо, теперь Модеры тоже могут править свои первые посты.

Вернуться в «Поддержка phpBB 2.0.x»