The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Who's Online Sidebar Block Details »» | |||||||||||||||||||||||||||
This is tested and working with Everywhere Sidebar 4 VB4
Step One: Create a Template ACP > Style Manager > Add New Template Title: block_online Code:
<div class="blocksubhead">{vb:rawphrase x_members_and_y_guests, {vb:raw numberregistered}, {vb:raw numberguest}}</div> <div class="blockrow"> <vb:if condition="$activeusers"> <vb:each from="activeusers" value="loggedin"> <a class="username" href="{vb:link member, {vb:raw loggedin}}">{vb:raw loggedin.musername}</a>{vb:raw loggedin.invisiblemark}{vb:raw loggedin.buddymark}, </vb:each> <vb:else /> {vb:rawphrase no_x_online, {vb:rawphrase members}} </vb:if> </div> <div class="blockrow">{vb:rawphrase most_users_ever_online_was_x_y_at_z, {vb:raw recordusers}, {vb:raw recorddate}, {vb:raw recordtime}}</div> ACP > Forums & Moderators > Forum Blocks Manager > Add Block Select Block Type: Custom HTML/PHP Title: Online Users Cache Time (in minutes): 5 Active: Yes Content Type: PHP Code:
global $vbulletin; global $db; // space separated list of group ids to filter out $filter_groupids = ""; // members logged into forums $loggedinusers = array(); $activeusers = array(); $invisiblecount = 0; // Logged in user if ($vbulletin->userinfo['userid']) { $loggedinusers[$vbulletin->userinfo['userid']] = array( 'userid' => $vbulletin->userinfo['userid'], 'username' => $vbulletin->userinfo['username'], 'invisiblemark' => ($vbulletin->userinfo['invisible']) ? '*' : '', 'displaygroupid' => $vbulletin->userinfo['displaygroupid'], 'musername' => fetch_musername($vbulletin->userinfo) ); } $getonline = $db->query_read(" SELECT session.userid, username, usergroupid, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, membergroupids FROM " . TABLE_PREFIX . "session AS session LEFT JOIN " . TABLE_PREFIX . "user AS user USING (userid) WHERE session.lastactivity > " . (TIMENOW - $vbulletin->options['cookietimeout']) . " ORDER BY username ASC "); $filter_groupids = explode(" ", $filter_groupids); while ($onlineusers = $db->fetch_array($getonline)) { if (!$onlineusers['userid']) { $numberguest++; } else { if ($onlineusers['invisible']) { if (($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden']) OR $onlineusers['userid'] == $vbulletin->userinfo['userid']) { $onlineusers['invisiblemark'] = '*'; } else { $invisiblecount++; continue; } } $groupids = array(); array_push($groupids, $onlineusers['usergroupid'], $onlineusers['displaygroupid']); $groupids = array_merge ( $groupids, explode(" ", $onlineusers['membergroupids']) ); foreach($groupids as $value) if(in_array($value, $filter_groupids)) continue; $loggedinusers[$onlineusers['userid']] = $onlineusers; } } $db->free_result($getonline); unset($onlineusers); // ##### Process Online Users Module $numberregistered = sizeof($loggedinusers); $show['comma_leader'] = false; $show['divrow'] = false; if (!empty($loggedinusers)) { foreach ($loggedinusers AS $loggedinuserid => $loggedin) { $loggedin['musername'] = fetch_musername($loggedin); ($hook = vBulletinHook::fetch_hook('vba_cmps_module_onlineuserbits')) ? eval($hook) : false; $activeusers[$loggedinuserid] = $loggedin; } } // Process the total first, before number_format is applied $totalonline = $numberregistered + $numberguest + $invisiblecount; if ($vbulletin->maxloggedin['maxonline'] <= $totalonline) { $vbulletin->maxloggedin['maxonline'] = $totalonline; $vbulletin->maxloggedin['maxonlinedate'] = TIMENOW; build_datastore('maxloggedin', serialize($vbulletin->maxloggedin), 1); } $totalonline = vb_number_format($totalonline); $numberregistered = vb_number_format($numberregistered + $invisiblecount); $numberguest = vb_number_format($numberguest); $recordusers = vb_number_format($vbulletin->maxloggedin['maxonline']); $recorddate = vbdate($vbulletin->options['dateformat'], $vbulletin->maxloggedin['maxonlinedate'], 1); $recordtime = vbdate($vbulletin->options['timeformat'], $vbulletin->maxloggedin['maxonlinedate']); // print everything $templater = vB_Template::create('block_online'); $templater->register('activeusers', $activeusers); $templater->register('altbgclass', $altbgclass); $templater->register('bgclass', $bgclass); $templater->register('numberguest', $numberguest); $templater->register('numberregistered', $numberregistered); $templater->register('recorddate', $recorddate); $templater->register('recordtime', $recordtime); $templater->register('recordusers', $recordusers); $content = $templater->render(); unset($loggedinusers, $activeusers); return $content; $filter_groupids = "(insert numbers here)"; Enjoy. Screenshots
Show Your Support
|
Благодарность от: | ||
Rodrigo. |
Comments |
#12
|
|||
|
|||
Hey
Can we have something like that for the Today birthday users? Thank you |
#13
|
|||
|
|||
Are there any permissions issues related to this, when I try this I get a message telling me I don't have Permission to access the document...
|
#14
|
|||
|
|||
Neat.
Some feedback: The buddymark doesn't actually display when I try this. Should be a + next to friends etc but none seen when I run this. I can see it is meant to be there from the code etc. After each name is a comma but in VB those seem to often be at the end of runs of things when viewed with ie8 and that is what I see with this too, a comma between members fine, like john, fred.. but also one after fred, which looks wrong of course. One workaround for that is simply to delete the comma from the template, then you just get a space between member names and no commas at all, which looks a little better perhaps. Your example graphic actually shows the unwanted comma at the end of the list of members so you are seeing this too. Hope the feedback is helpful and thanks for sharing this here. Steve |
#15
|
|||
|
|||
in my sidebar it just says "Most users ever online was , at ." but nothing alse is shown... please help.. I use ESB 1.4.4.4 and vb4.1.7
thanks |
#16
|
|||
|
|||
I added this as a widget as well for my CMS page...
Just used the php code in a PHP Direct Execution setup... Thanks a bunch!!! |
#17
|
|||
|
|||
Installed on 4.2
Most ever online now only shows the actual users online, The most ever stat was even wiped out on the default VB WOL block |
#18
|
|||
|
|||
nice ,, thank you ..
|
#19
|
||||
|
||||
Hello friends, I have version vB 4.2.3 and I do not know how to create the first part of the block which is to create the template. You can help me step by step, please. Thank you very much.
|
#20
|
|||
|
|||
wondering the way to take an idea like this and just move the whole WGO block to sidebar...
|
#21
|
||||
|
||||
works on 4.2.5.php 7.2
|
Thread Tools | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|