Активные пользователи

Started by NewLife on 2012-11-23 06:08 — 29 replies, 7414 views

#1
Автор: Bustra
Описание: выводит на главную активных пользователей в виде аватарок.
Время установки: 1 минута.

index.php
if($bb_cfg['activ_user'])
{
    $activ_user = DB()->fetch_rowset("SELECT * FROM bb_users WHERE user_id !=-1  AND user_posts >= 2 LIMIT 10");
    foreach($activ_user as $row)
    {
        $template->assign_block_vars('activ_user', array(
            'AVA' => get_avatar($row['user_avatar'], $row['user_avatar_type'], !bf($row['user_opt'], 'user_opt', 'allow_avatar'),36, 36),
            'POSTS' => $row['user_posts'],
            'USER_ID'    => $row['user_id'],
        ));
    }
}

page_header.tpl
<!-- IF $bb_cfg['activ_user'] -->
<h3>Активные пользователи</h3>
    <div class="top_users">
<!-- BEGIN activ_user -->
        <span>
            <a class="top_users_img" href="profile.php?mode=viewprofile&amp;u={activ_user.USER_ID}" title="количество сообщений {activ_user.POSTS}">{activ_user.AVA}</a>
        </span>
<!-- END activ_user -->
    </div>
<!-- ENDIF -->

config.php
$bb_cfg['activ_user'] = true;


123.webp
#2
И ничего не кэшируется🙁
#3
if (!activ_user  = CACHE('bb_cache')->get(activ_user))
{
$activ_user  = DB()->fetch_rowset(" SELECT * FROM bb_users WHERE user_id !=-1 AND user_posts >= 2 LIMIT 10 ");
CACHE('bb_cache')->set('activ_user', $sql, 300);
}
#4
if (!activ_user  = CACHE('bb_cache')->get(activ_user))
{
$activ_user  = DB()->fetch_rowset(" SELECT * FROM bb_users WHERE user_id !=-1 AND user_posts >= 2 LIMIT 10 ");
CACHE('bb_cache')->set('activ_user', $sql, 300);
}
а куда это нужно добавить?
#5
Заменять надо
$activ_user  = DB()->fetch_rowset(" SELECT * FROM bb_users WHERE user_id !=-1 AND user_posts >= 2 LIMIT 10 ");
#6
Вот только сразу же меняем:
if (!activ_user  = CACHE('bb_cache')->get(activ_user))
На:
if (!activ_user  = CACHE('bb_cache')->get('activ_user'))
И не задаем глупые вопросы почему не работает / валится с ошибкой.
#7
переменную забыл
if (!$activ_user = CACHE('bb_cache')->get('activ_user'))
#8
if($bb_cfg['activ_user'])
{
if (!$activ_user = CACHE('bb_cache')->get('activ_user'))
{
$activ_user  = DB()->fetch_rowset(" SELECT * FROM bb_users WHERE user_id !=-1 AND user_posts >= 2 LIMIT 10 ");
CACHE('bb_cache')->set('activ_user', $sql, 300);
}
    foreach($activ_user as $row)
    {
        $template->assign_block_vars('activ_user', array(
            'AVA' => get_avatar($row['user_avatar'], $row['user_avatar_type'], !bf($row['user_opt'], 'user_opt', 'allow_avatar'),36, 36),
            'POSTS' => $row['user_posts'],
            'USER_ID'    => $row['user_id'],
        ));
    }
}


Мод выводит не активных юзеров, а... даже не пойму по какому принципу... Выводятся пользователи, которые очень давно не заходили на трекер, не оставили ни одного сообщения, ничего не раздают, но те, которые ежедневно заходят на трекер, пишут сообщения, качают и раздают, в этом списке не появляются. Выводится также и бот... 😕
#9
$activ_user  = DB()->fetch_rowset(" SELECT * FROM bb_users WHERE user_id !=-1 AND user_posts >= 2 LIMIT 10 ");
заменить на
$activ_user  = DB()->fetch_rowset(" SELECT user_id,user_posts,user_avatar,user_avatar_type,user_opt FROM bb_users WHERE user_id NOT IN (' " . EXCLUDED_USERS_CSV . " ')  ORDER BY user_posts DESC LIMIT 10 ");
#10
druid, спасибо! Помогло.