Browse Source

Mise au point de la librairie par défaut de N-Core et de son utilisation si celle du service appelant est inexistante ou incomplète.

svn/attic/tags/v010/106508
eric@smellup.net 5 years ago
parent
commit
fae14a7bd9
  1. 164
      ncore/ncore.php
  2. 165
      ncore_fonctions.php

164
ncore/ncore.php

@ -4,12 +4,27 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
if (!defined('_NCORE_CONFIG_AJAX_DEFAUT')) {
define('_NCORE_CONFIG_AJAX_DEFAUT', true);
}
if (!defined('_NCORE_DYNAMIQUE_DEFAUT')) {
define('_NCORE_DYNAMIQUE_DEFAUT', false);
}
function ncore_noisette_lister_signatures($service) {
// Récupération des signatures md5 des noisettes déjà enregistrées.
// -- Les signatures md5 sont sockées dans un fichier cache séparé de celui des descriptions de noisettes.
include_spip('inc/ncore_cache');
$signatures = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_SIGNATURE);
// On recherche au préalable si il existe une fonction propre au service et si oui on l'appelle.
include_spip("ncore/${service}");
$lister_md5 = "${service}_noisette_lister_signatures";
if (function_exists($lister_md5)) {
$signatures = $lister_md5();
} else {
// Le service ne propose pas de fonction propre, on utilise celle de N-Core.
// -- Les signatures md5 sont sockées dans un fichier cache séparé de celui des descriptions de noisettes.
include_spip('inc/ncore_cache');
$signatures = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_SIGNATURE);
}
return $signatures;
}
@ -18,51 +33,58 @@ function ncore_noisette_stocker($service, $noisettes, $recharger) {
$retour = true;
// Les descriptions de noisettes 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.
// -- Les signatures : on isole la liste des signatures et on indexe le tableau avec l'identifiant de la noisette.
include_spip('inc/ncore_cache');
if ($recharger) {
// Si le rechargement est forcé, toutes les noisettes sont nouvelles, on peut donc écraser les caches
// existants sans s'en préoccuper.
$descriptions = array_column($noisettes['nouvelles'], null, 'noisette');
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION, $descriptions);
$signatures = array_column($noisettes['nouvelles'], 'signature', 'noisette');
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_SIGNATURE, $signatures);
// On recherche au préalable si il existe une fonction propre au service et si oui on l'appelle.
include_spip("ncore/${service}");
$stocker = "${service}_noisette_stocker";
if (function_exists($stocker)) {
$retour = $stocker($noisettes, $recharger);
} else {
// On lit les cache existants et on applique les modifications.
$descriptions = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION);
$signatures = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_SIGNATURE);
// On supprime les noisettes obsolètes
if ($noisettes['obsoletes']) {
$descriptions_obsoletes = array_column($noisettes['obsoletes'], null, 'noisette');
$descriptions = array_diff($descriptions, $descriptions_obsoletes);
$signatures_obsoletes = array_column($noisettes['obsoletes'], 'signature', 'noisette');
$signatures = array_diff($signatures, $signatures_obsoletes);
}
// On remplace les noisettes modifiées et on ajoute les noisettes nouvelles. Cette opération peut-être
// réalisée en une action avec la fonction array_merge.
if ($noisettes['modifiees'] or $noisettes['nouvelles']) {
$descriptions_modifiees = array_column($noisettes['modifiees'], null, 'noisette');
$descriptions_nouvelles = array_column($noisettes['nouvelles'], null, 'noisette');
$descriptions = array_merge($descriptions, $descriptions_modifiees, $descriptions_nouvelles);
$signatures_modifiees = array_column($noisettes['modifiees'], 'signature', 'noisette');
$signatures_nouvelles = array_column($noisettes['nouvelles'], 'signature', 'noisette');
$signatures = array_diff($signatures, $signatures_modifiees, $signatures_nouvelles);
// Le service ne propose pas de fonction propre, on utilise celle de N-Core.
// Les descriptions de noisettes 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.
// -- Les signatures : on isole la liste des signatures et on indexe le tableau avec l'identifiant de la noisette.
include_spip('inc/ncore_cache');
if ($recharger) {
// Si le rechargement est forcé, toutes les noisettes sont nouvelles, on peut donc écraser les caches
// existants sans s'en préoccuper.
$descriptions = array_column($noisettes['nouvelles'], null, 'noisette');
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION, $descriptions);
$signatures = array_column($noisettes['nouvelles'], 'signature', 'noisette');
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_SIGNATURE, $signatures);
} else {
// On lit les cache existants et on applique les modifications.
$descriptions = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION);
$signatures = cache_lire($service,_NCORE_NOMCACHE_NOISETTE_SIGNATURE);
// On supprime les noisettes obsolètes
if (!empty($noisettes['obsoletes'])) {
$descriptions_obsoletes = array_column($noisettes['obsoletes'], null, 'noisette');
$descriptions = array_diff($descriptions, $descriptions_obsoletes);
$signatures_obsoletes = array_column($noisettes['obsoletes'], 'signature', 'noisette');
$signatures = array_diff($signatures, $signatures_obsoletes);
}
// On remplace les noisettes modifiées et on ajoute les noisettes nouvelles. Cette opération peut-être
// réalisée en une action avec la fonction array_merge.
if (!empty($noisettes['modifiees']) or !empty($noisettes['nouvelles'])) {
$descriptions_modifiees = array_column($noisettes['modifiees'], null, 'noisette');
$descriptions_nouvelles = array_column($noisettes['nouvelles'], null, 'noisette');
$descriptions = array_merge($descriptions, $descriptions_modifiees, $descriptions_nouvelles);
$signatures_modifiees = array_column($noisettes['modifiees'], 'signature', 'noisette');
$signatures_nouvelles = array_column($noisettes['nouvelles'], 'signature', 'noisette');
$signatures = array_merge($signatures, $signatures_modifiees, $signatures_nouvelles);
}
// On recrée les caches.
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION, $descriptions);
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_SIGNATURE, $signatures);
}
// On recrée les caches.
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION, $descriptions);
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_SIGNATURE, $signatures);
}
return $retour;
}
@ -70,12 +92,20 @@ function ncore_noisette_decrire($service, $noisette) {
$description = array();
// Chargement de toute la configuration de la noisette en base de données.
// Les données sont renvoyées brutes sans traitement sur les textes ni les tableaux sérialisés.
include_spip('inc/ncore_cache');
$descriptions = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION);
if (isset($descriptions[$noisette])) {
$description = $descriptions[$noisette];
// On recherche au préalable si il existe une fonction propre au service et si oui on l'appelle.
include_spip("ncore/${service}");
$decrire = "${service}_noisette_decrire";
if (function_exists($decrire)) {
$description = $decrire($noisette);
} else {
// Le service ne propose pas de fonction propre, on utilise celle de N-Core.
// Chargement de toute la configuration de la noisette en base de données.
// Les données sont renvoyées brutes sans traitement sur les textes ni les tableaux sérialisés.
include_spip('inc/ncore_cache');
$descriptions = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION);
if (isset($descriptions[$noisette])) {
$description = $descriptions[$noisette];
}
}
return $description;
@ -83,22 +113,38 @@ function ncore_noisette_decrire($service, $noisette) {
function ncore_noisette_config_ajax($service) {
// On détermine la valeur par défaut de l'ajax des noisettes qui est stocké dans la configuration du plugin.
// On recherche au préalable si il existe une fonction propre au service et si oui on l'appelle.
include_spip("ncore/${service}");
$config_ajax = "${service}_noisette_config_ajax";
if (function_exists($config_ajax)) {
$defaut_ajax = $config_ajax();
} else {
// Le service ne propose pas de fonction propre, on utilise celle de N-Core.
$defaut_ajax = _NCORE_CONFIG_AJAX_DEFAUT;
}
return false;
return $defaut_ajax;
}
function ncore_noisette_lister($service, $information) {
// Initialisation du tableau de sortie
$info_noisettes = array();
$information_noisettes = array();
if ($information) {
include_spip('inc/ncore_cache');
if ($descriptions = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION)) {
$info_noisettes = array_column($descriptions, $information, 'noisette');
// On recherche au préalable si il existe une fonction propre au service et si oui on l'appelle.
include_spip("ncore/${service}");
$lister = "${service}_noisette_lister";
if (function_exists($lister)) {
$information_noisettes = $lister($information);
} else {
// Le service ne propose pas de fonction propre, on utilise celle de N-Core.
if ($information) {
include_spip('inc/ncore_cache');
if ($descriptions = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_DESCRIPTION)) {
$information_noisettes = array_column($descriptions, $information, 'noisette');
}
}
}
return $info_noisettes;
return $information_noisettes;
}

165
ncore_fonctions.php

@ -23,8 +23,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @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 des md5 et de stockage des descriptions de noisettes
* spécifiques au service.
* La fonction utilisera les fonctions de lecture des md5 et de stockage des descriptions de noisettes,
* spécifiques au service, ou à défaut, celles fournies par N-Core.
* @param string $dossier
* Chemin relatif (avec un `/` final) dans lequel chercher les fichiers YAML de description des noisettes.
* Par défaut, les noisettes seront recherchées dans le dossier `noisettes/`.
@ -47,8 +47,9 @@ function ncore_noisette_charger($service, $dossier = 'noisettes/', $recharger =
// On recherche les noisettes directement par leur fichier YAML de configuration car il est obligatoire
// -- la recherche s'effectue dans
if ($fichiers = find_all_in_path($dossier, '.+[.]yaml$')) {
// On charge l'API du service appelant
include_spip("ncore/${service}");
// On charge l'API de NCore.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// Initialisation des tableaux de noisettes
$noisettes_nouvelles = $noisettes_modifiees = $noisettes_obsoletes = array();
@ -57,8 +58,7 @@ function ncore_noisette_charger($service, $dossier = 'noisettes/', $recharger =
// Si on force le rechargement il est inutile de gérer les signatures et les noisettes modifiées ou obsolètes.
$signatures = array();
if (!$options['recharger']) {
$lister_md5 = "${service}_noisette_lister_signatures";
$signatures = $lister_md5();
$signatures = ncore_noisette_lister_signatures($service);
// On initialise la liste des noisettes à supprimer avec l'ensemble des noisettes en base de données.
$noisettes_obsoletes = $signatures ? array_keys($signatures) : array();
}
@ -126,14 +126,14 @@ function ncore_noisette_charger($service, $dossier = 'noisettes/', $recharger =
// Pour permettre une optimisation du traitement en mode rechargement forcé on passe toujours le mode.
// -- Update des pages modifiées
// -- Insertion des nouvelles pages
if (!$recharger and ($noisettes_nouvelles or $noisettes_obsoletes or $noisettes_modifiees)) {
if ($recharger
or (!$recharger and ($noisettes_nouvelles or $noisettes_obsoletes or $noisettes_modifiees))) {
$noisettes = array('nouvelles' => $noisettes_nouvelles);
if (!$options['recharger']) {
$noisettes['obsoletes'] = $noisettes_obsoletes;
$noisettes['modifiees'] = $noisettes_modifiees;
}
$stocker = "${service}_noisette_stocker";
$retour = $stocker($noisettes, $options['recharger']);
$retour = ncore_noisette_stocker($service, $noisettes, $options['recharger']);
}
}
@ -152,8 +152,8 @@ function ncore_noisette_charger($service, $dossier = 'noisettes/', $recharger =
* @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 des md5 et de stockage des descriptions de noisettes
* spécifiques au service.
* La fonction utilisera la fonction de lecture de la description brute d'une noisette, spécifique
* au service, ou à défaut, celle fournie par N-Core.
* @param string $noisette
* Identifiant de la $noisette.
* @param string $information
@ -167,20 +167,19 @@ function ncore_noisette_charger($service, $dossier = 'noisettes/', $recharger =
*/
function ncore_noisette_informer($service, $noisette, $information = '', $traiter_typo = false) {
// On indexe pas le tableau des descriptions par le service appelant car on considère que dans
// le même hit on ne peut avoir qu'un seul service appelant.
// TODO : vérifier si ok, sinon on indexera
// 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 $donnees_typo = array('nom', 'description');
static $description_noisette = array();
// Stocker la description de la noisette si besoin
if (!isset($description_noisette[$noisette])) {
// On charge l'API du service appelant
include_spip("ncore/${service}");
if (!isset($description_noisette[$service][$noisette])) {
// On charge l'API de NCore.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// Lecture de toute la configuration de la noisette: les données retournées sont brutes.
$decrire = "${service}_noisette_decrire";
$description = $decrire($noisette);
$description = ncore_noisette_decrire($service, $noisette);
// Sauvegarde de la description de la page pour une consultation ultérieure dans le même hit.
if ($description) {
@ -190,25 +189,25 @@ function ncore_noisette_informer($service, $noisette, $information = '', $traite
$description['parametres'] = unserialize($description['parametres']);
// Stockage de la description
$description_noisette[$noisette] = $description;
$description_noisette[$service][$noisette] = $description;
} else {
$description_noisette[$noisette] = array();
$description_noisette[$service][$noisette] = array();
}
}
if ($information) {
if (isset($description_noisette[$noisette][$information])) {
if (isset($description_noisette[$service][$noisette][$information])) {
if (in_array($information, $donnees_typo) and $traiter_typo) {
// Traitements de la donnée textuelle
$retour = _T_ou_typo($description_noisette[$noisette][$information]);
$retour = _T_ou_typo($description_noisette[$service][$noisette][$information]);
} else {
$retour = $description_noisette[$noisette][$information];
$retour = $description_noisette[$service][$noisette][$information];
}
} else {
$retour = '';
}
} else {
$retour = $description_noisette[$noisette];
$retour = $description_noisette[$service][$noisette];
// Traitements des données textuels
if ($traiter_typo) {
$retour['nom'] = _T_ou_typo($retour['nom']);
@ -232,8 +231,8 @@ function ncore_noisette_informer($service, $noisette, $information = '', $traite
* @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 des md5 et de stockage des descriptions de noisettes
* spécifiques au service.
* 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.
*
@ -242,33 +241,31 @@ function ncore_noisette_informer($service, $noisette, $information = '', $traite
*/
function ncore_noisette_est_ajax($service, $noisette) {
// On indexe pas le tableau des indicateurs ajax par le service appelant car on considère que dans
// le même hit on ne peut avoir qu'un seul service appelant.
// TODO : vérifier si ok, sinon on indexera
// 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[$noisette])) {
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 = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_AJAX);
$est_ajax[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_AJAX);
// On doit recalculer le cache.
if (!$est_ajax
if (!$est_ajax[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API du service appelant
include_spip("ncore/${service}");
// On charge l'API de NCore.
// 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.
$config_ajax = "${service}_noisette_config_ajax";
$defaut_ajax = $config_ajax();
$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.
$lister = "${service}_noisette_lister";
if ($ajax_noisettes = $lister('ajax')) {
if ($ajax_noisettes = ncore_noisette_lister($service,'ajax')) {
foreach ($ajax_noisettes as $_noisette => $_ajax) {
$est_ajax[$_noisette] = ($_ajax == 'defaut')
$est_ajax[$service][$_noisette] = ($_ajax == 'defaut')
? $defaut_ajax
: ($_ajax == 'non' ? false : true);
}
@ -277,16 +274,16 @@ function ncore_noisette_est_ajax($service, $noisette) {
// 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[$noisette])) {
$est_ajax[$noisette] = $defaut_ajax;
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);
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_AJAX, $est_ajax[$service]);
}
}
return $est_ajax[$noisette];
return $est_ajax[$service][$noisette];
}
@ -300,8 +297,8 @@ function ncore_noisette_est_ajax($service, $noisette) {
* @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 des md5 et de stockage des descriptions de noisettes
* spécifiques au service.
* 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.
*
@ -310,86 +307,98 @@ function ncore_noisette_est_ajax($service, $noisette) {
*/
function ncore_noisette_est_dynamique($service, $noisette) {
// On indexe pas le tableau des indicateurs d'inclusion par le service appelant car on considère que dans
// le même hit on ne peut avoir qu'un seul service appelant.
// TODO : vérifier si ok, sinon on indexera
// 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[$noisette])) {
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 = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_INCLUSION);
$est_dynamique[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_INCLUSION);
// On doit recalculer le cache.
if (!$est_dynamique
if (!$est_dynamique[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API du service appelant
include_spip("ncore/${service}");
// 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.
$lister = "${service}_noisette_lister";
if ($inclusion_noisettes = $lister('inclusion')) {
if ($inclusion_noisettes = ncore_noisette_lister($service,'inclusion')) {
foreach ($inclusion_noisettes as $_noisette => $_inclusion) {
$est_dynamique[$_noisette] = ($_inclusion == 'dynamique') ? true : false;
$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[$noisette])) {
$est_dynamique[$noisette] = 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);
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_INCLUSION, $est_dynamique[$service]);
}
}
return $est_dynamique[$noisette];
return $est_dynamique[$service][$noisette];
}
/**
* @param $noisette
* Renvoie le contexte de la noisette sous la forme d'un tableau éventuellement vide.
*
* @return mixed
* @package SPIP\NCORE\NOISETTE
* @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 pas le tableau des contextes par le service appelant car on considère que dans
// le même hit on ne peut avoir qu'un seul service appelant.
// TODO : vérifier si ok, sinon on indexera
// 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[$noisette])) {
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 = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE);
$contexte[$service] = cache_lire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE);
// On doit recalculer le cache.
if (!$contexte
if (!$contexte[$service]
or (_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))) {
// On charge l'API du service appelant
include_spip("ncore/${service}");
// 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 tel quel.
$lister = "${service}_noisette_lister";
$contexte = $lister('contexte');
// 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[$noisette])) {
$contexte[$noisette] = array();
if (!isset($contexte[$service][$noisette])) {
$contexte[$service][$noisette] = array();
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE, $contexte);
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE, $contexte[$service]);
}
}
return $contexte[$noisette];
return $contexte[$service][$noisette];
}

Loading…
Cancel
Save