Merci pour la réponse.
En fait, c'est ok, j'ai trouvé entre temps la réponse. (mea culpa, j'aurai dû la mettre ne ligne).
Ça donne ceci :
// correspond à plugins/nom_plugin/fichier.xml
if (glob(_DIR_PLUGINS . '*/{paquet,plugin}.xml',GLOB_BRACE)) {
foreach (glob(_DIR_PLUGINS . '*/{paquet,plugin}.xml',GLOB_BRACE) as $value) {
$list[] = $value;
}
}
// correspond à plugins/auto/nom_plugin/fichier.xml
if (glob(_DIR_PLUGINS . '*/*/{paquet,plugin}.xml',GLOB_BRACE)) {
foreach (glob(_DIR_PLUGINS . '*/*/{paquet,plugin}.xml',GLOB_BRACE) as $value) {
$list[] = $value;
}
}
// correspond à plugins/auto/nom_plugin/x.y.z/fichier.xml
if (glob(_DIR_PLUGINS . '*/*/*/{paquet,plugin}.xml',GLOB_BRACE)) {
foreach (glob(_DIR_PLUGINS . '*/*/*/{paquet,plugin}.xml',GLOB_BRACE) as $value) {
$list[] = $value;
}
}
// Ici on va prendre les chemins d'extrusion uniquement, sans distinction du fichier xml
foreach ($list as $value) {
$extract[] = str_replace(array('plugin.xml','paquet.xml'), '', $value);
}
// On dédoublonne
$extract = array_unique($extract);
foreach ($extract as $url) {
// Et on refait une recherche pour paquet.xml d'abord
if(glob($url . 'paquet.xml', GLOB_NOSORT)) {
$result = glob($url . 'paquet.xml', GLOB_NOSORT);
$result = $result[0] ;
// dans paquet.xml on cherche la valeur de l'attribut prefix
if (preg_match('/prefix="([^"]*)"/i', file_get_contents($result), $r)
AND !$lsplugs[strtolower(trim($r[1]))]){
preg_match('/version="([^"]*)"/i', file_get_contents($result), $n);
$inutile[] = trim($r[1]) . ' (' . $n[1] . ')';
}
} else { // Si pas de paquet.xml, on cherche plugin.xml
$result = glob($url . 'plugin.xml', GLOB_NOSORT);
$result = $result[0] ;
// là, on reprend l'ancien code. On cherche la valeur de la balise prefix
if (preg_match(',<prefix>([^<]+),ims', file_get_contents($result), $r)
AND !$lsplugs[strtolower(trim($r[1]))]){
preg_match(',<version>([^<]+),ims', file_get_contents($result), $n);
$inutile[] = trim($r[1]) . ' (' . $n[1] . ')';
}
}
}
Comme je l'avais dit (plus ou moins), je désire n'avoir qu'un
fichier.xml par répertoire pour ne pas avoir de "doublons".
paquet.xml est prioritaire sur le fichier
plugin.xml.
En gros, je liste tous les fichiers
paquet.xml et
plugin.xml. Puis, je les enlève de mon
array. Ce nouveau tableau est traité avec
array_unique(). Ce qui va me donner un chemin d'extraction unique.
Je fais un
foreach sur chaque élément de mon tableau pour prendre
paquet.xml et en retirer les infos que j'ai besoin. Si pas de
paquet.xml, je regarde le fichier
plugin.xml.
Et voilà.