diff --git a/__cms__/TODO b/__cms__/TODO index 3622811..34a9c99 100644 --- a/__cms__/TODO +++ b/__cms__/TODO @@ -4,4 +4,5 @@ Les actions ne devraient être que des POST... ça pose problème sur certains l Les titres devraient renomer _+_ set_prop (sachant que le renomage peut déteriorer le texte du titre (sécurité sur le chemin)). Gérer ces saletées de magic quotes dans les biscuits aux brisures de chocolat (cookies). Mettre le css dans une page (dossier) qui s'appelle "style.css", comme ça ça donne l'impression que c'est un fichier (même si en réalité - c'est le index.php de cette page qui le génère). \ No newline at end of file + c'est le index.php de cette page qui le génère). +Si on ne peut lire la propriété __prop_type, afficher un "Access Denied" au lieu de dire qu'on n'a pas pu lire la propriété. \ No newline at end of file diff --git a/__cms__/code/modules/galerie/galerie-index.php b/__cms__/code/modules/galerie/galerie-index.php index 934fc11..069da6a 100644 --- a/__cms__/code/modules/galerie/galerie-index.php +++ b/__cms__/code/modules/galerie/galerie-index.php @@ -7,6 +7,8 @@ class GalerieIndex { } else if ($action == "nouvelle_page") { $np = Stockage::nouvelle_page($chemin, "Nouvelle période", "galerie-periode"); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); + Stockage::set_prop($np, "titre", "Nouvelle période"); + Stockage::set_prop($np, "description", ""); return new Page($np, '', "redirect"); } else { if (isset($paramètres["titre"])) { diff --git a/__cms__/code/modules/galerie/galerie-periode.php b/__cms__/code/modules/galerie/galerie-periode.php index c050a1c..5f66e94 100644 --- a/__cms__/code/modules/galerie/galerie-periode.php +++ b/__cms__/code/modules/galerie/galerie-periode.php @@ -9,7 +9,7 @@ class GaleriePériode { Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); return new Page($np, '', "redirect"); } else if ($action == "supprimer") { - Stockage::supprimer($chemin); + Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif return new Page($chemin->parent(), '', "redirect"); } else { if (isset($paramètres["titre"])) { diff --git a/__cms__/code/stockage/stockage.php b/__cms__/code/stockage/stockage.php index 84a4243..124e584 100644 --- a/__cms__/code/stockage/stockage.php +++ b/__cms__/code/stockage/stockage.php @@ -13,7 +13,6 @@ class Stockage { self::set_prop($enfant, "type", $type); $e = self::activer_réécriture($enfant); if (Erreur::is_erreur($e)) return Erreur::fatale("Erreur lors de la mise en place de la redirection pour " . $enfant->get() . ".", $e); - exit; return $enfant; } else { return false; @@ -96,7 +95,7 @@ class Stockage { public static function supprimer($chemin, $récursif) { if (Permissions::vérifier_permission($chemin, "supprimer")) { // TODO : désactiver_réécriture($chemin) récursivement - return SystèmeFichier::supprimer($chemin->get_fs_stockage(), $récursif); + return Système_fichiers::supprimer($chemin->get_fs_stockage(), $récursif); } else { return false; } diff --git a/__cms__/code/stockage/systeme-fichiers.php b/__cms__/code/stockage/systeme-fichiers.php index 90d4dfb..0910754 100644 --- a/__cms__/code/stockage/systeme-fichiers.php +++ b/__cms__/code/stockage/systeme-fichiers.php @@ -15,16 +15,21 @@ class Système_fichiers { }*/ public static function supprimer($chemin_fs, $récursif) { + var_dump($chemin_fs); if (is_link($chemin_fs) || is_file($chemin_fs)) { unlink($chemin_fs); - } else if ($récursif) { + } else if ($récursif && is_dir($chemin_fs)) { $d = dir($chemin_fs); - while (false !== ($entrée = $d->read())) { + while (false !== ($entrée = $d->read())) { + if ($entrée == '.') continue; // TODO : gérer correctement les boucles dans le système de fichiers (liens durs, ...) + if ($entrée == '..') continue; self::supprimer($chemin_fs . '/' . $entrée, $récursif); } $d->close(); rmdir($chemin_fs); - } + } else if (is_dir($chemin_fs)) { + rmdir($chemin_fs); + } } public static function lire($chemin_fs) { @@ -34,7 +39,7 @@ class Système_fichiers { public static function écrire($chemin_fs, $données) { $d = dirname($chemin_fs); - if (!is_dir($d) || self::créer_dossier($d)) { + if (!is_dir($d) && !self::créer_dossier($d)) { return Erreur::écriture("Impossible d'écrire dans $chemin_fs : le dossier $d n'existe pas"); } return file_put_contents($chemin_fs, $données);