1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
15: class Fichier {
16: 17: 18: 19: 20: 21: 22:
23: public static function creerFichier($fichier, $contenu) {
24: $erreur = null;
25:
26:
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:
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: 50: 51: 52: 53: 54:
55: public static function creerFichierGzip($fichier, $contenu) {
56: $erreur = null;
57:
58:
59: if (substr($fichier, -3) != '.gz') {
60: $fichier = $fichier.'.gz';
61: }
62:
63:
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:
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: 87: 88: 89: 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: 111: 112: 113: 114: 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: 122: 123: 124: 125: 126: 127:
128: public static function getDossierTmp() {
129: $dossier_tmp = false;
130: foreach (array($_ENV, $_SERVER) as $environnement) {
131: foreach (array('TMPDIR', 'TEMP', 'TMP', 'windir', 'SystemRoot') as $cle) {
132: if (isset($environnement[$cle])) {
133: if (($cle == 'windir') or ($cle == 'SystemRoot')) {
134: $dossier = realpath($environnement[$cle] . '\\temp');
135: } else {
136: $dossier = realpath($environnement[$cle]);
137: }
138: if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
139: $dossier_tmp = $dossier;
140: break 2;
141: }
142: }
143: }
144: }
145:
146: if ( ! $dossier_tmp) {
147: $dossier_televersement_tmp = ini_get('upload_tmp_dir');
148: if ($dossier_televersement_tmp) {
149: $dossier = realpath($dossier_televersement_tmp);
150: if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
151: $dossier_tmp = $dossier;
152: }
153: }
154: }
155:
156: if ( ! $dossier_tmp) {
157: if (function_exists('sys_get_temp_dir')) {
158: $dossier = sys_get_temp_dir();
159: if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
160: $dossier_tmp = $dossier;
161: }
162: }
163: }
164:
165: if ( ! $dossier_tmp) {
166:
167: $fichier_tmp = @tempnam(md5(uniqid(rand(), TRUE)), '');
168: if ($fichier_tmp) {
169: $dossier = @realpath(dirname($fichier_tmp));
170: @unlink($fichier_tmp);
171: if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
172: $dossier_tmp = $dossier;
173: }
174: }
175: }
176:
177: if ( ! $dossier_tmp && self::etreAccessibleEnLectureEtEcriture('/tmp')) {
178: $dossier_tmp = '/tmp';
179: }
180:
181: if ( ! $dossier_tmp && self::etreAccessibleEnLectureEtEcriture('\\temp')) {
182: $dossier_tmp = '\\temp';
183: }
184:
185: return $dossier_tmp;
186: }
187:
188: 189: 190: 191: 192: 193:
194: protected static function etreAccessibleEnLectureEtEcriture($ressource){
195: $accessible = false;
196: if (is_readable($ressource) && is_writable($ressource)) {
197: $accessible = true;
198: }
199: return $accessible;
200: }
201: }
202: ?>