Changeset 115858 in spip-zone


Ignore:
Timestamp:
Jul 3, 2019, 8:04:04 PM (3 weeks ago)
Author:
eric@…
Message:

Améliorer la sortie de la fonction plugin_lire pour distinguer le cas où on demande une seule information.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/svp/inc/svp_plugin.php

    r115857 r115858  
    1818 * @param array|string  $informations
    1919 *        Identifiant d'un champ ou de plusieurs champs de la description d'un plugin.
    20  *        Si l'argument est vide, la fonction renvoie les descriptions complètes.
     20 *        Si l'argument est vide, la fonction renvoie la description complète.
    2121 *
    22  * @return array
    23  *         La description brute complète ou partielle du plugin.
     22 * @return mixed
     23 *         La description brute complète ou partielle du plugin :
     24 *         - sous la forme d'une valeur simple si l'information demandée est unique (chaine)
     25 *         - sous la forme d'un tabelau associatif indexé par le nom du champ sinon.
    2426 */
    2527function plugin_lire($prefixe, $informations = array()) {
     
    4547
    4648                // -- Acquisition de tous les champs du plugin.
    47                 $plugins[$prefixe] = array();
     49                $plugins[$prefixe] = false;
    4850                if ($plugin = sql_fetsel('*', $from, $where, $group_by)) {
    4951                        $plugins[$prefixe] = $plugin;
     
    6264
    6365                // Extraction des seules informations demandées.
    64                 // Si un information n'est pas un champ valide elle n'est pas renvoyée sans monter d'erreur.
     66                // -- si on demande une information unique on renvoie la valeur simple, sinon on renvoie un tableau.
     67                // -- si une information n'est pas un champ valide elle n'est pas renvoyée sans monter d'erreur.
     68                if (is_array($informations)) {
     69                        if (count($informations) == 1) {
     70                                // Tableau d'une seule information : on revient à une chaine unique.
     71                                $informations = array_shift($informations);
     72                        } else {
     73                                $plugin = array_intersect_key($plugin, array_flip($informations));
     74                        }
     75                }
     76
    6577                if (is_string($informations)) {
    66                         $informations = array($informations);
     78                        if (in_array($informations, $champs_plugin)
     79                        and isset($plugin[$informations])) {
     80                                $plugin = $plugin[$informations];
     81                        }
    6782                }
    68                 $plugin = array_intersect_key($plugin, array_flip($informations));
    69         }
     83        }
    7084
    7185        return $plugin;
Note: See TracChangeset for help on using the changeset viewer.