Воспроизвел глюк:
нужна тема к торой по переменно пишут два пользователя
первый пост - user1 без аватара
второй пост - user2 с аватаром
третий пост - user1
При этом в третьем посте у user1 появляется аватара от user2
Почему? Из-за кеширования выводимых данных в viewtopic.php в строке 358
$forum_page['author_ident'] = $user_data_cache[$cur_post['poster_id']]['author_ident'];
при этом $forum_page['avatar_markup'] не кешировалось и остается от предыдущего поста
Есть два варианта решения
первый - исправить хук vt_row_pre_post_actions_merge
<?php if (!defined('FORUM')) die();
if ($forum_config['o_avatars'] == '1' && $forum_user['show_avatars'] != '0')
{
if (!preg_match('~useravatar useravatar_(on|off)~', $forum_page['author_ident']['avatar']))
{
if ($cur_post['is_online'] == $cur_post['poster_id'] && $forum_config['o_avatars'] == '1')
$forum_page['author_ident']['avatar'] = str_replace('class="useravatar"', 'class="useravatar useravatar_on"', $forum_page['author_ident']['avatar']);
else
$forum_page['author_ident']['avatar'] = str_replace('class="useravatar"', 'class="useravatar useravatar_off"', $forum_page['author_ident']['avatar']);
}
}
Второй - вообще не нужен этот хук:
Во viewtopic.php в строке 556 добавляется класс "online" к блоку всего поста, этого достаточно чтобы раскрасить аватар используя только css, не внося коррективы в html
Достаточно такого css
.postbody .useravatar img {
border: 2px solid #BB9999;
margin: 4px 0 4px -8px;
padding: 5px;
background: #FFF;
-webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
-webkit-box-shadow: -2px 2px 6px -1px rgba(0,0,0,0.3); -moz-box-shadow: -2px 2px 6px -1px rgba(0,0,0,0.3); -o-box-shadow: -2px 2px 6px -1px rgba(0,0,0,0.3); box-shadow: -2px 2px 6px -1px rgba(0,0,0,0.3);
border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px;
}
.postbody.online .useravatar img {
border: 2px solid #99BB99;
}