commit c1f0dad937b0da40ed20bcff1b9a4c5d6da14fb0
parent 874f018bde0790c4caead7826be5279a0c1d6627
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Wed, 18 Aug 2010 20:56:46 +0200
Un peu plus de gestion d'erreurs...
Il faut vraiement que je m'occupe de toutes les erreurs possibles...
Diffstat:
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/__cms__/code/securite/erreur.php b/__cms__/code/securite/erreur.php
@@ -31,7 +31,12 @@ class Erreur {
return new self("lecture", $message);
}
- public function __construct($type, $message, $string = "[ debug : erreur de lecture ]") {
+ public static function écriture($message) {
+ return new self("écriture", $message);
+ }
+
+ public function __construct($type, $message, $string = null) {
+ if (is_null($string)) $string = "[ debug : erreur de " . $type . " ]";
$this->type = $type;
$this->message = $message;
$this->string = $string;
diff --git a/__cms__/code/stockage/stockage.php b/__cms__/code/stockage/stockage.php
@@ -11,7 +11,9 @@ class Stockage {
$enfant = $chemin->enfant($nom);
Système_fichiers::créer_dossier($enfant->get_fs_stockage());
self::set_prop($enfant, "type", $type);
- self::activer_réécriture($enfant);
+ $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;
diff --git a/__cms__/code/stockage/systeme-fichiers.php b/__cms__/code/stockage/systeme-fichiers.php
@@ -5,8 +5,9 @@
class Système_fichiers {
public static function créer_dossier($chemin_fs) {
$d = dirname($chemin_fs);
- if (!is_dir($d)) self::créer_dossier($d);
- if (!is_dir($chemin_fs)) mkdir($chemin_fs);
+ $r = true;
+ if (!is_dir($d)) $r = self::créer_dossier($d);
+ if (!is_dir($chemin_fs)) return $r && mkdir($chemin_fs);
}
/*public static function créer_fichier($chemin_fs) {
@@ -33,7 +34,9 @@ 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);
}