Nouveau scanDir avec filter dans helper
This commit is contained in:
parent
a3605edf67
commit
e3bd66b5d1
@ -591,4 +591,43 @@ class helper {
|
|||||||
return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
|
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() {
|
public function dirs() {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
|
$filter = ['jpg', 'jpeg', 'png', 'gif', 'tiff', 'ico', 'webp'];
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'display' => self::DISPLAY_JSON,
|
'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
Block a user