<?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 CacheManagerFactory.php
*
* Ce fichier contient la classe CacheManagerFactory
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2004/06/05
* @version 0.3
* @package system_data
* @subpackage cache
* @copyright Copyright &copy; 2009-2018, Rooty
*/

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

/**
* Appel à la classe Cache...
*/
require ($CONF_LIB_PATH."lib/system/system_data/cache/cachemanager.php");

/**
* Classe CacheManagerFactory
* Permet la creation du bon Manager en fonction de la ressource souhaité.<br>
* Ce manager doit avoir pour nom CacheManager + "xxx"<br>
*  avec :<br>
* - xxx étant le nom de la ressource<br>
* - le nom du fichier final (CacheManager + "xxx" + .php) = au nom de la classe<br>
* @package system_data
* @subpackage cache
*/
class CacheManagerFactory extends Factory
{

/**
* createInstance : créer l'instance du gestionnaire de Cache et renvoi celle-ci
*
* @param chaine type de ressource (manager corrspondant dans le fichier de ressource)
* @param chaine information propre à chaque ressource (actuellement configuré avec le nom de la table)
* @access public
* @return object
*/
	function createInstance($type, $info=NULL)
	{
		global $CONF_LIB_PATH;
		if (CacheManagerFactory::isValidType($type))
		{
			/* inclusion de la lib corresspondante (utilisation du include_once pour que celle-ci ne soit chargé qu'une seule fois) */
			include_once($CONF_LIB_PATH."lib/system/system_data/cache/ressource/cachemanager".$type.".php");
			$className="CacheManager".$type;
			$return= new $className($info);		/* actuellement info = nom de la table */
			return $return;
		}else{
			/* Erreur */
			$systemError=1;
			$classe="CacheManager";
			$message="Erreur objet invalide ";
			addError($systemError, $classe, $message, __line__, __file__);
			return false;
		}
	}

/**
* isValidType : test si le type est valide ou non
*
* @param chaine type de ressource...
* @access private
* @return object
*/
	function isValidType($type)
	{
		global $CONF_LIB_PATH;
		return (file_exists($CONF_LIB_PATH."lib/system/system_data/cache/ressource/cachemanager".$type.".php"))? true:false;
	}
}
?>
