/** * Récupère la liste des fichiers en fonction du pointeur * * @require class FileFolder * * @param string $path -> Le chemin du répertoire à lister * @param array $hidden_folders -> Les dossiers à masquer : array('dossier1', 'dossier2); * @param array $hidden_files -> Les fichiers ou extension à masquer : array('Thumbs.db', 'index.php', 'exe'); * @return array ['path'], ['folders'], ['files'] */ public static function getFiles($path = null, $hidden_folders = array(), $hidden_files = array()) { // Si la class FileFolder est instanciée if (class_exists('FileFolder')) { // Initialisation $out = array('path' => null, 'folders' => null, 'files' => null); $link = self::connection(); // Si la connexion à réussie if (is_resource($link)) { // Si aucun chemin n'est spécifié, on récupère le dossier courant if ($path == null) { $path = @ftp_pwd($link); } $out['path'] = $path; // Liste des fichiers $files = ftp_rawlist($link, $path); if (count($files) > 0) { foreach ($files as $file) { // Parse $data = preg_split("#[\\s]+#", $file, 9); // Si c'est un dossier if ($data[0][0] === 'd') { // Si le dossier n'est pas parmi les dossiers masqués if ($data[8] != '.' && $data[8] != '..' && !in_array($data[8], $hidden_folders)) { $out['folders'][$data[8]]['items'] = $data[1]; $out['folders'][$data[8]]['mtime'] = date('d/m/Y H:i:s', strtotime($data[5] . ' ' . $data[6] . ' ' . $data[7])); $out['folders'][$data[8]]['chmod'] = $data[0]; $out['folders'][$data[8]]['user'] = $data[2]; $out['folders'][$data[8]]['group'] = $data[3]; } } else { // Si c'est un fichier different des fichiers masqués if (!in_array($data[8], $hidden_files)) { // Si le fichier est différent d'une extension masquée if (!in_array(FileFolder::getFilenameExtension($data[8]), $hidden_files)) { $out['files'][$data[8]]['size'] = FileFolder::formatSize($data[4]); $out['files'][$data[8]]['ext'] = FileFolder::getFilenameExtension($data[8]); $out['files'][$data[8]]['type'] = FileFolder::getFileType($data[8]); $out['files'][$data[8]]['mtime'] = date('d/m/Y H:i:s', strtotime($data[5] . ' ' . $data[6] . ' ' . $data[7])); $out['files'][$data[8]]['chmod'] = $data[0]; $out['files'][$data[8]]['user'] = $data[2]; $out['files'][$data[8]]['group'] = $data[3]; } } } } } // Déconnexion self::disconnection($link); // Retour return $out; } else { return $link; } } else { return 'class FileFolder no exists'; } }