+<?php
+/************************************************************************
+ * MXChange v0.2.1 Start: 12/18/2008 *
+ * ================ Last change: 12/18/2008 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : online_functions.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Online functions *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Online-Funktionen *
+ * -------------------------------------------------------------------- *
+ * *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2008 by Roland Haeder *
+ * For more information visit: http://www.mxchange.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. *
+ * *
+ * 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., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+ require($INC);
+}
+
+// Filter for updates/extends on the online list
+function FILTER_UPDATE_ONLINE_LIST () {
+ global $PHPSESSID;
+
+ // Do not update online list when extension is deactivated
+ if (!EXT_IS_ACTIVE("online", true)) return;
+
+ // Empty session?
+ if (empty($PHPSESSID)) {
+ // This is invalid here!
+ print "Invalid session. Backtrace:<pre>";
+ debug_print_backtrace();
+ die("</pre>");
+ } // END - if
+
+ // Initialize variables
+ $uid = 0; $rid = 0; $MEM = "N"; $ADMIN = "N";
+
+ // Valid userid?
+ if ((!empty($GLOBALS['userid'])) && ($GLOBALS['userid'] > 0) && (IS_MEMBER())) {
+ // Is valid user
+ $uid = bigintval($GLOBALS['userid']);
+ $MEM = "Y";
+ } // END - if
+
+ if (IS_ADMIN()) {
+ // Is administrator
+ $ADMIN = "Y";
+ } // END - if
+
+ if (!empty($GLOBALS['refid'])) {
+ // Read cookie
+ $rid = bigintval($GLOBALS['refid']);
+ } // END - if
+
+ // Now search for the user
+ $result = SQL_QUERY_ESC("SELECT timestamp FROM "._MYSQL_PREFIX."_online WHERE sid='%s' LIMIT 1",
+ array($PHPSESSID), __FILE__, __LINE__);
+
+ // Entry found?
+ if (SQL_NUMROWS($result) == 1) {
+ // Then update it
+ SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_online SET
+module='%s',
+action='%s',
+what='%s',
+userid=%s,
+refid=%s,
+is_member='%s',
+is_admin='%s',
+timestamp=UNIX_TIMESTAMP(),
+ip='%s'
+WHERE sid='%s' LIMIT 1",
+ array(
+ $GLOBALS['module'],
+ $GLOBALS['action'],
+ $GLOBALS['what'],
+ $uid,
+ $rid,
+ $MEM,
+ $ADMIN,
+ GET_REMOTE_ADDR(),
+ $PHPSESSID
+ ), __FILE__, __LINE__
+ );
+ } else {
+ // No entry does exists so we simply add it!
+ SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_online (module, action, what, userid, refid, is_member, is_admin, timestamp, sid, ip) VALUES ('%s','%s','%s', %s, %s, '%s','%s', UNIX_TIMESTAMP(), '%s','%s')",
+ array(
+ $GLOBALS['module'],
+ $GLOBALS['action'],
+ $GLOBALS['what'],
+ $uid,
+ $rid,
+ $MEM,
+ $ADMIN,
+ $PHPSESSID,
+ GET_REMOTE_ADDR()
+ ), __FILE__, __LINE__
+ );
+ }
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Purge old entries
+ $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_online WHERE timestamp <= (UNIX_TIMESTAMP() - %s)",
+ array(getConfig('online_timeout')), __FILE__, __LINE__);
+}
+
+//
+?>