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 .= ''; } else if ($vue == "miniature") { @@ -62,7 +63,7 @@ class GalerieÉvènement { $enfants = Stockage::liste_enfants($chemin); if (isset($enfants[0])) $ret = Modules::vue($enfants[0], 'miniature')->contenu; } - return Modules::page($ret, Stockage::get_prop($chemin, "titre")); + return new Page($ret, Stockage::get_prop($chemin, "titre")); } } diff --git a/__cms__/code/modules/galerie/galerie-index.php b/__cms__/code/modules/galerie/galerie-index.php index 749cb36..d236e50 100644 --- a/__cms__/code/modules/galerie/galerie-index.php +++ b/__cms__/code/modules/galerie/galerie-index.php @@ -3,19 +3,19 @@ class GalerieIndex { 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 période", "galerie-periode"); 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"]); @@ -59,7 +59,7 @@ class GalerieIndex { } $ret .= ''; } - return Modules::page($ret, Stockage::get_prop($chemin, "titre")); + return new Page($ret, Stockage::get_prop($chemin, "titre")); } } diff --git a/__cms__/code/modules/galerie/galerie-periode.php b/__cms__/code/modules/galerie/galerie-periode.php index e393f4a..2f264ac 100644 --- a/__cms__/code/modules/galerie/galerie-periode.php +++ b/__cms__/code/modules/galerie/galerie-periode.php @@ -3,28 +3,28 @@ class GaleriePériode { 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, "Nouvel évènement", "galerie-periode"); 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 GaleriePériode { } $ret .= ''; } else if ($vue == "miniature") { @@ -62,7 +63,7 @@ class GaleriePériode { $enfants = Stockage::liste_enfants($chemin); if (isset($enfants[0])) $ret = Modules::vue($enfants[0], 'miniature')->contenu; } - return Modules::page($ret, Stockage::get_prop($chemin, "titre")); + return new Page($ret, Stockage::get_prop($chemin, "titre")); } } diff --git a/__cms__/code/modules/galerie/galerie-photo.php b/__cms__/code/modules/galerie/galerie-photo.php index 7ddcdcb..77389e5 100644 --- a/__cms__/code/modules/galerie/galerie-photo.php +++ b/__cms__/code/modules/galerie/galerie-photo.php @@ -3,10 +3,10 @@ class GaleriePhoto { public static 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["fichier_image"])) { // redimensionner l'image avec gd, stocker la miniature dans @@ -18,16 +18,16 @@ class GaleriePhoto { /* 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); } } } @@ -45,15 +45,15 @@ class GaleriePhoto { $ret .= ''; $ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "message")); } - return Modules::page($ret, "Photo"); + return new Page($ret, Stockage::get_prop($chemin, "titre")); } else if ($vue == "miniature") { $ret = ''; - return Modules::page($ret, "Photo"); + return new Page($ret, Stockage::get_prop($chemin, "titre")); } else if ($vue == "image") { - return Modules::raw(Stockage::get_prop_sendfile("image")); + return new Page($chemin, "image", "sendfile"); } else if ($vue == "image_mini") { - return Modules::raw(Stockage::get_prop_sendfile("image_mini")); + return new Page($chemin, "image_mini", "sendfile"); } } } diff --git a/__cms__/code/modules/modules.php b/__cms__/code/modules/modules.php index cb0f167..bdec6f9 100644 --- a/__cms__/code/modules/modules.php +++ b/__cms__/code/modules/modules.php @@ -33,10 +33,6 @@ class Modules { if ($module === false) return self::page(false, "Erreur"); return call_user_func(array($module["classe"], "vue"), $chemin, $vue); } - - public static function page($contenu, $titre) { - return (object)array("contenu" => $contenu, "titre" => $titre); - } } ?> \ No newline at end of file