Пример #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();
     }
 }
 public static function écrire($chemin_fs, $données)
 {
     $d = dirname($chemin_fs);
     if (!is_dir($d) && !self::créer_dossier($d)) {
         return Erreur::écriture("Impossible d'écrire dans {$chemin_fs} : le dossier {$d} n'existe pas");
     }
     return file_put_contents($chemin_fs, $données);
 }
Пример #3
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];
 }
 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;
 }
 public static function get_utilisateur()
 {
     $u = Session::get("utilisateur");
     return Erreur::is_erreur($u) ? "Anonyme" : $u;
 }
Пример #6
0
 public static function get($k)
 {
     self::démarrer();
     return isset($_SESSION[$k]) ? $_SESSION[$k] : Erreur::lecture("N'a pas pu lire la variable de session " . $k);
 }
Пример #7
0
 public static function get_prop_sendfile($chemin, $prop)
 {
     // Envoie tout le conctenu de $prop sur le réseau.
     // Équivalent à appeller sendfile sur le fichier qui contient $prop.
     if (Permissions::vérifier_permission($chemin, "get_prop")) {
         return Système_fichiers::envoyer_fichier_directement(self::fichier_prop($chemin, $prop));
     } else {
         return Erreur::lecture("Permission non accordée pour la lecture de chemin: " . $chemin->get() . " propriété: " . $prop);
     }
 }