* * * 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 PluginManager.php * *Ce fichier contient la classe PluginManager * * @author Rooty * @link www.rooty.me * @since 2004/04/14 * @version 0.3 * @package system_plugin * @copyright Copyright © 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. *

if ( !defined('SYSTEM_IN') ) * { * die("Hacking attempt"); * }

*/ if ( !defined('SYSTEM_IN') ) { die("Hacking attempt"); } /** * Appel à la classe Plugin... */ require ($CONF_LIB_PATH."lib/system/system_plugin/plugin.php"); /** * Classe PluginManager * *

Classe de gestion des instances de Plugins
* (permet de fabriquer, detruire, mettre à jour des objet Plugins)
* Cette classe se sert des ressources à sa disposition (dans lib/plugins)

*

* @package system_plugin */ class PluginManager { /** * @access private * @var chaine * @desc chaine */ var $sourceDir = null; var $tabPlugs =null; // // Constructor // /** *Constructeur de la classe PluginManager * *

Initialise le bon objet (ressource) ...
chacun de ces objets doit avoir les mêmes methodes (equivalente aux methodes sourceXXX)

*

L'objet PluginManager ne doit servir qu'a la récuperation des Plugin

* @access public */ function __construct() { global $CONF_LIB_PATH; $this->setSourceDir($CONF_LIB_PATH."lib/object_plugin/"); } /** * getSourceDir : récupere le repertoire des plugin à insérer * @access public * @return chaine nom du repertoire d'inclusion */ function getSourceDir() { return $this->sourceDir; } /** * setSourceDir : affecte le repertoire des plugin à insérer * @access public * @return booleen */ function setSourceDir($path) { $this->sourceDir=$path; return true; } /** * doListPlugin : récupere le nom de tous les plugin disponibles * la liste est éventuellment stovké ds tabPlugs * @access public * @return booleen */ function doListPlugin() { $i=0; $tab=array(); if ($this->tabPlugs!=null) return $this->tabPlugs; if (is_dir($this->sourceDir)) { if ($dh = opendir($this->sourceDir)) { while (($obj = readdir($dh)) !== false) { if (is_dir($this->sourceDir.$obj)) if (file_exists($this->sourceDir.$obj."/".$obj.".php")){ $tab[$i]=$obj; $i++; } } closedir($dh); } } // trie par ordre alpha en comptant les a. et en les supprimant asort($tab); reset($tab); // TODO : mb_string, supprimer les a*. foreach($tab as $key=>$val){ // $tab[$key]=eregi_replace("^[[:space:]]*[a-z]+[.)".chr(176)."][[:space:]]+", "", $val); $tab[$key]=mb_eregi_replace("^[\s]*[a-z]+[.)°][\s]+", "", $val); // $tab[$key]=mb_eregi_replace("^[/\s/]+", "", $val); // $tab[$key]=$val; } $this->tabPlugs=$tab; return $tab; } /** * doLoadPlugin : charge pour tous les plugin sous la forme $GLOBALS['SYSTEM_PLUGIN']['nomduplugin']=new Plugin(); * @access public * @return booleen */ function doLoadPlugin() { $GLOBALS['SYSTEM_PLUGIN']=array(); /* Déclaration de la variable globale des plugin */ $tab=$this->doListPlugin(); for ($i=0; $isourceDir.$tab[$i]."/".$tab[$i].".php"); /* On créer une instance pour le plugin sous SYSTEM_PLUGIN */ $GLOBALS["SYSTEM_PLUGIN"][$tab[$i]]=new $tab[$i](); } return true; } /** * doBeforeSessionStart : appel pour tous les plugin leur methode __beforeSessionStart() * @access public * @return booleen */ function doBeforeSessionStart() { if (!Isset($GLOBALS['SYSTEM_PLUGIN'])) $this->doLoadPlugin(); $tab=$this->doListPlugin(); for ($i=0; $i__beforeSessionStart(); } return true; } /** * doBeforeProcess : appel pour tous les plugin leur methode __beforeProcess() * @access public * @return booleen */ function doBeforeProcess() { if (!Isset($GLOBALS['SYSTEM_PLUGIN'])) $this->doLoadPlugin(); $tab=$this->doListPlugin(); for ($i=0; $i__beforeProcess(); } return true; } /** * doBeforeSessionStart : appel pour tous les plugin leur methode __beforeSessionStart() * @access public * @return booleen */ function doBeforeExec() { if (!Isset($GLOBALS['SYSTEM_PLUGIN'])) $this->doLoadPlugin(); $tab=$this->doListPlugin(); for ($i=0; $i__beforeExec(); } return true; } /** * doBeforeSessionStart : appel pour tous les plugin leur methode __beforeSessionStart() * @access public * @return booleen */ function doAfterExec() { if (!Isset($GLOBALS['SYSTEM_PLUGIN'])) $this->doLoadPlugin(); $tab=$this->doListPlugin(); for ($i=0; $i__afterExec(); } return true; } /** * doAfterProcess : appel pour tous les plugin leur methode __afterProcess() * @access public * @return booleen */ function doAfterProcess() { if (!Isset($GLOBALS['SYSTEM_PLUGIN'])) $this->doLoadPlugin(); $tab=$this->doListPlugin(); for ($i=0; $i__afterProcess(); } return true; } /** * doAfterProcess : appel pour tous les plugin leur methode __afterProcess() * @access public * @return booleen */ function doBeforeSessionClose() { if (!Isset($GLOBALS['SYSTEM_PLUGIN'])) $this->doLoadPlugin(); $tab=$this->doListPlugin(); for ($i=0; $i__beforeSessionClose(); } return true; } } ?>