@ -67,7 +67,7 @@ function lister_fonctions ($prefixe = null) {
if ($prefixe) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $fonctions_user[$prefixe];
$resultat = array($prefixe => $fonctions_user[$prefixe]) ;
}
return $resultat;
@ -107,7 +107,7 @@ function lister_constantes ($prefixe = null) {
if ($prefixe) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $constantes_user[$prefixe];
$resultat = array($prefixe => $constantes_user[$prefixe]) ;
}
return $resultat;
@ -151,7 +151,7 @@ function lister_images ($prefixe = null) {
if ($prefixe) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $images[$prefixe];
$resultat = array($prefixe => $images[$prefixe]) ;
}
return $resultat;
@ -206,38 +206,67 @@ function fonction_fichier ($fonction = null) {
return $filename;
}
/**
* Lister les fichiers php dans un répertoire donné
* ou, par défaut, dans tout le site.
*
* @param string $dir
* Par défaut, le répertoire racine du site.
* @return array
* Tableau contenant le chemin vers chaque fichier php.
*/
function lister_fichiers_php ($dir = _DIR_RACINE) {
global $list;
$ffs = scandir($dir);
$exclu = preg_match('/(tmp|local)/', $dir);
foreach ($ffs as $ff) {
if ($ff != '.' and $ff != '..' and $ff != '.svn' and $exclu == false) {
if (strlen($ff) >= 5) {
if (substr($ff, -4) == '.php') {
if (substr($dir, -1) == '/') {
// Si $dir est vide, on va chercher le répertoire
// dans lequel se trouve le script pour référence.
if (empty($dir)) {
# on recherche le script sur lequel on est
$script = end(explode('/', $_SERVER['PHP_SELF']));
# Et on l'enlève de l'url pour donner une bonne valeur à $dir
$dir = preg_replace('/' . $script . '/', '', $_SERVER['SCRIPT_FILENAME']);
}
if (!empty($dir) and is_dir($dir)) {
$ffs = scandir($dir);
$exclu = preg_match('/(tmp|local)/', $dir);
if (substr($dir, -1) !== '/') {
$dir = $dir . '/';
}
foreach ($ffs as $ff) {
if ($ff[0] != '.' and $exclu == false) {
if (strlen($ff) >= 5) {
if (substr($ff, -4) == '.php') {
$list[] = $dir . $ff;
} else {
$list[] = $dir . '/' . $ff;
}
//echo dirname($ff) . $ff . "< br / > ";
}
}
if (is_dir($dir . $ff)) {
lister_fichiers_php($dir . $ff);
} elseif (is_dir($dir . '/' . $ff)) {
lister_fichiers_php($dir . '/' . $ff);
if (is_dir($dir . $ff)) {
lister_fichiers_php($dir . $ff);
}
}
}
}
return $list;
}
/**
* Rechercher le nom de toutes les fonctions
* dans le fichier php passé en paramètre.
*
* @param string $fichier
* @return array
*/
function lister_noms_fonctions ($fichier) {
$liste_fonctions = array();
$content = file_get_contents($fichier);
preg_match_all("/(function)([\s|\t]+)(\w+)/", $content, $fonctions);
foreach ($fonctions[3] as $fonction) {
$liste_fonctions[] = array('fichier' => $fichier, 'fonction' => $fonction);
if (is_file($fichier)) {
$content = file_get_contents($fichier);
preg_match_all("/(function)([\s|\t]+)(\w+)/", $content, $fonctions);
foreach ($fonctions[3] as $fonction) {
$liste_fonctions[] = array('fichier' => $fichier, 'fonction' => $fonction);
}
}
return $liste_fonctions;
}
@ -247,29 +276,33 @@ function lister_toutes_fonctions ($prefixe = null) {
$fichiers_php = lister_fichiers_php();
$fonctions_user = array();
foreach ($fichiers_php as $fichier) {
foreach (lister_noms_fonctions($fichier) as $value) {
$fonctions_user[] = $value;
if (count($fichiers_php) > 0) {
foreach ($fichiers_php as $fichier) {
foreach (lister_noms_fonctions($fichier) as $value) {
$fonctions_user[] = $value;
}
}
natcasesort($fonctions_user);
}
natcasesort($fonctions_user);
foreach ($fonctions_user as $value) {
if ($fonction = preg_split('/_/', $value['fonction'], -1, PREG_SPLIT_NO_EMPTY)) {
$fonctions_user[$fonction[0]][] = $value;
if (($key = array_search($value, $fonctions_user)) !== false) {
unset($fonctions_user[$key]);
if (count($fonctions_user) > 0) {
foreach ($fonctions_user as $value) {
if ($fonction = preg_split('/_/', $value['fonction'], -1, PREG_SPLIT_NO_EMPTY)) {
$fonctions_user[$fonction[0]][] = $value;
if (($key = array_search($value, $fonctions_user)) !== false) {
unset($fonctions_user[$key]);
}
}
}
ksort($fonctions_user);
}
ksort($fonctions_user);
$resultat = $fonctions_user;
if ($prefixe) {
if ($prefixe and count($fonctions_user) > 0 ) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $fonctions_user[$prefixe];
$resultat = array($prefixe => $fonctions_user[$prefixe]) ;
}
return $resultat;