www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

modules.php (1409B)


      1 <?php
      2 
      3 class Modules {
      4 	static $liste_modules = array();
      5 	
      6 	public static function enregister_module($classe, $type, $get_post = array(), $post = array(), $file = array()) {
      7 		self::$liste_modules[$type] = array(
      8 			"classe" => $classe,
      9 			"get_post" => qw($get_post),
     10 			"post" => qw($post),
     11 			"file" => qw($file)
     12 		);
     13 		self::$liste_modules[$type]["get_post"][] = "action"; // Toujours présent.
     14 	}
     15 	
     16 	public static function get_module($chemin) {
     17 		$type = Stockage::get_prop($chemin, "type");
     18 		if (Erreur::is_erreur($type)) {
     19 			// TODO : permettre l'empilement des erreurs. Quelle syntaxe utiliser ?
     20 			Erreur::fatale("Erreur lors de la lecture du type de la page " . $chemin->get() . ".", $type);
     21 		} else if (!isset(self::$liste_modules[$type])) {
     22 			Erreur::fatale("Type inconnu (" . var_export($type, true) . ") pour la page " . $chemin->get() . ".");
     23 		}
     24 		return self::$liste_modules[$type];
     25 	}
     26 	
     27 	public static function action($chemin, $action, $paramètres) {
     28 		$module = self::get_module($chemin);
     29 		if ($module === false) return self::page(false, "Erreur");
     30 		return call_user_func(array($module["classe"], "action"), $chemin, $action, $paramètres);
     31 	}
     32 	
     33 	public static function vue($chemin, $vue = "normal") {
     34 		$module = self::get_module($chemin);
     35 		if ($module === false) return self::page(false, "Erreur");
     36 		return call_user_func(array($module["classe"], "vue"), $chemin, $vue);
     37 	}
     38 }
     39 
     40 ?>