vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Finding the userid has never been tougher (https://vborg.vbsupport.ru/showthread.php?t=136499)

Logikos 01-15-2007 02:23 AM

Not a problem.

RedTyger 01-19-2007 09:06 PM

So following on from this, does anyone know what the query is to pull the last poster ID without searching for it?

Paul M 01-19-2007 10:13 PM

What do you mean by "not searching for it" ?

The lastposters id is not stored anywhere, so an SQl query would need running (or the existing one modifying).

RedTyger 01-20-2007 08:57 AM

Quote:

Originally Posted by Paul M (Post 1163080)
What do you mean by "not searching for it" ?

The lastposters id is not stored anywhere, so an SQl query would need running (or the existing one modifying).

You have to click on the username link and it "searches" for it, querying it by individual request. Specifically this code in member.php.

Code:

else if ($vbulletin->GPC['find'] == 'lastposter' AND $foruminfo['forumid'])
{
        $_permsgetter_ = 'lastposter fperms';
        $forumperms = fetch_permissions($foruminfo['forumid']);
        if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']))
        {
                print_no_permission();
        }

        if ($vbulletin->userinfo['userid'] AND in_coventry($vbulletin->userinfo['userid'], true))
        {
                $tachyjoin = "LEFT JOIN " . TABLE_PREFIX . "tachythreadpost AS tachythreadpost ON " .
                        "(tachythreadpost.threadid = thread.threadid AND tachythreadpost.userid = " . $vbulletin->userinfo['userid'] . ')';
        }
        else
        {
                $tachyjoin = '';
        }

        // check if there is a forum password and if so, ensure the user has it set
        verify_forum_password($foruminfo['forumid'], $foruminfo['password']);

        require_once(DIR . '/includes/functions_misc.php');
        $forumslist = $forumid . ',' . fetch_child_forums($foruminfo['forumid']);

        require_once(DIR . '/includes/functions_bigthree.php');
        // this isn't including moderator checks, because the last post checks don't either
        if ($coventry = fetch_coventry('string')) // takes self into account
        {
                $globalignore_post = "AND post.userid NOT IN ($coventry)";
                $globalignore_thread = "AND thread.postuserid NOT IN ($coventry)";
        }
        else
        {
                $globalignore_post = '';
                $globalignore_thread = '';
        }

        cache_ordered_forums(1);

        $datecutoff = $vbulletin->forumcache["$foruminfo[forumid]"]['lastpost'] - 30;

        $thread = $db->query_first_slave("
                SELECT thread.threadid
                        " . ($tachyjoin ? ', IF(tachythreadpost.lastpost > thread.lastpost, tachythreadpost.lastpost, thread.lastpost) AS lastpost' : '') . "
                FROM " . TABLE_PREFIX . "thread AS thread
                $tachyjoin
                WHERE thread.forumid IN ($forumslist)
                        AND thread.visible = 1
                        AND thread.sticky IN (0,1)
                        AND thread.open <> 10
                        " . (!$tachyjoin ? "AND lastpost > $datecutoff" : '') . "
                        $globalignore_thread
                ORDER BY lastpost DESC
                LIMIT 1
        ");

        if (!$thread)
        {
                eval(standard_error(fetch_error('invalidid', $vbphrase['user'], $vbulletin->options['contactuslink'])));
        }

        $getuserid = $db->query_first_slave("
                SELECT post.userid
                FROM " . TABLE_PREFIX . "post AS post
                WHERE threadid = $thread[threadid]
                        AND visible = 1
                        $globalignore_post
                ORDER BY dateline DESC
                LIMIT 1
        ");

        if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND ($getuserid['userid'] != $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['userid'] == 0))
        {
                print_no_permission();
        }

        $vbulletin->GPC['userid'] = $getuserid['userid'];
}

Not hard to see why it's not included by default, just wondered if there was an easier way. I guess not. Anyway, it's there for anyone else who was wondering.


All times are GMT. The time now is 06:48 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01344 seconds
  • Memory Usage 1,739KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete