Nouveau scanDir avec filter dans helper
This commit is contained in:
parent
a3605edf67
commit
e3bd66b5d1
|
@ -590,5 +590,44 @@ class helper {
|
|||
list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2);
|
||||
return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scan le contenu d'un dossier et de ses sous-dossiers, retourne ceux contenant au moins un fichier
|
||||
* dont l'extension est contenue dans $filter
|
||||
* @param string $dir Dossier à scanner
|
||||
* @param array $filter array des extensions à filtrer
|
||||
* @return array
|
||||
*/
|
||||
public static function scanDir($dir, $filter = []) {
|
||||
$exclu = ["agenda", "backup", "fonts", "icones", "theme"];
|
||||
$dirContent = [];
|
||||
$iterator = new DirectoryIterator($dir);
|
||||
foreach($iterator as $fileInfos) {
|
||||
if($fileInfos->isDot() === false AND $fileInfos->isDir()) {
|
||||
if(in_array($fileInfos, $exclu)) continue;
|
||||
$dirContent[] = $dir . '/' . $fileInfos->getBasename();
|
||||
$dirContent = array_merge($dirContent, self::scanDir($dir . '/' . $fileInfos->getBasename()));
|
||||
}
|
||||
}
|
||||
if( $filter ===[] ){
|
||||
return $dirContent;
|
||||
} else {
|
||||
$dirContentFilter =[];
|
||||
foreach($dirContent as $dirco){
|
||||
$dirImg = opendir( $dirco );
|
||||
// Dossier avec au moins 1 image ?
|
||||
while (($file = readdir($dirImg)) !== false) {
|
||||
if(is_file($dirco .'/'. $file)){
|
||||
if(in_array(preg_replace("#(.+)\.(.+)#", "$2", $file), $filter)){
|
||||
$dirContentFilter[] = $dirco;
|
||||
continue(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dirImg);
|
||||
}
|
||||
return $dirContentFilter;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -366,9 +366,10 @@ class gallery extends common {
|
|||
*/
|
||||
public function dirs() {
|
||||
// Valeurs en sortie
|
||||
$filter = ['jpg', 'jpeg', 'png', 'gif', 'tiff', 'ico', 'webp'];
|
||||
$this->addOutput([
|
||||
'display' => self::DISPLAY_JSON,
|
||||
'content' => galleriesHelper::scanDir(self::FILE_DIR.'source')
|
||||
'content' => helper::scanDir(self::FILE_DIR.'source', $filter)
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -729,25 +730,3 @@ class gallery extends common {
|
|||
|
||||
}
|
||||
|
||||
class galleriesHelper extends helper {
|
||||
|
||||
/**
|
||||
* Scan le contenu d'un dossier et de ses sous-dossiers
|
||||
* @param string $dir Dossier à scanner
|
||||
* @return array
|
||||
*/
|
||||
public static function scanDir($dir) {
|
||||
|
||||
$exclu = ["agenda", "backup", "fonts", "icones", "theme"];
|
||||
$dirContent = [];
|
||||
$iterator = new DirectoryIterator($dir);
|
||||
foreach($iterator as $fileInfos) {
|
||||
if($fileInfos->isDot() === false AND $fileInfos->isDir()) {
|
||||
if(in_array($fileInfos, $exclu)) continue;
|
||||
$dirContent[] = $dir . '/' . $fileInfos->getBasename();
|
||||
$dirContent = array_merge($dirContent, self::scanDir($dir . '/' . $fileInfos->getBasename()));
|
||||
}
|
||||
}
|
||||
return $dirContent;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue