Version: 1.00, by mcahill
Developer Last Online: Dec 2012
Version: 3.0.0
Rating:
Released: 02-02-2004
Last Update: Never
Installs: 74
No support by the author.
This is a simple modification to do, and adds a lot of value to your homepage.
Notes:
1. This script can occassionally have conflicts with other javascripts. Test before you deploy.
2. If you use and include to put the file on your page, be sure that the chdir and the require for global.php is in the head of the main document.
3. It is assumed that you are using a php page, and that you have already got connectivity with your database.
The code:
At the top of the document, before the <html> or <head> tags (edit to provide the path for your particular installation):
Before requesting support, please check the following:
1. Make sure you have the path to your forum in the chdir. If you haven't done this, you will get a "can't include" error.
2. Make sure you have the chdir in the main document. If it isn't you will get a "can't modify header" error.
3. If those don't resolve the issue, try putting the login in a separate file, with no other code. If it works there, then you will know that you have a conflict with one of the scripts on the page you are trying to add the login to. I can't help you if you've got a conflict with another script.
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.
would there be any way to do it so instead of making sure that the user is logged in, it would make sure that (a) the user is logged in, and (b)the user is in a certain group...
Shouldn't requiring global.php on any page on your site include those users online?
I have it included on all my pages (ie, /blah.php and not just /forum/*.php), and have login enabled for all pages (which works great), but those users aren't showing up in the Whos Online piece on the forum.
That is the page im testing the code on. You can login but when it redirects you you get the same Guest message.
Here is the code I am currently using.
PHP Code:
<?php
error_reporting(7);
//////////////////////////////////////
// You need to EDIT your PATHS or this will not WORK properly
//////////////////////////////////////
chdir('/home/*****/public_html/forums');
require_once('/home/*****/public_html/forums/global.php');
?>
<?php
//////////////////////////////////////
// No need to edit anything just yet please scroll down
//////////////////////////////////////
$getnewestusers=$DB_site->query_first("SELECT userid,username FROM user ORDER BY joindate DESC LIMIT 1");
$newusername=$getnewestusers['username'];
$newuserid=$getnewestusers['userid'];
$numbersmembers=$DB_site->query_first('SELECT COUNT(*) AS users,MAX(userid) AS max FROM user');
$numbermembers=number_format($numbersmembers['users']);
// get total posts
$countposts=$DB_site->query_first('SELECT COUNT(*) AS posts FROM post');
$totalposts=number_format($countposts['posts']);
$countthreads=$DB_site->query_first('SELECT COUNT(*) AS threads FROM thread');
$totalthreads=number_format($countthreads['threads']);
// Top poster
$topposters=$DB_site->query_first("SELECT username,posts,userid FROM user ORDER BY posts desc LIMIT 1");
// Top Threads starter
$toptstarter=$DB_site->query_first("SELECT COUNT(*) AS count,postuserid,postusername FROM thread GROUP BY postuserid ORDER BY count DESC LIMIT 1");
//Get Latest Posts
$getnewthread=$DB_site->query_first("SELECT COUNT(*) AS threads FROM thread WHERE lastpost > '$bbuserinfo[lastvisit]'");
$getnewpost=$DB_site->query_first("SELECT count(*) AS posts FROM post WHERE dateline > '$bbuserinfo[lastvisit]'");
//check usergroup of user to see if they can use PMs
//$permissions=getpermissions($forumid);
if ($enablepms==1 and $permissions['canusepm'] and $bbuserinfo['receivepm']) {
$ignoreusers="";
if (trim($bbuserinfo['ignorelist'])!="") {
$ignoreusers='AND fromuserid<>'.implode(' AND fromuserid<>',explode(' ', trim($bbuserinfo['ignorelist'])));
}
$allpm=$DB_site->query_first("SELECT COUNT(*) AS messages FROM privatemessage WHERE userid=$bbuserinfo[userid]$ignoreusers");
$newpm=$DB_site->query_first("SELECT COUNT(*) AS messages FROM privatemessage WHERE userid=$bbuserinfo[userid] AND dateline>$bbuserinfo[lastvisit] AND folderid=0 $ignoreusers");
$unreadpm=$DB_site->query_first("SELECT COUNT(*) AS messages FROM privatemessage WHERE userid=$bbuserinfo[userid] AND messageread=0 AND folderid=0 $ignoreusers");
if ($newpm['messages']==0) {
echo "";
} else {
echo "";
}
} else {
$pminfo='';
}
//////////////////////////////////////////////////////////////////
// STEP #1
//////////////////////////////////////////////////////////////////
//Please Enter the Full Path to the functions_user.php file
//////////////////////////////////////////////////////////////////
//
require_once('/home/*****/public_html/forums/includes/functions_user.php');
//
//////////////////////////////////////////////////////////////////
$indexpage = true;
$bbuserinfo['avatarurl'] =
fetch_avatar_url($bbuserinfo['userid']);
$newposts = $DB_site->query_first("
SELECT COUNT(*) AS count
FROM ".TABLE_PREFIX."post
WHERE dateline > '".$bbuserinfo['lastvisit']."'
");
$activethreads = $DB_site->query_first("
SELECT COUNT(*) AS count
FROM ".TABLE_PREFIX."thread
WHERE lastpost > '".$bbuserinfo['lastvisit']."'
");
// ########## \\__> Added from Hwulex's Welcome Hack THANKS!!!<__// ########## \\
$getnewthread=$DB_site->query_first("SELECT COUNT(*) AS threads FROM thread WHERE lastpost > '$bbuserinfo[lastvisit]'");
$getnewpost=$DB_site->query_first("SELECT count(*) AS posts FROM post WHERE dateline > '$bbuserinfo[lastvisit]'");
if ($bbuserinfo['userid']!=0) {
$username=$bbuserinfo['username'];
//////////////////////////////////////////////////////////////////
// STEP #2 //
//////////////////////////////////////////////////////////////////
//BEGIN HTML OUTPUT
//BE SURE TO LEAVE THE ECHO Strings in place
//Any Quotation marks need to have a \ before them
//////////////////////////////////////////////////////////////////
///////
// THE FOLLOWING IS THE HTML. YOU MAY CHANGE THE HTML IF YOU MUST
// Keep the strings intact and dont use quotation marks
// A \ in front of them other wise you will get PARSE ERRORS!!!!!!
// THIS SECTION IS THE NAV LINKS AND THE LEFT COLUMN FOR THE TABLE
// Leave All the ECHO tags Alone as well
//////////////////////////////////////////////////////////////////
///////
//////////////////////////////////////////////////////////////////
echo "
<font size=1 face=verdana>Welcome Back, <b>$username!</b><br> There have been $activethreads[count] threads and $newposts[count] posts since your last visit! <br>
<font size=1 face=verdana>There is currently: <b>$numbermembers</b> members with a total of <b>$totalposts</b> posts and <b>$totalthreads</b> threads.<br>
<font size=1 face=verdana><b>$bbuserinfo[username]</b> - You have $bbuserinfo[pmunread] new message(s) since your last visit.<br>
<font size=1 face=verdana>(You have $bbuserinfo[pmunread] unread messages and $bbuserinfo[pmtotal] total messages in all your folders.
)";
////////////////////
//Leave This Alone//
////////////////////
} else {
/////////////////////
// STEP #3 //
//Guest Column Edit//
// Dont Forget to //
// Change the Urls //
// IN the FORM //
/////////////////////
echo "
If this is your first visit, be sure to read the <a href="http://www.liquid-core.net/forums/faq.php?s=$session[sessionhash]" target="_parent">
<b>FAQ</b></a>. You have to <a href="http://www.liquid-core.net/forums/register.php?s=$session[sessionhash]"
target="_parent"><b>register</b></a> before you can post on our forums or interact with our growing community.
/////////////////////
//Leave This Alone //
/////////////////////
}
///////////////////////////////
// STEP #4 //
// BEGIN RIGHT COLUMN HTML OUTPUT//
// NO QUOTATION MARKS PLEASE //
// You Can Edit This now //
///////////////////////////////
echo "
</td>
<td width=40% align=right>
<font size=1 face=verdana>Newest member <a
href="http://www.liquid-core.net/forums/member.php?s=&action=getinfo&userid=$newuserid">$newusername</a><br>
<font size=1 face=verdana>The Current Top Poster is: <a href=http://www.liquid-core.net/forums/member.php?&action=getinfo&userid=$topposters[userid]>
<b>$topposters[username]</b></a></font>($topposters[posts])<br>
<font size=1 face=verdana>The Current Top Thread Starter is: <font color=red>
<a href=http://www.liquid-core.net/forums/member.php?&action=getinfo&userid=$toptstarter[postuserid]><b>$toptstarter[postusername]</b></font>
</a>($toptstarter[count])</td></tr></table>
This hack is GREAT, but I was wondering if anyone figured out a way to not have users on non-vB pages showing up on the forum's "Who's Online" page, which results in:
Guest | Unknown Location (followed by the non-vB page URL)
* I tried closing the script hack by adding mysql_close (); to the end of the script, but it didn't change anything. Any suggestions?
I have a login system working outside vb actually under phpnuke and am at at the moment refining it, to release the hack next week as my new contribution to vbulletin.org.
The ideas can be used in other portal system. If you want to have a look at the login check at:
After a while of debugging my problems and so on, i managed to get all this worked out.
Let start with the problems I had. After I logged in, I would still get the login form instead of the welcome back message. I fixed that by first making sure that vb3 was setting the cookies for my whole server, by using .bayareamuscle.com as the domain. I also had to put the initiation code, that calls/requires globals.php, at the very top of the php page:
The rest of the code was the same. I just used that where i needed the login box.
So that fixed my problem witht he login box always showing up.
Now on to the avatar on this page. This was actually very simple, all i had to do was add 3 lines to the current code.
Lets start with the including of the required files:
PHP Code:
<?
chdir("./forum/");
include('./global.php');
// added this line to include the user functions which
// has the fetch_avatar_url() function
include('./includes/functions_user.php');
chdir("../");
?>
PHP Code:
<?
if ($bbuserinfo['userid']!=0) {
$username=$bbuserinfo['username'];
// i assigned the avatar url to the variable $user_av and check to see if it's empty.
$user_av = fetch_avatar_url($bbuserinfo['userid']);
if($user_av!='')
$user_av="/forum/" . $user_av; //replace "/forum/" with your virtual path to your forum pages.
Hope this helps. Ofcourse, now you can also use all the other functions in the functions_user.php include, so check out what it offers.
Sorry for the ugly code, but I just came up with it no more than 3 mins ago and since this page was still open, i figured i'd contribute with what i found. now ya can take care of the clean up.
p.s. you can see this work at BayAreaMuscle.com, you are going to have to login as user: DemoUser and password: demo, i created an avatar for this demo user.