Subversion Repositories Applications.framework

Rev

Rev 220 | Rev 273 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 220 Rev 240
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe fournissant des méthodes statiques de manipulation des fichiers.
4
 * Classe fournissant des méthodes statiques de manipulation des fichiers.
5
 *
5
 *
6
 * @category	PHP 5.2
6
 * @category	PHP 5.2
7
 * @package	Utilitaire
7
 * @package	Utilitaire
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright	Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
9
 * @copyright	Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
10
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
10
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
12
 * @version	SVN : $Id$
12
 * @version	$Id$
13
 * @link		/doc/framework/
13
 * @link		/doc/framework/
14
 */
14
 */
15
class Fichier {
15
class Fichier {
16
	/** 
16
	/** 
17
	 * Créer et stocke du contenu dans un fichier.
17
	 * Créer et stocke du contenu dans un fichier.
18
	 * 
18
	 * 
19
	 * @param string le chemin et le nom du fichier.
19
	 * @param string le chemin et le nom du fichier.
20
	 * @param string le contenu à stocker dans le fichier.
20
	 * @param string le contenu à stocker dans le fichier.
21
	 * @return string true en cas de succès sinon false.
21
	 * @return string true en cas de succès sinon false.
22
	 */
22
	 */
23
	public static function creerFichier($fichier, $contenu) {
23
	public static function creerFichier($fichier, $contenu) {
24
		$erreur = null;
24
		$erreur = null;
25
		
25
		
26
		// Début de l'écriture du fichier
26
		// Début de l'écriture du fichier
27
		if ($resource = fopen($fichier, 'w')) {
27
		if ($resource = fopen($fichier, 'w')) {
28
			if (!fwrite($resource, $contenu)) {
28
			if (!fwrite($resource, $contenu)) {
29
				if (!fclose($resource)) {
29
				if (!fclose($resource)) {
30
					$erreur = "Le fichier '$fichier' n'a pas pu être fermé.";
30
					$erreur = "Le fichier '$fichier' n'a pas pu être fermé.";
31
				}
31
				}
32
			} else {
32
			} else {
33
				$erreur = "Le contenu texte n'a pas pu être écrit dans le fichier '$fichier'.";
33
				$erreur = "Le contenu texte n'a pas pu être écrit dans le fichier '$fichier'.";
34
			}
34
			}
35
		} else {
35
		} else {
36
			$erreur = "Le fichier '$fichier' n'a pas pu être ouvert.";
36
			$erreur = "Le fichier '$fichier' n'a pas pu être ouvert.";
37
		}
37
		}
38
 
38
 
39
		// Gestion des erreurs et du retour
39
		// Gestion des erreurs et du retour
40
		if (is_null($erreur)) {
40
		if (is_null($erreur)) {
41
			return true;
41
			return true;
42
		} else {
42
		} else {
43
			trigger_error($erreur, E_USER_WARNING);
43
			trigger_error($erreur, E_USER_WARNING);
44
			return false;
44
			return false;
45
		}
45
		}
46
	}
46
	}
47
	
47
	
48
	/** 
48
	/** 
49
	 * Créer et stocke du contenu dans un fichier compressé en Gzip.
49
	 * Créer et stocke du contenu dans un fichier compressé en Gzip.
50
	 * 
50
	 * 
51
	 * @param string le chemin et le nom du fichier.
51
	 * @param string le chemin et le nom du fichier.
52
	 * @param string le contenu à stocker dans le fichier.
52
	 * @param string le contenu à stocker dans le fichier.
53
	 * @return string true en cas de succès sinon false.
53
	 * @return string true en cas de succès sinon false.
54
	 */
54
	 */
55
	public static function creerFichierGzip($fichier, $contenu) {
55
	public static function creerFichierGzip($fichier, $contenu) {
56
		$erreur = null;
56
		$erreur = null;
57
		
57
		
58
		// Ajout de l'extension gz
58
		// Ajout de l'extension gz
59
		if (substr($fichier, -3) != '.gz') {
59
		if (substr($fichier, -3) != '.gz') {
60
			$fichier = $fichier.'.gz';
60
			$fichier = $fichier.'.gz';
61
		}
61
		}
62
		
62
		
63
		// Début de l'écriture du fichier compressé
63
		// Début de l'écriture du fichier compressé
64
		if ($resource = gzopen($fichier, 'w9')) {
64
		if ($resource = gzopen($fichier, 'w9')) {
65
			if (gzwrite($resource, $contenu)) {
65
			if (gzwrite($resource, $contenu)) {
66
				if (!gzclose($resource)) {
66
				if (!gzclose($resource)) {
67
					$erreur = "Le fichier compressé '$fichier' n'a pas pu être fermé.";
67
					$erreur = "Le fichier compressé '$fichier' n'a pas pu être fermé.";
68
				}
68
				}
69
			} else {
69
			} else {
70
				$erreur = "Le contenu texte n'a pas pu être écrit dans le fichier compressé '$fichier'.";
70
				$erreur = "Le contenu texte n'a pas pu être écrit dans le fichier compressé '$fichier'.";
71
			}
71
			}
72
		} else {
72
		} else {
73
			$erreur = "Le fichier compressé '$fichier' n'a pas pu être ouvert.";
73
			$erreur = "Le fichier compressé '$fichier' n'a pas pu être ouvert.";
74
		}
74
		}
75
		
75
		
76
		// Gestion des erreurs et du retour
76
		// Gestion des erreurs et du retour
77
		if (is_null($erreur)) {
77
		if (is_null($erreur)) {
78
			return true;
78
			return true;
79
		} else {
79
		} else {
80
			trigger_error($erreur, E_USER_WARNING);
80
			trigger_error($erreur, E_USER_WARNING);
81
			return false;
81
			return false;
82
		}
82
		}
83
	}
83
	}
84
	
84
	
85
	/**
85
	/**
86
	 * Supprime récursivement un dossier et tout son contenu.
86
	 * Supprime récursivement un dossier et tout son contenu.
87
	 * 
87
	 * 
88
	 * @param string $dossier le chemin vers le dossier à supprimer.
88
	 * @param string $dossier le chemin vers le dossier à supprimer.
89
	 * @return void
89
	 * @return void
90
	 */
90
	 */
91
	public static function supprimerDossier($dossier) {
91
	public static function supprimerDossier($dossier) {
92
		if (is_dir($dossier)) {
92
		if (is_dir($dossier)) {
93
			$objets = scandir($dossier);
93
			$objets = scandir($dossier);
94
			foreach ($objets as $objet) {
94
			foreach ($objets as $objet) {
95
				if ($objet != '.' && $objet != '..') {
95
				if ($objet != '.' && $objet != '..') {
96
					$chemin = $dossier.'/'.$objet;
96
					$chemin = $dossier.'/'.$objet;
97
					if (filetype($chemin) == 'dir') {
97
					if (filetype($chemin) == 'dir') {
98
						$this->supprimerDossier($chemin);
98
						$this->supprimerDossier($chemin);
99
					} else {
99
					} else {
100
						unlink($chemin);
100
						unlink($chemin);
101
					}
101
					}
102
				}
102
				}
103
			}
103
			}
104
			reset($objets);
104
			reset($objets);
105
			rmdir($dossier);
105
			rmdir($dossier);
106
		}
106
		}
107
	}
107
	}
108
	
108
	
109
	/**
109
	/**
110
	 * Convertion d'un nombre d'octet en kB, MB, GB.
110
	 * Convertion d'un nombre d'octet en kB, MB, GB.
111
	 * @link http://forum.webmaster-rank.info/developpement-site/code-taille-memoire-d-une-variable-en-php-t1344.html
111
	 * @link http://forum.webmaster-rank.info/developpement-site/code-taille-memoire-d-une-variable-en-php-t1344.html
112
	 * @param integer $taille la taille en octet à convertir
112
	 * @param integer $taille la taille en octet à convertir
113
	 * 
113
	 * 
114
	 * @return string la chaine représentant la taille en octets.
114
	 * @return string la chaine représentant la taille en octets.
115
	 */
115
	 */
116
	public static function convertirTaille($taille) {
116
	public static function convertirTaille($taille) {
117
    	$unite = array('B', 'kB', 'MB', 'GB');
117
    	$unite = array('B', 'kB', 'MB', 'GB');
118
    	return @round($taille / pow(1024, ($i = floor(log($taille,1024)))), 2).' '.$unite[$i];
118
    	return @round($taille / pow(1024, ($i = floor(log($taille,1024)))), 2).' '.$unite[$i];
119
	}
119
	}
120
}
120
}
121
?>
121
?>