Changeset 114145 in spip-zone


Ignore:
Timestamp:
Feb 27, 2019, 4:11:44 PM (6 months ago)
Author:
peetdu@…
Message:

La fonction interne type_objet_info_parent($objet) retourne systématiquement un tableau de tableau. Harmonise la déclaration de tout type de parent.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/declarerparent/trunk/base/objets_parents.php

    r114132 r114145  
    1616 * @param $id_objet
    1717 *              Identifiant de l'objet dont on cherche le parent
    18  * @return
     18 * @return array|false
    1919 *      Retourne un tableau avec la clé "objet" et la clé "id_objet" décrivant le parent trouvé, ou false sinon
    2020 *
     
    2525        // Si on trouve une ou des méthodes de parent
    2626        if ($parent_methodes = type_objet_info_parent($objet)) {
     27
    2728                include_spip('base/abstract_sql');
    2829                $table = table_objet_sql($objet);
     
    3031                $id_objet = intval($id_objet);
    3132
    32                 // Les méthode qui sont un simple tableau sont forcées en tableau de tableau,
    33                 // pour pouvoir les parcourir comme les conditions
    34                 if (count($parent_methodes) == count($parent_methodes, COUNT_RECURSIVE)) {
    35                         $parent_methodes = array($parent_methodes);
    36                 }
     33
    3734                // On teste chacun méthode dans l'ordre, et dès qu'on a trouvé un parent on s'arrête
    3835                foreach ($parent_methodes as $parent_methode) {
     
    5047                                $select[] = $parent_methode['champ_type'];
    5148                        }
    52                        
     49
    5350                        // On lance la requête
    5451                        if ($ligne = sql_fetsel($select, $table, $where)) {
     
    5754                                if (isset($parent_methode['type'])) {
    5855                                        return array(
    59                                                 'objet' => $parent_methode['type'],
    60                                                 'id_objet' => intval($ligne[$parent_methode['champ']])
     56                                                'objet'         => $parent_methode['type'],
     57                                                'id_objet'      => intval($ligne[$parent_methode['champ']]),
    6158                                        );
    6259                                }
    6360                                elseif (isset($parent_methode['champ_type'])) {
    6461                                        return array(
    65                                                 'objet' => $ligne[$parent_methode['champ_type']],
    66                                                 'id_objet' => intval($ligne[$parent_methode['champ']])
     62                                                'objet'          => $ligne[$parent_methode['champ_type']],
     63                                                'id_objet'       => intval($ligne[$parent_methode['champ']]),
    6764                                        );
    6865                                }
     
    154151 *              Type de l'objet dont on cherche les informations de parent
    155152 * @return array
    156  *              Retourne un tableau contenant les informations de type et de champ pour trouver le parent ou false sinon
     153 *              Retourne un tableau de tableau contenant les informations de type et de champ pour trouver le parent ou false sinon
    157154 *
    158155 */
     
    168165                if ($infos = lister_tables_objets_sql($table)) {
    169166                        // S'il y a une description explicite de parent, c'est prioritaire
    170                         if (isset($infos['parent'])) {
    171                                 $parents[$objet] = $infos['parent'];
     167                        if (isset($infos['parent']) and is_array($infos['parent'])) {
     168                                if (count($infos['parent']) === count($infos['parent'], COUNT_RECURSIVE)) {
     169                                        $parents[$objet] = array($infos['parent']);
     170                                } else {
     171                                        $parents[$objet] = $infos['parent'];
     172                                }
    172173                        }
    173174                        // Sinon on cherche des cas courants connus magiquement, à commencer par id_rubrique
     
    213214                        // On ne va pas refaire les tests des différents cas, on réutilise
    214215                        if ($parent_methodes = type_objet_info_parent($objet_enfant)) {
    215                                 // Les méthode qui sont un simple tableau sont forcées en tableau de tableau,
    216                                 // pour pouvoir les parcourir comme les conditions
    217                                 if (count($parent_methodes) == count($parent_methodes, COUNT_RECURSIVE)) {
    218                                         $parent_methodes = array($parent_methodes);
    219                                 }
    220216                                // On parcourt les différents cas possible, si certains peuvent concerner l'objet demandé
    221217                                foreach ($parent_methodes as $parent_methode) {
     
    232228                                        }
    233229                                }
    234                                
    235230                        }
    236231                }
Note: See TracChangeset for help on using the changeset viewer.