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