1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10:
11:
12: use Xoops\Core\Kernel\Criteria;
13:
14: 15: 16: 17: 18: 19: 20: 21: 22:
23:
24: function b_system_online_show()
25: {
26: $xoops = Xoops::getInstance();
27: $online_handler = $xoops->getHandlerOnline();
28: mt_srand((double)microtime() * 1000000);
29:
30: if (mt_rand(1, 100) < 11) {
31: $online_handler->gc(300);
32: }
33: if ($xoops->isUser()) {
34: $uid = $xoops->user->getVar('uid');
35: $uname = $xoops->user->getVar('uname');
36: } else {
37: $uid = 0;
38: $uname = '';
39: }
40: if ($xoops->isModule()) {
41: $online_handler->write($uid, $uname, time(), $xoops->module->getVar('mid'), $_SERVER['REMOTE_ADDR']);
42: } else {
43: $online_handler->write($uid, $uname, time(), 0, $_SERVER['REMOTE_ADDR']);
44: }
45: $onlines = $online_handler->getAll(null, null, false, false);
46: if (false != $onlines) {
47: $total = count($onlines);
48: $block = array();
49: $guests = 0;
50: $members = '';
51: for ($i = 0; $i < $total; ++$i) {
52: if ($onlines[$i]['online_uid'] > 0) {
53: $members .= ' <a href="' . \XoopsBaseConfig::get('url') . '/userinfo.php?uid=' . $onlines[$i]['online_uid'] . '" title="' . $onlines[$i]['online_uname'] . '">' . $onlines[$i]['online_uname'] . '</a>,';
54: } else {
55: ++$guests;
56: }
57: }
58: $block['online_total'] = sprintf(XoopsLocale::F_USERS_ONLINE, $total);
59: if ($xoops->isModule()) {
60: $mytotal = $online_handler->getCount(new Criteria('online_module', $xoops->module->getVar('mid')));
61: $block['online_total'] .= ' (' . sprintf(XoopsLocale::F_USERS_BROWSING, $mytotal, $xoops->module->getVar('name')) . ')';
62: }
63: $block['lang_members'] = XoopsLocale::MEMBERS;
64: $block['lang_guests'] = XoopsLocale::GUESTS;
65: $block['online_names'] = $members;
66: $block['online_members'] = $total - $guests;
67: $block['online_guests'] = $guests;
68: $block['lang_more'] = XoopsLocale::MORE;
69: return $block;
70: } else {
71: return false;
72: }
73: }
74: