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); }
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; }
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); }
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); } }