Online.php
<?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;
        }


    }


?>
 
Hosted by www.Geocities.ws

1