Changeset 111688 in spip-zone


Ignore:
Timestamp:
Sep 26, 2018, 9:47:36 AM (7 months ago)
Author:
peetdu@…
Message:

Nettoyage (rastapopoulos) : eviter de stocker la config dans une liste a virgule avec ensuite des explode() partout dans le code (spip sait enregistrer les configs en tableaux et listes). Donc on met a jour la base pour transformer l'ancien stockage, et on met à jour le code en consequence
+ au passage aussi, pas besoin de remettre un préfixe rang_ devant le nom de la config puisque desormais on est deja dans un casier rang/.

Location:
_plugins_/rang/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rang/trunk/formulaires/configurer_rang.html

    r106496 r111688  
    1111               
    1212                #ACTION_FORMULAIRE{#ENV{action}}
    13                 #SET{name,rang_objets}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     13                #SET{name, objets}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
    1414                [(#SET{exclus, #REM|rang_objets_a_exclure})]
    1515
  • _plugins_/rang/trunk/formulaires/configurer_rang.php

    r106496 r111688  
    2525 **/
    2626function formulaires_configurer_rang_charger_dist() {
    27         $objets = lire_config('rang/rang_objets');
    28         if ($objets) {
    29                 $valeurs['rang_objets'] = explode(',', $objets);
    30         }
    31         $valeurs['rang_max'] = lire_config('rang/rang_max');
     27        $config = lire_config('rang');
     28       
     29        $valeurs['objets'] = $config['objets'] ? $config['objets'] : array();
     30        $valeurs['rang_max'] = $config['rang_max'];
    3231       
    3332        return $valeurs;
     
    4645
    4746        // création / mise à jour des métas
    48         if (!is_null(_request('rang_objets'))) {
    49                 $objets = array_filter(_request('rang_objets'));
    50                 ecrire_config('rang/rang_objets', is_array($objets) ? implode(',', $objets) : '');
     47        if (!is_null(_request('objets'))) {
     48                $objets = array_filter(_request('objets'));
     49                ecrire_config('rang/objets', $objets);
    5150        }
    5251        ecrire_config('rang/rang_max', _request('rang_max'));
     
    5958        return $res;
    6059}
    61 
    62 
  • _plugins_/rang/trunk/inc/rang_api.php

    r110448 r111688  
    1515
    1616/**
     17 * Remplir ou ressortir les tables ayant déjà un rang
     18 *
     19 * Au premier appel on fournit la liste complète de toutes les tables d'objets, pour faire la recherche.
     20 * Ensuite on peut appeler la fonction sans rien, et elle sortira la liste des tables qui ont un rang AVANT le plugin Rang.
     21 *
     22 * @param array $tables
     23 *              Le tableau complet de toutes les tables d'objets au premier appel
     24 **/
     25function rang_lister_tables_deja_rang($tables=null) {
     26        static $tables_deja_rang = null;
     27       
     28        // Si on n'a pas encore fait la recherche et qu'on a fourni la liste des tables d'objets
     29        if (is_null($tables_deja_rang) and is_array($tables)) {
     30                $tables_deja_rang = array();
     31                foreach ($tables as $table => $description) {
     32                        if (isset($description['field']['rang'])) {
     33                                $tables_deja_rang[] = $table;
     34                        }
     35                }
     36        }
     37       
     38        return $tables_deja_rang;
     39}
     40
     41/**
    1742 * Construire la liste des objets à exclure de la configuration
    1843 *
     
    3560        return $exclus;
    3661}
    37 
    38 /**
    39  * Tester si un mot-clé est lié
    40  *
    41  * @param array $tab
    42  *     tableau des items de la liste suite à une modification du classement
    43  * @param string $objet
    44  *     sur quel objet faire le classement
    45  * @param string $rubrique optionel
    46  *     dans quelle rubrique faire le classement
    47  * @return array
    48  *     note : sans ce return (a priori inutile, la fonction plante (???)
    49 **/
    50 function rang_objet_select($id_mot, $id_objet, $objet) {
    51         $id_mot = intval($id_mot);
    52         $id_objet = intval($id_objet);
    53         $res = sql_countsel('spip_mots_liens', array("id_mot=$id_mot", "id_objet=$id_objet", "objet=$objet"));
    54         if ($res > 0 ) return true;
    55         else return false;
    56 }
    57 
    58 
    59 /**
    60  * supprimer un mot, puis réordonner
    61  *
    62  * @param string $id
    63  *     id de la forme mot_xx
    64  * @return array
    65  *     note : sans ce return (a priori inutile, la fonction plante (???)
    66 **/
    67 // function rang_supprimer_item($id){
    68 //      // suppression du mot
    69 //      $new_id = intval(substr($id, 4));
    70 //      sql_delete('spip_mots', "id_mot=$new_id");
    71 
    72 //      //récupérer le tableau id/rang actuel
    73 //      $id_grp = sql_getfetsel('id_groupe', 'spip_groupes_mots', 'titre='.sql_quote('Actualités'));
    74 //      $res = sql_select('id_mot', 'spip_mots', "id_groupe=$id_grp", '', 'rang');
    75 //      while ($tab = sql_fetch($res)){
    76 //              $new_tab[] = 'id_mot_'.$tab['id_mot'];
    77 //      }
    78 
    79 //      //  réordonnement !
    80 //      $tab_result = rang_trier_items($new_tab);
    81 
    82 //      return $tab_result;
    83 // }
    8462
    8563/**
     
    9371function rang_creer_champs ($objets) {
    9472        foreach ($objets as $key => $table) {
    95 
    9673                if (!empty($table)) {
     74                        $champs_table = sql_showtable($table);
     75
    9776                        // si le champ 'rang' n'existe pas, le créer et le remplir
    98                         $champs_table = sql_showtable($table);
    9977                        if (!isset($champs_table['field']['rang'])) {
    100 
    10178                                // créer le champ 'rang'
    10279                                sql_alter('TABLE '.$table.' ADD rang SMALLINT NOT NULL');
     
    138115 *     les chemins sources vers les listes où activer Rang
    139116 **/
    140 
    141117function rang_get_sources() {
    142118        include_spip('inc/config');
     
    148124       
    149125        $sources = array();
    150         $objets_selectionnes = lire_config('rang/rang_objets');
    151         $objets=explode(',',$objets_selectionnes);
     126        $objets = lire_config('rang/objets');
    152127
    153128        foreach ($objets as $value) {
     
    186161        }
    187162        include_spip('base/objets_parents');
    188         $tables = explode(',', lire_config('rang/rang_objets'));
     163        $tables = lire_config('rang/objets');
    189164        $contextes = array();
     165       
    190166        foreach ($tables as $table) {
    191167                // le nom de l'objet au pluriel
  • _plugins_/rang/trunk/paquet.xml

    r111683 r111688  
    22        prefix="rang"
    33        categorie="navigation"
    4         version="1.0.4"
     4        version="1.0.5"
    55        etat="test"
    66        compatibilite="[3.1.0;3.2.*]"
    77        logo="prive/themes/spip/images/rang-64.png"
    88        documentation="https://contrib.spip.net/4994"
    9         schema="1.0.0"
     9        schema="1.0.1"
    1010>
    1111        <nom>Rang</nom>
  • _plugins_/rang/trunk/rang_administrations.php

    r111683 r111688  
    3131        );
    3232
     33        $maj['1.0.1'] = array(
     34                array('rang_maj_1_0_1'),
     35        );
     36
    3337        include_spip('base/upgrade');
    3438        maj_plugin($nom_meta_base_version, $version_cible, $maj);
     
    4751}
    4852
     53/**
     54 * Maj 1.0.1 : transformation de la config en liste tableau normal, pas à virgule
     55 **/
     56function rang_maj_1_0_1() {
     57        include_spip('inc/config');
     58       
     59        if (
     60                $config_actuelle = lire_config('rang/rang_objets')
     61                and is_string($config_actuelle)
     62        ) {
     63                // On transforme en tableau liste
     64                $config_nouvelle = explode(',', $config_actuelle);
     65                $config_nouvelle = array_map('trim', $config_nouvelle);
     66                $config_nouvelle = array_filter($config_nouvelle);
     67               
     68                // On enregistre
     69                ecrire_config('rang/objets', $config_nouvelle);
     70                effacer_config('rang/rang_objets');
     71        }
     72}
    4973
    5074/**
     
    5680**/
    5781function rang_vider_tables($nom_meta_base_version) {
     82        include_spip('inc/rang_api');
     83        include_spip('base/objets');
     84       
     85        // On appelle la fonction pour que ça lance le pipeline de Rang
     86        // et donc remplisse les tables ayant déjà un rang AVANT
     87        lister_tables_objets_sql();
     88        $tables_deja_rang = rang_lister_tables_deja_rang();
    5889
    59         include_spip('inc/rang_api');
    60 
    61         // supprimer les champs 'rang'
     90        // Supprimer les champs 'rang' sur les tables qui ne l'avaient pas avant
    6291        // note : ici que faire si un objet a ete selectionne, puis deselectionne dans la config ?
    63         $objets_selectionnes = lire_config('rang/rang_objets');
    64         $objets = explode(',', $objets_selectionnes);
    65         foreach ($objets as $value) {
    66                 $champs_table = sql_showtable($value);
    67                 if (isset($champs_table['field']['rang'])) {
    68                         sql_alter("TABLE $value DROP rang");
     92        $objets = lire_config('rang/objets');
     93        foreach ($objets as $table) {
     94                $champs_table = sql_showtable($table);
     95               
     96                // S'il y a bien toujours un champ "rang" mais que la table ne l'avait PAS avant
     97                if (isset($champs_table['field']['rang']) and !in_array($table, $tables_deja_rang)) {
     98                        sql_alter("TABLE $table DROP rang");
    6999                }
    70100        }
  • _plugins_/rang/trunk/rang_fonctions.php

    r110062 r111688  
    5656 */
    5757function rang_liste_objets() {
    58         $tables = explode(',', lire_config('rang/rang_objets'));
     58        $tables = lire_config('rang/objets');
    5959        $objets = array();
    6060        foreach ($tables as $table) {
     
    7878function rang_objet_dans_config($objet) {
    7979        $table = table_objet_sql($objet);
    80         $liste = explode(',', lire_config('rang/rang_objets'));
     80        $liste = lire_config('rang/objets');
    8181        return in_array($table, $liste);
    8282}
  • _plugins_/rang/trunk/rang_pipelines.php

    r110292 r111688  
    2121 *
    2222 * @param array $tables
    23  *
    2423 * @return array
    2524 */
    2625function rang_declarer_tables_objets_sql($tables) {
    27 
    28         $tables_objets_selectionnes = lire_config('rang/rang_objets');
    29         if (isset($tables_objets_selectionnes) AND !empty($tables_objets_selectionnes)) {
    30 
    31                 /* Declaration du champ Rang sur les objets sélectionnés */
    32                 $rang_objets  = rtrim(lire_config('rang/rang_objets'), ',');
    33                 $liste_objets = explode(',', $rang_objets);
    34 
    35                 foreach ($liste_objets as $table) {
    36                         $tables[$table]['field']['rang'] = "SMALLINT NOT NULL";
     26        $tables_objets_selectionnes = lire_config('rang/objets');
     27       
     28        // Tant qu'on n'a rien rajouté, on commence par lister les tables qui ont DEJA un champ rang !
     29        $tables_deja_rang = rang_lister_tables_deja_rang($tables);
     30       
     31        // On déclare le champ "rang" sur les tables demandées
     32        if (is_array($tables_objets_selectionnes)) {
     33                foreach ($tables_objets_selectionnes as $table) {
     34                        // Mais on ne déclare le champ que s'il n'existait pas déjà !
     35                        if (!isset($tables[$table]['field']['rang'])) {
     36                                $tables[$table]['field']['rang'] = "SMALLINT NOT NULL";
     37                        }
    3738                }
    3839        }
     40       
    3941        return $tables;
    4042}
     
    4446 *
    4547 * @param    array $flux Données du pipeline
    46  *
    4748 * @return    array        Données du pipeline
    4849 */
    4950function rang_recuperer_fond($flux) {
    50 
    51         $tables_objets_selectionnes = lire_config('rang/rang_objets');
     51        $tables_objets_selectionnes = lire_config('rang/objets');
     52       
    5253        if (isset($tables_objets_selectionnes) AND !empty($tables_objets_selectionnes)) {
    5354
     
    109110 */
    110111function rang_pre_edition($flux) {
    111 
    112112        $rang_max = lire_config('rang/rang_max');
    113113
Note: See TracChangeset for help on using the changeset viewer.