<?php

/**------------------------------------------------
*
* Rooty, 2018 <rooty@rooty.me>
*
*
* This software is protected by copyright, please
* read the file COPYRIGHT.
* This program is distributed in the hope that it
* will be useful, but without any warranty; without
* even the implied warranty of merchantability or
* fitness for a particular purpose. Please
* read the file LICENCE.
*
* Fichier Cache.php
*
* Fichier contenant la classe Cache
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2018/05/17
* @version 0.3
* @package system_data
* @subpackage cache
* @copyright Copyright &copy; 2009-2018, Rooty
* @docreview Tristan <tristan@initiance.com> | 30-10-2005
*/

#####################################################################################################
################################# Parametrage
#####################################################################################################
/**
* Déclaration du system... si cette variable n'est pas définie, les fichiers inclus ne marche pas...
* Cette variable est déclarée sur la page d'exécution du script.
* <P> if ( !defined('SYSTEM_IN') )
* {
* die("Hacking attempt");
* }</p>
*/
if ( !defined('SYSTEM_IN') )
{
 die("Hacking attempt");
}

/**
* Classe de gestion des Caches système
* Cette classe permet de stocker des objets directement dans une table avec id, data<br>
* - id: identifiant de l'objet<br>
* - data: l'objet linéarisé<br>
* <br>
* On doit se servir de son manager pour l'utiliser (voir la doc CacheManager)<br><br>
* Les objets complexes tels que :<BR>
* - LIST_USER_NODE: qui gère les noeuds autorisés pour un utilisateur<BR>
* - LIST_USER_GROUP: qui gère les groupes autorisés pour un utilisateur<BR>
* - TREE_GROUP: qui gère une arborescence de groupes<BR>
* - TREE_NODE: qui gère une arborescance de noeuds<BR>
* - PERMISSION: qui gère l'ensemble des droits d'un utilisateur<BR>
* sont mis en cache par ce système.<BR><BR>
* Cet élément permet donc de ne pas "recalculer" l'objet à chaque fois<BR>
* <BR>
* @internal
* L'objet est ici linéarisé (fonction PHP:serialize)<BR>
* Celui-ci peut éffectuer des opérations avant et après sa linéarisation à l'aide des méthodes __wake() et __sleep<br>
* Voir la doc php : 
* @link http://fr.php.net/function.serialise.php
* @package system_data
* @subpackage cache
*/
class Cache
{
/**#@+
* @access private
*/

/**
* @var entier
* @desc contient l'id numérique du Cache
*/
var $id = null;

/**
* @var raw
* @desc contient les données à mettre en cache
*/
var $data = null;

/**#@-*/

/**
* Constructeur de la classe Cache (PHP5)
* Initialise la classe Cache
* @access public
*/
	function __construct()
	{
	}

/**
* "Getteur" de l'attribut Id.
* @access public
* @return entier Id du Cache
*/
	function getId()
	{
		return $this->id;
	}

/**
* "Setteur" de l'attribut Id.
* @access public
* @param entier Id du Cache
*/
	function setId($Id)
	{
		$this->id=$Id;
	}

/**
* "Getteur" de l'attribut data.
* @access public
* @return raw données
*/
	function getData()
	{
		return $this->data;
	}

/**
* "Setteur" de l'attribut data.
* @access public
* @param raw données à porter
*/
	function setData($data)
	{
		$this->data=$data;
	}

/**
* Chargement de l'objet Cache
* Importe directement les données dans l'objet
* @access public
* @param entier id du Cache
* @param raw données portées par l'objet
*/
	function doLoad($id,$data)
	{
		$this->id=$id;
		$this->data=$data;
	}

/**
* isLoaded : Verifie que l'ID est affecté
* Après un load depuis la base, l'id de l'objet est affecté, cette fonction le vérifie
* @access public
* @return booleen
*/
	function isLoaded()
	{
		return ((!is_numeric($this->id)) || ($this->id != 0) )? true:false;
	}

}

/**
* deleteAllSystemCache: Détruit tous les caches système...<BR>
* Elle sert au débuggage système (ne pas utiliser dans des développements !!!)
* @access public
* @deprecated
* @return booleen
*/
function deleteAllSystemCache()
{
	$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE_CACHE"]->emptyCache();
	$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP_CACHE"]->emptyCache();
	if( DATA_ACCES_CACHE_PERMISSION )
		$GLOBALS["SYSTEM_MANAGER"]["PERMISSION_CACHE"]->emptyCache();
	$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_GROUP_CACHE"]->emptyCache();
	$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]->emptyCache();
}
?>
