#1 12-01-2009 14:22

Tony

Exploration sur plusieurs niveaux ?

Bonjour

Excellent script, très simple et pratique, mais... comment serait-il possible de faire en sorte que le script ne cherche pas sur seulement 1 niveau de sous-dossiers, mais sur plusieurs sous-niveaux ? (au moins 2...)

Merci ! :-)

#2 12-01-2009 22:50

jonas
Administrator
Inscription : 25-06-2006
Messages : 729

Re : Exploration sur plusieurs niveaux ?

Bonjour

C'est parce qu'il est très simple qu'il n'explore qu'un niveau de sous-dossier.

Cependant l'adapter à une nombre infinit de sous dossier ne me semble pas très complexe. Pourquoi ne l'ai-je pas fait hmm.

Je n'ai pas le temps de tester ce soir mais grossomodo :
Remplacer

    $dhdir = opendir($racinedir.$w->imagedir);
    if ($dhdir!=False) {
        while (false !== ($subdir = readdir($dhdir)))  {
            $dir = $racinedir.$w->imagedir.'/'.$subdir;
            if (is_dir($dir) & $subdir != '.' & $subdir != '..')    { //explore les sous dossiers
                $dh = @opendir($dir);
                if ($dh!=False) { //pour les images qui se trouve dans les sous-dosser
                    while (false !== ($filename = readdir($dh))) {
                        if ($filename{0} != "." & in_array(strrchr($filename,'.'),$extbig)){
                            $files[] = $w->imagedir.'/'.$subdir.'/'.$filename;
                        }
                    }
                }
            } elseif ($subdir{0} != "." & in_array(strrchr($subdir,'.'),$extbig)) {
            //pour les images qui se trouve directement dans le dossier principal
                {
                    $files[] = $w->imagedir.'/'.$subdir;
                }
            }
        }
    }

Par un truc du genre

    function exploration($parentdir) {
        $dhdir = opendir($parentdir);
        if ($dhdir!=False) {
            while (false !== ($subdir = readdir($dhdir)))  {
                $dir = $parentdir.'/'.$subdir;
                if (is_dir($dir) & $subdir != '.' & $subdir != '..')    {
                    //C'est un dossier, rappel de la fonction
                    $files[] = array_combine(exploration($parentdir.'/'.$subdir));
                } elseif ($subdir{0} != "." & in_array(strrchr($subdir,'.'),$extbig)) {
                    //pour les images qui se trouve directement dans le dossier principal
                    $files[] = $parentdir.'/'.$subdir;
                }
            }
        }
        return $files;
    }
    $files[] = exploration($racinedir.$w->imagedir);

Le code est même plus court big_smile par contre je ne sais pas trop ce qui se passera au cas ou il y a des liens symbolique pointant sur un dossier parent hmm. Peut-être un boucle infini hmm.

ATTENTION JE N'AI RIEN TESTÉ !!!

Hors ligne

#3 13-01-2009 19:49

jonas
Administrator
Inscription : 25-06-2006
Messages : 729

Re : Exploration sur plusieurs niveaux ?

!!! Il y a quelques erreurs !!!

Voici le fichier _public.php dans son intégralité tester ! (pas pour les histoires de lien symbolique !!!)

Je paquagerai ça dès que j'en trouverai le temps.

Dernière modification par jonas (17-01-2009 12:04)

Hors ligne

#4 13-01-2009 21:25

Tony
Invité

Re : Exploration sur plusieurs niveaux ?

Merci beaucoup Jonas !

Je testerai ça dès que j'ai 5 minutes.

smile

#5 15-01-2009 23:41

Tony
Invité

Re : Exploration sur plusieurs niveaux ?

J'ai un (des ?) bug avec ton nouveau code (bugs que je n'avais pas avant, quand j'ai utilisé ton script non modifié):

- il n'est affiché que le texte alternatif de l'image, car le chemin de la miniature ne parait pas être bon (il va chercher la miniature de cette manière --> http://dossierchoisi  alors qu'avant il utilisait --> http://nomdusite.com/dossierchoisi   - le souci étant que ton script ne permet que d'entrer un nom de dossier, et nom une url entière. Donc en fait, une situation paradoxale qui parait pas trop compliquée quand même.

- il ne va chercher les images que dans 1 seul dossier, toujours le même... il sait aller plus loin dans les niveaux de dossiers, mais choisi toujours la même image, toujours dans le même dossier ! Pourtant j'ai vidé le cache de mon navigateur ainsi que celui de mon dotclear sur le serveur.

Voilà !

#6 17-01-2009 12:03

jonas
Administrator
Inscription : 25-06-2006
Messages : 729

Re : Exploration sur plusieurs niveaux ?

http://dossierchoisi / http://nomdusite.com/dossierchoisi
J'ai fait quelques changements à ce niveau car en fonction de la config serveur l'ancien code pouvait posé des problèmes mineurs. Supprime le "/" au début de ton chemin (ex "dotclear/public et pas /dotclear/public). Je techerais de rendre cette suppression automatique avant de faire le paquet.

il ne va chercher les images que dans 1 seul dossier
Non il cherche bien dans tous les dossiers mais il écrase le contenu du précédent à chaque fois big_smile.

Code corrigé pour le second problème

Hors ligne

#7 17-01-2009 19:27

jonas
Administrator
Inscription : 25-06-2006
Messages : 729

Re : Exploration sur plusieurs niveaux ?

J'ai créer un paquet avec quelque amélioration en plus (prise en compte du plugin lightbox). Avant de faire l'annonce sur mon blog j'aimerai bien que quelque personne test. Peux-tu tester ?

http://download.tuxfamily.org/jopen/ran … es-0.4.zip
http://download.tuxfamily.org/jopen/ran … 0.4.tar.gz

Merci

Hors ligne

#8 19-01-2009 22:03

Tony
Invité

Re : Exploration sur plusieurs niveaux ?

Je viens d'essayer ta mise à jour, ça marche nikel.

Et j'ai compris le souci aussi... toutes mes images (sauf 2) étaient en .JPG et non en .jpg --> la majuscule  !
Ton script ne prend pas en compte les images avec extension en majuscule, or comme la moitié des appareils photos et des logiciels mettent l'extension de manière automatique en majuscule...

Ca pourrait être bien que tu rajoutes ça... au pire si tu penses que c'est pas utile, je me fendrais d'un copier-coller pour avoir les JPG de reconnus.

Le plugin lightbox est bien reconnu aussi.

Donc parfait pour moi: pour info, je suis sous free avec la toute dernière version de dotclear.

#9 20-01-2009 21:47

jonas
Administrator
Inscription : 25-06-2006
Messages : 729

Re : Exploration sur plusieurs niveaux ?

Sais-tu si les miniatures des images *.JPG sont en *.jpg ?

Je corrigerai ce problème dans la semaine ou durant le weekend. (Par contre le numéro de version serra inchangé, il faudra donc désinstaller puis réinstaller le plugin ou faire une installation manuelle).

Merci pour le test smile

Hors ligne

#10 20-01-2009 23:01

Tonyt
Invité

Re : Exploration sur plusieurs niveaux ?

Oui, les extensions des miniatures des fichiers en JPG ou JPEG sont en jpg ou jpeg.

#11 25-01-2009 11:42

jonas
Administrator
Inscription : 25-06-2006
Messages : 729

Re : Exploration sur plusieurs niveaux ?

Version 0.4 final en ligne (avec le support des extension en majuscule)

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Si vous êtes un être humain ne changez pas le contenu de ces deux champs.

Pied de page des forums