<?php

define('PING_TIMEOUT', 30);

/**
 * Module qui s'assure que l'utilisateur est toujours connecté
 * 
 * @author Olivier Arteau
 */

class PingTimeOut implements Module {

    public function __construct() {
    	
    }
    
    public function executerCommande(array $param, StatusObject $status) {
    	$nomUtilisateur = Session::getValeur('username');
    	
    	if ($nomUtilisateur != null && ((time() - Session::getValeur('lastping')) > PING_TIMEOUT/2)) {
    		$newTime = time();
    		$bd = BDConnexion::getBdConnexion();
    		$sql = 'UPDATE utilisateurs SET lastping=? WHERE nom=? AND lastping=?';
    		$parametre = array($newTime, $nomUtilisateur,  Session::getValeur('lastping'));
    		$bd->execQuery($sql, $parametre);
    		
    		if ($bd->getNumberAffectedRow() == 0) {
    			Session::detruire();
    			return PAFServer::$NO_ACTION_TAKEN;
    		} 
    		
    		Session::setValeur('lastping', $newTime);
    	}
    	
    	return PAFServer::$NO_ACTION_TAKEN;
    }
    
    public function onStatusChange(array $param, StatusObject $status) {
    	
    }
    
    public function getCommandesEnregistre() {
    	return array('getmsg');
    }
    
    public function finalize(array $param, StatusObject $status) {
   		
   	}
}

PAFServer::getInstance()->enregistrerModule(new PingTimeOut());
?>