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)

bo0oost 01-14-2007 05:10 PM

Finding the userid has never been tougher
 
At least for me! Can anyone help?

I need to find the userid of the last poster in a thread.

For example on this page, forumdisplay.php:

https://vborg.vbsupport.ru/forumdisplay.php?f=111

if you look on the right hand side, it shows the user that posted last in that thread. Instead of it linking to the lastposer, and going to the memberpage, I just want a direct link right into the memberpage.

I'm trying to modify threadbits template, but any userid variable I try doesn't work. Anyone know how I can get the userid variable for the lastposter there, so i can just do a direct link into the member page?

Trying to do this so there are not two different URLs going to the same page (for SEO).

Thanks for your help!

Kirk Y 01-14-2007 05:36 PM

Are you saying that you just want to remove the link to the last post?

bo0oost 01-14-2007 06:14 PM

Quote:

Originally Posted by acidburn0520 (Post 1159078)
Are you saying that you just want to remove the link to the last post?

Nah, I don't wanna remove the link, I want to change it.... I want it to link right to the member page, as opposed to the "last poster" in the forum display... but from threadbits I can't get the userid for the last poster....

Kirk Y 01-14-2007 06:19 PM

Find in "threadbit" template:
Code:

showthread.php?$session[sessionurl]p=$thread[lastpostid]$thread[highlight]#post$thread[lastpostid]
Replace with:
Code:

member.php?find=lastposter&t=$thread[threadid]

If you'd like to have it setup the same way on your FORUMHOME...

Find in "forumhome_lastpostby":
Code:

showthread.php?$session[sessionurl]p=$lastpostinfo[lastpostid]#post$lastpostinfo[lastpostid]
Replace with:
Code:

member.php?$session[sessionurl]find=lastposter&f=$lastpostinfo[forumid]

bo0oost 01-14-2007 06:56 PM

That doesn't work.

I want to change the link to:

member.php?u=4555

where do I get the 4555? I can't find this variable....

Thanks!!!

Kirk Y 01-14-2007 07:19 PM

Yes it does... I tested the changes on my own testboard before I posted them up here. There is no way to get the UserID without Plugins or hacking your core files.

member.php?find=lastposter&t=$thread[threadid] is how vBulletin queries to find the Member Profile for the Last Poster.

bo0oost 01-14-2007 07:37 PM

Sorry, I mean I know it works, but it's not what I'm trying to do.

It's interesting how it displays the name, but it can't get the ID for the user? This just seems to me like unnecessary query when it has to look again to find the userid.

I need this because for SEO, my pages are like this:

mydomain.com/user/userid/

so I want to convert it into that format.

Kirk Y 01-14-2007 08:16 PM

Oh, perhaps take a look at the way vBSEO does it? I'm sure there's a reason that they've set it up this way, but you're right - it does seem strange to have the Username stored in a variable, but not the UserID.

Logikos 01-14-2007 08:28 PM

Why not just use the username variable? Example: https://vborg.vbsupport.ru/member.ph...ame=Ken+Iovino

forumhome_lastposyby - Change:
HTML Code:

<phrase 1="member.php?$session[sessionurl]find=lastposter&amp;f=$lastpostinfo[forumid]" 2="$lastpostinfo[lastposter]">$vbphrase[by_x]</phrase>
To:
HTML Code:

<phrase 1="member.php?$session[sessionurl]username=$lastpostinfo[lastposter]" 2="$lastpostinfo[lastposter]">$vbphrase[by_x]</phrase>

bo0oost 01-14-2007 09:39 PM

Thanks Ken, that is actually a better way to do it... thanks!

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 10:29 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.01053 seconds
  • Memory Usage 1,766KB
  • 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
  • (5)bbcode_code_printable
  • (2)bbcode_html_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (14)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
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete