Subversion Repositories Applications.framework

Rev

Rev 240 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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