Ignore:
Timestamp:
May 10, 2018, 11:33:22 PM (23 months ago)
Author:
rastapopoulos@…
Message:

Correction gros bug : le plugin supprimer les champs rang même sur les tables qui l'avaient déjà avant. Du coup on fait une fonction avec static qui garde en mémoire les tables avec ce champ déclaré avant que Rang ne complète la déclaration des objets. Et du coup lors de la désinstallation on a cette liste pour ne pas supprimer. Au passage on ne déclare aussi que si le champ n'est pas déjà déclaré.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rang/branches/automatique/inc/rang_api.php

    r110177 r110204  
    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 *
     
    4671 **/
    4772function rang_creer_champs ($objets) {
    48         foreach ($objets as $key => $table) {
     73        foreach ($objets as $table) {
    4974                if (!empty($table)) {
     75                        $champs_table = sql_showtable($table);
     76                       
    5077                        // si le champ 'rang' n'existe pas, le créer et le remplir
    51                         $champs_table = sql_showtable($table);
    5278                        if (!isset($champs_table['field']['rang'])) {
    53 
    5479                                // créer le champ 'rang'
    55                                 sql_alter('TABLE '.$table.' ADD rang SMALLINT NOT NULL');
     80                                sql_alter('TABLE ' . $table . ' ADD rang SMALLINT NOT NULL');
    5681
    5782                                // remplir #1 : si aucun numero_titre n'est trouvé, on met la valeur de l'id_prefixe dans rang
Note: See TracChangeset for help on using the changeset viewer.