Browse Source

Correction de phpdoc et de noisette en type de noisette.

Début de l'API de compilation.
svn/root/tags/v0.10.0
eric@smellup.net 5 years ago
parent
commit
cec42ee72a
  1. 6
      compiler_noisettes.html
  2. 16
      inc/ncore_cache.php
  3. 81
      inc/ncore_compilation.php
  4. 2
      inc/ncore_type_noisette.php
  5. 2
      inc/ncore_utils.php
  6. 2
      ncore/ncore.php

6
compiler_noisettes.html

@ -0,0 +1,6 @@
<BOUCLE_compilation_noisettes(DATA){source table, #ENV{liste}}{par rang}>
#SET{avec_div, #CHAMP_SQL{balise}|=={defaut}|?{#CONFIG{noizetier/balise_noisette}, #CHAMP_SQL{balise}}}
[[(#GET{avec_div}|oui)<div class="noisette noisette_#NOISETTE[ (#CHAMP_SQL{css})]">]
(#NOIZETIER_AFFICHER_NOISETTE)
[(#GET{avec_div}|oui)</div>]]
</BOUCLE_compilation_noisettes>

16
inc/ncore_cache.php

@ -18,15 +18,15 @@ if (!defined('_NCORE_DIRCACHE')) {
}
if (!defined('_NCORE_NOMCACHE_TYPE_NOISETTE_SIGNATURE')) {
/**
* Cache des signatures des fichiers YAML de noisettes.
* Contient le tableau sérialisé `[noisette] = signature`.
* Cache des signatures des fichiers YAML de types de noisette.
* Contient le tableau sérialisé `[type_noisette] = signature`.
*/
define('_NCORE_NOMCACHE_TYPE_NOISETTE_SIGNATURE', 'type_noisette_signatures.php');
}
if (!defined('_NCORE_NOMCACHE_TYPE_NOISETTE_DESCRIPTION')) {
/**
* Cache des descriptions de noisettes issues des fichiers YAML.
* Contient le tableau sérialisé `[noisette] = tableau de la description complète`.
* Cache des descriptions des types de noisettes issues des fichiers YAML.
* Contient le tableau sérialisé `[type_noisette] = tableau de la description complète`.
* Chaque description contient aussi l'identifiant de la noisette déjà utilisé en index et la signature.
*/
define('_NCORE_NOMCACHE_TYPE_NOISETTE_DESCRIPTION', 'type_noisette_descriptions.php');
@ -45,12 +45,12 @@ if (!defined('_NCORE_NOMCACHE_NOISETTE_INCLUSION')) {
*/
define('_NCORE_NOMCACHE_NOISETTE_INCLUSION', 'noisette_inclusions.php');
}
if (!defined('_NCORE_NOMCACHE_NOISETTE_CONTEXTE')) {
if (!defined('_NCORE_NOMCACHE_TYPE_NOISETTE_CONTEXTE')) {
/**
* Cache des contextes de noisettes issues des fichiers YAML.
* Contient le tableau sérialisé `[noisette] = tableau des éléments du contexte`.
* Cache des contextes des types de noisette issus des fichiers YAML.
* Contient le tableau sérialisé `[type_noisette] = tableau des éléments du contexte`.
*/
define('_NCORE_NOMCACHE_NOISETTE_CONTEXTE', 'noisette_contextes.php');
define('_NCORE_NOMCACHE_TYPE_NOISETTE_CONTEXTE', 'type_noisette_contextes.php');
}

81
inc/ncore_compilation.php

@ -190,51 +190,72 @@ function ncore_noisette_est_dynamique($service, $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.
* @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 mixed $noisette
* Identifiant de la noisette qui peut prendre soit la forme d'un entier ou d'une chaîne unique, soit la forme
* d'un couple (id conteneur, rang).
* @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 array
* Le tableau éventuellement vide des éléments de contexte de la noisette.
*/
function ncore_noisette_contexte($service, $noisette) {
function noisette_contextualiser($plugin, $noisette, $type_noisette, $environnement, $stockage = '') {
// 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.
static $contextes_type_noisette = array();
// On initialise le contexte de la noisette a minima.
// -- on transmet toujours l'identifiant de la noisette quel qu'il soit : id_noisette ou couple (id_conteneur, rang).
$contexte = is_array($noisette) ? $noisette : array('id_noisette' => $noisette);
// -- on appelle une fonction de service pour éventuellement compléter le contexte par d'autres variables en fonction
// du plugin.
include_spip('ncore/ncore');
// $contexte = array_merge($contexte, ncore_noisette_contexte_completer($plugin, $noisette, $stockage));
// Récupération du contexte défini pour le type de noisette. Ce contexte est juste une liste de variables non
// valorisées. La valorisation sera faite avec l'environnement.
// -- les contextes sont stockés dans un cache dédié.
if (!isset($contextes_type_noisette[$plugin][$type_noisette])) {
// On vérifie si on doit recalculer le cache le cache ou pas.
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
if ((_request('var_mode') == 'recalcul')
or (defined('_NO_CACHE') and (_NO_CACHE != 0))
or (!$contextes_type_noisette[$plugin] = cache_lire($plugin, _NCORE_NOMCACHE_TYPE_NOISETTE_CONTEXTE))) {
// On répertorie 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]);
$contextes_type_noisette[$plugin] = ncore_type_noisette_lister($plugin, 'contexte', $stockage);
// On vérifie que la noisette demandée est bien dans la liste.
// On vérifie que le type de noisette demandé 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();
if (!isset($contextes_type_noisette[$plugin][$type_noisette])) {
$contextes_type_noisette[$plugin][$type_noisette] = serialize(array());
}
// In fine, on met à jour le cache
cache_ecrire($service, _NCORE_NOMCACHE_NOISETTE_CONTEXTE, $contexte[$service]);
cache_ecrire($plugin, _NCORE_NOMCACHE_TYPE_NOISETTE_CONTEXTE, $contextes_type_noisette[$plugin]);
}
}
// -- on inverse les index et valeurs du tableau de contexte pour obtenir un tableau de type contexte.
$contexte_type_noisette = array_flip(unserialize($contextes_type_noisette[$plugin][$type_noisette]));
// On construit le contexte final en fonction de celui du type de noisette.
// On renvoie systématiquement le contexte minimal déjà initialisé et si le contexte du type de noisette contient:
// - aucun => rien de plus.
// - env ou vide => l'environnement complet également.
// - une liste de variables => on renvoie également l'intersection de cette liste avec l'environnement.
if (!isset($contexte_type_noisette['aucun'])) {
if (isset($contexte_noisette['env'])) {
$contexte = array_merge($environnement, $contexte);
} else {
$contexte = array_merge(array_intersect_key($environnement, $contexte_type_noisette), $contexte);
}
}
return $contexte[$service][$noisette];
return $contexte;
}

2
inc/ncore_type_noisette.php

@ -295,7 +295,7 @@ function type_noisette_repertorier($plugin, $filtres = array(), $stockage = '')
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On récupère la description complète de tous les types de noisettes détects par le plugin appelant
// On récupère la description complète de tous les types de noisettes détectés par le plugin appelant
$types_noisette[$plugin] = ncore_type_noisette_lister($plugin, '', $stockage);
}

2
inc/ncore_utils.php

@ -11,7 +11,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
/**
* 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.
* Si ni le service de stockage ni le plugin ne fournissent la fonction demandée la chaîne vide est renvoyée.
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou

2
ncore/ncore.php

@ -722,7 +722,7 @@ function ncore_conteneur_identifier($plugin, $conteneur, $stockage) {
/**
* Retire, de l'espace de stockage, toutes les noisettes d'un conteneur.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\SERVICE\CONTENEUR
*
* @uses ncore_chercher_service()
* @uses ncore_conteneur_identifier()

Loading…
Cancel
Save