Browse Source

Ajout d'une fonction de service pour compléter la description de chaque type de noisette lors de leur chargement. Simplifie la fonction de service de stockage et améliore les performances.

svn/root/tags/v0.10.0
eric@smellup.net 5 years ago
parent
commit
5eeca3c8a2
  1. 2
      inc/ncore_type_noisette.php
  2. 44
      ncore/ncore.php

2
inc/ncore_type_noisette.php

@ -132,6 +132,8 @@ function type_noisette_charger($plugin, $dossier = 'noisettes/', $recharger = fa
$description['necessite'] = serialize($description['necessite']);
$description['contexte'] = serialize($description['contexte']);
$description['parametres'] = serialize($description['parametres']);
// Complément spécifique au plugin utilisateur si nécessaire
$description = ncore_type_noisette_completer($plugin, $description, $stockage);
if (!$md5_stocke or $recharger) {
// Le type de noisette est soit nouveau soit on est en mode rechargement forcé:

44
ncore/ncore.php

@ -26,6 +26,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
*
* @uses ncore_chercher_service()
* @uses cache_lire()
* @uses cache_ecrire()
*
@ -111,6 +112,45 @@ function ncore_type_noisette_stocker($plugin, $types_noisette, $recharger, $stoc
return $retour;
}
/**
* Complète la description d'un type de noisette issue de la lecture de son fichier YAML.
*
* Le plugin N-Core ne complète pas les types de noisette.
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
*
* @uses ncore_chercher_service()
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param array $description
* Description du type de noisette issue de la lecture du fichier YAML. Suivant le plugin utilisateur elle
* nécessite d'être compléter avant son stockage.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
*
* @return array
* Description du type de noisette éventuellement compléter par le plugin utilisateur.
*/
function ncore_type_noisette_completer($plugin, $description, $stockage = '') {
$description_complete = $description;
// On cherche le service de stockage à utiliser selon la logique suivante :
// - si le service de stockage est non vide on l'utilise en considérant que la fonction existe forcément;
// - sinon, on utilise la fonction du plugin appelant si elle existe;
// - et sinon, on utilise la fonction de N-Core.
include_spip('inc/ncore_utils');
if ($completer = ncore_chercher_service($plugin, 'type_noisette_completer', $stockage)) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
$description_complete = $completer($plugin, $description);
}
return $description_complete;
}
/**
* Renvoie la description brute d'un type de noisette sans traitement typo ni désérialisation des champs de type
* tableau sérialisé.
@ -119,6 +159,7 @@ function ncore_type_noisette_stocker($plugin, $types_noisette, $recharger, $stoc
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
*
* @uses ncore_chercher_service()
* @uses cache_lire()
*
* @param string $plugin
@ -166,6 +207,7 @@ function ncore_type_noisette_decrire($plugin, $type_noisette, $stockage = '') {
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
*
* @uses ncore_chercher_service()
* @uses cache_lire()
*
* @param string $plugin
@ -609,7 +651,7 @@ function ncore_noisette_decrire($plugin, $noisette, $stockage = '') {
* Cette fonction est juste un aiguillage vers la fonction éventuelle du plugin utilisateur
* car N-Core ne fournit pas de calcul par défaut.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\SERVICE\CONTENEUR
*
* @uses ncore_chercher_service()
*

Loading…
Cancel
Save