Мини-чат на ajax

Ress Kent

Пользователь
Заменил все user_avatar' на avatar_ext_id
Чат работает но у всех аватарки noavatar.png и выскакивают нотисы
Я так понял проблема только в этой части кода
Код:
                if ($shout_row['avatar_ext_id'])
                {
                switch($shout_row['avatar_ext_id'] )
                {
                case avatar_ext_id_UPLOAD:
                $avatar_img = ( $bb_cfg['allow_avatar_upload'] ) ? '<img class="avatars_chat" align="left" style="max-height:35px;max-width:35px;" src="' . $bb_cfg['avatar_path'] . '/' . $shout_row['avatar_ext_id'] . '" alt="" border="0" />' : '';
                break;
                case avatar_ext_id_REMOTE:
                $avatar_img = ( $bb_cfg['allow_avatar_remote'] ) ? '<img class="avatars_chat" align="left" style="max-height:35px;max-width:35px;" src="' . $shout_row['avatar_ext_id'] . '" alt="" border="0" />' : '';
                break;
                case avatar_ext_id_GALLERY:
                $avatar_img = ( $bb_cfg['allow_avatar_local'] ) ? '<img class="avatars_chat" align="left" style="max-height:35px;max-width:35px;" src="' . $bb_cfg['avatar_gallery_path'] . '/' . $shout_row['avatar_ext_id'] . '" alt="" border="0" />' : '';
                break;
                }
                }
Порыскав на форуме ставил примерно что писали, но никак. Может кто-нибудь разобрался с этой проблемой или подскажите где подправить. Заранее благодарен за любой ответ
 

Вложения

  • 42343423.png
    42343423.png
    37 KB · Просмотры: 79
  • 123123423.png
    123123423.png
    42.4 KB · Просмотры: 78
Последнее редактирование:

dredd

Пользователь
Ress Kent, простите, а вы поняли, что состряпали?:) С момента написания этого мода прошло много времени, и появилась функция для получения аватара) удалите эту ерунду, и попробуйте с помошью get_avatar получить аватар пользователя)
 
Последнее редактирование:

Exile

Администратор
Ress Kent теперь есть функция для получения аватара. Пример использования для вашего случая:
Код:
'AVATAR' => get_avatar($shout_row['user_id'], $shout_row['avatar_ext_id'], !bf($shout_row['user_opt'], 'user_opt', 'dis_avatar')),
Только не надо бездумно этот код вставлять. Ваш блок кода целиком удалить это точно надо. А этот вставьте там где переменные для шаблона задаются.
 

Ress Kent

Пользователь
Exile Получилось вывести аватарки
Код:
            foreach ($shout_rows AS $shout_row)
            {
                $row_class = !($i % 2) ? 'row1' : 'row2';
                $user_level =  $shout_row['user_level'];
                if($user_level) $username = profile_url($shout_row);
                else $username = '<span>'.$shout_row['username'].'</span>';
                $post_delete =($userdata['user_level'] == ADMIN || $userdata['user_level'] == IS_AM) ? '<img src="images/shout_delete.png" title="Удалить сообщение" class="clickable" onclick="ajax.shout_del('.$shout_row['shout_id'].'); ajax.chat_message(2); return false;" style="float:right">&nbsp;' : '';
                $pm_link = '<a href="privmsg.php?mode=post&u='.$shout_row['shout_user_id'].'" target="_blank"><img title="Послать личное сообщение"  align="absmiddle" src="images/shout_mail.png" /></a>';
                $avatar = get_avatar($userdata['user_id'], $userdata['avatar_ext_id'], !bf($userdata['user_opt'], 'user_opt', 'dis_avatar'), 32, 32);
                $shout = (!$shout_row['shout_active']) ? $shout_row['shout_text'] : $lang['Shout_censor'];
                $shout = str_replace("\n", "\n<br />\n", $shout);
                $shout = ($user_level == ADMIN) ? '<span>'.$shout.'</span>' : $shout;
                $shout_data .= '<div id="shout_'.$shout_row['shout_id'].'" class="chat-comment '.$row_class.'">
                <div style="min-height:20px; min-width: 120px; float: left; border-right: 1px solid #AED7FF;; margin-right: 6px;">
             
                <a href="profile.php?mode=viewprofile&u='.$shout_row['shout_user_id'].'" target="_blank" title="Посмотреть профиль">'.$avatar.'</a>&nbsp;
             
                <span><a class="bold" title="'.$lang['SHOUTBOX_INSERT_NAME'].'" style="text-decoration: none;" href="javascript:add_nick(\'[b]'.addslashes($shout_row['shout_username']).'[/b],\')">'.$username.' </a></span>&nbsp;
                '.$pm_link.'
                <div class="small" style="font-size: 9px; padding-left: 45px;">'.bb_date($shout_row['shout_session_time'], $bb_cfg['last_post_date_format']).'</div>

                </div>
                <div style="float: right;">'.$post_delete.'</div>
                <span style="font-size: 11px;">'.bbcode2html($shout).'</span>
                </div>';
Теперь голову ломаю как отобразить аватарки по левому краю, текст падает на уровень картинки.
И аватарки меняются в зависимости от последнего написавшего
 

Вложения

  • 5434.png
    5434.png
    53.1 KB · Просмотры: 71
  • 54334.png
    54334.png
    47.6 KB · Просмотры: 70
Последнее редактирование:

Exile

Администратор
И аватарки меняются в зависимости от последнего написавшего
Логично. Я вам даю код для вашего случая:
Пример использования для вашего случая
А вы вместо того чтобы использовать приведенный пример, ставите:
$userdata['user_id'], $userdata['avatar_ext_id']
Вместо положенных:
$shout_row['user_id'], $shout_row['avatar_ext_id']
Наверное не просто так там shout_row, а не userdata. $shout_row['user_opt'] аналогично.
 

Ress Kent

Пользователь
Если ставить
Код:
$avatar = get_avatar($shout_row['user_id'], $$shout_row['avatar_ext_id'], !bf($shout_row['user_opt'], 'user_opt', 'dis_avatar'), 32, 32);
То выскакивают нотисы и аватарки становятся noavatar.png
Код:
Notice: Undefined index: user_id in E:\home\xxx\www\ajax.php on line 484

Notice: Undefined variable: 0 in E:\home\xxx\www\ajax.php on line 484

Notice: Undefined index: user_opt in E:\home\xxx\www\ajax.php on line 484

Notice: Undefined index: user_id in E:\home\xxx\www\ajax.php on line 484

Notice: Undefined variable: 0 in E:\home\xxx\www\ajax.php on line 484

Notice: Undefined index: user_opt in E:\home\xxx\www\ajax.php on line 484
 

Ress Kent

Пользователь
Урааа получилось =)
Код:
    function chat_message()
    {
        global $bb_cache, $userdata, $bb_cfg, $lang, $user_opt, $user_id;
        $mode = (int) $this->request['mode'];
        $message = (string) @$this->request['message'];
        if($mode==1)
        {
            if(!$message) $this->ajax_die($lang['SHOUTBOX_ERR']);
            $bbcode_on = $bb_cfg['allow_bbcode'];
            $smilies_on = $bb_cfg['allow_smilies'];
            if(!IS_ADMIN)
            {
                $chk = DB()->fetch_row('SELECT MAX(shout_session_time) AS last_post_time FROM bb_shout WHERE shout_user_id = '.$userdata['user_id']);
                if ( $chk['last_post_time'] > 0 && ( time() - $chk['last_post_time'] ) < $bb_cfg['flood_interval'] ) $this->ajax_die($lang['FLOOD_ERROR']);
            }
            if (!empty($message))
            {
                DB()->query('INSERT INTO bb_shout (shout_text, shout_session_time, shout_user_id, shout_ip, shout_username) VALUES ("'.DB()->escape($message).'", '.time().', '.$userdata['user_id'].', "'.USER_IP.'", "'.DB()->escape($userdata['username']).'")');
                CACHE('bb_cache')->rm('shout_data', 60);
            }
        }
        if(!$shout_data = CACHE('bb_cache')->get('shout_data', 60))
        {
            $shout_rows = DB()->fetch_rowset("SELECT s.*, u.username, u.user_level, u.user_rank, u.avatar_ext_id, u.user_opt, u.user_id
                FROM bb_shout s, ".BB_USERS." u
                WHERE s.shout_user_id=u.user_id AND u.user_id = u.user_id
                ORDER BY s.shout_session_time DESC LIMIT 50");
            $i=0;
            $shout_data = '';
            foreach ($shout_rows AS $shout_row)
            {
                $row_class = !($i % 2) ? 'row1' : 'row2';
                $user_level =  $shout_row['user_level'];
                if($user_level) $username = profile_url($shout_row);
                else $username = '<span>'.$shout_row['username'].'</span>';
                $post_delete =($userdata['user_level'] == ADMIN || $userdata['user_level'] == IS_AM) ? '<img src="images/shout_delete.png" title="Удалить сообщение" class="clickable" onclick="ajax.shout_del('.$shout_row['shout_id'].'); ajax.chat_message(2); return false;" style="float:right">&nbsp;' : '';
                $pm_link = '<a href="privmsg.php?mode=post&u='.$shout_row['shout_user_id'].'" target="_blank"><img title="Послать личное сообщение"  align="absmiddle" src="images/shout_mail.png" /></a>';
                $avatar = get_avatar($shout_row['user_id'], $shout_row['avatar_ext_id'], !bf($shout_row['user_opt'], 'user_opt', 'dis_avatar'), 32, 32);
                $shout = (!$shout_row['shout_active']) ? $shout_row['shout_text'] : $lang['Shout_censor'];
                $shout = str_replace("\n", "\n<br />\n", $shout);
                $shout = ($user_level == ADMIN) ? '<span>'.$shout.'</span>' : $shout;
                $shout_data .= '<div id="shout_'.$shout_row['shout_id'].'" class="chat-comment '.$row_class.'">
                <div style="min-height:20px; min-width: 120px; float: left; border-right: 1px solid #AED7FF;; margin-right: 6px;">
             
                <a href="profile.php?mode=viewprofile&u='.$shout_row['shout_user_id'].'" target="_blank" title="Посмотреть профиль">'.$avatar.'</a>&nbsp;
             
                <span><a class="bold" title="'.$lang['SHOUTBOX_INSERT_NAME'].'" style="text-decoration: none;" href="javascript:add_nick(\'[b]'.addslashes($shout_row['shout_username']).'[/b],\')">'.$username.' </a></span>&nbsp;
                '.$pm_link.'
                <div class="small" style="font-size: 9px; padding-left: 45px;">'.bb_date($shout_row['shout_session_time'], $bb_cfg['last_post_date_format']).'</div>

                </div>
                <div style="float: right;">'.$post_delete.'</div>
                <span style="font-size: 11px;">'.bbcode2html($shout).'</span>
                </div>';
                ++$i;
            }
          CACHE('bb_cache')->set('shout_data', $shout_data);
        }
        $this->response['message'] = $shout_data;
    }
 

Вложения

  • 12454454.png
    12454454.png
    30.8 KB · Просмотры: 93
Последнее редактирование:
Сверху