<?php
class Online{
private $ip;
private $session;
public $timeout = 60;
public function Online( $timeout = "" ){
if ( $timeout != "" ) {
$this->setTimeout( $timeout );
}
$this->truncate();
}
public function setTimeout( $timeout ) {
$this->timeout = ( INT ) $timeout;
}
public function getTimeout(){
return $this->timeout;
}
private function truncate(){
$time = time() - $this->timeout ;
$query = "DELETE FROM online WHERE timestamp < $time " ;
//print "<br/> $query";
mysql_query( $query );
}
public function add( $data ) {
$this->extractData( $data );
if ( $this->isLogged() ) {
$this->update();
}else{
$data['timestamp'] = time();
$sql = new Sql();
$sql->setTable( "online" );
$sql->insert( $data );
//print "<br/>" . $sql->getQueryString();
}
}
private function extractData( $data ) {
foreach( $data as $key => $val ) {
switch( $key ){
case "ip" : $this->ip = $val ; break;
case "session" : $this->session = $val ; break;
default : break;
}
}
}
private function isLogged(){
$ip = $this->ip ;
$session = $this->session ;
$query = "SELECT id FROM online WHERE ip = '$ip'
AND session = '$session' ";
//print "<br/> $query";
$result = mysql_query ( $query );
$total = mysql_num_rows ( $result );
if ( !$total ) {
return FALSE;
}
return TRUE;
}
private function update(){
$ip = $this->ip ;
$session = $this->session ;
$query = "UPDATE online SET timestamp = ". time() ."
WHERE ip = '$ip' AND session = '$session' ";
//print "<br/> $query";
mysql_query ( $query );
}
public function getUsers(){
$query = "SELECT username , ip FROM online ";
//print "<br/> $query";
$result = mysql_query ( $query );
$data = array();
while ( $row = mysql_fetch_assoc( $result ) ) {
$username = $row['username'];
$ip = $row['ip'];
$data[$username] = $ip;
}
return $data;
}
}
?>
|