Changeset 115854 in spip-zone


Ignore:
Timestamp:
Jul 3, 2019, 6:59:28 PM (3 weeks ago)
Author:
eric@…
Message:

Amélioration de l'API lire d'un plugin

File:
1 edited

Legend:

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

    r115853 r115854  
    2727        // Initialisation du tableau de sortie
    2828        static $plugins = array();
     29        static $champs_plugin = array();
    2930
    3031        // On passe le préfixe en majuscules pour être cohérent avec le stockage en base.
     
    3233
    3334        if (!isset($plugins[$prefixe])) {
    34                 // -- Identification des champs acceptables pour un plugin.
    35                 include_spip('base/objets');
    36                 $description_table = lister_tables_objets_sql('spip_plugins');
    37                 $champs_plugin = array_keys($description_table['field']);
    38 
    39                 // --Initialisation de la jointure entre plugins et dépôts.
     35                // Initialisation de la jointure entre plugins et dépôts.
    4036                $from = array('spip_plugins', 'spip_depots_plugins');
    4137                $group_by = array('spip_plugins.id_plugin');
    4238
    43                 // -- Préfixe, jointure et conditions sur la table des dépots pour éviter les plugins installés.
     39                // Préfixe, jointure et conditions sur la table des dépots pour éviter les plugins installés.
    4440                $where = array(
    4541                        'spip_plugins.prefixe=' . sql_quote($prefixe),
     
    4844                );
    4945
    50                 // -- Acquisition de tous les champs acceptables du plugin.
     46                // -- Acquisition de tous les champs du plugin.
    5147                $plugins[$prefixe] = array();
    52                 if ($plugin = sql_fetsel($champs_plugin, $from, $where, $group_by)) {
     48                if ($plugin = sql_fetsel('*', $from, $where, $group_by)) {
    5349                        $plugins[$prefixe] = $plugin;
    5450                }
     
    5854        $plugin = $plugins[$prefixe];
    5955        if ($plugin and $informations) {
     56                // Identification des champs acceptables pour un plugin.
     57                if (!$champs_plugin) {
     58                        include_spip('base/objets');
     59                        $description_table = lister_tables_objets_sql('spip_plugins');
     60                        $champs_plugin = array_keys($description_table['field']);
     61                }
     62
     63                // 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.
    6065                $plugin = array_intersect_key($plugin, array_flip($informations));
    6166        }
Note: See TracChangeset for help on using the changeset viewer.