www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 6ad76de6128916457f845c5ba9e822e34512336f
parent 925d551e0ccccea75b4acdc1eb6269f67cc4532a
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Sun,  1 Aug 2010 19:59:33 +0200

Suppression de l'ancienne structure du code.

Diffstat:
D__cms__/controleur/editeur.php | 20--------------------
D__cms__/controleur/page.php | 170-------------------------------------------------------------------------------
D__cms__/notes | 44--------------------------------------------
D__cms__/types/forum-message.php | 0
D__cms__/types/forum-sujet.php | 0
D__cms__/types/forum.php | 0
D__cms__/types/galerie-evenement.php | 32--------------------------------
D__cms__/types/galerie-periode.php | 31-------------------------------
D__cms__/types/galerie-photo.php | 24------------------------
D__cms__/types/galerie.php | 27---------------------------
D__cms__/types/liste-personnes-personne.php | 0
D__cms__/types/liste-personnes.php | 0
D__cms__/types/nouveautes-article.php | 0
D__cms__/types/nouveautes.php | 0
D__cms__/util.php | 40----------------------------------------
15 files changed, 0 insertions(+), 388 deletions(-)

diff --git a/__cms__/controleur/editeur.php b/__cms__/controleur/editeur.php @@ -1,19 +0,0 @@ -<?php - -formulaire_edition_article() { -} - -formulaire_edition_lien() { -} - -formulaire_edition_lien_interne() { -} - -formulaire_edition_lien_externe() { - return '<input type="text" value="http://www.site.com/page.html"/>' -} - -formulaire_edition_texte() { -} - -?> -\ No newline at end of file diff --git a/__cms__/controleur/page.php b/__cms__/controleur/page.php @@ -1,169 +0,0 @@ -<?php - -require_once("util.php"); -require_once("config.php"); -require_once("cms.php"); -require_once("squelette.php"); -require_once("controleur/chemin_page.php"); - -require_once("types/galerie.php"); -require_once("types/galerie-periode.php"); -require_once("types/galerie-evenement.php"); -require_once("types/galerie-photo.php"); - -// Protocole : http://site/actualités/?nouveau=Le%20titre - -// Structure des répertoires -// article/__prop__article -// /__prop__type -// /__prop__photo -// /__prop__date -// /__prop__lieu -// /article_1 // Sous article -// /article_2 // Sous article - -class Page { - public $type_enfants = "Galerie"; - - private static $types = Array(); - - public static function ajouterType($nom, $classe) { - self::$types[$nom] = $classe; - } - - - /* ****** Début du hack ****** */ - // Lorsqu'on instancie un objet Page, il faudrait en fait instancier un objet Galerie ou Forum ou ... - // selon le type de la page. Il faut donc lors de l'instanciation modifier la classe de $this. - // - // C'est malheureusement impossible. Avec classkit_method_copy, il serait possible de recopier les - // méthodes de Galerie ou Forum ou ... par-dessus les méthodes de $this. Mais classkit_method_copy est - // expérimentale. - // - // Une autre approche consisterait à modifier toutes les méthodes de Page pour qu'elles appellent - // d'elles-même leur alter ego dans Galerie ou Forum. Mais ces méthodes (dans Galerie) ne pourraient - // pas se servir de la méthode parente (dans Page), donc pas d'héritage complet. - // - // La solution qui a été retenue consiste à appeller la fonction statique "Page::_new()" au lieu de - // "new Page()". Page::_new() détecte le type de la page et instancie la bonne classe. - // Cependant, pour accéder à __prop__type, il faudrait pouvoir utiliser Page->get_prop(), qui est non - // statique alors que Page::_new() est statique. On instancie donc un objet Page, on utilise - // Page->get_prop(), puis on instancie la bonne sous-classe de Page (Galerie, Forum, ...). - - public static function _new($chemin) { - $page = new Page($chemin); - $type = $page->get_prop("type"); - if (array_key_exists($type, self::$types)) { - return new self::$types[$type]($chemin); - } else { - return new self($chemin); - } - } - /* ****** Fin du hack ****** */ - - - public function __construct($chemin) { - $this->chemin = new CheminPage($chemin); - } - - // Renvoie le chemin de la page dans le système de fichiers - private function chemin_fs() { - global $config_chemin_modele; - return concaténer_chemin_fs($config_chemin_modele, $this->chemin->get()); - } - - public function liste_enfants() { - $scandir = scandir($this->chemin_fs()); - if ($scandir === false) { error_log("Impossible d'accéder à la liste des pages enfant de " . $this->chemin->get()); } - - $enfants = Array(); - foreach ($scandir as $k => $v) { - if (strpos($v, "__prop__") !== 0 && is_dir(concaténer_chemin_fs($this->chemin_fs(), $v)) && $v != "." && $v != "..") { - $enfants[] = $this->enfant($v); - } - } - return $enfants; - } - - public function enfant($nom) { - return self::_new($this->chemin->enfant($nom)); - } - - public function parent() { - return self::_new($this->chemin->parent()); - } - - public function nouvel_enfant($nom = "") { - // TODO : Si nom est null, utiliser "Article" + numéro - - if ($nom == "") $nom = "Nouvel article"; - - $futur_enfant = $this->enfant($nom); - $chemin_fs_futur_enfant = $futur_enfant->chemin_fs(); - - if (! file_exists($chemin_fs_futur_enfant)) { - mkdir($chemin_fs_futur_enfant); - $futur_enfant->set_prop("type", $this->type_enfants); - } - - return Page::_new($futur_enfant->chemin->get()); - } - - public function supprimer($récursif) { - // Si récursif || il n'y a pas de sous-dossiers - // alors supprimer récursivement le dossier courant - // sinon renvoyer FAUX - if ($récursif || true) { - return true; - } else { - return false; - } - } - - private function chemin_fs_prop($nom_propriété) { - return concaténer_chemin_fs($this->chemin_fs(), "__prop__" . $nom_propriété); - } - - public function get_prop($nom_propriété) { - // lire le contenu du fichier prop_nom_propriété - // renvoie toujours une chaîne (vide si pas de propriété ou erreur). - $fichier = $this->chemin_fs_prop($nom_propriété); - if (file_exists($fichier)) { - $a = file_get_contents($fichier); - return ($a ? $a : ''); - } else { - return ""; - } - } - - public function set_prop($nom_propriété, $valeur) { - // Écrire $valeur dans la propriété $nom_propriété. - $fichier = $this->chemin_fs_prop($nom_propriété); - file_put_contents($fichier, $valeur); - } - - // calculer l'url de cette page en fonction de son chemin et de l'url de base - public function url($fichier = "", $params = array()) { - global $config_url_base; - - $u = $config_url_base . $this->chemin->get() . '/' . $fichier; - - $sep = '?'; - foreach ($params as $k => $v) { - $u .= $sep . urlencode($k) . '=' . urlencode($v); - $sep = '&'; - } - - return $u; - } - - public function vue() { - return "Aucune vue pour «" . $this->chemin->get() . "» ."; - } - - public function affiche() { - echo Squelette::enrober($this, $this->vue()); - } -} - -?> -\ No newline at end of file diff --git a/__cms__/notes b/__cms__/notes @@ -1,44 +0,0 @@ -= MVC = - -Modèle : - structure : fichiers & dossiers - dans le dossier /contenu - articles: xml - vues des articles (édition, affichage, …) : php + html - dans le dossier /types - -Vue : - Vue affichage : - templates css - affichage d'un article (xslt : xml article -> xhtml fragment) - affichage des pages dans le "modèle" du site : (/modeles ?) /site.php (header + footer + barre latérale) - Vue édition ?? : - affichage de l'article avec sa vue "édition". - - Nécessite : affichage d'un autre article (<?php include(…); ?>) - -Contrôleur : - articles : editeur.php - structure : structure.php - - -= Sécurité = - -Les contrôleurs s'assurent pour chaque opération (lecture / écriture // listing / création) -que l'utilisateur a bien les droits requis. Il fait pour cela appel à la fonction suivante : - -auth.php: verif_auth(article, prop, action) - où action est "read, write, create, delete" - si prop est null, l'action est create ou delete, et ce sur tout l'article. - -la fonction auth.php: do_verif_auth(article, prop, action) effectue l'action ssi on a l'autorisation. - -La connexion se fait avec : - -auth.php: formulaire_connexion_mini() // mini-version en haut à droite ??? -auth.php: formulaire_connexion() -auth.php: connexion() // récupère les infos dans $POST -auth.php: formulaire_déconnexion() // lien "déconnexion" -auth.php: déconnexion() - -etc. diff --git a/__cms__/types/forum-message.php b/__cms__/types/forum-message.php diff --git a/__cms__/types/forum-sujet.php b/__cms__/types/forum-sujet.php diff --git a/__cms__/types/forum.php b/__cms__/types/forum.php diff --git a/__cms__/types/galerie-evenement.php b/__cms__/types/galerie-evenement.php @@ -1,32 +0,0 @@ -<?php - -require_once("controleur/page.php"); - -class GalerieEvenement extends Page { - public function vue($nom_vue = "normal") { - $ret = ''; - - if ($nom_vue == "miniature") { - $enfants = $this->liste_enfants(); - if ($enfants[0]) return $enfants[0]->vue('miniature'); - else return "Aucune<br/>photo"; - } - - $ret .= '<ul class="galerie evenement">'; - foreach ($this->liste_enfants() as $k) { - $ret .= '<li><a href="' . $k->url() . '">' . $k->vue('miniature') . '</a></li>'; - } - $ret .= '</ul>'; - - if ($nom_vue == "edition") { - $ret .= '<a href="' . $this->url('nouveau') . '">Nouvelle photo.</a>'; - $ret .= '<a href="' . $this->url('supprimer') . '">Supprmier cet évènement.</a>'; - } - - return $ret; - } -} - -Page::ajouterType("GalerieEvenement", "GalerieEvenement"); - -?> diff --git a/__cms__/types/galerie-periode.php b/__cms__/types/galerie-periode.php @@ -1,31 +0,0 @@ -<?php - -require_once("controleur/page.php"); - -class GaleriePeriode extends Page { - public function vue($nom_vue = "normal") { - $ret = ''; - - if ($nom_vue == "miniature") { - $enfants = $this->liste_enfants(); - return $enfants[0]->vue('miniature'); - } - - $ret .= '<ul class="galerie periode">'; - foreach ($this->liste_enfants() as $k) { - $ret .= '<li><a href="' . $k->url() . '">' . $k->vue('miniature') . '</a></li>'; - } - $ret .= '</ul>'; - - if ($nom_vue == "edition") { - $ret .= '<a href="' . $this->url('nouveau') . '">Nouvel évènement.</a>'; - $ret .= '<a href="' . $this->url('supprimer') . '">Supprmier cette période.</a>'; - } - - return $ret; - } -} - -Page::ajouterType("GaleriePeriode", "GaleriePeriode"); - -?> diff --git a/__cms__/types/galerie-photo.php b/__cms__/types/galerie-photo.php @@ -1,24 +0,0 @@ -<?php - -require_once("controleur/page.php"); - -class GaleriePhoto extends Page { - public function vue($nom_vue = "normal") { - if ($nom_vue == "miniature") { - return '<img src="' . $this->url($this->get_prop("image_mini")) . '"/>'; - } - - $ret = '<img src="' . $this->get_prop("image") . '"/>'; - - if ($nom_vue == "edition") { - $ret .= '<input type="file" value="' . . '" /><input type="button" value="Changer la photo">'; - $ret .= '<a href="' . $this->url('supprimer') . '">Supprmier cet évènement.</a>'; - } - - return $ret; - } -} - -Page::ajouterType("GaleriePhoto", "GaleriePhoto"); - -?> diff --git a/__cms__/types/galerie.php b/__cms__/types/galerie.php @@ -1,27 +0,0 @@ -<?php - -require_once("controleur/page.php"); - -class Galerie extends Page { - public $type_enfants = "GalerieEvenement"; - - public function vue($nom_vue = "normal") { - $ret = ''; - - $ret .= '<ul class="galerie principale">'; - foreach ($this->liste_enfants() as $k) { - $ret .= '<li><a href="' . $k->url() . '">' . $k->vue('miniature') . '</a></li>'; - } - $ret .= '</ul>'; - - if ($nom_vue == "edition") { - $ret .= '<a href="' . $this->url("", array("action" => "nouvel_enfant", "titre" => "Nouvelle période")) . '">Nouvelle période.</a>'; - } - - return $ret; - } -} - -Page::ajouterType("Galerie", "Galerie"); - -?> diff --git a/__cms__/types/liste-personnes-personne.php b/__cms__/types/liste-personnes-personne.php diff --git a/__cms__/types/liste-personnes.php b/__cms__/types/liste-personnes.php diff --git a/__cms__/types/nouveautes-article.php b/__cms__/types/nouveautes-article.php diff --git a/__cms__/types/nouveautes.php b/__cms__/types/nouveautes.php diff --git a/__cms__/util.php b/__cms__/util.php @@ -1,40 +0,0 @@ -<?php - -// Fonctions utilitaires. - -// Concatène deux chemins. -function concaténer_chemin_fs($p1, $p2) { - return $p1 . '/' . $p2; // FIXME : . '/' . n'est pas portable ! -} - -function split_uri($uri) { - $uri = urldecode($uri); - if (strpos($uri, 'https://') === 0) { - $split["protocole"] = 'https://'; - $uri = substr($uri, 8); - $split["hote"] = substr($uri, 0, strpos($uri,'/')); - $uri = substr($uri, strpos($uri,'/')); - } else if (strpos($uri, 'http://') === 0) { - $split["protocole"] = 'http://'; - $uri = substr($uri, 7); - $split["hote"] = substr($uri, 0, strpos($uri,'/')); - $uri = substr($uri, strpos($uri,'/')); - } else { - $split["protocole"] = ''; - $split["hote"] = ''; - } - - $question_pos = strpos($uri, '?'); - if ($question_pos === FALSE) { - $chemin = $uri; - $parametres = ''; - } else { - $chemin = substr($uri, 0, $question_pos); - $parametres = substr($uri, $question_pos); - } - - $split["chemin"] = explode('/', $chemin); - $split["parametres"] = explode('&', $parametres); - - return $split; -}