Пример #1
0
 public static function page($chemin_str)
 {
     // TODO : appeller Modules::action($chemin, $action, $paramètres);
     $chemin = new Chemin($chemin_str);
     $module = Modules::get_module($chemin);
     $paramètres = array("action" => "vue");
     foreach ($module["get_post"] as $param) {
         if (isset($_GET[$param])) {
             $paramètres[$param] = self::param_get($param);
         }
         if (isset($_POST[$param])) {
             $paramètres[$param] = self::param_post($param);
         }
     }
     foreach ($module["post"] as $param) {
         if (isset($_POST[$param])) {
             $paramètres[$param] = self::param_post($param);
         }
     }
     foreach ($module["file"] as $param) {
         if (isset($_FILES[$param])) {
             $paramètres[$param] = $_FILES[$param];
         }
     }
     $action = $paramètres["action"];
     $ret = Modules::action($chemin, $action, $paramètres);
     if (!Page::is_page($ret)) {
         Erreur::fatale("Le module de " . htmlspecialchars($chemin->get()) . " n'a pas renvoyé une page mais à la place : <pre><code>" . htmlspecialchars(var_export($ret, true)) . "</code></pre>", true);
     } else {
         $ret->envoyer();
     }
 }
Пример #2
0
 public static function get_module($chemin)
 {
     $type = Stockage::get_prop($chemin, "type");
     if (Erreur::is_erreur($type)) {
         // TODO : permettre l'empilement des erreurs. Quelle syntaxe utiliser ?
         Erreur::fatale("Erreur lors de la lecture du type de la page " . $chemin->get() . ".", $type);
     } else {
         if (!isset(self::$liste_modules[$type])) {
             Erreur::fatale("Type inconnu (" . var_export($type, true) . ") pour la page " . $chemin->get() . ".");
         }
     }
     return self::$liste_modules[$type];
 }
Пример #3
0
 public static function nouvelle_page($chemin, $nom, $type)
 {
     if (Permissions::vérifier_permission($chemin, "nouvelle_page")) {
         $enfant = $chemin->enfant($nom);
         Système_fichiers::créer_dossier($enfant->get_fs_stockage());
         self::set_prop($enfant, "type", $type);
         $e = self::activer_réécriture($enfant);
         if (Erreur::is_erreur($e)) {
             return Erreur::fatale("Erreur lors de la mise en place de la redirection pour " . $enfant->get() . ".", $e);
         }
         return $enfant;
     } else {
         return false;
     }
 }
 public static function get_regles()
 {
     // Renvoie un tableau de quintuplets
     // (chemin, action, groupe, autorisation, commentaire).
     // ou false si erreur.
     $str_regles = Stockage::get_prop(self::singleton(), "regles", true);
     // true => forcer permissions.
     if (!$str_regles) {
         Erreur::fatale("Impossible de lire les règles de sécurité.");
     }
     $str_regles = preg_replace('/\\r\\n|\\r/', "\n", $str_regles);
     $regles = array();
     // TODO : ignorer les lignes vides !
     foreach (explode("\n", $str_regles) as $k => $v) {
         $r = explode('|', $v);
         if (count($r) != 5) {
             return false;
         }
         $regles[] = array("chemin" => new Chemin(self::unescape_element_regle($r[0]), true), "action" => self::unescape_element_regle($r[1]), "groupe" => self::unescape_element_regle($r[2]), "autorisation" => $r[3] == "oui", "commentaire" => self::unescape_element_regle($r[4]));
     }
     return $regles;
 }