Browse Source

Ajout du filtre prefixe dans la collection paquets de façon à pouvoir obtenir les paquets d'un plugin compatible avec un spip donné.

Mise à jour des nécessite.
Fonctionnement ok en spip 4.1
master v1.1.0
Eric Lupinacci 3 months ago
parent
commit
21b9a88694
  1. 55
      ezrest/svpapi.php
  2. 7
      paquet.xml
  3. 4
      svpapi_pipelines.php

55
ezrest/svpapi.php

@ -307,29 +307,41 @@ function paquets_collectionner($conditions, $filtres, $configuration) {
$collection = sql_allfetsel($select, $from, $where);
// On recherche maintenant la description des plugins correspondant aux paquets récupérés.
// -- Acquérir la configuration de la collection plugins.
// On recherche maintenant la description du ou des plugins correspondant aux paquets récupérés.
if ($collection) {
include_spip('ezrest/ezrest');
$configuration_plugins = configuration_ezrest_lire('plugins');
// -- Extraire des filtres de la collection paquets ceux qui sont compatibles pour la collection plugins.
$criteres = array_keys(array_column($configuration_plugins['filtres'], null, 'critere'));
$filtres_plugins = [];
foreach ($filtres as $_critere => $_valeur) {
if (in_array($_critere, $criteres)) {
$filtres_plugins[$_critere] = $_valeur;
// Si le filtre préfixe est utilisé c'est que l'on veut uniquement un seul plugin, inutile d'appeler la collection
// plugins entière
if (!empty($filtres['prefixe'])) {
// -- Liste des champs
$select = plugin_lister_champs('plugin', $options);
// -- Récupération des champs, le plugin existe forcément
include_spip('inc/svp_plugin');
$plugin = plugin_lire($filtres['prefixe'], $select);
// On crée le tableau comme pour le cas sans préfixe
$plugins[strtoupper($filtres['prefixe'])] = plugin_normaliser_champs('plugin', $plugin);
} else {
// -- Acquérir la configuration de la collection plugins.
include_spip('ezrest/ezrest');
$configuration_plugins = configuration_ezrest_lire('plugins');
// -- Extraire des filtres de la collection paquets ceux qui sont compatibles pour la collection plugins.
$criteres = array_keys(array_column($configuration_plugins['filtres'], null, 'critere'));
$filtres_plugins = [];
foreach ($filtres as $_critere => $_valeur) {
if (in_array($_critere, $criteres)) {
$filtres_plugins[$_critere] = $_valeur;
}
}
// Calculer les conditions associées aux filtres résiduels
$conditions_plugins = ezrest_conditionner(
'svpapi',
'plugins',
$filtres_plugins,
$configuration_plugins
);
// -- acquérir la liste des paquets en réutilisant les fonctions de la collection plugins
$plugins = plugins_collectionner($conditions_plugins, $filtres_plugins, $configuration_plugins);
}
// Calculer les conditions associées aux filtres résiduels
$conditions_plugins = ezrest_conditionner(
'svpapi',
'plugins',
$filtres_plugins,
$configuration_plugins
);
// -- acquérir la liste des paquets en réutilisant les fonctions de la collection plugins
$plugins = plugins_collectionner($conditions_plugins, $filtres_plugins, $configuration_plugins);
// On présente la liste des paquets par plugin, avec la description de chaque plugin.
// La liste des paquets d'un plugin est accessible dans un index 'paquets'.
@ -345,6 +357,9 @@ function paquets_collectionner($conditions, $filtres, $configuration) {
$paquets[$_paquet['prefixe']]['paquets'][denormaliser_version($_paquet['version'])] = plugin_normaliser_champs('paquet', $_paquet);
}
}
// Ranger les paquets par ordre alphabétique des préfixes
ksort($paquets);
}
return $paquets;

7
paquet.xml

@ -1,12 +1,11 @@
<paquet
prefix="svpapi"
categorie="outil"
version="1.0.1"
version="1.1.0"
etat="stable"
compatibilite="]3.2.999;4.0.*]"
compatibilite="]3.2.999;4.1.*]"
logo="svpapi.svg"
>
<nom>SVP API HTTP</nom>
<!-- Une API REST pour interroger un serveur de plugins SVP -->
@ -17,5 +16,5 @@
<pipeline nom="liste_ezcollection" inclure="svpapi_pipelines.php" />
<necessite nom="svp" compatibilite="[2.0.7;[" />
<necessite nom="ezrest" compatibilite="[0.1.0;]" />
<necessite nom="ezrest" compatibilite="[1.2.1;]" />
</paquet>

4
svpapi_pipelines.php

@ -60,6 +60,10 @@ function svpapi_liste_ezcollection($collections) {
'critere' => 'compatible_spip',
'est_obligatoire' => true
),
array(
'critere' => 'prefixe',
'est_obligatoire' => false
),
array(
'critere' => 'type_reponse',
'est_obligatoire' => false,

Loading…
Cancel
Save