diff --git a/__cms__/code/chemin/chemin.php b/__cms__/code/chemin/chemin.php index dcb839a..68ff6f5 100644 --- a/__cms__/code/chemin/chemin.php +++ b/__cms__/code/chemin/chemin.php @@ -46,14 +46,14 @@ class Chemin { // Invariant de sécurité : la chaîne renvoyée ne commence ni ne // termine par '/'. - public function get() { - return '/'.join($this->segments, '/'); + public function get($slash_debut = false) { + return ($slash_debut ? '/' : '') . join($this->segments, '/'); } - public function get_url() { + public function get_url($fin = "") { // Config::get("url_base") DOIT se terminer par '/', tel que spécifié // dans config.php. - return Config::get("url_base") . $this->get(); + return Config::get("url_base") . $this->get() . '/' . $fin; } public function get_fs_stockage() { diff --git a/__cms__/code/cms/cms.php b/__cms__/code/cms/cms.php index e5132b4..e7935aa 100644 --- a/__cms__/code/cms/cms.php +++ b/__cms__/code/cms/cms.php @@ -28,12 +28,7 @@ class CMS { $action = $paramètres["action"]; $ret = Modules::action($chemin, $action, $paramètres); - // TODO - // if ($ret est une page) { - echo Squelette::enrober($ret); - // } else if ($ret est un redirect) { - // } else if ($ret est un raw) { - // } + $ret->envoyer(); } } diff --git a/__cms__/code/cms/include.php b/__cms__/code/cms/include.php index fd8da2a..308cb71 100644 --- a/__cms__/code/cms/include.php +++ b/__cms__/code/cms/include.php @@ -2,5 +2,6 @@ require_once(dirname(__FILE__) . "/configuration.php"); require_once(dirname(__FILE__) . "/util.php"); +require_once(dirname(__FILE__) . "/page.php"); ?> \ No newline at end of file diff --git a/__cms__/code/cms/page.php b/__cms__/code/cms/page.php new file mode 100644 index 0000000..ca3c506 --- /dev/null +++ b/__cms__/code/cms/page.php @@ -0,0 +1,53 @@ +set_page($a, $b); + } else if ($type == "sendfile") { + $this->set_sendfile($a, $b); + } else if ($type == "redirect") { + $this->set_redirect($a, $b); + } + } + + public function set_page($contenu, $titre) { + $this->contenu = $contenu; + $this->titre = $titre; + $this->type = "page"; + } + + public function set_sendfile($chemin, $prop) { + $this->sendfile_chemin = $chemin; + $this->sendfile_prop = $prop; + $this->type = "sendfile"; + } + + public function set_redirect($destination, $params = "") { + if (!is_string($destination)) $destination = $destination->get_url(); + $this->redirect_destination = $destination . $params; + $this->type = "redirect"; + } + + public function envoyer() { + // Yeeeeeeeeeeeeeeeeeeeeeeha ! Et on envoie ! + if ($this->type == "page") { + Squelette::enrober($this); + } else if ($this->type == "sendfile") { + Stockage::get_prop_sendfile($this->sendfile_chemin, $this->sendfile_prop); + } else if ($this->type == "redirect") { + echo "TODO : Redirection vers redirect_destination . "\">" + . $this->redirect_destination . ""; + } + } +} + +?> \ No newline at end of file diff --git a/__cms__/code/modules/admin/couleurs.php b/__cms__/code/modules/admin/couleurs.php index 8cb5f3e..e049217 100644 --- a/__cms__/code/modules/admin/couleurs.php +++ b/__cms__/code/modules/admin/couleurs.php @@ -3,7 +3,7 @@ class AdminCouleurs { public static function action($chemin, $action, $paramètres) { if ($action == "anuler") { - return redirect($chemin); + return new Page($chemin, '', "redirect"); } else { if (isset($paramètres["Couleur_A"])) { // Stocker couleur A diff --git a/__cms__/code/modules/admin/permissions.php b/__cms__/code/modules/admin/permissions.php index ee96b92..f695c6b 100644 --- a/__cms__/code/modules/admin/permissions.php +++ b/__cms__/code/modules/admin/permissions.php @@ -4,7 +4,7 @@ class AdminPermissions { function action($chemin, $action, $paramètres) { $singleton = new Chemin("/admin/permissions/"); if ($action == "anuler") { - return redirect($chemin); + return new Page($chemin, '', "redirect"); } else { if (isset($paramètres["regles"])) { Stockage::set_prop($singleton, "regles", $paramètres["regles"]); diff --git a/__cms__/code/modules/admin/utilisateurs.php b/__cms__/code/modules/admin/utilisateurs.php index c3bc362..6c400d3 100644 --- a/__cms__/code/modules/admin/utilisateurs.php +++ b/__cms__/code/modules/admin/utilisateurs.php @@ -4,7 +4,7 @@ class AdminUtilisateurs { public static function action($chemin, $action, $paramètres) { $singleton = new Chemin("/admin/utilisateurs/"); if ($action == "anuler") { - return redirect($chemin); + return new Page($chemin, '', "redirect"); // TODO ... // Solution A (propre) : diff --git a/__cms__/code/modules/forum/forum-index.php b/__cms__/code/modules/forum/forum-index.php index 775d521..517a90f 100644 --- a/__cms__/code/modules/forum/forum-index.php +++ b/__cms__/code/modules/forum/forum-index.php @@ -3,13 +3,13 @@ class ForumIndex { public static function action($chemin, $action, $paramètres) { if ($action == "anuler") { - return redirect($chemin); + return new Page($chemin, '', "redirect"); } else if ($action == "nouvelle_page") { // TODO : faut-il demander à avoir directement le nom du nouveau sujet ? // TODO : quel est le propriétaire du nouveau sujet ? $np = Stockage::nouvelle_page($chemin, "Nouveau sujet", "forum-sujet"); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); - return redirect($np); + return new Page($np, '', "redirect"); } else { if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); diff --git a/__cms__/code/modules/forum/forum-message.php b/__cms__/code/modules/forum/forum-message.php index 72bf39b..fa29b71 100644 --- a/__cms__/code/modules/forum/forum-message.php +++ b/__cms__/code/modules/forum/forum-message.php @@ -2,10 +2,10 @@ function action($chemin, $action, $paramètres) { if ($action == "anuler") { - return redirect($chemin); + return new Page($chemin, '', "redirect"); } else if ($action == "supprimer") { Stockage::supprimer($chemin); - return redirect($chemin->parent()); + return new Page($chemin->parent(), '', "redirect"); } else { if (isset($paramètres["message"])) { Stockage::set_prop($chemin, "message", $paramètres["message"]); diff --git a/__cms__/code/modules/forum/forum-sujet.php b/__cms__/code/modules/forum/forum-sujet.php index ceeb5fe..87b0d0b 100644 --- a/__cms__/code/modules/forum/forum-sujet.php +++ b/__cms__/code/modules/forum/forum-sujet.php @@ -3,7 +3,7 @@ class ForumSujet { public static function action($chemin, $action, $paramètres) { if ($action == "anuler") { - return redirect($chemin); + return new Page($chemin, '', "redirect"); } else if ($action == "nouvelle_page") { // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement $numéro_message = 1 + Stockage::get_prop($chemin, "dernier_numero"); @@ -11,15 +11,15 @@ class ForumSujet { $np = Stockage::nouvelle_page($chemin, "" . $numéro_message, "forum-message"); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); - return redirect($chemin, "#message" . $numéro_message); + return new Page($chemin, "#message" . $numéro_message, "redirect"); } else if ($action == "supprimer") { Stockage::supprimer($chemin); - return redirect($chemin->parent()); + return new Page($chemin->parent(), '', "redirect"); } else { if (isset($paramètres["titre"])) { Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); - // TODO : peut-être redirect($chemin) ? + // TODO : peut-être new Page($chemin, '', "redirect") ? } if (isset($paramètres["vue"])) { diff --git a/__cms__/code/modules/galerie/galerie-evenement.php b/__cms__/code/modules/galerie/galerie-evenement.php index 576d526..ab168e9 100644 --- a/__cms__/code/modules/galerie/galerie-evenement.php +++ b/__cms__/code/modules/galerie/galerie-evenement.php @@ -3,28 +3,28 @@ class GalerieÉvènement { public static function action($chemin, $action, $paramètres) { if ($action == "anuler") { - return redirect($chemin); + return new Page($chemin, '', "redirect"); } else if ($action == "nouvelle_page") { $np = Stockage::nouvelle_page($chemin, "Nouvelle photo", "galerie-photo"); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); - return redirect($np); + return new Page($np, '', "redirect"); } else if ($action == "supprimer") { Stockage::supprimer($chemin); - return redirect($chemin->parent()); + return new Page($chemin->parent(), '', "redirect"); } else { if (isset($paramètres["titre"])) { Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); - // TODO : peut-être redirect($chemin) ? + // TODO : peut-être new Page($chemin, '', "redirect") ? } if (isset($paramètres["description"])) { Stockage::set_prop($chemin, "description", $paramètres["description"]); } if (isset($paramètres["vue"])) { - self::vue($chemin, $paramètres["vue"]); + return self::vue($chemin, $paramètres["vue"]); } else { - self::vue($chemin); + return self::vue($chemin); } } } @@ -53,7 +53,8 @@ class GalerieÉvènement { } $ret .= '