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

Renommage.
Refactoring des messages du formulaire.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/isocode/trunk/inc/isocode_sourcer.php

    r100346 r100347  
    11<?php
    22/**
    3  * Ce fichier contient la fonction générique de lecture d'un fichier CSV en un tableau d'éléments d'une
    4  * table de la base de données.
    5  *
    6  * @package SPIP\ISOCODE\OUTILS
     3 * Ce fichier contient la fonction générique de lecture d'un fichier ou d'une page HTML source
     4 * en un tableau d'éléments prêt à être inséré dans une table de la base de données.
     5 *
     6 * @package SPIP\ISOCODE\LECTURE
    77 */
    88if (!defined('_ECRIRE_INC_VERSION')) {
     
    1919 * qui complète l'élément.
    2020 *
     21 * @api
     22 *
    2123 * @param string $service
    22  *        Nom du service associé à la lecture de la table.
     24 *      Nom du service associé à la lecture de la table.
    2325 * @param string $table
    24  *        Nom de la table concernée par la lecture de la source.
    25  *
    26  * @return array
    27  *        Tableau à deux éléments:
    28  *        - index 0 : la liste des éléments à enregistrer dans la table concernée
    29  *        - index 1 : le sha256 du fichier CSV source des éléments de la table
    30  */
    31 function inc_isocode_read($service, $table) {
     26 *      Nom de la table concernée par la lecture de la source.
     27 *
     28 * @return array
     29 *      Tableau à deux éléments:
     30 *      - index 0 : la liste des éléments à enregistrer dans la table concernée
     31 *      - index 1 : le sha256 de la source des éléments de la table
     32 */
     33function isocode_lire($service, $table) {
    3234
    3335        // Initialisations
    3436        $records = array();
    35         $sha_file = false;
    3637        $f_complete_record = "${table}_complete_by_record";
    3738        $f_complete_table = "${table}_complete_by_table";
     39        $sha_identique = true;
    3840
    3941        // Inclusion des configurations et des fonctions spécifiques au service qui fournit les données
     
    4446        $config = $GLOBALS['isocode'][$service]['tables'][$table];
    4547
    46         // Détermination de la clé primaire de la table
     48        // Détermination de la clé primaire de la table.
    4749        $primary_key_table = get_primary_key($table);
    4850
    49         // Initialisation d'un élément de la table par défaut (uniquement les champs de base)
     51        // Initialisation d'un élément de la table par défaut (uniquement les champs de base).
    5052        // Cela permet de s'assurer que chaque élément du tableau de sortie aura la même structure
    5153        // quelque soit les données lues dans la source.
     
    5355
    5456        // Récupération du contenu du fichier ou de la page HTML source et du sha associé. Pour les fichiers CSV
    55         // on renvoie aussi la liste des titres des colonnes.
     57        // on renvoie aussi la liste des titres des colonnes qui existe toujours.
    5658        list($content, $header, $sha) = get_source_content($service, $table, $config);
    5759        if ($content and $sha and $default_fields) {
    5860                // On n'analyse le contenu que si celui-ci a changé (sha différent de celui stocké).
    59                 include_spip('isocode_fonctions');
    6061                if (!isocode_comparer_sha($sha, $table)) {
     62                        $sha_identique = false;
    6163                        $primary_key_values = array();
    6264                        foreach ($content as $_element) {
     
    7072                                        $key = trim($_key);
    7173                                        // Seuls les champs identifiés dans la configuration sont récupérés dans le fichier
    72                                         if (isset($fields_config[$key])) {
    73                                                 $fields[$fields_config[$key]] = $_value ? trim($_value) : '';
     74                                        if (isset($config['basic_fields'][$key])) {
     75                                                $fields[$config['basic_fields'][$key]] = $_value ? trim($_value) : '';
    7476                                                // Vérifier si le champ en cours fait partie de la clé primaire et élaborer la clé
    7577                                                // primaire de l'élément en cours
    76                                                 if (in_array($fields_config[$key], $primary_key_table['list'])) {
    77                                                         $pkey_element[$fields_config[$key]] = $_value;
    78                                                         if (count($pkey_element) == $primary_key_table['count']) {
     78                                                if (in_array($config['basic_fields'][$key], $primary_key_table)) {
     79                                                        $pkey_element[$config['basic_fields'][$key]] = $_value;
     80                                                        if (count($pkey_element) == count($primary_key_table)) {
    7981                                                                $pkey_element_exists = true;
    8082                                                        }
     
    111113        }
    112114
    113         return array($records, $sha_file);
     115        return array($records, $sha, $sha_identique);
    114116}
    115117
     
    127129        if ($id_key = id_table_objet($table)) {
    128130                // On stocke la clé sous forme de liste pour les tests d'appartenance.
    129                 $primary_key['list'] = explode(',', $id_key);
     131                $primary_key = explode(',', $id_key);
    130132                // On trie la liste et on recompose la clé sous forme de chaine pour la gestion des doublons.
    131                 sort($primary_key['list']);
    132                 $primary_key['name'] = implode(',', $primary_key['list']);
    133                 // On stocke le nombre de champs de la clé.
    134                 $primary_key['count'] = count($primary_key['list']);
     133                sort($primary_key);
    135134        }
    136135
     
    144143 *
    145144 * @param string $table
    146  *        Nom de la table concernée par la lecture sans le préfixe `spip_`.
     145 *      Nom de la table concernée par la lecture sans le préfixe `spip_`.
    147146 * @param array  $fields_config
    148  *        Configuration de la correspondance entre le nom de la donnée dans la source
    149  *        et celui du champ dans la table.
     147 *      Configuration de la correspondance entre le nom de la donnée dans la source
     148 *      et celui du champ dans la table.
    150149 *
    151150 * @return array
     
    211210 * @param $table
    212211 * @param $config
    213  *        Configuration de la méthode de lecture de la source pour la table concernée.
     212 *      Configuration de la méthode de lecture de la source pour la table concernée.
    214213 *
    215214 * @return array
     
    233232                                $content = explode($config['parsing']['element']['delimiter'], $flux['page']);
    234233                        } else {
    235                                 // TODO : C'est une regexp... à compléter
     234                                // TODO : c'est une regexp... à compléter
    236235                        }
    237236                }
     
    304303        return $values;
    305304}
     305
     306
     307/**
     308 * Compare le sha passé en argument pour la table concernée avec le sha stocké dans la meta
     309 * pour cette même table.
     310 *
     311 * @api
     312 *
     313 * @param string $sha
     314 *      SHA à comparer à celui de la table.
     315 * @param string $table
     316 *      Nom de la table de code ISO (sans préfixe `spip_`) dont il faut comparer le sha
     317 *      stoké dans sa meta de chargement.
     318 *
     319 * @return bool
     320 *      `true` si le sha passé en argument est identique au sha stocké pour la table choisie, `false` sinon.
     321 */
     322function isocode_comparer_sha($sha, $table) {
     323
     324        $sha_identique = false;
     325
     326        // On récupère le sha de la table dans les metas si il existe (ie. la table a été chargée)
     327        include_spip('inc/config');
     328        $sha_stocke = lire_config("isocode/tables/${table}/sha", false);
     329
     330        if ($sha_stocke and ($sha == $sha_stocke)) {
     331                $sha_identique = true;
     332        }
     333
     334        return $sha_identique;
     335}
Note: See TracChangeset for help on using the changeset viewer.