Générer arborescence PHP d'un ftp

Fermé
gabkiel Messages postés 11 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 4 avril 2010 - 4 avril 2010 à 20:24
Bonjour,
j'essaie de générer l'arborescence d'un ftp à l'aide des fonctions PHP. Pour cela j'utilise entre autre la fonction ftp_rawlist qui permet de donner une liste détaillée des fichiers du répertoire donné en paramètre.
J'ai créé une fonction (getdir($Connexion,$currentdirectory)) qui utilise cette fonction ftp_rawlist, trie les informations des différents dossiers dans un tableau. J'appelle à nouveau cette fonction de manière récursive pour chaque dossier.

Pour être plus parlant voici le code:
<?php
function getdir($Connexion,$currentdirectory) {

$ftp_rawlist = ftp_rawlist($Connexion, $currentdirectory); // permet d'obtenir une liste détaillée des fichiers du répertoire

foreach ($ftp_rawlist as $v) { // on découpe la chaine obtenue
$info = array();
$vinfo = preg_split("/[\s]+/", $v, 9);
if ($vinfo[0] !== "total") {
$info['chmod'] = $vinfo[0];
$info['num'] = $vinfo[1];
$info['owner'] = $vinfo[2];
$info['group'] = $vinfo[3];
$info['size'] = $vinfo[4];
$info['month'] = $vinfo[5];
$info['day'] = $vinfo[6];
$info['time'] = $vinfo[7];
$info['name'] = $vinfo[8];
$rawlist[$info['name']] = $info;
}
}
$dir = array(); // création d'un tableau de dossier

foreach ($rawlist as $k => $v) {
// Test pour savoir s'il s'agit d"un dossier
if ($v['chmod']{0} == "d") {
$dir[$k] = $v;
}
}

$i=0;
// Parcours des différents dossiers contenus dans le répertoire courant
foreach ($dir as $dirname => $dirinfo) {
$nb=sizeof($dir); // nombre de dossier du tableau
$nb=$nb-2; // on enlève le dossier nommé "." et ".."

$i=$i+1;

if($i>2){ // ne prends pas en compte les deux dossiers ignorés précédemment
echo '===>' ."[ $dirname ] " .'(' .$nb .')' .'<br />';
$currentdirectory=$currentdirectory .'/' .$dirname; // on modifie le répertoire courant
@getdir($Connexion,$currentdirectory); // appel récursif avec le nouveau répertoire à analyser en paramètre
}
}
}
?>



Comme il est possible de le voir avant de réappeller la fonction getdir je change le répertoire courant avec celui du dossier que l'on est en train de traiter(Ajout de '/' + nomdossier).
Le problème est que je ne vois pas comment revenir en arrière...
Il est possible que ma manière d'opérer ne sois vraiment pas la bonne..
Si vous pouvez me donner un petit coup de main n'hésitez pas !

Merci d'avance

Gab