View Full Version : Finding the userid has never been tougher
bo0oost
01-14-2007, 05:10 PM
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
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:
showthread.php?$session[sessionurl]p=$thread[lastpostid]$thread[highlight]#post$thread[lastpostid]
Replace with:
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":
showthread.php?$session[sessionurl]p=$lastpostinfo[lastpostid]#post$lastpostinfo[lastpostid]
Replace with:
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.php?username=Ken+Iovino
forumhome_lastposyby - Change:
<phrase 1="member.php?$session[sessionurl]find=lastposter&f=$lastpostinfo[forumid]" 2="$lastpostinfo[lastposter]">$vbphrase[by_x]</phrase>
To:
<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
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.
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.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.