commit 4ffa811cf05b7b5b1f11110c177720482bbd5a05
parent c8b2df3fc1f03f940f474eee401858f18d42a664
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Tue, 3 Aug 2010 07:36:18 +0200
Page .../galerie/ fonctionne (plus ou moins) + Bugs.
Je sais pas trop ce que je commit... Très fatigué.
Diffstat:
7 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/__cms__/code/chemin/chemin.php b/__cms__/code/chemin/chemin.php
@@ -7,9 +7,9 @@ define('CHEMIN_JOKER_SEGMENT', '*');
class Chemin {
// Si $chemin est un tableau, chaque segment doit vérifier les invariants de nettoyer_segment.
- public function __construct($chemin) {
+ public function __construct($chemin, $est_un_motif = false) {
if (! is_array($chemin)) {
- $this->segments = self::nettoyer_chemin($chemin);
+ $this->segments = self::nettoyer_chemin($chemin, $est_un_motif);
} else {
$this->segments = $chemin;
}
@@ -86,7 +86,7 @@ class Chemin {
}
- public static function nettoyer_chemin($chemin) {
+ public static function nettoyer_chemin($chemin, $est_un_motif = false) {
// SÉCURITÉ : $chemin nettoyé
// * Ne contient pas '\0'
// * Ne contient pas '../'
@@ -102,24 +102,33 @@ class Chemin {
$chemin = preg_replace("/\\/*$/", '', $chemin);
$segments = explode('/', $chemin);
- $segments = array_map(array("self", "nettoyer_segment"), $segments);
+ if ($est_un_motif) {
+ $segments = array_map(array("self", "nettoyer_segment_motif"), $segments);
+ } else {
+ $segments = array_map(array("self", "nettoyer_segment"), $segments);
+ }
return $segments;
}
- public static function nettoyer_segment($segment) {
+ public static function nettoyer_segment($segment, $est_un_motif = false) {
// SÉCURITÉ : $segment nettoyé :
// * /!\ Peut être vide /!\
+ // * Ne doit pas contenir '\0' (octet NULL).
// * Ne doit pas contenir '/' non plus, remplacer par '-'.
// * Ne doit pas contenir '*' non plus, remplacer par '-'.
// * Ne contient pas "__prop__", remplacer par "___prop___".
$segment = preg_replace("/\\0/", '', $segment); // TODO : vérifier si c'est bien ça ! (supprime _toutes_ les occurences ???)
- $segment = preg_replace("/\\//", '', $segment); // TODO : vérifier si c'est bien ça ! (supprime _toutes_ les occurences ???)
- $segment = preg_replace("/\\*/", '', $segment); // TODO : vérifier si c'est bien ça ! (supprime _toutes_ les occurences ???)
+ $segment = preg_replace("/\\//", '-', $segment); // TODO : vérifier si c'est bien ça ! (supprime _toutes_ les occurences ???)
+ if (!$est_un_motif) $segment = preg_replace("/\\*/", '-', $segment); // TODO : vérifier ...
$segment = preg_replace("/__prop__/", '___prop___', $segment); // TODO : vérifier si c'est bien ça ! (supprime _toutes_ les occurences ???)
return $segment;
}
+
+ public static function nettoyer_segment_motif($segment) {
+ return self::nettoyer_segment($segment, true);
+ }
}
?>
\ No newline at end of file
diff --git a/__cms__/code/modules/modules.php b/__cms__/code/modules/modules.php
@@ -15,7 +15,7 @@ class Modules {
public static function get_module($chemin) {
$type = Stockage::get_prop($chemin, "type");
- if ($type === false) return false;
+ if ($type === false || !isset(self::$liste_modules[$type])) return false;
return self::$liste_modules[$type];
}
diff --git a/__cms__/code/securite/permissions.php b/__cms__/code/securite/permissions.php
@@ -87,7 +87,7 @@ class Permissions {
return false;
}
$regles[] = array(
- "chemin" => new Chemin(self::unescape_element_regle($r[0])),
+ "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"),
diff --git a/__cms__/donnees/admin/permissions/__prop__regles b/__cms__/donnees/admin/permissions/__prop__regles
@@ -4,6 +4,4 @@
/forum/|nouvelle_page|Utilisateurs|oui|Les utilisateurs peuvent créer de nouveaux sujets de discussion dans le forum.
/forum/*|nouvelle_page|Utilisateurs|oui|Les utilisateurs peuvent créer des messages dans les sujets de discussion.
/forum/*/*|set_prop|Propriétaire|oui|L'auteur d'un message peut en définir le contenu (pas les autres, ce n'est pas un wiki).
-/galerie/**|get_prop|Utilisateurs|oui|Les utilisateurs peuvent consulter la galerie.
-/galerie/**|*|Anonymes|non|Mais le reste du monde ne peut pas voir la galerie (photos privées par ex.)
/**|get_prop|Anonymes|oui|Le reste du monde peut consulter le site.
\ No newline at end of file
diff --git a/__cms__/donnees/galerie/__prop__type b/__cms__/donnees/galerie/__prop__titre
diff --git a/__cms__/donnees/galerie/__prop__type b/__cms__/donnees/galerie/__prop__type
@@ -1 +1 @@
-Galerie
-\ No newline at end of file
+galerie-index
+\ No newline at end of file
diff --git a/galerie/index.php b/galerie/index.php
@@ -1,7 +1,7 @@
<?php
-require_once("../__cms__/cms.php");
+require_once("/home/js/github/2010-moteur-site-simple/__cms__/cms.php");
-CMS::affiche("/galerie", $_GET);
+CMS::page("/galerie/");
?>
\ No newline at end of file