From bc15e4caada8f4b7d7462e7a963d1c810256c2f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Sun, 1 Aug 2010 21:07:26 +0200 Subject: [PATCH] =?UTF-8?q?Concat=C3=A9nation=20"propre"=20de=20chemins=20?= =?UTF-8?q?pour=20Stockage=20et=20config.php.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __cms__/chemin/chemin.php | 12 +++++++++++- __cms__/config.php | 21 ++++++++++++++++++--- __cms__/stockage/stockage.php | 16 ++++++++-------- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/__cms__/chemin/chemin.php b/__cms__/chemin/chemin.php index 67b1b74..79138a8 100644 --- a/__cms__/chemin/chemin.php +++ b/__cms__/chemin/chemin.php @@ -47,7 +47,17 @@ class Chemin { } public function get_url() { - return $config_url_base . '/' . $this->get(); + // $config_url_base DOIT se terminer par '/', tel que spécifié + // dans config.php. + return $config_url_base . $this->get(); + } + + public function get_fs_stockage() { + return Path::combine($config_chemin_base_stockage, $this->get()); + } + + public function get_fs_public() { + return Path::combine($config_chemin_base_public, $this->get()); } public function enfant($nom) { diff --git a/__cms__/config.php b/__cms__/config.php index b68d749..c1f2b59 100644 --- a/__cms__/config.php +++ b/__cms__/config.php @@ -1,9 +1,24 @@ diff --git a/__cms__/stockage/stockage.php b/__cms__/stockage/stockage.php index c1d1ef0..4a0569a 100644 --- a/__cms__/stockage/stockage.php +++ b/__cms__/stockage/stockage.php @@ -20,7 +20,7 @@ class Stockage { public function set_prop($chemin, $prop, $valeur) { if (vérifier_permission($chemin, "set_prop")) { - return SystemeFichiers::écrire($config_chemin_base_stockage . '/' . $chemin . '/' . $prop, $valeur) + return SystemeFichiers::écrire(Path::combine($chemin->get_fs_stockage(), $prop), $valeur) } else { return false; } @@ -29,7 +29,7 @@ class Stockage { // Stocke le contenu de $fichier dans $prop, et supprime $fichier. public function set_prop_fichier($chemin, $prop, $fichier) { if (vérifier_permission($chemin, "set_prop")) { - return SystemeFichiers::déplacer($fichier, $config_chemin_base_stockage . '/' . $chemin . '/' . $prop) + return SystemeFichiers::déplacer($fichier, Path::combine($chemin->get_fs_stockage(), $prop)); } else { return false; } @@ -38,7 +38,7 @@ class Stockage { // Comme pour set_prop_fichier, mais pour un fichier reçu (uploadé). public function set_prop_fichier_reçu($chemin, $prop, $fichier) { if (vérifier_permission($chemin, "set_prop")) { - return SystemeFichiers::déplacer_fichier_téléchargé($fichier, $config_chemin_base_stockage . '/' . $chemin . '/' . $prop) + return SystemeFichiers::déplacer_fichier_téléchargé($fichier, Path::combine($chemin->get_fs_stockage(), $prop)); } else { return false; } @@ -49,7 +49,7 @@ class Stockage { // dépendances get_regles() et get_groupe() de faire des get_prop // même si l'utilisateur courant n'en a pas le droit. if ($forcer_permissions || vérifier_permission($chemin, "get_prop")) { - return SystemeFichiers::lire($config_chemin_base_stockage . '/' . $chemin . '/' . $prop); + return SystemeFichiers::lire(Path::combine($chemin->get_fs_stockage(), $prop)); } else { return "[Accès interdit]"; } @@ -59,7 +59,7 @@ class Stockage { // Envoie tout le conctenu de $prop sur le réseau. // Équivalent à appeller sendfile sur le fichier qui contient $prop. if (vérifier_permission($chemin, "get_prop")) { - return SystemeFichiers::envoyer_fichier_directement($config_chemin_base_stockage . '/' . $chemin . '/' . $prop); + return SystemeFichiers::envoyer_fichier_directement(Path::combine($chemin->get_fs_stockage(), $prop)); } else { return false; } @@ -71,7 +71,7 @@ class Stockage { // code. public function supprimer($chemin, $récursif) { if (vérifier_permission($chemin, "supprimer")) { - return SystèmeFichier::supprimer($config_chemin_base_stockage . '/' . $chemin, $récursif); + return SystèmeFichier::supprimer($chemin->get_fs_stockage(), $récursif); } else { return false; } @@ -82,7 +82,7 @@ class Stockage { // get_prop ? ou une nouvelle (?) : liste_enfants ? $enfants = Array(); foreach (SystemeFichiers::liste_fichiers() as $k => $v) { - if (strpos($v, "__prop__") !== 0 && is_dir($config_chemin_base_stockage . '/' . $chemin->enfant($v))) && $v != "." && $v != "..") { + if (strpos($v, "__prop__") !== 0 && is_dir($chemin->enfant($v)->get_fs_stockage()) && $v != "." && $v != "..") { $enfants[] = $chemin->enfant($v); } } @@ -95,7 +95,7 @@ class Stockage { } if (vérifier_permission($chemin->parent(), "nouvelle_page") && vérifier_permission($chemin, "supprimer")) { - return SystemeFichiers::déplacer($config_chemin_base_stockage . '/' . $chemin, $config_chemin_base_stockage . '/' . $chemin->renomer($nouveau_nom)); + return SystemeFichiers::déplacer($chemin->get_fs_stockage(), $chemin->renomer($nouveau_nom)->get_fs_stockage()); } else { return false; }