Browse Source

Mise au point pour faire tout ce qu'on veut : stockage intégré pas intégré, désintégré...

svn/attic/tags/v010/106508
eric@smellup.net 5 years ago
parent
commit
162acfda0c
  1. 179
      inc/ncore_compilation.php
  2. 126
      inc/ncore_type_noisette.php
  3. 48
      inc/ncore_utils.php
  4. 178
      ncore_fonctions.php
  5. 39
      ncoredata/ncore.php

179
inc/ncore_compilation.php

@ -59,3 +59,182 @@ function ncore_noisette_config_ajax($service) {
return $defaut_ajax;
}
/**
* Détermine si la noisette spécifiée doit être incluse en AJAX ou pas.
*
* @api
* @filtre
*
* @param string $service
* Le service permet de distinguer l'appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* La fonction utilisera les fonctions de lecture de la configuration globale de l'ajax et de
* lecture du paramètre ajax de la noisette, spécifiques au service, ou à défaut, celles fournies par N-Core.
* @param string $noisette
* Identifiant de la $noisette.
*
* @return bool
* `true` si la noisette doit être ajaxée, `false` sinon.
*/
function ncore_noisette_est_ajax($service, $noisette) {
// On indexe le tableau des indicateurs ajax par le service appelant en cas d'appel sur le même hit
// par deux services différents.
static $est_ajax = array();
if (!isset($est_ajax[$service][$noisette])) {
// On détermine le cache en fonction du service, puis son existence et son contenu.
include_spip('inc/ncore_cache');
$est_ajax[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_AJAX);
// On doit recalculer le cache.
if (!$est_ajax[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On détermine la valeur par défaut de l'ajax des noisettes pour le service appelant.
$defaut_ajax = ncore_noisette_config_ajax($service);
// On repertorie la configuration ajax de toutes les noisettes disponibles et on compare
// avec la valeur par défaut configurée pour le service appelant.
if ($ajax_noisettes = ncore_noisette_lister($service,'ajax')) {
foreach ($ajax_noisettes as $_noisette => $_ajax) {
$est_ajax[$service][$_noisette] = ($_ajax == 'defaut')
? $defaut_ajax
: ($_ajax == 'non' ? false : true);
}
}
// On vérifie que la noisette demandée est bien dans la liste.
// Si non, on la rajoute en utilisant la valeur ajax par défaut afin de toujours renvoyer
// quelque chose.
if (!isset($est_ajax[$service][$noisette])) {
$est_ajax[$service][$noisette] = $defaut_ajax;
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_AJAX, $est_ajax[$service]);
}
}
return $est_ajax[$service][$noisette];
}
/**
* Détermine si la noisette spécifiée doit être incluse dynamiquement ou pas.
*
* @api
* @filtre
*
* @param string $service
* Le service permet de distinguer l'appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* La fonction utilisera les fonctions de lecture du paramètre d'inclusion de la noisette,
* spécifique au service, ou à défaut, celle fournie par N-Core.
* @param string $noisette
* Identifiant de la $noisette.
*
* @return bool
* `true` si la noisette doit être incluse dynamiquement, `false` sinon.
*/
function ncore_noisette_est_dynamique($service, $noisette) {
// On indexe le tableau des indicateurs ajax par le service appelant en cas d'appel sur le même hit
// par deux services différents.
static $est_dynamique = array();
if (!isset($est_dynamique[$service][$noisette])) {
// On détermine le cache en fonction du service, puis son existence et son contenu.
include_spip('inc/ncore_cache');
$est_dynamique[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_INCLUSION);
// On doit recalculer le cache.
if (!$est_dynamique[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On repertorie la configuration d'inclusion de toutes les noisettes disponibles et on
// détermine si celle-ci est dynamique ou pas.
if ($inclusion_noisettes = ncore_noisette_lister($service,'inclusion')) {
foreach ($inclusion_noisettes as $_noisette => $_inclusion) {
$est_dynamique[$service][$_noisette] = ($_inclusion == 'dynamique') ? true : false;
}
}
// On vérifie que la noisette demandée est bien dans la liste.
// Si non, on la rajoute en utilisant en positionnant l'inclusion dynamique à false.
if (!isset($est_dynamique[$service][$noisette])) {
$est_dynamique[$service][$noisette] = _NCORE_DYNAMIQUE_DEFAUT;
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_INCLUSION, $est_dynamique[$service]);
}
}
return $est_dynamique[$service][$noisette];
}
/**
* Renvoie le contexte de la noisette sous la forme d'un tableau éventuellement vide.
*
* @api
* @filtre
*
* @param string $service
* Le service permet de distinguer l'appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* La fonction utilisera les fonctions de lecture du contexte de la noisette, spécifique au service,
* ou à défaut, celle fournie par N-Core.
* @param string $noisette
* Identifiant de la $noisette.
*
* @return array
* Le tableau éventuellement vide des éléments de contexte de la noisette.
*/
function ncore_noisette_contexte($service, $noisette) {
// On indexe le tableau des indicateurs ajax par le service appelant en cas d'appel sur le même hit
// par deux services différents.
static $contexte = array();
if (!isset($contexte[$service][$noisette])) {
// On détermine le cache en fonction du service, puis son existence et son contenu.
include_spip('inc/ncore_cache');
$contexte[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE);
// On doit recalculer le cache.
if (!$contexte[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On repertorie la configuration du contexte de toutes les noisettes disponibles et on
// le renvoie le résultat tel quel.
$contexte[$service] = ncore_noisette_lister($service, 'contexte');
$contexte[$service] = unserialize($contexte[$service]);
// On vérifie que la noisette demandée est bien dans la liste.
// Si non, on la rajoute en utilisant en positionnant le contexte à tableau vide.
if (!isset($contexte[$service][$noisette])) {
$contexte[$service][$noisette] = array();
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE, $contexte[$service]);
}
}
return $contexte[$service][$noisette];
}

126
inc/ncore_type_noisette.php

@ -1,6 +1,6 @@
<?php
/**
* Ce fichier contient l'API N-Core de gestion des types de noisettes (squelettes).
* Ce fichier contient l'API N-Core de gestion des types de noisette, c'est-à-dire les squelettes et leur YAML.
*
* @package SPIP\NCORE\TYPE_NOISETTE
*/
@ -13,10 +13,12 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Charge ou recharge les descriptions des types de noisette à partir des fichiers YAML.
* Les types de noisettes (squelettes) sont recherchés dans un répertoire relatif fourni en argument.
* La fonction optimise le chargement en effectuant uniquement les traitements nécessaires
* en fonction des modifications, ajouts et suppressions des types de noisettes identifiés en comparant les md5
* des fichiers YAML.
* en fonction des modifications, ajouts et suppressions des types de noisettes identifiés en comparant
* les md5 des fichiers YAML.
*
* @api
* @uses ncore_type_noisette_lister()
* @uses ncore_type_noisette_stocker()
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
@ -27,7 +29,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @param bool $recharger
* Si `true` force le rechargement de toutes les types de noisettes, sinon le chargement se base sur le
* md5 des fichiers YAML. Par défaut vaut `false`.
* @param string $stockage
* @param string $stockage
* `stockage` : impose le type de stockage à utiliser pour les descriptions d'types de noisette et
* les signatures des fichiers YAML. Par défaut, la fonction cherche à utiliser le stockage fourni par le
* le plugin appelant et, à défaut, celui fourni par N-Core.
@ -51,7 +53,7 @@ function ncore_type_noisette_charger($plugin, $dossier = 'noisettes/', $recharge
include_spip("ncoredata/ncore");
// Initialisation des tableaux de types de noisette.
$types_a_ajouter = $types_a_changer = $types_a_effacer = array();
$types_noisette_a_ajouter = $types_noisette_a_changer = $types_noisette_a_effacer = array();
// Récupération des signatures md5 des noisettes déjà enregistrées.
// Si on force le rechargement il est inutile de gérer les signatures et les noisettes modifiées ou obsolètes.
@ -59,7 +61,7 @@ function ncore_type_noisette_charger($plugin, $dossier = 'noisettes/', $recharge
if (!$recharger) {
$signatures = ncore_type_noisette_lister($plugin, 'signature', $stockage);
// On initialise la liste des types de noisette à supprimer avec l'ensemble des types de noisette déjà stockés.
$types_a_effacer = $signatures ? array_keys($signatures) : array();
$types_noisette_a_effacer = $signatures ? array_keys($signatures) : array();
}
foreach ($fichiers as $_squelette => $_chemin) {
@ -150,13 +152,13 @@ function ncore_type_noisette_charger($plugin, $dossier = 'noisettes/', $recharge
if (!$md5_stocke or $recharger) {
// Le type de noisette est soit nouveau soit on est en mode rechargement forcé:
// => il faut le rajouter.
$types_a_ajouter[] = $description;
$types_noisette_a_ajouter[] = $description;
} else {
// La description stockée a été modifiée et le mode ne force pas le rechargement:
// => il faut mettre à jour le type de noisette.
$types_a_changer[] = $description;
$types_noisette_a_changer[] = $description;
// => et il faut donc le supprimer de la liste de types de noisette obsolètes
$types_a_effacer = array_diff($types_a_effacer, array($type_noisette));
$types_noisette_a_effacer = array_diff($types_noisette_a_effacer, array($type_noisette));
}
} else {
// Le type de noisette ne peut plus être utilisé car un des plugins qu'il nécessite n'est plus actif.
@ -166,7 +168,7 @@ function ncore_type_noisette_charger($plugin, $dossier = 'noisettes/', $recharge
} else {
// Le type de noisette n'a pas changé et n'a donc pas été réchargé:
// => Il faut donc juste indiquer qu'il n'est pas obsolète.
$types_a_effacer = array_diff($types_a_effacer, array($type_noisette));
$types_noisette_a_effacer = array_diff($types_noisette_a_effacer, array($type_noisette));
}
}
@ -177,11 +179,11 @@ function ncore_type_noisette_charger($plugin, $dossier = 'noisettes/', $recharge
// -- Update des types de noisette modifiés.
// -- Insertion des nouveaux types de noisette.
if ($recharger
or (!$recharger and ($types_a_ajouter or $types_a_effacer or $types_a_changer))) {
$types_noisette = array('a_ajouter' => $types_a_ajouter);
or (!$recharger and ($types_noisette_a_ajouter or $types_noisette_a_effacer or $types_noisette_a_changer))) {
$types_noisette = array('a_ajouter' => $types_noisette_a_ajouter);
if (!$recharger) {
$types_noisette['a_effacer'] = $types_a_effacer;
$types_noisette['a_changer'] = $types_a_changer;
$types_noisette['a_effacer'] = $types_noisette_a_effacer;
$types_noisette['a_changer'] = $types_noisette_a_changer;
}
$retour = ncore_type_noisette_stocker($plugin, $types_noisette, $recharger, $stockage);
}
@ -270,99 +272,3 @@ function ncore_type_noisette_informer($plugin, $noisette, $information = '', $tr
return $retour;
}
/**
* Phrase le fichier YAML d'une espece de noisette et renvoie sa description si celle-ci a changé
* sinon renvoie un indicateur permettant de savoir que le YAML est identique.
*
* @param string $noisette
* @param array $options
*
* @return array
*/
function noisette_phraser($noisette, $options = array()) {
// Initialisation de la description
$description = array();
// Initialiser le contexte de chargement
if (!isset($options['dossier'])) {
$options['dossier'] = 'noisettes/';
}
if (!isset($options['recharger'])) {
$options['recharger'] = false;
}
if (!isset($options['md5']) or $options['recharger']) {
$options['md5'] = '';
}
// Initialiser les composants de l'identifiant de la noisette:
// - type-noisette si la noisette est dédiée uniquement à une page
// - type-composition-noisette si la noisette est dédiée uniquement à une composition
// - noisette sinon
$type = '';
$composition = '';
$identifiants = explode('-', $noisette);
if (isset($identifiants[1])) {
$type = $identifiants[0];
}
if (isset($identifiants[2])) {
$composition = $identifiants[1];
}
// Initialisation de la description par défaut de la page
$description_defaut = array(
'noisette' => $noisette,
'type' => $type,
'composition' => $composition,
'nom' => $noisette,
'description' => '',
'icon' => 'noisette-24.png',
'necessite' => array(),
'contexte' => array(),
'ajax' => 'defaut',
'inclusion' => 'statique',
'parametres' => array(),
'signature' => '',
);
// Recherche des noisettes par leur fichier YAML uniquement.
$md5 = '';
$fichier = isset($options['yaml']) ? $options['yaml'] : find_in_path("{$options['dossier']}${noisette}.yaml");
if ($fichier) {
// il y a un fichier YAML de configuration, on vérifie le md5 avant de charger le contenu.
$md5 = md5_file($fichier);
if ($md5 != $options['md5']) {
include_spip('inc/yaml');
$description = yaml_charger_inclusions(yaml_decode_file($fichier));
// Traitements des champs pouvant être soit une chaine soit un tableau
if (!empty($description['necessite']) and is_string($description['necessite'])) {
$description['necessite'] = array($description['necessite']);
}
if (!empty($description['contexte']) and is_string($description['contexte'])) {
$description['contexte'] = array($description['contexte']);
}
}
}
// Si la description est remplie c'est que le chargement a correctement eu lieu.
// Sinon, si la noisette n'a pas changée on renvoie une description limitée à un indicateur d'identité pour
// distinguer ce cas avec une erreur de chargement qui renvoie une description vide.
if ($description) {
// Mise à jour du md5
$description['signature'] = $md5;
// Complétude de la description avec les valeurs par défaut
$description = array_merge($description_defaut, $description);
// Sérialisation des champs necessite, contexte et parametres qui sont des tableaux
$description['necessite'] = serialize($description['necessite']);
$description['contexte'] = serialize($description['contexte']);
$description['parametres'] = serialize($description['parametres']);
} elseif ($md5 == $options['md5']) {
$description['identique'] = true;
}
return $description;
}

48
inc/ncore_utils.php

@ -0,0 +1,48 @@
<?php
/**
* Ce fichier contient les utilitaires de N-Core.
*
* @package SPIP\NCORE\OUTILS
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Cherche une fonction donnée en se basant sur le service de stockage ou à défaut sur le plugin appelant.
* Si ni le service de stockage ni le plugin ne fournissent la fonction demandée la chaine vide est renvoyée.
*
* @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 bool $fonction
* Nom de la fonction à chercher.
* @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 d'un plugin
* fournissant le service de stockage souhaité.
*
* @return string
* Nom complet de la fonction si trouvée ou chaine vide sinon.
*/
function ncore_chercher_fonction($plugin, $fonction, $stockage = '') {
$fonction_trouvee = '';
// Si le stockage n'est pas précisé on cherche la fonction dans le plugin appelant.
if (!$stockage) {
$stockage = $plugin;
}
// Eviter la réentrance si on demande explicitement le stockage N-Core
if ($stockage != 'ncore') {
include_spip("ncoredata/${stockage}");
$fonction_trouvee = "${stockage}_${fonction}";
if (!function_exists($fonction_trouvee)) {
$fonction_trouvee = '';
}
}
return $fonction_trouvee;
}

178
ncore_fonctions.php

@ -12,181 +12,3 @@ if (!defined('_ECRIRE_INC_VERSION')) {
// ------------------------- API COMPILATION ---------------------------
// -------------------------------------------------------------------
/**
* Détermine si la noisette spécifiée doit être incluse en AJAX ou pas.
*
* @api
* @filtre
*
* @param string $service
* Le service permet de distinguer l'appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* La fonction utilisera les fonctions de lecture de la configuration globale de l'ajax et de
* lecture du paramètre ajax de la noisette, spécifiques au service, ou à défaut, celles fournies par N-Core.
* @param string $noisette
* Identifiant de la $noisette.
*
* @return bool
* `true` si la noisette doit être ajaxée, `false` sinon.
*/
function ncore_noisette_est_ajax($service, $noisette) {
// On indexe le tableau des indicateurs ajax par le service appelant en cas d'appel sur le même hit
// par deux services différents.
static $est_ajax = array();
if (!isset($est_ajax[$service][$noisette])) {
// On détermine le cache en fonction du service, puis son existence et son contenu.
include_spip('inc/ncore_cache');
$est_ajax[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_AJAX);
// On doit recalculer le cache.
if (!$est_ajax[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On détermine la valeur par défaut de l'ajax des noisettes pour le service appelant.
$defaut_ajax = ncore_noisette_config_ajax($service);
// On repertorie la configuration ajax de toutes les noisettes disponibles et on compare
// avec la valeur par défaut configurée pour le service appelant.
if ($ajax_noisettes = ncore_noisette_lister($service,'ajax')) {
foreach ($ajax_noisettes as $_noisette => $_ajax) {
$est_ajax[$service][$_noisette] = ($_ajax == 'defaut')
? $defaut_ajax
: ($_ajax == 'non' ? false : true);
}
}
// On vérifie que la noisette demandée est bien dans la liste.
// Si non, on la rajoute en utilisant la valeur ajax par défaut afin de toujours renvoyer
// quelque chose.
if (!isset($est_ajax[$service][$noisette])) {
$est_ajax[$service][$noisette] = $defaut_ajax;
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_AJAX, $est_ajax[$service]);
}
}
return $est_ajax[$service][$noisette];
}
/**
* Détermine si la noisette spécifiée doit être incluse dynamiquement ou pas.
*
* @api
* @filtre
*
* @param string $service
* Le service permet de distinguer l'appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* La fonction utilisera les fonctions de lecture du paramètre d'inclusion de la noisette,
* spécifique au service, ou à défaut, celle fournie par N-Core.
* @param string $noisette
* Identifiant de la $noisette.
*
* @return bool
* `true` si la noisette doit être incluse dynamiquement, `false` sinon.
*/
function ncore_noisette_est_dynamique($service, $noisette) {
// On indexe le tableau des indicateurs ajax par le service appelant en cas d'appel sur le même hit
// par deux services différents.
static $est_dynamique = array();
if (!isset($est_dynamique[$service][$noisette])) {
// On détermine le cache en fonction du service, puis son existence et son contenu.
include_spip('inc/ncore_cache');
$est_dynamique[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_INCLUSION);
// On doit recalculer le cache.
if (!$est_dynamique[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On repertorie la configuration d'inclusion de toutes les noisettes disponibles et on
// détermine si celle-ci est dynamique ou pas.
if ($inclusion_noisettes = ncore_noisette_lister($service,'inclusion')) {
foreach ($inclusion_noisettes as $_noisette => $_inclusion) {
$est_dynamique[$service][$_noisette] = ($_inclusion == 'dynamique') ? true : false;
}
}
// On vérifie que la noisette demandée est bien dans la liste.
// Si non, on la rajoute en utilisant en positionnant l'inclusion dynamique à false.
if (!isset($est_dynamique[$service][$noisette])) {
$est_dynamique[$service][$noisette] = _NCORE_DYNAMIQUE_DEFAUT;
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_INCLUSION, $est_dynamique[$service]);
}
}
return $est_dynamique[$service][$noisette];
}
/**
* Renvoie le contexte de la noisette sous la forme d'un tableau éventuellement vide.
*
* @api
* @filtre
*
* @param string $service
* Le service permet de distinguer l'appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* La fonction utilisera les fonctions de lecture du contexte de la noisette, spécifique au service,
* ou à défaut, celle fournie par N-Core.
* @param string $noisette
* Identifiant de la $noisette.
*
* @return array
* Le tableau éventuellement vide des éléments de contexte de la noisette.
*/
function ncore_noisette_contexte($service, $noisette) {
// On indexe le tableau des indicateurs ajax par le service appelant en cas d'appel sur le même hit
// par deux services différents.
static $contexte = array();
if (!isset($contexte[$service][$noisette])) {
// On détermine le cache en fonction du service, puis son existence et son contenu.
include_spip('inc/ncore_cache');
$contexte[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE);
// On doit recalculer le cache.
if (!$contexte[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On repertorie la configuration du contexte de toutes les noisettes disponibles et on
// le renvoie le résultat tel quel.
$contexte[$service] = ncore_noisette_lister($service, 'contexte');
$contexte[$service] = unserialize($contexte[$service]);
// On vérifie que la noisette demandée est bien dans la liste.
// Si non, on la rajoute en utilisant en positionnant le contexte à tableau vide.
if (!isset($contexte[$service][$noisette])) {
$contexte[$service][$noisette] = array();
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE, $contexte[$service]);
}
}
return $contexte[$service][$noisette];
}

39
ncoredata/ncore.php

@ -51,20 +51,15 @@ function ncore_type_noisette_stocker($plugin, $types_noisette, $recharger, $stoc
$retour = true;
// On cherche le service de stockage à utiliser selon la logique suivante :
// - si le service de stockage est non vide on l'utilise (la fonction doit exister);
// - 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.
if (!$stockage) {
$stockage = $plugin;
}
include_spip("ncoredata/${stockage}");
$stocker = "${stockage}_type_noisette_stocker";
if (function_exists($stocker)) {
include_spip('inc/ncore_utils');
if ($stocker = ncore_chercher_fonction($plugin, 'type_noisette_stocker', $stockage)) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
$retour = $stocker($plugin, $types_noisette, $recharger);
} else {
// Le plugin ne propose pas de fonction propre, on utilise celle de N-Core.
// Le plugin ne propose pas de fonction propre ou le stockage N-Core est explicitement demandé.
// Les descriptions de types de noisette et les signatures sont stockés dans deux caches distincts.
// -- Les descriptions : on conserve la signature pour chaque description, le tableau est réindexé avec l'identifiant
// de la noisette.
@ -143,19 +138,14 @@ function ncore_type_noisette_decrire($plugin, $type_noisette, $stockage = '') {
// - 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.
if (!$stockage) {
$stockage = $plugin;
}
include_spip("ncoredata/${stockage}");
$decrire = "${stockage}_type_noisette_decrire";
if (function_exists($decrire)) {
include_spip('inc/ncore_utils');
if ($decrire = ncore_chercher_fonction($plugin, 'type_noisette_decrire', $stockage)) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
$description = $decrire($plugin, $type_noisette);
} else {
// Le plugin ne propose pas de fonction propre, on utilise celle de N-Core.
// Chargement de toute la configuration du type de noisette en base de données.
// Les données sont renvoyées brutes sans traitement sur les textes ni les tableaux sérialisés.
// Le plugin ne propose pas de fonction propre ou le stockage N-Core est explicitement demandé.
// -- Lecture de toute la description du type de noisette à partir du cache.
// -- Les données sont renvoyées brutes sans traitement sur les textes ni sur les tableaux sérialisés.
include_spip('inc/ncore_cache');
$descriptions = cache_lire($plugin, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION);
if (isset($descriptions[$type_noisette])) {
@ -193,17 +183,12 @@ function ncore_type_noisette_lister($plugin, $information, $stockage = '') {
// - 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.
if (!$stockage) {
$stockage = $plugin;
}
include_spip("ncoredata/${stockage}");
$lister = "${stockage}_type_noisette_lister";
if (function_exists($lister)) {
include_spip('inc/ncore_utils');
if ($lister = ncore_chercher_fonction($plugin, 'type_noisette_lister', $stockage)) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
$information_noisettes = $lister($plugin, $information);
} else {
// Le plugin ne propose pas de fonction propre, on utilise celle de N-Core.
// Le plugin ne propose pas de fonction propre ou le stockage N-Core est explicitement demandé.
if ($information) {
include_spip('inc/ncore_cache');
if ($information == 'signature') {

Loading…
Cancel
Save