1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
class File_Decorator_Filter extends FilterIterator
{
/**
* Liste des extensions à autoriser. Toutes si vide
* @var array
*/
private $extensions = array();
/**
* Vérifie qu'un élément peut être listé
* @return boolean
*/
public function accept()
{
if(empty($this->extensions))
return true;
else
{
if(in_array(File_Util::getExtension($this->current()), $this->extensions))
return true;
}
return false;
}
/**
* Défini une ou plusieurs extsions à autoriser
* @param string|array $filter
*/
public function setExtension($filter)
{
if(!is_array($filter))
$this->extensions[] = strtolower($filter);
else
$this->extensions = array_merge($this->extensions,$filter);
}
}
//Extrait de la classe de gestion de fichier :
public function listRecursive()
{
$folder = new File_Decorator_Filter(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->dossier),true));
$folder->setExtension($this->filtre);
$liste = array();
$compteur = 0;
foreach($folder as $file)
{
$liste[$compteur]['name'] = $file->getFilename();
$liste[$compteur]['size'] = round($file->getSize()/1024,3);
$liste[$compteur]['depth'] = $folder->getDepth();
$compteur++;
//echo str_repeat('-',$folder->getDepth()).' '.$file.'<br />';
}
return $liste;
} |
Partager