Example #1
0
 /**
  * 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';
     }
 }