The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Flashchat - who is online with showing the chatters avatars Details »» | |||||||||||||||||||||||||||
Flashchat - who is online with showing the chatters avatars
Developer Last Online: Dec 2016
this is a beta release of a "who is online" mod for Flashchat
Version 0.2 What's new:
Features:
issues/bugs/ todo:
note: you need the gdlib2 installation and upgrade information inside the .zip Show Your Support
|
Comments |
#42
|
|||
|
|||
Yeah, teh function for avatar urls is just taken from vBulletin itself, rather than write my own, so it's 100% compatible
|
#43
|
|||
|
|||
@The Keeper Sorry, but this code gives me the same error...
|
#44
|
|||
|
|||
Works fine on my site. :\ can you paste for me the entire copy of your index.php?
|
#45
|
|||
|
|||
Quote:
\*================================================ ======================*/ // ####################### SET PHP ENVIRONMENT ########################### error_reporting(E_ALL & ~E_NOTICE); // #################### DEFINE IMPORTANT CONSTANTS ####################### define('NO_REGISTER_GLOBALS', 1); define('THIS_SCRIPT', 'index'); // ################### PRE-CACHE TEMPLATES AND DATA ###################### // get special phrase groups $phrasegroups = array('holiday'); // get special data templates from the datastore $specialtemplates = array( 'userstats', 'birthdaycache', 'maxloggedin', 'iconcache', 'eventcache', 'mailqueue', 'todaymaxonline' ); // pre-cache templates used by all actions $globaltemplates = array( 'FORUMHOME', 'forumhome_event', 'forumhome_forumbit_level1_nopost', 'forumhome_forumbit_level1_post', 'forumhome_forumbit_level2_nopost', 'forumhome_forumbit_level2_post', 'forumhome_lastpostby', 'forumhome_loggedinuser', 'forumhome_moderator', 'forumhome_pmloggedin', 'forumhome_subforumbit_nopost', 'forumhome_subforumbit_post', 'forumhome_subforumseparator_nopost', // [START HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 1 ] 'forumhome_subforumseparator_post', 'forumhome_latestthreadbit', // [END HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 1 ] 'forumhome_todayloggedinuser', 'forumhome_todayloggedinusers' ); // pre-cache templates used by specific actions $actiontemplates = array(); // ######################### REQUIRE BACK-END ############################ require_once('./global.php'); require_once('./includes/functions_bigthree.php'); require_once('./includes/functions_forumlist.php'); // ################################################## ##################### // ######################## START MAIN SCRIPT ############################ // ################################################## ##################### // get permissions to view forumhome if (!($permissions['forumpermissions'] & CANVIEW)) { print_no_permission(); } // get forumid if set, otherwise set to -1 globalize($_REQUEST, array('forumid' => INT)); if (! is_array($foruminfo)) { $forumid = -1; } else { // draw nav bar $navbits = array(); $parentlist = array_reverse(explode(',', substr($foruminfo['parentlist'], 0, -3))); foreach ($parentlist AS $forumID) { $forumTitle = $forumcache["$forumID"]['title']; $navbits["forumdisplay.php?$session[sessionurl]f=$forumID"] = $forumTitle; } // pop the last element off the end of the $nav array so that we can show it without a link array_pop($navbits); $navbits[''] = $foruminfo['title']; $navbits = construct_navbits($navbits); } // ### WELCOME MESSAGE ################################################# if ($bbuserinfo['userid']) { // registered user $showmemberwelcome = true; } else { // guest $showmemberwelcome = false; } $today = vbdate('Y-m-d', TIMENOW, false, false); // ### TODAY'S BIRTHDAYS ################################################# if ($vboptions['showbirthdays']) { $birthdaystore = unserialize($datastore['birthdaycache']); if (!is_array($birthdaystore) OR ($today != $birthdaystore['day1'] AND $today != $birthdaystore['day2'])) { // Need to update! require_once('./includes/functions_databuild.php'); $birthdaystore = build_birthdays(); DEVDEBUG('Updated Birthdays'); } switch($today) { case $birthdaystore['day1']: $birthdays = $birthdaystore['users1']; break; case $birthdaystore['day2']; $birthdays = $birthdaystore['users2']; break; } // memory saving unset($birthdaystore); $show['birthdays'] = iif ($birthdays, true, false); } else { $show['birthdays'] = false; } // ### TODAY'S EVENTS ################################################# if ($vboptions['showevents']) { require_once('./includes/functions_calendar.php'); $future = gmdate('n-j-Y' , TIMENOW + 43200 + (86400 * ($vboptions['showevents'] - 1))); $eventstore = unserialize($datastore['eventcache']); if (!is_array($eventstore) OR $future != $eventstore['date']) { // Need to update! require_once('./includes/functions_databuild.php'); $eventstore = build_events(); DEVDEBUG('Updated Events'); } unset($eventstore['date']); $events = array(); $eventcount = 0; foreach ($eventstore AS $eventid => $eventinfo) { $offset = iif (!$eventinfo['utc'], $bbuserinfo['tzoffset'], $bbuserinfo['timezoneoffset']); $eventinfo['dateline_from_user'] = $eventinfo['dateline_from'] + $offset * 3600; $eventinfo['dateline_to_user'] = $eventinfo['dateline_to'] + $offset * 3600; $gettime = TIMENOW - $vboptions['hourdiff']; $iterations = 0; if ($bbuserinfo['calendarpermissions']["$eventinfo[calendarid]"] & CANVIEWCALENDAR OR $eventinfo['holidayid']) { if ($eventinfo['userid'] == $bbuserinfo['userid'] OR $bbuserinfo['calendarpermissions']["$eventinfo[calendarid]"] & CANVIEWOTHERSEVENT OR $eventinfo['holidayid']) { while ($iterations < $vboptions['showevents']) { $todaydate = getdate($gettime); if (cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year'])) { if (!$vboptions['showeventtype']) { $events["$eventinfo[eventid]"][] = $gettime; } else { $events["$gettime"][] = $eventinfo['eventid']; } $eventcount++; } $iterations++; $gettime += 86400; } } } } if (!empty($events)) { ksort($events, SORT_NUMERIC); foreach($events AS $index => $value) { $pastevent = 0; $pastcount = 0; unset($eventdates, $comma, $daysevents); if (!$vboptions['showeventtype']) { // Group by Event // $index = $eventid unset($day); foreach($value AS $key => $dateline) { if (($dateline - 86400) == $pastevent AND !$eventinfo['holidayid']) { $pastevent = $dateline; $pastcount++; continue; } else { if ($pastcount) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vboptions['dateformat'], $pastevent, false, true, false)); } $pastcount = 0; $pastevent = $dateline; } if (!$day) { $day = vbdate('Y-n-j', $dateline, false, false); } $eventdates .= $comma . vbdate($vboptions['dateformat'], $dateline, false, true, false); $comma = ', '; $eventinfo = $eventstore["$index"]; } if ($pastcount) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vboptions['dateformat'], $pastevent, false, true, false)); } if ($eventinfo['holidayid']) { $callink = "<a href=\"calendar.php?$session[sessionurl]do=getinfo&day=$day\">" . $vbphrase['holiday_title_' . $eventinfo['varname']] . "</a>"; } else { $callink = "<a href=\"calendar.php?$session[sessionurl]do=getinfo&day=$day&e=$eventinfo[eventid]&c=$eventinfo[calendarid]\">$eventinfo[title]</a>"; } } else { // Group by Date $eventdate = vbdate($vboptions['dateformat'], $index, false, true, false); $day = vbdate('Y-n-j', $index, false, false); foreach($value AS $key => $eventid) { $eventinfo = $eventstore["$eventid"]; if ($eventinfo['holidayid']) { $daysevents .= $comma . "<a href=\"calendar.php?$session[sessionurl]do=getinfo&day=$day\">" . $vbphrase['holiday_title_' . $eventinfo['varname']] . "</a>"; } else { $daysevents .= $comma . "<a href=\"calendar.php?$session[sessionurl]do=getinfo&day=$day&e=$eventinfo[eventid]&c=$eventinfo[calendarid]\">$eventinfo[title]</a>"; } $comma = ', '; } } eval('$upcomingevents .= "' . fetch_template('forumhome_event') . '";'); } // memory saving unset($events, $eventstore); } $show['upcomingevents'] = iif ($upcomingevents, true, false); $show['todaysevents'] = iif ($vboptions['showevents'] == 1, true, false); } else { $show['upcomingevents'] = false; } // ### LOGGED IN USERS ################################################# $activeusers = ''; if ($vboptions['displayloggedin']) { $datecut = TIMENOW - $vboptions['cookietimeout']; $numbervisible = 0; $numberregistered = 0; $numberguest = 0; $forumusers = $DB_site->query(" SELECT user.username, (user.options & $_USEROPTIONS[invisible]) AS invisible, user.usergroupid, session.userid, session.inforum, session.lastactivity, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid FROM " . TABLE_PREFIX . "session AS session LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid) WHERE session.lastactivity > $datecut " . iif($vboptions['displayloggedin'] == 1, "ORDER BY username ASC") . " "); if ($bbuserinfo['userid']) { // fakes the user being online for an initial page view of index.php $bbuserinfo['joingroupid'] = iif($bbuserinfo['displaygroupid'], $bbuserinfo['displaygroupid'], $bbuserinfo['usergroupid']); $userinfos = array ( $bbuserinfo['userid'] => array ( 'userid' => $bbuserinfo['userid'], 'username' => $bbuserinfo['username'], 'invisible' => $bbuserinfo['invisible'], 'inforum' => 0, 'lastactivity' => TIMENOW, 'usergroupid' => $bbuserinfo['usergroupid'], 'displaygroupid' => $bbuserinfo['displaygroupid'], ) ); } else { $userinfos = array(); } $inforum = array(); while ($loggedin = $DB_site->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; } } foreach($userinfos AS $userid => $loggedin) { $numberregistered++; if ($userid != $bbuserinfo['userid']) { $inforum["$loggedin[inforum]"]++; } $loggedin['musername'] = fetch_musername($loggedin); if (fetch_online_status($loggedin)) { $numbervisible++; eval('$activeusers .= ", ' . fetch_template('forumhome_loggedinuser') . '";'); } } // memory saving unset($userinfos, $loggedin); $activeusers = substr($activeusers , 2); // get rid of initial comma $DB_site->free_result($loggedins); $totalonline = $numberregistered + $numberguest; $numberinvisible = $numberregistered - $numbervisible; // ### MAX LOGGEDIN USERS ################################ $maxusers = unserialize($datastore['maxloggedin']); if (intval($maxusers['maxonline']) <= $totalonline) { $maxusers['maxonline'] = $totalonline; $maxusers['maxonlinedate'] = TIMENOW; build_datastore('maxloggedin', serialize($maxusers)); } $recordusers = $maxusers['maxonline']; $recorddate = vbdate($vboptions['dateformat'], $maxusers['maxonlinedate'], true); $recordtime = vbdate($vboptions['timeformat'], $maxusers['maxonlinedate']); $show['loggedinusers'] = true; } else { $show['loggedinusers'] = false; } // ### WHO WAS ONLINE TODAY ######################## if ((int)$maxusers['maxonline'] <= $totalonline) { $time = time(); $maxloggedin = "$totalonline " . $time . " " . $maxusers['maxonline'] . " " . $maxusers['maxonlinedate']; $maxusers[0] = $totalonline; $maxusers[1] = $time; } $todayloggedinusers = ""; $numbertodayonline = 0; $numbertodayonlineinvisible = 0; $todaynumberregistered = 0; $todayusers=$DB_site->query("SELECT userid, username, usergroupid, lastactivity, options FROM ".TABLE_PREFIX."user WHERE lastactivity > " . (mktime(0,0,0,date("m"),date("d"),date("Y")) + (($bbuserinfo['timezoneoffset']-$vboptions[timeoffset])*3600)) . " ORDER BY username"); while ($todayuser=$DB_site->fetch_array($todayusers)) { $todayuser['options'] = intval($todayuser['options']); foreach($_USEROPTIONS AS $optionname => $optionval) { $todayuser["$optionname"] = iif($todayuser['options'] & $optionval, 1, 0); } $todaynumberregistered++; $numbertodayonline++; $invisibleuser = ''; $userid = $todayuser['userid']; $lastactivetime = vbdate($vboptions['timeformat'], $todayuser[lastactivity]); if ($todayuser['invisible']==1 and $bbuserinfo['usergroupid']!=6) { $numbertodayonlineinvisible++; continue; } if ($todayuser['invisible'] == 1) { // Invisible User but show to Admin $invisibleuser = '*'; } $username = fetch_musername($todayuser); if (!$todayloggedinuser) { eval("\$todayloggedinuser = \"".fetch_template('forumhome_todayloggedinuser'). "\";"); } else { eval("\$todayloggedinuser .= \", ".fetch_template('forumhome_todayloggedinuser')."\ ";"); } } $DB_site->free_result($todayusers); if ($bbuserinfo[usergroupid] == 6) { $todayonline = $numbertodayonline; } else { $todayonline = $numbertodayonline - $numbertodayonlineinvisible; } if ((int)$maxusers[2] <= $numbertodayonline) { $time = time(); $maxloggedin = $maxusers[0] . " " . $maxusers[1] . " $numbertodayonline " . $time; $maxusers[2] = $numbertodayonline; $maxusers[3] = $time; } // ### MAX LOGGEDIN USERS TODAY ################################ $todaymaxusers = unserialize($datastore['todaymaxonline']); if (intval($todaymaxusers['todaymaxonline']) <= $todaynumberregistered) { $todaymaxusers['todaymaxonline'] = $todaynumberregistered; $todaymaxusers['todaymaxonlinedate'] = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $DB_site->query("REPLACE INTO " . TABLE_PREFIX . "datastore (title, data) VALUES ('todaymaxonline', '" . addslashes(serialize($todaymaxusers)) . "')"); } $todayrecordusers = $todaymaxusers['todaymaxonline']; $todayrecorddate = vbdate($vboptions['dateformat'], $todaymaxusers['todaymaxonlinedate'], 1); eval("\$todayloggedinusers = \"".fetch_template('forumhome_todayloggedinusers') ."\";"); // ### GET FORUMS & MODERATOR iCACHES ######################## cache_ordered_forums(1); if ($vboptions['showmoderatorcolumn']) { cache_moderators(); } else { $imodcache = array(); $mod = array(); } // define max depth for forums display based on $vboptions[forumhomedepth] define('MAXFORUMDEPTH', $vboptions['forumhomedepth']); $forumbits = construct_forum_bit($forumid); // ### BOARD STATISTICS ################################################# // get total threads & posts from the forumcache $totalthreads = 0; $totalposts = 0; if (is_array($forumcache)) { foreach ($forumcache AS $forum) { $totalthreads += $forum['threadcount']; $totalposts += $forum['replycount']; } } $totalthreads = vb_number_format($totalthreads); $totalposts = vb_number_format($totalposts); // get total members and newest member from template $userstats = unserialize($datastore['userstats']); $numbermembers = vb_number_format($userstats['numbermembers']); $newusername = $userstats['newusername']; $newuserid = $userstats['newuserid']; // [START HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 2 ] // #################### PROCESS LATEST THREADS ####################### // fetch the permissions for each forum $forumperms = array(); foreach($forumcache AS $forum) { $forumperms["$forum[forumid]"] = fetch_permissions($forum['forumid']); // ## HIDE FORUMS WITHOUT THE CANVIEW OR CANVIEWOTHERS PERMISSION ## if (!($forumperms["$forum[forumid]"] & CANVIEW) || !($forumperms["$forum[forumid]"] & CANVIEWOTHERS)) { $limitfids .= ','.$forum['forumid']; } } unset($forum); if ($vboptions['threadpreview'] > 0) { $previewfield = ', post.pagetext AS preview'; $previewjoin = 'LEFT JOIN '.TABLE_PREFIX.'post AS post ON(post.postid = thread.firstpostid)'; } $getthreads = $DB_site->query(" ## GET LATEST THREADS ## SELECT thread.*,thread.iconid AS threadiconid $previewfield FROM ".TABLE_PREFIX."thread AS thread LEFT JOIN ".TABLE_PREFIX."deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread') $previewjoin WHERE open = '1' AND forumid NOT IN (0$limitfids) AND thread.visible = '1' AND deletionlog.primaryid IS NULL ORDER BY lastpost DESC LIMIT 5"); while($thread = $DB_site->fetch_array($getthreads)) { $threads = true; $thread['title'] = fetch_censored_text(fetch_trimmed_title(unhtmlspec ialchars($thread['title']), 22)); $thread['date'] = vbdate($vboptions['dateformat'], $thread['lastpost'], 1); $thread['time'] = vbdate($vboptions['timeformat'], $thread['lastpost']); $thread['preview'] = preg_replace('#\[quote(=("|"|\'|).*\\2)?\](.*)\[/quote\]#siU', '', $thread['preview']); $thread['preview'] = htmlspecialchars_uni(fetch_trimmed_title(strip_bbc ode(fetch_censored_text($thread['preview']), false, true), $vboptions['threadpreview'])); $thread['replycount'] = vb_number_format($thread['replycount']); $thread['views'] = vb_number_format($thread['views']); // thread icon $show['icon'] = false; $icon = fetch_iconinfo($thread['iconid']); if (is_array($icon)) { $show['icon'] = true; $thread['threadiconpath'] = $icon['iconpath']; $thread['threadicontitle'] = $icon['title']; } // show goto new post $show['firstnew'] = false; $bbforumview = fetch_bbarray_cookie('forum_view', $thread['forumid']); if ($bbforumview > $bbuserinfo['lastvisit']) { $lastread = $bbforumview; } else { $lastread = $bbuserinfo['lastvisit']; } if ($thread['lastpost'] > $lastread) { $threadview = fetch_bbarray_cookie('thread_lastview', $thread['threadid']); if ($thread['lastpost'] > $threadview) { $show['firstnew'] = true; $show['icon'] = false; } } exec_switch_bg(); eval("\$threadbits .= \"".fetch_template('forumhome_latestthreadbit')."\ ";"); } if ($threads) { $show['latestthreads'] = true; } // memory saving unset($thread, $threads); $DB_site->free_result($getthreads); // [END HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 2 ] // ### USERS IN CHAT #####Version 0.1############################################## $chatusers = ''; $chatavatar = ''; //get the number of people who are chatting // ### HACK FOR WHO'S CHATTING $query_chatonline ="SELECT COUNT(*) FROM connections WHERE userid IS NOT NULL"; $count = mysql_fetch_array(mysql_query($query_chatonline)); $count_chatter = $count[0]; // ###################### Start getavatarurl ####################### function fetch_avatar_url($userid) { global $DB_site, $session, $vboptions; if ($avatarinfo = $DB_site->query_first(" SELECT user.avatarid, user.avatarrevision, avatarpath, NOT ISNULL(avatardata) AS hascustom, customavatar.dateline FROM " . TABLE_PREFIX . "user AS user LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON avatar.avatarid = user.avatarid LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON customavatar.userid = user.userid WHERE user.userid = $userid")) { if (!empty($avatarinfo['avatarpath'])) { return $avatarinfo['avatarpath']; } else if ($avatarinfo['hascustom']) { if ($vboptions['usefileavatar']) { return "$vboptions[avatarurl]/avatar{$userid}_{$avatarinfo[avatarrevision]}.gif"; } else { return "image.php?u=$userid&dateline=$avatarinfo[dateline]"; } } else { return ''; } } } //if anyone is chatting..... if($count_chatter >0) { //get the uids of the chatters $query_userid = "SELECT userid FROM connections WHERE userid IS NOT NULL"; $show_userid = mysql_query($query_userid); $row_show_userid = mysql_fetch_assoc($show_userid); //build an array of the userids do { $userids[] = $row_show_userid['userid']; } while ($row_show_userid = mysql_fetch_assoc($show_userid)); // Get the usernames and build the outputVar for the template foreach($userids as $val) { //Get the username for each chatter $show_username= $DB_site->query("select username from user where userid=".intval($val)); $row_show_username = mysql_fetch_assoc($show_username); //pass the userid to the avatar_resize.php $chatavatar = fetch_avatar_url($val); // store the htmloutput for each user in $temp $temp = "<td><tr>"; $temp.= "<img src=\"$chatavatar\">"; $temp.= "<div align=\"center\">"; $temp.= "<a href=\"member.php?u=".$val."\">".$row_show_usernam e['username']."</a>"; $temp.= "</div>"; $temp.= "</tr><td>"; $temp.= "<br />"; // concatenate the temp stuff to > $chatusers $chatusers = $chatusers.$temp; }; // End foreach }; // End $count_chatter >0 // surround the $chatusers with some table tags and assign it to a template var $chatter['usernames'] = "<table><tr>".$chatusers."</tr></table>"; // assign the number of people to a templatevar, so that we can have some conditions on the forumhome-template $chatter['count'] = $count_chatter; // ### ALL DONE! SPIT OUT THE HTML AND LET'S GET OUTA HERE... ### eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('FORUMHOME') . '");'); /*================================================= =====================*\ || ################################################## ################## || # Downloaded: 16:13, Fri Aug 6th 2004 || # CVS: $RCSfile: index.php,v $ - $Revision: 1.132 $ || ################################################## ################## \*================================================ ======================*/ ?> |
#46
|
|||
|
|||
karlogaga why not just attach the file?
quasan I seem to be having probs with line "exif_imagetype", seems my server doesn't support it or something. Isn't that the same as "getimagesize"? No avatars show up now ... I'm gonna check out your update closer a little later! Thanks |
#47
|
|||
|
|||
do you have gdlib2 ?
or 1.6 ? |
#48
|
||||
|
||||
Greetings, i installed the hack, but from moment to moment, it shows me this error:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ..../index.php on line 438 and the code is this on line 438: line 437: $query_chatonline ="SELECT COUNT(*) FROM ".FLASHCHAT_PREFIX."connections WHERE userid IS NOT NULL"; line 438: $count = mysql_fetch_array(mysql_query($query_chatonline)); How can i avoid this error to be happen again? Thanks in advanced. |
#49
|
|||
|
|||
@parajsa
hi, you modified the sql command. as I wrote: No need to edit anything below" Just define your flashchat database prefix here: define(FLASHCHAT_PREFIX,"FLASH_"); replace the FLASH_ with your prefix or if you aren't using a prefix define(FLASHCHAT_PREFIX,""); |
#50
|
|||
|
|||
my gd version is (2.0.23)..
|
#51
|
||||
|
||||
Hi there quasan,
I use the form: define(FLASHCHAT_PREFIX,""); coz i am not using prefix; But it does continue to show that error, it is not permenent, but time after time, it show itself on the begginin of the forum. What can i do, this happen, when a user enters the chat, or get out of it. Thank u for ur help, and for the good hack. |
Thread Tools | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|