Changeset 115884 in spip-zone


Ignore:
Timestamp:
Jul 7, 2019, 11:22:04 AM (2 weeks ago)
Author:
eric@…
Message:

PSR2 et autres fixers.

Location:
_plugins_/langonet/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/langonet/trunk/action/langonet_telecharger.php

    r99174 r115884  
    11<?php
    2 /**
    3  *
    4  */
     2
    53
    64if (!defined('_ECRIRE_INC_VERSION')) return;
    7  
    8 function action_langonet_telecharger_dist(){
     5
     6function action_langonet_telecharger_dist() {
    97
    108        // Securisation: aucun argument attendu
     
    1210        $file_name = $securiser_action();
    1311        if (!@is_readable($file_name)) {
    14                 spip_log("*** LANGONET (action_langonet_telecharger_dist) ERREUR: $file_name pas accessible en lecture");
     12                spip_log("*** LANGONET (action_langonet_telecharger_dist) ERREUR: ${file_name} pas accessible en lecture");
    1513        }
    1614
    1715        // Telechargement du fichier de log (.log) ou de langue (.php)
    18         header("Pragma: public");
    19         header("Expires: 0");
    20         header("Cache-Control: must-revalidate");
    21         header("Cache-Control: private", false);
     16        header('Pragma: public');
     17        header('Expires: 0');
     18        header('Cache-Control: must-revalidate');
     19        header('Cache-Control: private', false);
    2220        header('Content-Type: texte/plain');
    23         header("Content-Length: ".filesize($file_name));
    24         header("Content-Disposition: attachment; filename=\"".basename($file_name)."\"");
    25         header("Content-Transfer-Encoding: binary");
     21        header('Content-Length: ' . filesize($file_name));
     22        header('Content-Disposition: attachment; filename="' . basename($file_name) . '"');
     23        header('Content-Transfer-Encoding: binary');
    2624        @readfile($file_name);
    2725        exit();
    2826
    2927}
    30 
  • _plugins_/langonet/trunk/inc/verifier_items.php

    r99174 r115884  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57// Items de langue dans les fichiers PHP
    68// déclaration d'items dans base/module.php
    7 if (!defined('_LANGONET_ITEM_PHP_OBJET'))
    8         define("_LANGONET_ITEM_PHP_OBJET", '%=>\s*[\'"](?:([a-z0-9_]+):)([^\/ \']*)[\'"]%Sm');
     9if (!defined('_LANGONET_ITEM_PHP_OBJET')) {
     10        define('_LANGONET_ITEM_PHP_OBJET', '%=>\s*[\'"](?:([a-z0-9_]+):)([^\/ \']*)[\'"]%Sm');
     11}
    912// Fontions PHP _T ou _U avec apostrophe
    10 if (!defined('_LANGONET_ITEM_PHP_TRADA'))
    11         define("_LANGONET_ITEM_PHP_TRADA", '%_[TU]\s*[(]\s*\'(?:([a-z0-9_]+):)?([^\']*)\'\s*([^.,)]*[^)]*)%Sm');
     13if (!defined('_LANGONET_ITEM_PHP_TRADA')) {
     14        define('_LANGONET_ITEM_PHP_TRADA', '%_[TU]\s*[(]\s*\'(?:([a-z0-9_]+):)?([^\']*)\'\s*([^.,)]*[^)]*)%Sm');
     15}
    1216// Fontions PHP _T ou _U avec guillemet
    13 if (!defined('_LANGONET_ITEM_PHP_TRADG'))
    14         define("_LANGONET_ITEM_PHP_TRADG", '%_[TU]\s*[(]\s*"(?:([a-z0-9_]+):)?([^"]*)"\s*([^.,)]*[^)]*)%Sm');
     17if (!defined('_LANGONET_ITEM_PHP_TRADG')) {
     18        define('_LANGONET_ITEM_PHP_TRADG', '%_[TU]\s*[(]\s*"(?:([a-z0-9_]+):)?([^"]*)"\s*([^.,)]*[^)]*)%Sm');
     19}
    1520
    1621// Items de langue dans les fichiers HTML
    1722
    1823// balise <:module:raccourci:> et toutes les formes admises avec paramètres et filtres
    19 if (!defined('_LANGONET_ITEM_HTML_BALISE'))
    20         define("_LANGONET_ITEM_HTML_BALISE", "%<:(?:([a-z0-9_-]+):)?((?:[^:<>|{]+(?:<[^>]*>)?)*)([^:>]*):>%sm");
     24if (!defined('_LANGONET_ITEM_HTML_BALISE')) {
     25        define('_LANGONET_ITEM_HTML_BALISE', '%<:(?:([a-z0-9_-]+):)?((?:[^:<>|{]+(?:<[^>]*>)?)*)([^:>]*):>%sm');
     26}
    2127// Fonction |singulier_ou_pluriel{arg1, arg2, nb} pour chaque argument. Le nb est indispensable pour la détection de
    2228// l'arg2
    23 if (!defined('_LANGONET_ITEM_HTML_FILTRE_PLURIEL_1'))
    24         define("_LANGONET_ITEM_HTML_FILTRE_PLURIEL_1", "%\|singulier_ou_pluriel{(?:[\s]*(?:(?:#[A-Z_0-9]+{)*)(?:([a-z0-9_-]+):)?([a-z0-9_]+))([^,]*),%sm");
    25 if (!defined('_LANGONET_ITEM_HTML_FILTRE_PLURIEL_2'))
    26         define("_LANGONET_ITEM_HTML_FILTRE_PLURIEL_2", "%\|singulier_ou_pluriel{[^,]*,(?:[\s]*(?:(?:#[A-Z_0-9]+{)*)(?:([a-z0-9_-]+):)?([a-z0-9_]+))([^,]*),%sm");
     29if (!defined('_LANGONET_ITEM_HTML_FILTRE_PLURIEL_1')) {
     30        define('_LANGONET_ITEM_HTML_FILTRE_PLURIEL_1', "%\|singulier_ou_pluriel{(?:[\s]*(?:(?:#[A-Z_0-9]+{)*)(?:([a-z0-9_-]+):)?([a-z0-9_]+))([^,]*),%sm");
     31}
     32if (!defined('_LANGONET_ITEM_HTML_FILTRE_PLURIEL_2')) {
     33        define('_LANGONET_ITEM_HTML_FILTRE_PLURIEL_2', "%\|singulier_ou_pluriel{[^,]*,(?:[\s]*(?:(?:#[A-Z_0-9]+{)*)(?:([a-z0-9_-]+):)?([a-z0-9_]+))([^,]*),%sm");
     34}
    2735// Fonction _T
    28 if (!defined('_LANGONET_ITEM_HTML_FILTRE_T'))
    29         define("_LANGONET_ITEM_HTML_FILTRE_T", "%#[A-Z_0-9]+{(?:([a-z0-9_-]+):)?([a-z0-9_]+)}((?:\|\w+(?:{[^.]*})?)*)\|_T%Usm");
     36if (!defined('_LANGONET_ITEM_HTML_FILTRE_T')) {
     37        define('_LANGONET_ITEM_HTML_FILTRE_T', "%#[A-Z_0-9]+{(?:([a-z0-9_-]+):)?([a-z0-9_]+)}((?:\|\w+(?:{[^.]*})?)*)\|_T%Usm");
     38}
    3039
    3140// Items de langue dans les fichiers YAML
    32 if (!defined('_LANGONET_ITEM_YAML'))
    33         define("_LANGONET_ITEM_YAML", ",<:(?:([a-z0-9_-]+):)?([a-z0-9_]+):>,sm");
     41if (!defined('_LANGONET_ITEM_YAML')) {
     42        define('_LANGONET_ITEM_YAML', ',<:(?:([a-z0-9_-]+):)?([a-z0-9_]+):>,sm');
     43}
    3444
    3545// Items de langue dans les fichiers XML
    3646// -- pour plugin.xml
    37 if (!defined('_LANGONET_ITEM_PLUGINXML'))
    38         define("_LANGONET_ITEM_PLUGINXML", ",<titre>\s*(?:([a-z0-9_-]+):)?([a-z0-9_]+)\s*</titre>,ism");
     47if (!defined('_LANGONET_ITEM_PLUGINXML')) {
     48        define('_LANGONET_ITEM_PLUGINXML', ",<titre>\s*(?:([a-z0-9_-]+):)?([a-z0-9_]+)\s*</titre>,ism");
     49}
    3950// -- pour paquet.xml
    40 if (!defined('_LANGONET_ITEM_PAQUETXML'))
    41         define("_LANGONET_ITEM_PAQUETXML", ",titre=['\"](?:([a-z0-9_-]+):)?([a-z0-9_]+)['\"],ism");
     51if (!defined('_LANGONET_ITEM_PAQUETXML')) {
     52        define('_LANGONET_ITEM_PAQUETXML', ",titre=['\"](?:([a-z0-9_-]+):)?([a-z0-9_]+)['\"],ism");
     53}
    4254// -- pour les autres fichiers XML
    4355// TODO : comment faire marcher le fait que le tag est le même (contenu) et que les quotes aussi (attribut)
    4456// TODO : comment faire aussi pour ne pas capturer ces portions
    45 if (!defined('_LANGONET_ITEM_XML_CONTENU'))
    46         define("_LANGONET_ITEM_XML_CONTENU", ",<\w+>\s*(?:<:)*(?:([a-z0-9_-]+):)([a-z0-9_]+)(?::>)*\s*</\w+>,ism");
    47 if (!defined('_LANGONET_ITEM_XML_ATTRIBUT'))
    48         define("_LANGONET_ITEM_XML_ATTRIBUT", ",\w+=['\"](?:([a-z0-9_-]+):)([a-z0-9_]+)['\"],ism");
     57if (!defined('_LANGONET_ITEM_XML_CONTENU')) {
     58        define('_LANGONET_ITEM_XML_CONTENU', ",<\w+>\s*(?:<:)*(?:([a-z0-9_-]+):)([a-z0-9_]+)(?::>)*\s*</\w+>,ism");
     59}
     60if (!defined('_LANGONET_ITEM_XML_ATTRIBUT')) {
     61        define('_LANGONET_ITEM_XML_ATTRIBUT', ",\w+=['\"](?:([a-z0-9_-]+):)([a-z0-9_]+)['\"],ism");
     62}
    4963
    5064$GLOBALS['langonet_regexp'] = array(
    5165        'paquet.xml' => array(_LANGONET_ITEM_PAQUETXML),
    5266        'plugin.xml' => array(_LANGONET_ITEM_PLUGINXML),
    53         'xml' => array(
    54                                 _LANGONET_ITEM_XML_CONTENU,
    55                                 _LANGONET_ITEM_XML_ATTRIBUT
     67        'xml'        => array(
     68                _LANGONET_ITEM_XML_CONTENU,
     69                _LANGONET_ITEM_XML_ATTRIBUT
    5670        ),
    5771        'yaml' => array(_LANGONET_ITEM_YAML),
    5872        'html' => array(
    59                                 _LANGONET_ITEM_HTML_BALISE,
    60                                 _LANGONET_ITEM_HTML_FILTRE_PLURIEL_1,
    61                                 _LANGONET_ITEM_HTML_FILTRE_PLURIEL_2,
    62                                 _LANGONET_ITEM_HTML_FILTRE_T
     73                _LANGONET_ITEM_HTML_BALISE,
     74                _LANGONET_ITEM_HTML_FILTRE_PLURIEL_1,
     75                _LANGONET_ITEM_HTML_FILTRE_PLURIEL_2,
     76                _LANGONET_ITEM_HTML_FILTRE_T
    6377        ),
    6478        'php' => array(
    65                                 _LANGONET_ITEM_PHP_OBJET,
    66                                 _LANGONET_ITEM_PHP_TRADA,
    67                                 _LANGONET_ITEM_PHP_TRADG
     79                _LANGONET_ITEM_PHP_OBJET,
     80                _LANGONET_ITEM_PHP_TRADA,
     81                _LANGONET_ITEM_PHP_TRADG
    6882        )
    6983);
    7084
    7185/**
    72  * Verification des items de langue non définis ou obsolètes
    73  *
    74  * @param string        $module         prefixe du fichier de langue
    75  * @param string        $langue         index du nom de langue
    76  * @param string        $ou_langue              chemin vers le fichier de langue à vérifier
    77  * @param array         $ou_fichiers    tableau des racines d'arborescence à vérifier
    78  * @param string        $verification   type de verification à effectuer
     86 * Verification des items de langue non définis ou obsolètes.
     87 *
     88 * @param string $module       prefixe du fichier de langue
     89 * @param string $langue       index du nom de langue
     90 * @param string $ou_langue    chemin vers le fichier de langue à vérifier
     91 * @param array  $ou_fichiers  tableau des racines d'arborescence à vérifier
     92 * @param string $verification type de verification à effectuer
     93 *
    7994 * @return array
    8095 */
     
    86101        // - seuls les fichiers php, html, xml ou yaml sont considérés.
    87102        $fichiers = array();
    88         foreach($ou_fichiers as $_arborescence) {
     103        foreach ($ou_fichiers as $_arborescence) {
    89104                $fichiers = array_merge(
    90                                                 $fichiers,
    91                                                 preg_files(_DIR_RACINE.$_arborescence, '(?<!/charsets|/lang|/req)(/[^/]*\.(xml|yaml|html|php))$'));
     105                        $fichiers,
     106                        preg_files(_DIR_RACINE . $_arborescence, '(?<!/charsets|/lang|/req)(/[^/]*\.(xml|yaml|html|php))$')
     107                );
    92108        }
    93109
     
    113129                $fichiers_langue = preg_files(_DIR_RACINE, '/lang/[^/]+_fr\.php$');
    114130                $resultats = reperer_items_non_definis($utilises, $module, $traductions, $fichiers_langue);
    115         }
    116         elseif ($traductions) {
     131        } elseif ($traductions) {
    117132                $resultats = reperer_items_non_utilises($utilises, $module, $traductions);
    118133        }
     
    126141}
    127142
    128 
    129143/**
    130144 * Cherche l'ensemble des occurrences d'utilisation d'items de langue dans la liste des fichiers fournie.
     
    132146 *
    133147 * @param $fichiers
     148 *
    134149 * @return array
    135150 */
     
    137152
    138153        $utilises = array(
    139                                         'raccourcis' => array(),
    140                                         'modules' => array(),
    141                                         'items' => array(),
    142                                         'occurrences' => array(),
    143                                         'suffixes' => array(),
    144                                         'variables' => array(),
    145                                         'debug' => array()
     154                'raccourcis' => array(),
     155                'modules'    => array(),
     156                'items'      => array(),
     157                'occurrences' => array(),
     158                'suffixes'    => array(),
     159                'variables'  => array(),
     160                'debug'      => array()
    146161        );
    147162
     
    169184                                        }
    170185                                }
     186                        } else {
     187                                spip_log("Ce type de fichier n'est pas scanné : ${type_fichier} (${_fichier})", 'langonet');
    171188                        }
    172                         else {
    173                                 spip_log("Ce type de fichier n'est pas scanné : $type_fichier ($_fichier)", "langonet");
    174                         }
    175189                }
    176190        }
     
    178192        return $utilises;
    179193}
    180 
    181194
    182195/**
     
    184197 * de langue.
    185198 *
    186  * @param string        $fichier
    187  *              Chemin complet du fichier à scanner
     199 * @param string $fichier
     200 *                        Chemin complet du fichier à scanner
    188201 *
    189202 * @return string
    190  *              Extension du fichier parmi 'xml', 'yaml', 'html' et 'php' ou le nom du fichier de description
    191  *              du plugin 'paquet.xml' ou 'plugin.xml'.
     203 *                Extension du fichier parmi 'xml', 'yaml', 'html' et 'php' ou le nom du fichier de description
     204 *                du plugin 'paquet.xml' ou 'plugin.xml'.
    192205 */
    193206function identifier_type_fichier($fichier) {
     207
    194208        // On initialise le type avec l'extension du fichier
    195209        $informations = pathinfo($fichier);
     
    197211
    198212        // Pour les fichiers XML on précise si le fichier est un paquet.xml ou un plugin.xml
    199         if ($type == 'xml')
     213        if ($type == 'xml') {
    200214                if (($informations['basename'] == 'paquet.xml')
    201                 OR ($informations['basename'] == 'plugin.xml'))
     215                or ($informations['basename'] == 'plugin.xml')) {
    202216                        $type = strtolower($informations['basename']);
     217                }
     218        }
    203219
    204220        return $type;
    205221}
    206 
    207222
    208223function rechercher_ligne($offset, $lignes) {
     
    220235                        $no_ligne = $_no_ligne;
    221236                        // il faut déterminer la colonne
    222                         $no_colonne = $longueur_ligne - ($somme_ligne-$offset);
     237                        $no_colonne = $longueur_ligne - ($somme_ligne - $offset);
    223238                        break;
    224239                }
     
    232247 * Cette fonction analyse au passage si l'item est dynamique ou pas (_T avec $ ou concatenation).
    233248 *
    234  * @param array         $utilisations
    235  *              Tableau des occurrences d'utilisation des items de langues construit à chaque appel
    236  *              de la fonction.
    237  * @param array         $occurrence
    238  *              Tableau définissant l'occurrence d'utilisation en cours de mémorisation. Une occurrence
    239  *              est composée des index :
     249 * @param array $utilisations
     250 *                            Tableau des occurrences d'utilisation des items de langues construit à chaque appel
     251 *                            de la fonction.
     252 * @param array $occurrence
     253 *                            Tableau définissant l'occurrence d'utilisation en cours de mémorisation. Une occurrence
     254 *                            est composée des index :
    240255 *
    241256 *              - 0 : le texte de l'expression matchant le pattern
     
    244259 *              - 3 : suite du texte du raccourci (dénote une occurrence partiellement ou totalement variable)
    245260 *              - 4 : numéro de colonne de l'occurrence
    246  *
    247  * @param string        $fichier
    248  *              Fichier dont est issu l'occurrence en cours de mémorisation.
    249  * @param string        $no_ligne
    250  *              Numéro de ligne à laquelle l'occurrence en cours de mémorisation a été trouvée.
    251  * @param string        $ligne
    252  *              Ligne complète dans laquelle l'occurence en cours de mémorisation a été trouvée.
    253  * @param string        $regexp
    254  *      Expression régulière utilisée pour trouver l'occurrence d'utilisation en cours de
    255  *              mémorisation.
     261 * @param string $fichier
     262 *                         Fichier dont est issu l'occurrence en cours de mémorisation.
     263 * @param string $no_ligne
     264 *                         Numéro de ligne à laquelle l'occurrence en cours de mémorisation a été trouvée.
     265 * @param string $ligne
     266 *                         Ligne complète dans laquelle l'occurence en cours de mémorisation a été trouvée.
     267 * @param string $regexp
     268 *                         Expression régulière utilisée pour trouver l'occurrence d'utilisation en cours de
     269 *                         mémorisation.
    256270 *
    257271 * @return array
    258  *              Le tableau des occurrences mis à jour avec l'occurrence passée en argument
     272 *               Le tableau des occurrences mis à jour avec l'occurrence passée en argument
    259273 */
    260274function memoriser_occurrence($utilisations, $occurrence, $fichier, $no_ligne, $ligne, $regexp) {
     275
    261276        include_spip('inc/outiller');
    262277
    263         list(, $module, $raccourci_regexp, $suite,) = $occurrence;
     278        list(, $module, $raccourci_regexp, $suite) = $occurrence;
    264279        $suite = trim($suite);
    265280
     
    278293                // Nettoyage de la variable $raccourci_regexp
    279294                if ($raccourci_regexp
    280                 AND preg_match('#^([a-z0-9_]*)(.*)$#im', $raccourci_regexp, $matches)) {
     295                and preg_match('#^([a-z0-9_]*)(.*)$#im', $raccourci_regexp, $matches)) {
    281296                        if (!$matches[1]) {
    282297                                $raccourci_totalement_variable = true;
    283298                                $raccourci_regexp = $matches[2];
    284                         }
    285                         elseif ($matches[2]) {
     299                        } elseif ($matches[2]) {
    286300                                $raccourci_partiellement_variable = true;
    287301                                $raccourci_regexp = $matches[1];
     
    293307        // Rechercher si l'occurrence trouvée est dynamique (existence d'un suffixe ou pas)
    294308        // -- on commence par traiter le cas ou le raccourci est vide car détecté comme une suite
    295         if ($suite AND !$raccourci_regexp) {
     309        if ($suite and !$raccourci_regexp) {
    296310                // Cas de la nouvelle écriture variable du raccourci <:xxx:{=#ENV{yyy}}:> ou d'une variable PHP
    297311                // -- on rétablit le raccourci à partir de la suite qui n'en est pas une.
     
    302316        // -- on continue en détectant les suites qui sont de vrais suffixes d'un raccourci incomplet
    303317        if ($suite
    304         AND !$raccourci_partiellement_variable
    305         AND (($regexp == _LANGONET_ITEM_HTML_FILTRE_T)
    306                 OR ($regexp == _LANGONET_ITEM_HTML_FILTRE_PLURIEL_1)
    307                 OR ($regexp == _LANGONET_ITEM_HTML_FILTRE_PLURIEL_2)
    308                 OR in_array($regexp, $GLOBALS['langonet_regexp']['php']))       ) {
    309                         // Cas HTML ou PHP dynamique
    310                         $raccourci_partiellement_variable = true;
     318        and !$raccourci_partiellement_variable
     319        and (($regexp == _LANGONET_ITEM_HTML_FILTRE_T)
     320                or ($regexp == _LANGONET_ITEM_HTML_FILTRE_PLURIEL_1)
     321                or ($regexp == _LANGONET_ITEM_HTML_FILTRE_PLURIEL_2)
     322                or in_array($regexp, $GLOBALS['langonet_regexp']['php']))) {
     323                // Cas HTML ou PHP dynamique
     324                $raccourci_partiellement_variable = true;
    311325        }
    312326
     
    317331
    318332        // TODO : vérifier si avec les traitements précédents extraire_argument est encore nécessaire
    319         list($raccourci, ) = extraire_arguments($raccourci_regexp);
    320         list($raccourci_unique, ) = calculer_raccourci_unique($raccourci_regexp, $utilisations['raccourcis']);
     333        list($raccourci) = extraire_arguments($raccourci_regexp);
     334        list($raccourci_unique) = calculer_raccourci_unique($raccourci_regexp, $utilisations['raccourcis']);
    321335        // TODO : si un raccourci est identique dans deux modules différents on va écraser l'index existant
    322336
    323337        $occurrence[] = $ligne;
    324338
    325         $item = ($module ? "$module:$raccourci_unique" : $raccourci_unique);
     339        $item = ($module ? "${module}:${raccourci_unique}" : $raccourci_unique);
    326340        $utilisations['raccourcis'][$item] = $raccourci;
    327341        $utilisations['modules'][$item] = $module;
    328         $utilisations['items'][$item] = ($module ? "$module:$raccourci" : $raccourci);
     342        $utilisations['items'][$item] = ($module ? "${module}:${raccourci}" : $raccourci);
    329343        $utilisations['occurrences'][$item][$fichier][$no_ligne][] = $occurrence;
    330344        $utilisations['suffixes'][$item] = $raccourci_partiellement_variable;
     
    339353
    340354/**
    341  * Gérer les arguments
     355 * Gérer les arguments.
    342356 *
    343357 * La RegExp utilisee ci-dessous est defini dans phraser_html ainsi:
    344358 * define('NOM_DE_BOUCLE', "[0-9]+|[-_][-_.a-zA-Z0-9]*");
    345359 * define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)(\*{0,2})");
    346  *
    347  * @param string        $raccourci_regexp
     360 *
     361 * @param string $raccourci_regexp
     362 *
    348363 * @return array
    349364 */
    350365function extraire_arguments($raccourci_regexp) {
     366
    351367        include_spip('public/phraser_html');
    352         $arguments = '';
     368        $arguments = array();
    353369        if (preg_match_all('/' . NOM_DE_CHAMP . '/S', $raccourci_regexp, $matches, PREG_SET_ORDER)) {
    354                 foreach($matches as $_match) {
     370                foreach ($matches as $_match) {
    355371                        $nom = strtolower($_match[4]);
    356                         $raccourci_regexp = str_replace($_match[0], "@$nom@", $raccourci_regexp);
    357                         $arguments[]= "$nom=" . $_match[0];
    358                 }
    359                 $arguments = '{' . join(',',$arguments) . '}';
     372                        $raccourci_regexp = str_replace($_match[0], "@${nom}@", $raccourci_regexp);
     373                        $arguments[] = "${nom}=" . $_match[0];
     374                }
     375                $arguments = '{' . join(',', $arguments) . '}';
    360376        }
    361377
    362378        return array($raccourci_regexp, $arguments);
    363379}
    364 
    365380
    366381/**
     
    368383 * Cette fonction renvoie un tableau composé des items obsolètes et des items potentiellement obsolètes.
    369384 *
    370  * @param array         $utilisations
    371  *              Tableau des occurrences d'utilisation d'items de langue dans le code de l'arborescence choisie.
    372  * @param string        $module
    373  *              Nom du module de langue en cours de vérification.
    374  * @param array         $items_module
    375  *              Liste des items de langues contenus dans le module de langue en cours de vérification. L'index est
    376  *              le raccourci, la valeur la traduction brute.
     385 * @param array  $utilisations
     386 *                             Tableau des occurrences d'utilisation d'items de langue dans le code de l'arborescence choisie.
     387 * @param string $module
     388 *                             Nom du module de langue en cours de vérification.
     389 * @param array  $items_module
     390 *                             Liste des items de langues contenus dans le module de langue en cours de vérification. L'index est
     391 *                             le raccourci, la valeur la traduction brute.
    377392 *
    378393 * @return array
    379  *              Tableau des items obsolètes ou potentiellement obsolètes. Ce tableau associatif possède une structure
    380  *              à deux index :
     394 *               Tableau des items obsolètes ou potentiellement obsolètes. Ce tableau associatif possède une structure
     395 *               à deux index :
    381396 *
    382397 *              - 'occurrences_non' : liste des items obsolètes;
     
    385400 */
    386401function reperer_items_non_utilises($utilisations, $module, $items_module) {
    387         $item_non = $item_non_mais = $item_peut_etre = array();
    388402
    389403        // On boucle sur la liste des items de langue ($items_module) du module en cours de vérification ($module).
    390404        // On teste chaque item pour trouver une utilisation
     405        $item_non = $item_non_mais = $item_peut_etre = array();
    391406        foreach ($items_module as $_raccourci => $_traduction) {
    392407                // Il faut absolument tester l'item complet soit module:raccourci car sinon
     
    394409                // Pour cela la valeur de chaque index des sous-tableaux $utilisations est l'item complet
    395410                // (module:raccourci).
    396                 $item = "$module:$_raccourci";
     411                $item = "${module}:${_raccourci}";
    397412                $index_variable = '';
    398413                if (!in_array($item, $utilisations['items'])) {
     
    403418
    404419                        // On cherche si l'item est détectable dans un contexte variable
    405                         foreach($utilisations['raccourcis'] as $_cle => $_valeur) {
     420                        foreach ($utilisations['raccourcis'] as $_cle => $_valeur) {
    406421                                if ($utilisations['suffixes'][$_cle]) {
    407422                                        if (substr($_raccourci, 0, strlen($_valeur)) == $_valeur) {
     
    447462
    448463        return array(
    449                         'occurrences_non' => $item_non,
    450                         'occurrences_non_mais' => $item_non_mais,
    451                         'occurrences_peut_etre' => $item_peut_etre,
    452                         );
    453 }
    454 
     464                'occurrences_non'       => $item_non,
     465                'occurrences_non_mais'  => $item_non_mais,
     466                'occurrences_peut_etre' => $item_peut_etre,
     467        );
     468}
    455469
    456470/**
     
    458472 * Cette fonction renvoie un tableau composé des items manquants et des items potentiellement manquants.
    459473 *
    460  * @param array         $utilisations
    461  *              Tableau des occurrences d'utilisation d'items de langue dans le code de l'arborescence choisie.
    462  * @param string        $module
    463  *              Nom du module de langue en cours de vérification.
    464  * @param array         $items_module
    465  *              Liste des items de langues contenus dans le module de langue en cours de vérification. L'index est
    466  *              le raccourci, la valeur la traduction brute.
    467  * @param array         $fichiers_langue
    468  *              Liste des fichiers de langue 'fr' présent sur site et dans lesquels il est possible de trouver
    469  *              certains items de langue.
     474 * @param array  $utilisations    Tableau des occurrences d'utilisation d'items de langue dans le code de l'arborescence choisie.
     475 * @param string $module          Nom du module de langue en cours de vérification.
     476 * @param array  $items_module    Liste des items de langues contenus dans le module de langue en cours de vérification. L'index est
     477 *                                le raccourci, la valeur la traduction brute.
     478 * @param array  $fichiers_langue Liste des fichiers de langue 'fr' présent sur site et dans lesquels il est possible de trouver
     479 *                                certains items de langue.
    470480 *
    471481 * @return array
    472482 */
    473 function reperer_items_non_definis($utilisations, $module, $items_module=array(), $fichiers_langue=array()) {
     483function reperer_items_non_definis($utilisations, $module, $items_module = array(), $fichiers_langue = array()) {
    474484
    475485        // Constitution du tableau de tous les items de langue fr disponibles sur le site et stockage de la liste
     
    494504                // Il faut absolument tester l'item complet soit module:raccourci car sinon
    495505                // on pourrait vérifier un raccourci identique d'un autre module.
    496                 if (!isset($items_module[$_raccourci]) OR ($module_utilise != $module)) {
     506                if (!isset($items_module[$_raccourci]) or ($module_utilise != $module)) {
    497507                        $complement[$_raccourci] = array();
    498508                        if (!$utilisations['suffixes'][$_cle]) {
     
    512522                                        $module_utilise_verifiable = false;
    513523                                        $raccourci_dans_module_utilise = false;
    514                                         if ($module_utilise != "" && in_array($module_utilise, $modules_tous_lang)) {
     524                                        if ($module_utilise != '' && in_array($module_utilise, $modules_tous_lang)) {
    515525                                                $module_utilise_verifiable = true;
    516526                                                if (array_key_exists($_raccourci, $tous_lang)) {
     
    518528                                                                // $_item_tous_lang[1] contient toujours le nom du module exact à savoir
    519529                                                                // pour le core spip, public ou ecrire
    520                                                                 if (!$_item_tous_lang[1]) continue;
     530                                                                if (!$_item_tous_lang[1]) {
     531                                                                        continue;
     532                                                                }
    521533                                                                $raccourci_dans_module_utilise =
    522534                                                                        $module_utilise ?
    523535                                                                        ($_item_tous_lang[1] == $module_utilise) :
    524                                                                         (($_item_tous_lang[1]=='spip') OR ($_item_tous_lang[1]=='ecrire') OR ($_item_tous_lang[1]=='public'));
     536                                                                        (($_item_tous_lang[1] == 'spip') or ($_item_tous_lang[1] == 'ecrire') or ($_item_tous_lang[1] == 'public'));
    525537                                                                if ($raccourci_dans_module_utilise) {
    526538                                                                        break;
     
    553565                                                } else {
    554566                                                        $item_ok = false;
    555                                                         if($module_utilise == ""){
    556                                                                 /**
    557                                                                  * Cas 3.5
    558                                                                  * On vérifie si le raccourci est dans un module de spip par défaut (spip, public, ecrire, local)
    559                                                                  * mais pas dans le module en cours de vérification, il y a de grande chance que ce soit ok mais on le notifie
    560                                                                  */
     567                                                        if ($module_utilise == '') {
     568                                                                // Cas 3.5
     569                                                                // On vérifie si le raccourci est dans un module de spip par défaut (spip, public, ecrire, local)
     570                                                                // mais pas dans le module en cours de vérification, il y a de grande chance que ce soit ok mais on le notifie
    561571                                                                $modules_vides = array('local','public','spip','ecrire'); // Les modules par défaut de SPIP
    562572                                                                if (array_key_exists($_raccourci, $tous_lang)) {
     
    564574                                                                                // $_item_tous_lang[1] contient toujours le nom du module exact à savoir
    565575                                                                                // pour le core spip, public ou ecrire
    566                                                                                 if (!$_item_tous_lang[1]) continue;
    567                                                                                 if(in_array($_item_tous_lang[1],$modules_vides)){
     576                                                                                if (!$_item_tous_lang[1]) {
     577                                                                                        continue;
     578                                                                                }
     579                                                                                if (in_array($_item_tous_lang[1], $modules_vides)) {
    568580                                                                                        $item_oui_mais[$_raccourci] = $utilisations['occurrences'][$_cle];
    569581                                                                                        $item_ok = true;
     
    572584                                                                }
    573585                                                        }
    574                                                         if(!$item_ok){
     586                                                        if (!$item_ok) {
    575587                                                                // Cas 4 : le raccourci n'est ni dans le module en cours de vérification, ni dans le
    576588                                                                // module de l'occurrence de vérification. Il est donc non défini mais on ne sait pas
    577589                                                                // si cela concerne le module en cours ou pas.
    578        
    579                                                                 // Si pas normalise, c'est une auto-definition
    580                                                                 // Si l'index est deja pris pour un autre texte
    581                                                                 // (48 caracteres initiaux communs)
    582                                                                 // forcer un suffixe md5
    583                                                                 // TODO : a priori ce code devrait être obsolete
    584                                                                 $md5 = $_raccourci;
    585                                                                 if (!preg_match(',^\w+$,', $_raccourci)) {
    586                                                                         if (isset($tous_lang[$_raccourci])
    587                                                                         AND !preg_match("%^\s*'$_raccourci',?\s*$%", $tous_lang[$_cle][0][2])) {
    588                                                                                 $md5 .= '_' . md5($_raccourci);
    589                                                                         }
    590                                                                 }
    591590                                                                $item_non_mais[$_raccourci] = $utilisations['occurrences'][$_cle];
    592591                                                                $complement[$_raccourci][0] = _T('langonet:complement_definis_non_mais_cas4', $options);
     
    608607                                        //    (commence par le raccourci).
    609608                                        $item_approchant = '';
    610                                         foreach($items_module as $_item => $_traduction) {
     609                                        foreach ($items_module as $_item => $_traduction) {
    611610                                                if (substr($_item, 0, strlen($_raccourci)) == $_raccourci) {
    612611                                                        $item_approchant = $_item;
     
    625624
    626625        return array(
    627                         'occurrences_non' => $item_non,
    628                         'occurrences_non_mais' => $item_non_mais,
    629                         'occurrences_oui_mais' => $item_oui_mais,
    630                         'occurrences_peut_etre' => $item_peut_etre,
    631                         'complements' => $complement,
    632                         );
    633 }
    634 
     626                'occurrences_non'       => $item_non,
     627                'occurrences_non_mais'  => $item_non_mais,
     628                'occurrences_oui_mais'  => $item_oui_mais,
     629                'occurrences_peut_etre' => $item_peut_etre,
     630                'complements'           => $complement,
     631        );
     632}
  • _plugins_/langonet/trunk/langonet_fonctions.php

    r115874 r115884  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57if (!defined('_LANGONET_DOSSIERS_EXCLUS')) {
     
    1517         * - plugins_dist
    1618         * - plugins_suppl
    17          * - squelettes
     19         * - squelettes.
    1820         */
    1921        define('_LANGONET_DOSSIERS_EXCLUS', '');
     
    2123
    2224/**
    23  * Creation de la liste des fichiers de langue generes
    24  *
    25  * @return array
    26  */
    27 function langonet_lister_fichiers_lang($operation='generation') {
     25 * Creation de la liste des fichiers de langue generes.
     26 *
     27 * @param mixed $operation
     28 *
     29 * @return array
     30 */
     31function langonet_lister_fichiers_lang($operation = 'generation') {
    2832
    2933        // On cherche le dernier fichier de log de chaque fichier de langue
    3034        $liste_tous = array();
    31         $sous_dir = (!$operation OR ($operation == 'generation')) ? 'generation/': "verification/${operation}/";
     35        $sous_dir = (!$operation or ($operation == 'generation')) ? 'generation/' : "verification/${operation}/";
    3236        $langues = preg_files(_DIR_TMP . "langonet/${sous_dir}", '[^/]*_[\w{2,3}]*.php$');
    3337        foreach ($langues as $_fichier) {
     
    3842}
    3943
    40 
    41 /**
    42  * Bulle d'information des liens de telechargement
     44/**
     45 * Bulle d'information des liens de telechargement.
    4346 *
    4447 * @param string $fichier
    4548 * @param string $type
    4649 * @param string $action
     50 *
    4751 * @return string
    4852 */
    49 
    50 function langonet_creer_bulle_fichier($fichier, $type='lang', $action='telecharger') {
     53function langonet_creer_bulle_fichier($fichier, $type = 'lang', $action = 'telecharger') {
    5154
    5255        // Date du fichier formatee
     
    5962
    6063/**
    61  * Creation du select des fichiers de langue
     64 * Creation du select des fichiers de langue.
    6265 *
    6366 * @param string $sel_l
    64  * @return array
    65  */
    66 function langonet_creer_select_langues($sel_l='0', $exclure_paquet=true) {
     67 * @param mixed  $exclure_paquet
     68 *
     69 * @return array
     70 */
     71function langonet_creer_select_langues($sel_l = '0', $exclure_paquet = true) {
     72
    6773        $retour = creer_selects($sel_l, array(), $exclure_paquet);
     74
    6875        return $retour['fichiers'];
    6976}
    7077
    7178/**
    72  * Creation du select des arborescences a scanner
     79 * Creation du select des arborescences a scanner.
    7380 *
    7481 * @param string $sel_d
    75  * @return array
    76  */
    77 function langonet_creer_select_dossiers($sel_d=array(), $multiple=true) {
    78         if (is_string($sel_d)) $sel_d = array($sel_d);
     82 * @param mixed  $multiple
     83 *
     84 * @return array
     85 */
     86function langonet_creer_select_dossiers($sel_d = array(), $multiple = true) {
     87
     88        if (is_string($sel_d)) {
     89                $sel_d = array($sel_d);
     90        }
    7991        $retour = creer_selects('0', $sel_d, true, $multiple);
     92
    8093        return $retour['dossiers'];
    8194}
    8295
    83 
    84 function langonet_cadrer_expression($expression, $colonne, $ligne, $fichier, $cadre=4) {
     96function langonet_cadrer_expression($expression, $colonne, $ligne, $fichier, $cadre = 4) {
     97
    8598        $affiche = '';
    8699
    87100        if ($ligne) {
    88                 $debut = max($colonne-$cadre, 0);
     101                $debut = max($colonne - $cadre, 0);
    89102                // il faut calculer la taille exacte du préfixe : $colonne-$debut
    90103                $affiche = substr($ligne, $debut, $colonne - $debut + strlen($expression) + $cadre);
     
    94107                $index_fin = $debut + strlen($affiche);
    95108
    96                 $coloriser = NULL;
     109                $coloriser = null;
    97110                include_spip('public/parametrer'); // inclure les fichiers fonctions
    98111                $coloriser = chercher_filtre('coloration_code_color');
     
    103116                        $infos = pathinfo($fichier);
    104117                        $extension = ($infos['extension'] == 'html') ? 'html4strict' : $infos['extension'];
    105                         $affiche = $coloriser($affiche,  $extension, 'code', 'span');
    106                 }
    107                 else {
     118                        $affiche = $coloriser($affiche, $extension, 'code', 'span');
     119                } else {
    108120                        $affiche = '<code>' . htmlspecialchars($affiche) . '</code>';
    109121                }
     
    114126                // faite avant sur la chaine native.
    115127                $suspension = '&#8230;';
    116                 $affiche = ($debut > 0 ? $suspension : '') . trim($affiche) . ($index_fin < strlen($ligne)-1 ? $suspension : '');
     128                $affiche = ($debut > 0 ? $suspension : '') . trim($affiche) . ($index_fin < strlen($ligne) - 1 ? $suspension : '');
    117129        }
    118130
    119131        return $affiche;
    120132}
    121 
    122 
    123 
    124133
    125134/**
    126135 * Creation d'un tableau des selects:
    127136 * - des fichiers de langue
    128  * - des arborescences a scanner
    129  *
    130  * @param string $sel_l option du select des langues
    131  * @param array $sel_d option(s) du select des repertoires
    132  * @return array
    133  */
    134 function creer_selects($sel_l='0',$sel_d=array(), $exclure_paquet=true, $multiple=true) {
     137 * - des arborescences a scanner.
     138 *
     139 * @param string $sel_l          option du select des langues
     140 * @param array  $sel_d          option(s) du select des repertoires
     141 * @param mixed  $exclure_paquet
     142 * @param mixed  $multiple
     143 *
     144 * @return array
     145 */
     146function creer_selects($sel_l = '0', $sel_d = array(), $exclure_paquet = true, $multiple = true) {
     147
     148        // On récupère la liste des dossiers exclus du scan.
    135149        include_spip('inc/outiller');
    136 
    137         // On récupère la liste des dossiers exclus du scan.
    138150        $rep_exclus = explode(':', _LANGONET_DOSSIERS_EXCLUS);
    139151
    140152        // Recuperation des repertoires des plugins par défaut
    141         if(in_array('auto', $rep_exclus)){
     153        if (in_array('auto', $rep_exclus)) {
    142154                $rep_plugins = lister_dossiers_plugins();
    143155                foreach ($rep_plugins as $key => $rep_plugin) {
    144                         $rep_plugins[$key] = str_replace('auto/','',$rep_plugin);
     156                        $rep_plugins[$key] = str_replace('auto/', '', $rep_plugin);
    145157                }
    146158                $rep_auto = lister_dossiers_plugins(_DIR_PLUGINS_AUTO);
     
    165177                : array();
    166178        if ($perso) {
    167                 foreach($perso as $_rep) {
    168                         if (is_dir(_DIR_RACINE . $_rep))
     179                foreach ($perso as $_rep) {
     180                        if (is_dir(_DIR_RACINE . $_rep)) {
    169181                                $rep_perso[] = $_rep;
     182                        }
    170183                }
    171184        }
     
    185198        // construction des <select>
    186199        // -- les fichiers de langue
    187         $sel_lang = '<select name="fichier_langue" id="fichier_langue" style="margin-bottom:1em;">'."\n";
     200        $sel_lang = '<select name="fichier_langue" id="fichier_langue" style="margin-bottom:1em;">' . "\n";
    188201        $sel_lang .= '<option value="0"';
    189202        $sel_lang .= ($sel_l == '0') ? ' selected="selected">' : '>';
     
    192205        if ($multiple) {
    193206                $sel_dossier = '<select name="dossier_scan[]" id="dossier_scan" multiple="multiple">' . "\n";
    194         }
    195         else {
     207        } else {
    196208                $sel_dossier = '<select name="dossier_scan" id="dossier_scan">' . "\n";
    197209                $sel_dossier .= '<option value="0"';
     
    210222                        $reel_dir = _DIR_PLUGINS . $_rep;
    211223                        $ou_fichier = str_replace('../', '', $reel_dir) . '/';
    212                 }
    213                 else if (in_array($_rep, $rep_extensions)) {
     224                } elseif (in_array($_rep, $rep_extensions)) {
    214225                        $reel_dir = _DIR_PLUGINS_DIST . $_rep;
    215226                        $ou_fichier = str_replace('../', '', $reel_dir) . '/';
    216                 }
    217                 else if (in_array($_rep, $rep_suppl)) {
     227                } elseif (in_array($_rep, $rep_suppl)) {
    218228                        $reel_dir = _DIR_PLUGINS_SUPPL . $_rep;
    219229                        $ou_fichier = str_replace('../', '', $reel_dir) . '/';
    220                 }
    221                 else {
     230                } else {
    222231                        $reel_dir = _DIR_RACINE . $_rep;
    223232                        $ou_fichier = $_rep . '/';
     
    231240                        foreach ($fic_lang = preg_files($reel_dir . '/lang/', _LANGONET_PATTERN_FICHIERS_LANG, 250, false) as $le_module) {
    232241                                preg_match_all(_LANGONET_PATTERN_CODE_LANGUE, str_replace('.php', '', $le_module), $matches);
    233                                 $module = str_replace($matches[0][0].'.php', '', $le_module);
     242                                $module = str_replace($matches[0][0] . '.php', '', $le_module);
    234243                                $module = str_replace($reel_dir . '/lang/', '', $module);
    235244                                if (!$exclure_paquet
    236                                 OR ($exclure_paquet     AND (strtolower(substr($module, 0, 7)) != 'paquet-'))) {
     245                                or ($exclure_paquet and (strtolower(substr($module, 0, 7)) != 'paquet-'))) {
    237246                                        $langue = ltrim($matches[0][0], '_');
    238247                                        $ou_langue = str_replace('../', '', $reel_dir) . '/lang/';
    239                                         $value = $_rep.':'.$module.':'.$langue.':'.$ou_langue;
     248                                        $value = $_rep . ':' . $module . ':' . $langue . ':' . $ou_langue;
    240249                                        $opt_lang .= '<option value="' . $value;
    241250                                        $opt_lang .= ($value == $sel_l) ? '" selected="selected">' : '">';
     
    250259                }
    251260                $sel_dossier .= '<option value="' . $ou_fichier;
    252                 $sel_dossier .= (in_array($ou_fichier,$sel_d)) ? '" selected="selected">' : '">';
     261                $sel_dossier .= (in_array($ou_fichier, $sel_d)) ? '" selected="selected">' : '">';
    253262                $sel_dossier .= str_replace('../', '', $reel_dir) . '/</option>' . "\n";
    254263        }
     
    260269}
    261270
    262 
    263271/**
    264272 * Lister tous les plugins contenus dans une arborescence donnée.
    265273 *
    266274 * @param string $racine_arborescence
     275 *
    267276 * @return array
    268277 */
    269278// $rep_base  => le repertoire de depart de l'arboresence a scanner
    270 function lister_dossiers_plugins($racine_arborescence=null) {
    271         include_spip('inc/plugin');
     279function lister_dossiers_plugins($racine_arborescence = null) {
     280
    272281        // liste_plugin_files() integre les repertoires supplementaires de plugins
    273282        // dans le cadre de la mutualisation
     283        include_spip('inc/plugin');
    274284        $liste_dossiers = liste_plugin_files($racine_arborescence);
    275         if (is_null($racine_arborescence))
     285        if (is_null($racine_arborescence)) {
    276286                $racine_arborescence = _DIR_PLUGINS;
     287        }
    277288        $dossiers = array();
    278289        foreach ($liste_dossiers as $_dossier) {
     
    281292                if ($liste_sous_dossiers = glob($chemin . '/*/lang', GLOB_ONLYDIR)) {
    282293                        for ($i = 0; $i < count($liste_sous_dossiers); $i++) {
    283                         $dossiers[] = str_replace($racine_arborescence, '', str_replace('/lang', '', $liste_sous_dossiers[$i]));
     294                                $dossiers[] = str_replace($racine_arborescence, '', str_replace('/lang', '', $liste_sous_dossiers[$i]));
    284295                        }
    285296                }
    286297        }
     298
    287299        return $dossiers;
    288300}
    289 
    290301
    291302function langonet_lister_operations() {
     
    303314                );
    304315
    305                 // On complète par des collections fournies par d'autres plugin
     316                // On complète par des collections fournies par d'autres plugins
    306317                $operations = pipeline('declarer_operations_langonet', $operations);
    307318        }
  • _plugins_/langonet/trunk/paquet.xml

    r115874 r115884  
    22        prefix="langonet"
    33        categorie="outil"
    4         version="1.5.0"
     4        version="1.5.1"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.