Ignore:
Timestamp:
Nov 3, 2016, 8:10:52 PM (5 years ago)
Author:
eric@…
Message:

Renommage.
Refactoring des messages du formulaire.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/isocode/trunk/isocode_fonctions.php

    r100330 r100347  
    1717 * @filtre
    1818 *
     19 * @uses isocode_lister_tables()
    1920 * @uses isocode_trouver_service()
    20  * @uses isocode_decharger_tables()
     21 * @uses isocode_lire()
     22 * @uses isocode_vider_tables()
    2123 *
    2224 * @param array $tables
     
    2628 *
    2729 * @return array
    28  *      Tableau résultat de l'action de vidage:
    29  *      - index 0 : `true` si le vidage a réussi, `false` sinon.
    30  *      - index 1 : liste des tables en erreur ou tableau vide sinon.
    31  *        - index 2 : liste des tables inchangées ou tableau vide sinon.
     30 *      Tableau associatif résultat de l'action de vidage:
     31 *      - index `ok`         : `true` si le vidage a réussi, `false` sinon.
     32 *      - index `tables_ok`  : liste des tables vidées avec succès ou tableau vide sinon.
     33 *      - index `tables_nok` : liste des tables en erreur ou tableau vide sinon.
     34 *      - index `tables_sha` : liste des tables inchangées (SHA identique) ou tableau vide sinon.
    3235 */
    3336function isocode_charger_tables($tables = array()) {
    3437
    35         $retour = array(true, array(), array());
     38        $retour = array(
     39                'ok'         => true,
     40                'tables_ok'  => array(),
     41                'tables_nok' => array(),
     42                'tables_sha' => array()
     43        );
    3644
    3745        // Suivant le tableau fourni en argument, on détermine la liste exacte des tables à charger.
     
    4654                $tables = array($tables);
    4755        } elseif (!is_array($tables)) {
     56                // L'argument n'est pas compréhensible, on met la liste à vide pour sortir sans traitement
     57                // et on enregistre l'erreur.
     58                $retour['ok'] = false;
     59                $retour['tables_nok'][] = $tables;
    4860                $tables = array();
    4961        }
     
    5769                include_spip('inc/config');
    5870                foreach ($tables as $_table) {
    59                         $erreur_table = false;
     71                        $erreur_table = true;
    6072                        $sha_identique = false;
    6173
     
    6375                        $service = isocode_trouver_service($_table);
    6476                        if ($service) {
    65                                 // Détermination de la fonction de lecture de la table et lecture des données contenues
    66                                 // soit dans un fichier soit dans une page web.
     77                                // Lecture des données contenues soit dans un fichier soit dans une page web et renvoie d'une liste
     78                                // d'éléments prêts à être enregistrés dans la table concernée.
    6779                                // Si la table est déjà chargée et que le fichier ou la page source n'a pas changé, la fonction de
    68                                 // lecture ne renvoie aucun élément pour éviter des traitements inutiles. Il faut donc distinguer
    69                                 // ce cas d'une erreur de lecture.
    70                                 include_spip("services/${service}/${service}_api");
    71                                 $lire_table = charger_fonction('isocode_read', 'inc');
    72                                 list($records, $sha) = $lire_table($service, $_table);
     80                                // lecture ne renvoie aucun élément pour éviter des traitements inutiles mais renvoie un indicateur
     81                                // sur le SHA.
     82                                include_spip('inc/isocode_sourcer');
     83                                list($records, $sha, $sha_identique) = isocode_lire($service, $_table);
    7384                                if ($records) {
    7485                                        // Suppression des éléments éventuels déjà chargés. On ne gère pas d'erreur
    75                                         // sur ce traitement car elle sera forcément détectée sur l'insert qui suit.
    76                                         isocode_decharger_tables($_table);
     86                                        // sur ce traitement car elle sera forcément détectée lors de l'insertion qui suit.
     87                                        isocode_vider_tables($_table);
    7788
    7889                                        // Insertion dans la base de données des éléments extraits
     
    8798                                                );
    8899                                                ecrire_config("isocode/tables/${_table}", $meta);
    89                                         } else {
    90                                                 $erreur_table = true;
    91                                         }
    92                                 } else {
    93                                         // Si le sha n'a pas changé la fonction de lecture renvoie aucun enregistrement mais ce n'est pas
    94                                         // une erreur à proprement parlé.
    95                                         $erreur_table = true;
    96                                         if (isocode_comparer_sha($sha, $_table)) {
    97                                                 $sha_identique = true;
     100                                                $erreur_table = false;
    98101                                        }
    99102                                }
     103                        }
     104
     105                        // Si la table est en erreur, on passe l'indicateur global à erreur et on stocke la table en nok
     106                        // ou en sha identique suivant la cas.
     107                        // Si le traitement est ok on stocke juste la table.
     108                        if ($erreur_table) {
     109                                $retour['ok'] = false;
     110                                if ($sha_identique) {
     111                                        $retour['tables_sha'][] = $_table;
     112                                } else {
     113                                        $retour['tables_nok'][] = $_table;
     114                                }
    100115                        } else {
    101                                 $erreur_table = true;
    102                         }
    103 
    104                         if ($erreur_table) {
    105                                 $retour[0] = false;
    106                                 if ($sha_identique) {
    107                                         $retour[2][] = $_table;
    108                                 } else {
    109                                         $retour[1][] = $_table;
    110                                 }
     116                                $retour['tables_ok'][] = $_table;
    111117                        }
    112118                }
     
    125131 * @filtre
    126132 *
     133 * @uses isocode_lister_tables()
     134 *
    127135 * @param array $tables
    128  *        Liste des noms de table sans le préfixe `spip_`.
    129  *
    130  * @return array
    131  *         Tableau résultat de l'action de vidage:
    132  *         - index 0 : `true` si le vidage a réussi, `false` sinon.
    133  *         - index 1 : liste des tables en erreur ou tableau vide sinon.
    134  */
    135 function isocode_decharger_tables($tables = array()) {
    136 
    137         $retour = array(true, array());
     136 *      Liste des tables à vider. Si le tableau est vide l'ensemble des tables
     137 *      seront vidées.
     138 *      Les tables doivent être libellées sans le préfixe `spip_`.
     139 *
     140 * @return array
     141 *      Tableau associatif résultat de l'action de vidage:
     142 *      - index `ok`         : `true` si le vidage a réussi, `false` sinon.
     143 *      - index `tables_ok`  : liste des tables vidées avec succès ou tableau vide sinon.
     144 *      - index `tables_nok` : liste des tables en erreur ou tableau vide sinon.
     145 */
     146function isocode_vider_tables($tables = array()) {
     147
     148        $retour = array(
     149                'ok'         => true,
     150                'tables_ok'  => array(),
     151                'tables_nok' => array()
     152        );
    138153
    139154        // Suivant le tableau fourni en argument, on détermine la liste exacte des tables à charger.
     
    148163                $tables = array($tables);
    149164        } elseif (!is_array($tables)) {
     165                // L'argument n'est pas compréhensible, on met la liste à vide pour sortir sans traitement
     166                // et on enregistre l'erreur.
     167                $retour['ok'] = false;
     168                $retour['tables_nok'][] = $tables;
    150169                $tables = array();
    151170        }
     
    159178                                // Supprimer la meta propre à la table.
    160179                                effacer_config("isocode/tables/${_table}");
     180                                // Enregistrer le succès du déchargement de la table
     181                                $retour['tables_ok'][] = $_table;
    161182                        } else {
    162                                 $retour[0] = false;
    163                                 $retour[1][] = $_table;
     183                                $retour['ok'] = false;
     184                                $retour['tables_nok'][] = $_table;
    164185                        }
    165186                }
     
    175196 *
    176197 * @api
     198 * @filtre
     199 *
     200 * @uses isocode_lister_services()
    177201 *
    178202 * @param $table
    179  *        Nom d'une table de codes ISO sans le préfixe `spip_`.
     203 *      Nom d'une table sans le préfixe `spip_`.
    180204 *
    181205 * @return string
    182  *        Nom du service permettant le chargement de la table ou chaine vide si aucun service n'est trouvé.
     206 *      Nom du service permettant le chargement de la table ou chaine vide si aucun service n'est trouvé.
    183207 */
    184208function isocode_trouver_service($table) {
     
    214238 *
    215239 * @api
    216  *
    217  * @return array
    218  *        La liste des services disponibles ou tableau vide aucun service n'est détecté.
     240 * @filtre
     241 *
     242 * @return array
     243 *      La liste des services disponibles ou tableau vide aucun service n'est détecté.
    219244 */
    220245function isocode_lister_services() {
     
    236261 *
    237262 * @api
    238  *
    239  * @param $service
    240  *        Nom du service à vérifier.
     263 * @filtre
     264 *
     265 * @uses isocode_lister_services()
     266 *
     267 * @param string $service
     268 *      Nom du service à vérifier.
    241269 *
    242270 * @return bool
     
    258286 * services donnés.
    259287 *
     288 * @api
     289 * @filtre
     290 *
     291 * @uses isocode_lister_services()
     292 * @uses isocode_service_disponible()
     293 *
    260294 * @param array $services
    261  *        Liste des services pour lesquels la liste des tables associées est demandée.
    262  *        Si la liste est vide la fonction renvoie les tables de tous les services dsponibles.
    263  *
    264  * @return array
    265  *        Liste des tables de codes ISO sans le préfixe `spip_`.
     295 *      Liste des services pour lesquels la liste des tables associées est demandée.
     296 *      Si la liste est vide la fonction renvoie les tables de tous les services disponibles.
     297 *
     298 * @return array
     299 *      Liste des tables sans le préfixe `spip_`.
    266300 */
    267301function isocode_lister_tables($services = array()) {
     
    300334 *
    301335 * @api
    302  *
    303  * @return array
    304  *        Liste des tables de codes ISO sans le préfixe `spip_` et leurs informations de chargement.
     336 * @filtre
     337 *
     338 * @return array
     339 *      Liste des tables de codes ISO sans le préfixe `spip_` et leurs informations de chargement.
    305340 */
    306341function isocode_informer_tables_chargees() {
     
    323358
    324359/**
    325  * Indique si une table de codes ISO est déjà chargée ou pas en base de données.
     360 * Indique si une table est déjà chargée ou pas en base de données.
    326361 * La fonction scrute la table `spip_${table}` et non la meta propre à la table.
    327362 *
     
    330365 *
    331366 * @param string $table
    332  *        Nom de la table sans le préfixe `spip_`.
     367 *      Nom de la table sans le préfixe `spip_`.
    333368 * @param array  $meta_table
    334  *        Meta propre à la table, créée lors du chargement de celle-ci et retournée si la table
    335  *        est déjà chargée.
     369 *      Meta propre à la table, créée lors du chargement de celle-ci et retournée si la table
     370 *      est déjà chargée.
    336371 *
    337372 * @return bool
    338  *        `true` si la table est chargée, `false` sinon.
     373 *      `true` si la table est chargée, `false` sinon.
    339374 */
    340375function isocode_table_chargee($table, &$meta_table) {
     
    352387        return $table_chargee;
    353388}
    354 
    355 
    356 /**
    357  * Compare le sha passé en argument pour la table concernée avec le sha stocké dans la meta
    358  * pour cette même table.
    359  *
    360  * @api
    361  *
    362  * @param string $sha
    363  *        Sha à comparer à celui de la table.
    364  * @param string $table
    365  *        Nom de la table de code ISO (sans préfixe `spip_`) dont il faut comparer le sha
    366  *        stoké dans sa meta de chargement.
    367  *
    368  * @return bool
    369  *      `true` si le sha passé en argument est identique au sha stocké pour la table choisie, `false` sinon.
    370  */
    371 function isocode_comparer_sha($sha, $table) {
    372 
    373         $sha_identique = false;
    374 
    375         // On récupère le sha de la table dans les metas si il existe (ie. la table a été chargée)
    376         include_spip('inc/config');
    377         $sha_stocke = lire_config("isocode/tables/${table}/sha", false);
    378 
    379         if ($sha_stocke and ($sha == $sha_stocke)) {
    380                 $sha_identique = true;
    381         }
    382 
    383         return $sha_identique;
    384 }
Note: See TracChangeset for help on using the changeset viewer.