XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
online.php
1<?php
12
13
14class XoopsOnlineHandler
15{
16
23 public $db;
24
29 public function __construct(&$db)
30 {
31 $this->db =& $db;
32 }
33 public function XoopsOnlineHandler(&$db)
34 {
35 return self::__construct($db);
36 }
37
49 public function write($uid, $uname, $time, $module, $ip)
50 {
51 $uid = (int)$uid;
52 $ip = $this->db->quoteString($ip);
53 if ($uid > 0) {
54 $sql = 'SELECT COUNT(*) FROM ' . $this->db->prefix('online') . ' WHERE online_uid=' . $uid;
55 } else {
56 $sql = 'SELECT COUNT(*) FROM ' . $this->db->prefix('online') . ' WHERE online_uid=' . $uid . ' AND online_ip=' . $ip;
57 }
58 [$count] = $this->db->fetchRow($this->db->queryF($sql));
59 if ($count > 0) {
60 $sql = 'UPDATE ' . $this->db->prefix('online') . ' SET online_updated=' . $time . ', online_module = ' . $module . ' WHERE online_uid = ' . $uid;
61 if (0 == $uid) {
62 $sql .= ' AND online_ip=' . $ip;
63 }
64 } else {
65 $sql = sprintf('INSERT INTO %s (online_uid, online_uname, online_updated, online_ip, online_module) VALUES (%u, %s, %u, %s, %u)', $this->db->prefix('online'), $uid, $this->db->quoteString($uname), $time, $ip, $module);
66 }
67 if (!$this->db->queryF($sql)) {
68 return false;
69 }
70 return true;
71 }
72
80 public function destroy($uid)
81 {
82 $sql = sprintf('DELETE FROM %s WHERE online_uid = %u', $this->db->prefix('online'), $uid);
83 if (!$result = $this->db->queryF($sql)) {
84 return false;
85 }
86 return true;
87 }
88
96 public function gc($expire)
97 {
98 $sql = sprintf('DELETE FROM %s WHERE online_updated < %u', $this->db->prefix('online'), time() - (int)$expire);
99 $this->db->queryF($sql);
100 }
101
108 public function &getAll($criteria = null)
109 {
110 $ret = [];
111 $limit = $start = 0;
112 $sql = 'SELECT * FROM '.$this->db->prefix('online');
113 if (is_object($criteria) && $criteria instanceof \criteriaelement) {
114 $sql .= ' '.$criteria->renderWhere();
115 $limit = $criteria->getLimit();
116 $start = $criteria->getStart();
117 }
118 $result =& $this->db->query($sql, $limit, $start);
119 if (!$result) {
120 $ret = false;
121 return $ret;
122 }
123 while ($myrow = $this->db->fetchArray($result)) {
124 $ret[] =& $myrow;
125 unset($myrow);
126 }
127 return $ret;
128 }
129
136 public function getCount($criteria = null)
137 {
138 $sql = 'SELECT COUNT(*) FROM '.$this->db->prefix('online');
139 if (is_object($criteria) && $criteria instanceof \criteriaelement) {
140 $sql .= ' '.$criteria->renderWhere();
141 }
142 if (!$result =& $this->db->query($sql)) {
143 $ret = false;
144 return $ret;
145 }
146 [$ret] = $this->db->fetchRow($result);
147 return $ret;
148 }
149}
& getAll($criteria=null)
Definition online.php:108
getCount($criteria=null)
Definition online.php:136
write($uid, $uname, $time, $module, $ip)
Definition online.php:49