source: spip-zone/_plugins_/langonet/inc/langonet_verifier_l.php @ 45964

Last change on this file since 45964 was 45964, checked in by eric@…, 10 years ago

On mue langonet_options en langonet_fonctions.
La génération des fichiers de langue se fait maintenant systématiquement en utf8
Incrément de version

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1<?php
2// Les REGEXP de recherche de l'item de langue (voir le fichier regexp.txt)
3// -- pour les fichiers .php et la detection de _L
4define("_LANGONET_TROUVER_FONCTION_L_P", "`_L\([\"'](.+)(?:[,\"']|[\"'][,].*)\)`iUm");
5
6/**
7 * Vérification de l'utilisation de la fonction _L() dans le code PHP
8 *
9 * @param string $ou_fichier
10 * @return array
11 */
12
13// $ou_fichier   => racine de l'arborescence a verifier
14function inc_langonet_verifier_l($ou_fichier) {
15
16        // Initialisation du tableau des resultats
17        // Si une erreur se produit lors du deroulement de la fonction, le tableau contient le libelle
18        // de l'erreur dans $resultats['erreur'].
19        // Sinon, cet index n'existe pas
20        $resultats = array();
21
22        // On cherche l'ensemble des items utilises dans l'arborescence $ou_fichier
23        $utilises_brut = array('items' => array());
24        // On ne scanne pas dans les ultimes sous-repertoires charsets/ ,
25        // lang/ , req/ . On ne scanne que les fichiers php
26        // (voir le fichier regexp.txt).
27        foreach (preg_files(_DIR_RACINE.$ou_fichier, '(?<!/charsets|/lang|/req)(/[^/]*\.(php))$') as $_fichier) {
28                foreach ($contenu = file($_fichier) as $ligne => $texte) {
29                        $trouver_item = _LANGONET_TROUVER_FONCTION_L_P;
30                        if (preg_match_all($trouver_item, $texte, $matches)) {
31                                $utilises_brut['items'] = array_merge($utilises_brut['items'], $matches[1]);
32                                // On collecte pour chaque item trouve les lignes et fichiers dans lesquels il est utilise
33                                foreach ($matches[1] as $_item_val) {
34                                        $item_val = addcslashes($_item_val,"$()");
35                                        preg_match("`.{0,8}_L\([\"']".$item_val.".{0,20}`is", $texte, $extrait);
36                                        // On indexe avec le md5 de la valeur de _L() car parfois cette valeur
37                                        // contient des caracteres non echappes qui perturbent l'indexation du tableau
38                                        // Il faudra donc traiter l'affichage correspondant a cette option
39                                        $item_tous[md5($_item_val)][$_fichier][$ligne][] = trim($extrait[0]);
40                                }
41                        }
42                }
43        }
44
45        // On affine le tableau resultant en supprimant les doublons
46        // et on construit la liste des items utilises mais non definis
47        $item_non = array();
48        $item_md5 = array();
49        $fichier_non = array();
50        foreach ($utilises_brut['items'] as $_cle => $_valeur) {
51                if (!in_array($_valeur, $item_non)) {
52                        $item_non[] = $_valeur;
53                        $index = md5($_valeur);
54                        $item_md5[$index] = $_valeur;
55                        if (is_array($item_tous[$index])) {
56                                $fichier_non[$index] = $item_tous[$index];
57                        }
58                }
59        }
60
61        // On prepare le tableau des resultats
62        $resultats['ou_fichier'] = $ou_fichier;
63        $resultats['item_non'] = $item_non;
64        $resultats['fichier_non'] = $fichier_non;
65        $resultats['item_md5'] = $item_md5;
66       
67        return $resultats;
68}
69
70?>
Note: See TracBrowser for help on using the repository browser.