diff --git a/core/class/helper.class.php b/core/class/helper.class.php index 42472ac..286a0d8 100644 --- a/core/class/helper.class.php +++ b/core/class/helper.class.php @@ -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; + } + } } diff --git a/module/gallery/gallery.php b/module/gallery/gallery.php index 921d95c..40da7e7 100644 --- a/module/gallery/gallery.php +++ b/module/gallery/gallery.php @@ -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; - } -}