XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
user_online.php
1<?php
2
3function b_user_online_show()
4{
5 global $xoopsUser, $xoopsModule;
6 $online_handler =& xoops_gethandler('online');
7 mt_srand(round(microtime(true)*1_000_000));
8 // set gc probabillity to 10% for now..
9 if (random_int(1, 100) < 11) {
10 $online_handler->gc(300);
11 }
12 if (is_object($xoopsUser)) {
13 $uid = $xoopsUser->getVar('uid');
14 $uname = $xoopsUser->getVar('uname');
15 } else {
16 $uid = 0;
17 $uname = '';
18 }
19
20 if (is_object($xoopsModule)) {
21 $online_handler->write($uid, $uname, time(), $xoopsModule->get('mid'), $_SERVER['REMOTE_ADDR']);
22 } else {
23 //
24 // TODO We have to find the best method.
25 //
26 if (false === strpos(xoops_getenv('REQUEST_URI'), 'misc.php')) {
27 $online_handler->write($uid, $uname, time(), 0, $_SERVER['REMOTE_ADDR']);
28 }
29 }
30 $onlines =& $online_handler->getAll();
31 if (false !== $onlines) {
32 $total = is_countable($onlines) ? count($onlines) : 0;
33 $block = [];
34 $guests = 0;
35 $members = '';
36 $member_list = [];
37 foreach ($onlines as $i => $iValue) {
38 if ($iValue['online_uid'] > 0) {
39 $member['uid'] = $onlines[$i]['online_uid'];
40 $member['uname'] = $onlines[$i]['online_uname'];
41 $member_list[] = $member;
42 } else {
43 $guests++;
44 }
45 }
46 $block['online_total'] = sprintf(_MB_USER_ONLINEPHRASE, $total);
47 if (is_object($xoopsModule)) {
48 $mytotal = $online_handler->getCount(new Criteria('online_module', $xoopsModule->getVar('mid')));
49 $block['online_total'] .= ' - '.sprintf(_MB_USER_ONLINEPHRASEX, $mytotal, $xoopsModule->getVar('name')).'.';
50 }
51
52 $block['online_members'] = $total - $guests;
53 $block['online_member_list'] = $member_list;
54 $block['online_guests'] = $guests;
55
56 return $block;
57 }
58 return false;
59}