Changeset 34330 in spip-zone


Ignore:
Timestamp:
Jan 9, 2010, 10:11:02 AM (10 years ago)
Author:
denisb@…
Message:

la fonction de vérification des utilisations retourne plus d'informations.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/langonet/inc/langonet_verifier_utilisation.php

    r34109 r34330  
    11<?php
    22/**
    3  * Vérification de l'utilisation dans le module des items de langue definis
     3 * Vérification de l'utilisation des items de langue definis
    44 *
    5  * @param object $module
    6  * @param object $langue
    7  * @param object $ou_langue
    8  * @param object $ou_fichiers
    9  * @return
     5 * @param string $rep
     6 * @param string $module
     7 * @param string $langue
     8 * @param string $ou_langue
     9 * @param string $ou_fichier
     10 * @return array
    1011 */
    11 function inc_langonet_verifier_utilisation($module, $langue, $ou_langue, $ou_fichiers) {
    1212
    13         // On charge le fichier de langue a verifier si il existe dans l'arborescence $ou_langue
     13// $rep        => nom du repertoire parent de lang/
     14// $module     => prefixe du fichier de langue
     15// $langue     => index du nom de langue
     16// $ou_lang    => chemin vers le fichier de langue a verifier
     17// $ou_fichier => racine de l'arborescence a verifier
     18function inc_langonet_verifier_utilisation($rep, $module, $langue, $ou_langue, $ou_fichier) {
     19
     20        // On charge le fichier de langue a verifier
     21        // si il existe dans l'arborescence $ou_langue
    1422        // (evite le mecanisme standard de surcharge SPIP)
    1523        include_spip('inc/traduire');
    1624        $var_source = "i18n_".$module."_".$langue;
    17         if (empty($GLOBALS[$var_source]))
    18                 if (find_in_path($module.'_'.$langue.'.php', $ou_langue)) {
    19                         charger_langue($langue, $module);
    20                         if (!$GLOBALS[$var_source]) {
    21                                 $resultats['statut'] = false;
    22                                 $resultats['erreur'] = _T('langonet:message_nok_plugin_inactif',
    23                                                                                 array('arbo_verif' => $ou_fichiers));
    24                                 return $resultats;
     25        if (empty($GLOBALS[$var_source])) {
     26                $GLOBALS['idx_lang'] = $var_source;
     27                include(_DIR_RACINE.$ou_langue.$module.'_'.$langue.'.php');
     28        }
     29
     30        // On cherche l'ensemble des items utilises dans l'arborescence $ou_fichier
     31        $utilises_brut = array('items' => array(), 'suffixes' => array());
     32        // On ne scanne pas dans les ultimes sous-repertoires charsets/ ,
     33        // lang/ , req/ . On ne scanne que les fichiers php, html ou xml
     34        // (voir le fichier regexp.txt).
     35        foreach (preg_files(_DIR_RACINE.$ou_fichier, '(?<!/charsets|/lang|/req)(/[^/]*\.(html|php|xml))$') as $_fichier) {
     36                foreach ($contenu = file($_fichier) as $ligne => $texte) {
     37                        if (strpos($_fichier, '.xml')) {
     38                                $trouver_item = _TROUVER_ITEM_X;
     39                        }
     40                        else {
     41                                $trouver_item = _TROUVER_ITEM_HP;
     42                        }
     43                        if (preg_match_all($trouver_item, $texte, $matches)) {
     44                                $utilises_brut['items'] = array_merge($utilises_brut['items'], $matches[2]);
     45                                $utilises_brut['suffixes'] = array_merge($utilises_brut['suffixes'], $matches[3]);
     46                                foreach ($matches[2] as $item_val) {
     47                                        $item_tous[$item_val][$_fichier][$ligne][] = trim($texte);
     48                                }
    2549                        }
    2650                }
    27                 else{
    28                         $resultats['statut'] = false;
    29                         $resultats['erreur'] = _T('langonet:message_nok_fichier_langue',
    30                                                                         array('langue' => $langue, 'module' => $module, 'dossier' => $ou_langue));
    31                         return $resultats;
    32                 }
    33                
    34         // On cherche l'ensemble des items utilises dans l'arborescence $ou_fichiers
    35         $utilises_brut = array('items' => array(), 'suffixes' => array());
    36 //      $regexp = ",(=\"$module:|='$module:|<\w+>$module:|<:$module:|_T\('$module:|_U\('$module:)(\w*)('\s*\.\s*\\$*\w*)*,im";
    37         foreach (preg_files(_DIR_RACINE.$ou_fichiers,'\.(html|php|xml)$') as $_fichier) {
    38                 lire_fichier($_fichier, $contenu);
    39                 if (preg_match_all(_TROUVER_ITEM, $contenu, $matches)) {
    40                         $utilises_brut['items'] = array_merge($utilises_brut['items'], $matches[2]);
    41                         $utilises_brut['suffixes'] = array_merge($utilises_brut['suffixes'], $matches[3]);
    42                 }
    4351        }
    44         // On rafine le tableau resultant en virant les doublons
     52
     53        // On affine le tableau resultant en supprimant les doublons
    4554        $utilises = array('items' => array(), 'suffixes' => array());
    4655        foreach ($utilises_brut['items'] as $_cle => $_valeur) {
     
    5059                }
    5160        }
     61
    5262        // On construit la liste des items definis mais plus utilises
    5363        $non_utilises = array();
     
    8090                if (!$avec_certitude) {
    8191                        $a_priori_utilises[] = $_item;
     92                        if (is_array($item_tous[$_valeur])) {
     93                                $item_peut_etre[$_item] = $item_tous[$_valeur];
     94                        }
    8295                }
    8396        }
    8497
    8598        // On prepare le tableau des resultats
     99        $resultats['module'] = $module;
     100        $resultats['ou_fichier'] = $ou_fichier;
     101        $resultats['langue'] = $ou_langue.$module.'_'.$langue.'.php';
    86102        $resultats['non_utilises'] = $non_utilises;
    87103        $resultats['a_priori_utilises'] = $a_priori_utilises;
     104        $resultats['fichier_peut_etre'] = $item_peut_etre;
    88105        $resultats['statut'] = true;
    89        
     106
    90107        return $resultats;
    91108}
Note: See TracChangeset for help on using the changeset viewer.