решено Показ рекламы определенным группам

zxc

Пользователь
Если быть точнее,вот это

PHP:
$userdata = array();
$name_search = false;
$anon_sql = (!$allow_anon) ? "AND user_id != ".GUEST_UID: '';
if ($force_name || !is_numeric($u))
{
$name_search = true;
$where_sql = "WHERE username = '". phpbb_clean_username($u) ."'";
}
else
{
$where_sql = "WHERE user_id = ". (int) $u;
}

$sql = "SELECT * FROM ". USERS_TABLE ." $where_sql $anon_sql LIMIT 1";
    if (!$userdata = $db->fetch_row($sql))
    {
        if (!is_int($u) && !$name_search)
        {
            $where_sql = "WHERE username = '". phpbb_clean_username($u) ."'";
            $sql = "SELECT * FROM ". USERS_TABLE ." $where_sql $anon_sql LIMIT 1";
            $userdata = $db->fetch_row($sql);
        }
    }

поменяешь на это

PHP:
$userdata = array();
$name_search = false;
$anon_sql = (!$allow_anon) ? "AND u.user_id != ". GUEST_UID : '';
if ($force_name || !is_numeric($u))
{
$name_search = true;
$where_sql = "WHERE u.username = '". phpbb_clean_username($u) ."'";
}
else
{
$where_sql = "WHERE u.user_id = ". (int) $u;
}


    $sql = "SELECT u.*,ug.group_id FROM ". BB_USERS ." u
             LEFT JOIN ".BB_USER_GROUP ." ug ON ug.user_id=u.user_id
            $where_sql $anon_sql LIMIT 1";

    if (!$userdata = DB()->fetch_row($sql))
    {
        if (!is_int($u) && !$name_search)
        {
            $where_sql = "WHERE u.username = '". clean_username($u) ."'";
            $sql = "SELECT * FROM ". BB_USERS ." u $where_sql $anon_sql LIMIT 1";
            $userdata = DB()->fetch_row($sql);
        }
    }
не проверял, но должно работать. меняй, то, что красным цветом.
 
Последнее редактирование:

zxc

Пользователь
У меня древняя ревизия, сильные отличия, наверно не разберешься. Вот лови свою функцию
PHP:
<?php

function get_userdata ($u, $force_name = false, $allow_guest = false)
{
    if (!$u) return false;

    if (intval($u) == GUEST_UID && $allow_guest)
    {
        if ($u_data = CACHE('bb_cache')->get('guest_userdata'))
        {
            return $u_data;
        }
    }

    $u_data = array();
    $name_search = false;
    $exclude_anon_sql = (!$allow_guest) ? "AND u.user_id != ". GUEST_UID : '';

    if ($force_name || !is_numeric($u))
    {
        $name_search = true;
        $where_sql = "WHERE u.username = '". DB()->escape(clean_username($u)) ."'";
    }
    else
    {
        $where_sql = "WHERE u.user_id = ". (int) $u;
    }
   
    $sql = "SELECT u.*,ug.group_id FROM ". BB_USERS ." u
             LEFT JOIN ".BB_USER_GROUP ." ug ON ug.user_id=u.user_id
            $where_sql $exclude_anon_sql LIMIT 1";
   
   

    if (!$u_data = DB()->fetch_row($sql))
    {
        if (!is_int($u) && !$name_search)
        {
            $where_sql = "WHERE u.username = '". DB()->escape(clean_username($u)) ."'";
            $sql = "SELECT * FROM ". BB_USERS ." u $where_sql $exclude_anon_sql LIMIT 1";
            $u_data = DB()->fetch_row($sql);
        }
    }

    if ($u_data['user_id'] == GUEST_UID)
    {
        CACHE('bb_cache')->set('guest_userdata', $u_data);
    }

    return $u_data;
}
 

ExPlayer

Пользователь
zxc спасибо за подсказки (выше), но мне бы уже готовое решение. :(

К тому же фиг его знает в каком месте объявлять эту переменную :(
 
Последнее редактирование:

ExPlayer

Пользователь
drew тот код, что привел zxc для functions.php я скопировал. Но не пойму где (и как правильно) объявить переменную $userdata['group_id'] в viewtopic.php
 

zxc

Пользователь
ExPlayer более правильно будет вставить не в viewtopic.php а в page_header.php чтоб работало на всех страницах

это
PHP:
'IS_AM' => IS_AM,
замени на это
PHP:
'IS_AM' => IS_AM,
'VIP' => (in_array($bb_cfg['vip_group_ids'], $userdata['group_id']))?true:false,
 

ExPlayer

Пользователь
ExPlayer более правильно будет вставить не в viewtopic.php а в page_header.php чтоб работало на всех страницах

это
PHP:
'IS_AM' => IS_AM,
замени на это
PHP:
'IS_AM' => IS_AM,
'VIP' => (in_array($bb_cfg['vip_group_ids'], $userdata['group_id']))?true:false,

Полезли нотисы:
Код:
Notice: Undefined index: group_id in /var/www/admin/data/www/my-site/library/includes/page_header.php on line 162

Warning: in_array() expects parameter 2 to be array, null given in /var/www/admin/data/www/my-site/library/includes/page_header.php on line 162
 
Сверху