📄 online.php
字号:
<?php
// $Id: online.php 694 2006-09-04 11:33:22Z skalpa $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <http://www.xoops.org/> //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu) //
// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
// Project: The XOOPS Project //
// ------------------------------------------------------------------------- //
/**
* @package kernel
*
* @author Kazumi Ono <onokazu@xoops.org>
* @copyright copyright (c) 2000-2003 XOOPS.org
*/
/**
* A handler for "Who is Online?" information
*
* @package kernel
*
* @author Kazumi Ono <onokazu@xoops.org>
* @copyright copyright (c) 2000-2003 XOOPS.org
*/
class XoopsOnlineHandler
{
/**
* Database connection
*
* @var object
* @access private
*/
var $db;
/**
* Constructor
*
* @param object &$db {@link XoopsHandlerFactory}
*/
function XoopsOnlineHandler(&$db)
{
$this->db =& $db;
}
/**
* Write online information to the database
*
* @param int $uid UID of the active user
* @param string $uname Username
* @param string $timestamp
* @param string $module Current module
* @param string $ip User's IP adress
*
* @return bool TRUE on success
*/
function write($uid, $uname, $time, $module, $ip)
{
$uid = intval($uid);
if ($uid > 0) {
$sql = "SELECT COUNT(*) FROM ".$this->db->prefix('online')." WHERE online_uid=".$uid;
} else {
$sql = "SELECT COUNT(*) FROM ".$this->db->prefix('online')." WHERE online_uid=".$uid." AND online_ip='".$ip."'";
}
list($count) = $this->db->fetchRow($this->db->queryF($sql));
if ( $count > 0 ) {
$sql = "UPDATE ".$this->db->prefix('online')." SET online_updated=".$time.", online_module = ".$module." WHERE online_uid = ".$uid;
if ($uid == 0) {
$sql .= " AND online_ip='".$ip."'";
}
} else {
$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, $this->db->quoteString($ip), $module);
}
if (!$this->db->queryF($sql)) {
return false;
}
return true;
}
/**
* Delete online information for a user
*
* @param int $uid UID
*
* @return bool TRUE on success
*/
function destroy($uid)
{
$sql = sprintf("DELETE FROM %s WHERE online_uid = %u", $this->db->prefix('online'), $uid);
if (!$result = $this->db->queryF($sql)) {
return false;
}
return true;
}
/**
* Garbage Collection
*
* Delete all online information that has not been updated for a certain time
*
* @param int $expire Expiration time in seconds
*/
function gc($expire)
{
$sql = sprintf("DELETE FROM %s WHERE online_updated < %u", $this->db->prefix('online'), time() - intval($expire));
$this->db->queryF($sql);
}
/**
* Get an array of online information
*
* @param object $criteria {@link CriteriaElement}
* @return array Array of associative arrays of online information
*/
function getAll($criteria = null)
{
$ret = array();
$limit = $start = 0;
$sql = 'SELECT * FROM '.$this->db->prefix('online');
if (is_object($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
$sql .= ' '.$criteria->renderWhere();
$limit = $criteria->getLimit();
$start = $criteria->getStart();
}
$result = $this->db->query($sql, $limit, $start);
if (!$result) {
return false;
}
while ($myrow = $this->db->fetchArray($result)) {
$ret[] = $myrow;
unset($myrow);
}
return $ret;
}
/**
* Count the number of online users
*
* @param object $criteria {@link CriteriaElement}
*/
function getCount($criteria = null)
{
$sql = 'SELECT COUNT(*) FROM '.$this->db->prefix('online');
if (is_object($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
$sql .= ' '.$criteria->renderWhere();
}
if (!$result = $this->db->query($sql)) {
return false;
}
list($ret) = $this->db->fetchRow($result);
return $ret;
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -