beautified code to make it readable. Also added -- instead of - in else block

Ahmed Nawaz Butt 2020-04-24 17:18:12 +05:00
parent 0102611de4
commit 915b074ad7

@ -1,135 +1,166 @@
```
<?php
/**
* Users Online class
*
* Manages active users
*
* @package CodeIgniter
* @subpackage Libraries
* @category Add-Ons
* @author Leonardo Monteiro Bersan de Araujo
* @link hhttp://codeigniter.com/wiki/Library: Online_Users
*/
class OnlineUsers{
public $file="usersonline.tmp";
public $data;
public $ip;
function OnlineUsers(){
$this->ip=$_SERVER['REMOTE_ADDR'];
$this->data = @unserialize(file_get_contents($this->file));
$aryData = $this->data['useronline'];
if(!$this->data) $this->data=array();
$timeout = time()-120;
//Removes expired data
foreach($aryData as $key => $value){
if($value['time'] <= $timeout) {
if($value['username']) {
$this->data['memonline']--;
}
else $this->data[guestonline]—;
unset($aryData[$key]);
}
}
//If its the first hit, add the information to database
if(!isset($aryData[$this->ip])){
$CI =& get_instance();
$aryData[$this->ip]['time'] = time();
$aryData[$this->ip]['uri'] = $_SERVER['REQUEST_URI'];
$username = $CI->session->userdata('username');
$aryData[$this->ip]['username'] = $username;
if($username) {
$this->data['memonline']++;
}
else {
$this->data['guestonline']++;
}
$this->data[totalvisit]++;
//Loads the USER_AGENT class if its not loaded yet
if(!isset($CI->agent)) { $CI->load->library('user_agent'); $class_loaded = true; }
if($CI->agent->is_robot())
$aryData[$this->ip][bot] = $CI->agent->robot();
else
$aryData[$this->ip][bot] = false;
//Destroys the USER_AGENT class so it can be loaded again on the controller
if($class_loaded) unset($class_loaded, $CI->agent);
}
else {
$aryData[$this->ip]['time'] = time();
$aryData[$this->ip]['uri'] = $_SERVER['REQUEST_URI'];
}
$this->data[useronline] = $aryData;
$this->_save();
}
//this function return the total number of online users
function total_users(){
return count($this->data['useronline']);
}
//this function return the total number of online members
function total_mems(){
return @$this->data['memonline'];
}
//this function return the total number of online guest
function total_guests(){
return @$this->data['guestonline'];
}
//this function return the total number of total visit
function total_visit() {
return @$this->data['totalvisit'];
}
//this function return the total number of online robots
function total_robots(){
$i=0;
foreach($this->data as $value)
* Users Online class
*
* Manages active users
*
* @package CodeIgniter
* @subpackage Libraries
* @category Add-Ons
* @author Leonardo Monteiro Bersan de Araujo
* @link hhttp://codeigniter.com/wiki/Library: Online_Users
*/
class OnlineUsers
{
if($value['is_robot']) $i++;
}
return $i;
}
public $file = "usersonline.tmp";
public $data;
public $ip;
//Used to set custom data
function set_data($data=false, $force_update=false){
if(!is_array($data)){ return false;}
function OnlineUsers()
{
$this->ip = $_SERVER['REMOTE_ADDR'];
$this->data = @unserialize(file_get_contents($this->file));
$aryData = $this->data['useronline'];
if (!$this->data) $this->data = array();
$timeout = time() - 120;
$tmp=false; //Used to control if there are changes
//Removes expired data
foreach ($aryData as $key => $value)
{
if ($value['time'] <= $timeout)
{
if ($value['username'])
{
$this->data['memonline']--;
}
else $this->data[guestonline]--;
unset($aryData[$key]);
}
}
foreach($data as $key => $value)
{
if(!isset($aryData[$this->ip]['data'][$key]) || $force_update)
{
$aryData[$this->ip]['data'][$key] = $value;
$tmp=true;
}
}
//Check if the users already have this setting and skips the wiriting file process (saves CPU)
if(!$tmp) return false;
return $this->_save();
}
//
function get_info(){
return @$this->data;
}
//If its the first hit, add the information to database
if (!isset($aryData[$this->ip]))
{
$CI = & get_instance();
$aryData[$this->ip]['time'] = time();
$aryData[$this->ip]['uri'] = $_SERVER['REQUEST_URI'];
//Save current data into file
function _save() {
$fp = fopen($this->file,'w');
flock($fp, LOCK_EX);
$write = fwrite($fp, serialize($this->data));
fclose($fp);
return $write;
$username = $CI
->session
->userdata('username');
$aryData[$this->ip]['username'] = $username;
if ($username)
{
$this->data['memonline']++;
}
else
{
$this->data['guestonline']++;
}
$this->data[totalvisit]++;
//Loads the USER_AGENT class if its not loaded yet
if (!isset($CI->agent))
{
$CI
->load
->library('user_agent');
$class_loaded = true;
}
if ($CI
->agent
->is_robot()) $aryData[$this->ip][bot] = $CI
->agent
->robot();
else $aryData[$this->ip][bot] = false;
//Destroys the USER_AGENT class so it can be loaded again on the controller
if ($class_loaded) unset($class_loaded, $CI->agent);
}
else
{
$aryData[$this->ip]['time'] = time();
$aryData[$this->ip]['uri'] = $_SERVER['REQUEST_URI'];
}
$this->data[useronline] = $aryData;
$this->_save();
}
//this function return the total number of online users
function total_users()
{
return count($this->data['useronline']);
}
//this function return the total number of online members
function total_mems()
{
return @$this->data['memonline'];
}
//this function return the total number of online guest
function total_guests()
{
return @$this->data['guestonline'];
}
//this function return the total number of total visit
function total_visit()
{
return @$this->data['totalvisit'];
}
//this function return the total number of online robots
function total_robots()
{
$i = 0;
foreach ($this->data as $value)
{
if ($value['is_robot']) $i++;
}
return $i;
}
//Used to set custom data
function set_data($data = false, $force_update = false)
{
if (!is_array($data))
{
return false;
}
$tmp = false; //Used to control if there are changes
foreach ($data as $key => $value)
{
if (!isset($aryData[$this->ip]['data'][$key]) || $force_update)
{
$aryData[$this->ip]['data'][$key] = $value;
$tmp = true;
}
}
//Check if the users already have this setting and skips the wiriting file process (saves CPU)
if (!$tmp) return false;
return $this->_save();
}
//
function get_info()
{
return @$this->data;
}
//Save current data into file
function _save()
{
$fp = fopen($this->file, 'w');
flock($fp, LOCK_EX);
$write = fwrite($fp, serialize($this->data));
fclose($fp);
return $write;
}
}
}
```