www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

systeme-fichiers.php (2744B)


      1 <?php
      2 
      3 // NOTE : Cette abstraction a l'air assez innutile à part supprimer...
      4 
      5 class Système_fichiers {
      6 	public static function créer_dossier($chemin_fs) {
      7 		$d = dirname($chemin_fs);
      8                 $r = true;
      9 		if (!is_dir($d)) $r = self::créer_dossier($d);
     10 		if (!is_dir($chemin_fs)) return $r && mkdir($chemin_fs);
     11 	}
     12 	
     13 	/*public static function créer_fichier($chemin_fs) {
     14 		// touch($chemin_fs)
     15 	}*/
     16 	
     17 	public static function supprimer($chemin_fs, $récursif) {
     18             var_dump($chemin_fs);
     19 		if (is_link($chemin_fs) || is_file($chemin_fs)) {
     20 			unlink($chemin_fs);
     21 		} else if ($récursif && is_dir($chemin_fs)) {
     22 			$d = dir($chemin_fs);
     23 			while (false !== ($entrée = $d->read())) {
     24 				if ($entrée == '.') continue; // TODO : gérer correctement les boucles dans le système de fichiers (liens durs, ...)
     25 				if ($entrée == '..') continue;
     26 				self::supprimer($chemin_fs . '/' . $entrée, $récursif);
     27 			}
     28 			$d->close();
     29 			rmdir($chemin_fs);
     30 		} else if (is_dir($chemin_fs)) {
     31                     rmdir($chemin_fs);
     32                 }
     33 	}
     34 	
     35 	public static function lire($chemin_fs) {
     36 		if (!file_exists($chemin_fs)) return  Erreur::lecture("Ne peut lire le fichier " . $chemin_fs);
     37 		return file_get_contents($chemin_fs);
     38 	}
     39 	
     40 	public static function écrire($chemin_fs, $données) {
     41 		$d = dirname($chemin_fs);
     42 		if (!is_dir($d) && !self::créer_dossier($d)) {
     43                     return Erreur::écriture("Impossible d'écrire dans $chemin_fs : le dossier $d n'existe pas");
     44                 }
     45 		return file_put_contents($chemin_fs, $données);
     46 	}
     47 	
     48 	public static function liste_fichiers($chemin_fs) {
     49 		if (!is_dir($chemin_fs)) return false;
     50 		return scandir($chemin_fs);
     51 	}
     52 	
     53 	public static function déplacer($chemin_fs_de, $chemin_fs_vers) {
     54 		rename($chemin_fs_de, $chemin_fs_vers);
     55 	}
     56 	
     57 	public static function déplacer_fichier_téléchargé($chemin_fs_de, $chemin_fs_vers) {
     58 		return move_uploaded_file($chemin_fs_de, $chemin_fs_vers);
     59 	}
     60 	
     61 	public static function envoyer_fichier_directement($chemin_fs) {
     62 		// TODO : utiliser http://www.php.net/manual/en/function.readfile.php#86244 pour les téléchargements partiels
     63 		// TODO : utiliser http://www.php.net/manual/en/function.readfile.php#52722 pour les types mimes
     64 		// TODO : ou bien http://www.php.net/manual/en/function.header.php#48538 pour les types mimes
     65 		//        (ou mieux, l'utiliser au cas où on ne trouve pas dans le fichier d'apache).
     66 		// TODO : stocker le type mime dans $chemin_fs . '__mime' et utiliser celui-là si possible, sinon les méthodes ci-dessus.
     67 		// Licence des bouts de code du manuel PHP : CC-Attribution http://php.net/manual/en/about.notes.php
     68 		header("Content-Type: image/jpg");
     69 		return readfile($chemin_fs);
     70 	}
     71 }
     72 
     73 ?>