форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
DpoHro
Простоузер
Default Доки по api или чтото подобное
0

Видел гдето на форуме ссылки на сабж, но не могу найти...
Нужно описание как работает эта зверюга, придется читать, хоть англ. вариант хоть рус. тут ответов никто не дает ((
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Sellrion
Kernel panic
 
Sellrion's Avatar
Default
1

Quote:
Originally Posted by DpoHro View Post
тут ответов никто не дает ((
Почему же? Спросите - ответим...
 
 
g0rn
Гуру
Default
2

http://members.vbulletin.com/api/
Это описание всех функций и классов в 3.6.
 
 
DpoHro
Простоузер
Default
0

Quote:
Originally Posted by Sellrion View Post
Почему же? Спросите - ответим...
У меня на сайте используется аутентификация и сессия воблы, то есть в index-е подключаю воблу.

Далее переделал под себя файлы сорсы регистрации и логина. Впринципе теперь доступна инфа из воблы, что просто великолепно.

Но когда пользователь заходит на сайт - то его нет в списке "онлайн" на форуме, хотелось бы его туда добавить, но лазя по исходникам я не нашел как вобла это делает.

Добавлено через 1 час 2 минуты
То есть оно понятно, что можно впринципе извернуться и класть в сессию location но неправильно будет, нужно по большому счету пользоваться инструментами воблы и я так понимаю добавлять фразы и т.п.

Last edited by DpoHro : 05-03-2008 at 01:48 PM. Reason: Добавлено сообщение
 
 
Sellrion
Kernel panic
 
Sellrion's Avatar
Default
1

Quote:
Originally Posted by DpoHro View Post
то есть в index-е подключаю воблу.
Смотря как Вы это делаете. Если через:
PHP Code:
require_once('./global.php'); 
То я бы не рекомедовал так делать. Во-первых из-за ненужной нагрузки на хостинг, во-вторых из-за возможных конфликтов кодировок и переменных в памяти, что иногда может привести даже к неработоспособности сайта. Но раз данность есть данность, то vBulletin строит список залогиненных и гостей так:
PHP Code:
// ### LOGGED IN USERS #################################################
$activeusers '';
if ((
$vbulletin->options['displayloggedin'] == OR $vbulletin->options['displayloggedin'] == OR ($vbulletin->options['displayloggedin'] > AND $vbulletin->userinfo['userid'])) AND !$show['search_engine'])
{
    
$datecut TIMENOW $vbulletin->options['cookietimeout'];
    
$numbervisible 0;
    
$numberregistered 0;
    
$numberguest 0;

    
$forumusers $db->query_read_slave("
        SELECT
            user.username, (user.options & " 
$vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid,
            session.userid, session.inforum, session.lastactivity,
            IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
        FROM " 
TABLE_PREFIX "session AS session
        LEFT JOIN " 
TABLE_PREFIX "user AS user ON(user.userid = session.userid)
        WHERE session.lastactivity > 
$datecut
        " 
iif($vbulletin->options['displayloggedin'] == OR $vbulletin->options['displayloggedin'] == 3"ORDER BY username ASC") . "
    "
);

    if (
$vbulletin->userinfo['userid'])
    {
        
// fakes the user being online for an initial page view of index.php
        
$vbulletin->userinfo['joingroupid'] = iif($vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['usergroupid']);
        
$userinfos = array
        (
            
$vbulletin->userinfo['userid'] => array
            (
                
'userid'            =>& $vbulletin->userinfo['userid'],
                
'username'          =>& $vbulletin->userinfo['username'],
                
'invisible'         =>& $vbulletin->userinfo['invisible'],
                
'inforum'           => 0,
                
'lastactivity'      => TIMENOW,
                
'usergroupid'       =>& $vbulletin->userinfo['usergroupid'],
                
'displaygroupid'    =>& $vbulletin->userinfo['displaygroupid'],
                
'infractiongroupid' =>& $vbulletin->userinfo['infractiongroupid'],
            )
        );
    }
    else
    {
        
$userinfos = array();
    }
    
$inforum = array();

    while (
$loggedin $db->fetch_array($forumusers))
    {
        
$userid $loggedin['userid'];
        if (!
$userid)
        {    
// Guest
            
$numberguest++;
            
$inforum["$loggedin[inforum]"]++;
        }
        else if (empty(
$userinfos["$userid"]) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
        {
            
$userinfos["$userid"] = $loggedin;
        }
    }

    if (!
$vbulletin->userinfo['userid'] AND $numberguest == 0)
    {
        
$numberguest++;
    }

    foreach (
$userinfos AS $userid => $loggedin)
    {
        
$numberregistered++;
        if (
$userid != $vbulletin->userinfo['userid'])
        {
            
$inforum["$loggedin[inforum]"]++;
        }
        
fetch_musername($loggedin);

        (
$hook vBulletinHook::fetch_hook('forumhome_loggedinuser')) ? eval($hook) : false;

        if (
fetch_online_status($loggedin))
        {
            
$numbervisible++;
            eval(
'$activeusers .= ", ' fetch_template('forumhome_loggedinuser') . '";');
        }
    }

    
// memory saving
    
unset($userinfos$loggedin);

    
$activeusers substr($activeusers2); // get rid of initial comma

    
$db->free_result($forumusers);

    
$totalonline $numberregistered $numberguest;
    
$numberinvisible $numberregistered $numbervisible
Если Вы подключаете в сайте global.php, то Ваша сессия автоматически попадает в БД Воблы и доступна для сайта. Что касается того как Вобла добавляет Вас в БД, то она это делает так:
PHP Code:
$vbulletin->session =& new vB_Session($vbulletin$sessionhash$vbulletin->GPC[COOKIE_PREFIX 'userid'], $vbulletin->GPC[COOKIE_PREFIX 'password'], $styleid$languageid); 
Но этот код бесполезен вне global.php. Так что все зависит от того как вы подключаете Воблу к сайту...
 
 
DpoHro
Простоузер
Default
0

Да я подключаю global.php
Я только это решение нашел на этом сайте, если есть более оптимальные решения - с радостью выслушаю.
Quote:
Originally Posted by Sellrion View Post
Смотря как Вы это делаете.
Если Вы подключаете в сайте global.php, то Ваша сессия автоматически попадает в БД Воблы и доступна для сайта.
Вот и не добавляет почемуто, может я просто не там смотрю, но
захожу на сайт, лезу тут же в БД в таблице _session ни одной записи ((

Добавлено через 20 минут
Хе хе, странно, нужно сессию сохранить, еще раз респект за ссылку на документацию!
$vbulletin->session->save();

Усе заработало, теперь осталось разобраться как вывести красиво по разделам сайта, чтобы юзвери могли смотреть кто в каком именно разделе именно на сайте...

Last edited by DpoHro : 05-03-2008 at 09:37 PM. Reason: Добавлено сообщение
 
 
Sellrion
Kernel panic
 
Sellrion's Avatar
Default
0

Quote:
Originally Posted by DpoHro View Post
чтобы юзвери могли смотреть кто в каком именно разделе именно на сайте...
У меня в подписи ссыль WOL. Вам туда...
 
 
chuev
Простоузер
Default
0

Здравствуйте!

Есть сайт на самописной CMS и форум на поддомене. Нужно, чтобы при авторизации на сайте пользователь автоматически авторизовывался на форуме. В базе сайта хранится ID пользователя форума, можно так же засунуть туда и логин с паролем.

Как тут уже было написано, сессию можно создать таким образом:

PHP Code:
require_once('global.php'); 
$vbulletin->session =& new vB_Session($vbulletin$sessionhash$vbulletin->GPC[COOKIE_PREFIX 'userid'], $vbulletin->GPC[COOKIE_PREFIX 'password'], $styleid$languageid);
$vbulletin->session->save(); 
Но как указывать данные пользователя и какие определять параметры сразу после подключения global.php - не понятно. Смотрел API, понял, что нужно как-то использовать массив $vbulletin->userinfo['userid'], но как...

Помогите пожалуйста.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 01:02 AM.


Powered by vBulletin® Version 3.0.12
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...