<?php
class DBSession {
    
public static $db;
    
public static $db_table;

    
public function initialize(&$db$table) {
        if(!
$db->ping()) return FALSE;
        
self::$db =& $db;
        
self::$db_table $table;
        return 
TRUE;
    }
    
    
public static function open($save_path$session_name) {
        if(!
self::$db||self::$db->ping()) return TRUE;
    }

    
public static function close() {
        
self::$db=NULL;
        return 
TRUE;
    }

    
public static function read($id) {
        if(!(
$data=@self::$db->dbParamQuery('SELECT `sess_data` FROM `'.self::$db_table.'` WHERE `sess_id`=\':sess_id\' LIMIT 1', array(':sess_id'=>$id)))) return FALSE;
        return (string) 
$data;
    }

    
public static function write($id$sess_data) {
        if(!@
self::$db->dbParamQuery('INSERT INTO `'.self::$db_table.'` (`sess_id`, `sess_data`) VALUES (:sess_id, :sess_data) ON DUPLICATE `sess_data` = :sess_data', array(':sess_id'=>$id':sess_data'=>$sess_data))) return FALSE;
        return 
TRUE;
    }

    
public static function destroy($id) {
        if(!@
self::$db->dbParamQuery('DELETE FROM `'.self::$db_table.'` WHERE `sess_id`=\':sess_id\'', array(':sess_id'=>$id))) return FALSE;
        return 
TRUE;
    }

    
public static function gc($maxlifetime) {
        if(!@
self::$db->dbParamQuery('DELETE FROM `'.self::$db_table.'` WHERE `birth`>\':max_life\'', array(':max_life'=>$maxlifetime))) return FALSE;
        return 
TRUE;
    }
}
?>