Кажется обнаружил небольшой баг, хотя это может оказаться и не с модом связано...
Что имеем:
- чистый олимпус 3.0.4
- данный мод
Баг воспроизводится, если (все условия обязательны):
1) первый пост закреплен
2) просмотр темы с прилепленным первым постом начинается со второй ее половины (т.е. $store_reverse = true)
3) в ЧУЖОМ сообщении указана причина редактирования
4) тот, кто отредактировал НЕ ИМЕЕТ на этой странице постов ДО отредактированного (т.е. инфы о его нике нету в кеше функции get_username_string)
Итого получаем при выводе никнейма отредактировавшего 2 нотиса:
Код: Выделить всё
[phpBB Debug] PHP Notice: in file /viewtopic.php on line 1452: Undefined index: <id отредактировавшего>
[phpBB Debug] PHP Notice: in file /viewtopic.php on line 1452: Undefined index: <id отредактировавшего>
а в самом сообщение вместо нужного ника пишется Гость:
Код: Выделить всё
Последний раз редактировалось Гость 22 янв 2009, 00:05, всего редактировалось 1 раз.
Причина: кикаем оффтоп
но! ссылка в нике Гость ведет на верный профиль того, кто отредактировал. Строка с нотисом может быть с другим номером, но находится там следующее:
Код: Выделить всё
$display_username = get_username_string('full', $row['post_edit_user'], $post_edit_list[$row['post_edit_user']]['username'], $post_edit_list[$row['post_edit_user']]['user_colour']);
Почему возникло подозрение на этот мод... Просто ошибка исчезает (и ник меняется на правильный), если:
- открепить первый пост
- или удалить кусок кода:
Код: Выделить всё
// First post on every page
// Show first post on every page if needed
if($topic_data['topic_first_post_show'] && ( $start != 0))
{
$i = 0;
$post_list[$i] = $topic_data['topic_first_post_id'] ;
$i = ($store_reverse) ? $sql_limit : $i+1;
}
Если не выполняются условия 2 или 4, то ник отображается верный, но нотисы все равно присутствуют.
Я так понимаю всю малину портит эта нововведенное кеширование в get_username_string. Какова вобщеего логика работы, я что-то пока не дорубил...