1: <?php
2: function b_user_online_show() {
3: global $xoopsUser, $xoopsModule;
4: $online_handler =& xoops_gethandler('online');
5: mt_srand((double)microtime()*1000000);
6:
7: if (mt_rand(1, 100) < 11) {
8: $online_handler->gc(300);
9: }
10: if (is_object($xoopsUser)) {
11: $uid = $xoopsUser->getVar('uid');
12: $uname = $xoopsUser->getVar('uname');
13: } else {
14: $uid = 0;
15: $uname = '';
16: }
17: if (is_object($xoopsModule)) {
18: $online_handler->write($uid, $uname, time(), $xoopsModule->get('mid'), $_SERVER['REMOTE_ADDR']);
19: } else {
20:
21:
22:
23: if (strpos(xoops_getenv('REQUEST_URI'),'misc.php') === false) {
24: $online_handler->write($uid, $uname, time(), 0, $_SERVER['REMOTE_ADDR']);
25: }
26: }
27: $onlines =& $online_handler->getAll();
28: if (false != $onlines) {
29: $total = count($onlines);
30: $block = array();
31: $guests = 0;
32: $members = '';
33: $member_list = array();
34: for ($i = 0; $i < $total; $i++) {
35: if ($onlines[$i]['online_uid'] > 0) {
36: $member['uid'] = $onlines[$i]['online_uid'];
37: $member['uname'] = $onlines[$i]['online_uname'];
38: $member_list[] = $member;
39: } else {
40: $guests++;
41: }
42: }
43: $block['online_total'] = sprintf(_MB_USER_ONLINEPHRASE, $total);
44: if (is_object($xoopsModule)) {
45: $mytotal = $online_handler->getCount(new Criteria('online_module', $xoopsModule->getVar('mid')));
46: $block['online_total'] .= ' ('.sprintf(_MB_USER_ONLINEPHRASEX, $mytotal, $xoopsModule->getVar('name')).')';
47: }
48: $block['online_members'] = $total - $guests;
49: $block['online_member_list'] = $member_list;
50: $block['online_guests'] = $guests;
51: return $block;
52: }
53: return false;
54: }
55: ?>
56: