Browse Source

On remplace squelette+contexte par un seul élément nommé conteneur.

svn/root/tags/v0.10.0
eric@smellup.net 5 years ago
parent
commit
ac70a3d1c7
  1. 58
      inc/ncore_noisette.php
  2. 44
      ncore/ncore.php
  3. 2
      paquet.xml

58
inc/ncore_noisette.php

@ -25,10 +25,11 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param string $type_noisette
* Identifiant du type de noisette à ajouter au squelette.
* @param string $squelette
* Chemin relatif du squelette auquel associer la noisette.
* @param array $contexte
* Tableau éventuellement vide matérialisant le contexte d'utilisation du squelette.
* @param array $conteneur
* Tableau associatif descriptif du conteneur accueillant la noisette. Un conteneur peut-être un squelette seul
* ou associé à un contexte d'utilisation et dans ce cas il possède un index `squelette` ou un objet quelconque
* sans lien avec un squelette. Dans tous les cas, les index, à l'exception de `squelette`, sont spécifiques
* à l'utilisation qui en est faite par le plugin.
* @param int $rang
* Rang dans le squelette contextualisé où insérer la noisette. Si l'argument n'est pas fourni ou est égal à 0
* on insère la noisette en fin de bloc.
@ -40,7 +41,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @return int|string|bool
* Retourne l'identifiant de la nouvelle instance de noisette créée ou `false` en cas d'erreur.
**/
function noisette_ajouter($plugin, $type_noisette, $squelette, $contexte, $rang = 0, $stockage = '') {
function noisette_ajouter($plugin, $type_noisette, $conteneur, $rang = 0, $stockage = '') {
// Initialisation de la valeur de sortie.
$noisette_ajoutee = false;
@ -64,8 +65,7 @@ function noisette_ajouter($plugin, $type_noisette, $squelette, $contexte, $rang
$description = array(
'plugin' => $plugin,
'noisette' => $type_noisette,
'squelette' => $squelette,
'contexte' => serialize($contexte),
'conteneur' => serialize($conteneur),
'rang' => intval($rang),
'parametres' => serialize($parametres),
'balise' => 'defaut',
@ -78,7 +78,7 @@ function noisette_ajouter($plugin, $type_noisette, $squelette, $contexte, $rang
// On récupère les noisettes déjà affectées au squelette contextualisé sous la forme d'un tableau indexé
// par le rang de chaque noisette.
$noisettes = ncore_noisette_lister($plugin, $squelette, $contexte, '', 'rang', $stockage);
$noisettes = ncore_noisette_lister($plugin, $conteneur, '', 'rang', $stockage);
// On calcule le rang max déjà utilisé.
$rang_max = $noisettes ? max(array_keys($noisettes)) : 0;
@ -126,7 +126,7 @@ function noisette_ajouter($plugin, $type_noisette, $squelette, $contexte, $rang
* 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 chaine unique, soit la forme
* d'un triplet (squelette, contexte, rang).
* d'un couple (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
@ -161,8 +161,7 @@ function noisette_supprimer($plugin, $noisette, $stockage = '') {
// On récupère les noisettes restant affectées au squelette contextualisé sous la forme d'un tableau indexé par rang.
$autres_noisettes = ncore_noisette_lister(
$plugin,
$description['squelette'],
unserialize($description['contexte']),
unserialize($description['conteneur']),
'',
'rang',
$stockage
@ -196,7 +195,7 @@ function noisette_supprimer($plugin, $noisette, $stockage = '') {
* 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 chaine unique, soit la forme
* d'un triplet (squelette, contexte, rang).
* d'un couple (contneur, rang).
* @param string $information
* Information spécifique à retourner ou vide pour retourner toute la description.
* @param boolean $traiter_typo
@ -231,13 +230,8 @@ function noisette_lire($plugin, $noisette, $information = '', $traiter_typo = fa
if (!is_array($noisette)) {
$description_existe = isset($description_noisette_par_id[$plugin][$noisette]) ? true : false;
} else {
if (isset($noisette['squelette'], $noisette['contexte'], $noisette['rang'])) {
$squelette_contextualise = ncore_squelette_identifier(
$plugin,
$noisette['squelette'],
$noisette['contexte'],
$stockage
);
if (isset($noisette['conteneur'], $noisette['rang'])) {
$squelette_contextualise = ncore_squelette_identifier($plugin, $noisette['conteneur'], $stockage);
$description_existe = isset($description_noisette_par_rang[$plugin][$squelette_contextualise][$noisette['rang']])
? true
: false;
@ -253,8 +247,8 @@ function noisette_lire($plugin, $noisette, $information = '', $traiter_typo = fa
if (is_string($description['parametres'])) {
$description['parametres'] = unserialize($description['parametres']);
}
if (is_string($description['contexte'])) {
$description['contexte'] = unserialize($description['contexte']);
if (is_string($description['conteneur'])) {
$description['conteneur'] = unserialize($description['conteneur']);
}
}
@ -300,7 +294,7 @@ function noisette_lire($plugin, $noisette, $information = '', $traiter_typo = fa
* 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 chaine unique, soit la forme
* d'un triplet (squelette, contexte, rang).
* d'un couple (conteneur, rang).
* @param int $rang_destination
* Entier représentant le rang où repositionner la noisette dans le squelette contextualisé.
* @param string $stockage
@ -334,8 +328,7 @@ function noisette_deplacer($plugin, $noisette, $rang_destination, $stockage = ''
// On récupère les noisettes affectées au même squelette sous la forme d'un tableau indexé par le rang.
$noisettes = ncore_noisette_lister(
$plugin,
$description['squelette'],
unserialize($description['contexte']),
unserialize($description['conteneur']),
'',
'rang',
$stockage
@ -392,10 +385,11 @@ function noisette_deplacer($plugin, $noisette, $rang_destination, $stockage = ''
* @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 $squelette
* Chemin relatif du squelette où ajouter la noisette.
* @param array $contexte
* Tableau éventuellement vide matérialisant le contexte d'utilisation du squelette.
* @param array $conteneur
* Tableau associatif descriptif du conteneur accueillant la noisette. Un conteneur peut-être un squelette seul
* ou associé à un contexte d'utilisation et dans ce cas il possède un index `squelette` ou un objet quelconque
* sans lien avec un squelette. Dans tous les cas, les index, à l'exception de `squelette`, sont spécifiques
* à l'utilisation qui en est faite par le plugin.
* @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
@ -403,7 +397,7 @@ function noisette_deplacer($plugin, $noisette, $rang_destination, $stockage = ''
*
* @return bool
*/
function noisette_vider($plugin, $squelette, $contexte, $stockage = '') {
function noisette_vider($plugin, $conteneur, $stockage = '') {
// Initialisation du retour
$retour = false;
@ -412,10 +406,8 @@ function noisette_vider($plugin, $squelette, $contexte, $stockage = '') {
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip('ncore/ncore');
if ($squelette or $contexte) {
// On construit un tableau avec le squelette et son contexte et on le passe à la fonction.
$description = array('squelette' => $squelette, 'contexte' => serialize($contexte));
$retour = ncore_noisette_destocker($plugin, $description, $stockage);
if ($conteneur) {
$retour = ncore_noisette_destocker($plugin, $conteneur, $stockage);
}
return $retour;

44
ncore/ncore.php

@ -269,8 +269,7 @@ function ncore_noisette_stocker($plugin, $description, $stockage = '') {
// la description, le contexte est lui sérialisé.
$squelette_contextualise = ncore_squelette_identifier(
$plugin,
$description['squelette'],
unserialize($description['contexte']),
unserialize($description['conteneur']),
$stockage
);
@ -354,8 +353,7 @@ function ncore_noisette_ranger($plugin, $description, $rang_destination, $stocka
// la description, le contexte est lui sérialisé.
$squelette_contextualise = ncore_squelette_identifier(
$plugin,
$description['squelette'],
unserialize($description['contexte']),
unserialize($description['conteneur']),
$stockage
);
@ -424,8 +422,7 @@ function ncore_noisette_destocker($plugin, $description, $stockage = '') {
// la description, le contexte est lui sérialisé.
$squelette_contextualise = ncore_squelette_identifier(
$plugin,
$description['squelette'],
unserialize($description['contexte']),
unserialize($description['conteneur']),
$stockage
);
@ -462,10 +459,11 @@ function ncore_noisette_destocker($plugin, $description, $stockage = '') {
* @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 string $squelette
* Chemin relatif du squelette où ajouter la noisette.
* @param array $contexte
* Tableau éventuellement vide matérialisant le contexte d'utilisation du squelette.
* @param array $conteneur
* Tableau associatif descriptif du conteneur accueillant la noisette. Un conteneur peut-être un squelette seul
* ou associé à un contexte d'utilisation et dans ce cas il possède un index `squelette` ou un objet quelconque
* sans lien avec un squelette. Dans tous les cas, les index, à l'exception de `squelette`, sont spécifiques
* à l'utilisation qui en est faite par le plugin.
* @param string $information
* Identifiant d'un champ de la description d'une type de noisette.
* Si l'argument est vide, la fonction renvoie les descriptions complètes et si l'argument est
@ -480,7 +478,7 @@ function ncore_noisette_destocker($plugin, $description, $stockage = '') {
* @return array
* Tableau de la liste des informations demandées indexé par identifiant de noisette ou par rang.
*/
function ncore_noisette_lister($plugin, $squelette = '', $contexte = array(), $information = '', $cle = 'rang', $stockage = '') {
function ncore_noisette_lister($plugin, $conteneur = array(), $information = '', $cle = 'rang', $stockage = '') {
// Initialisation du tableau de sortie.
$noisettes = array();
@ -500,9 +498,9 @@ function ncore_noisette_lister($plugin, $squelette = '', $contexte = array(), $i
include_spip('inc/config');
$meta_noisettes = lire_config("${plugin}_noisettes", array());
if ($squelette or $contexte) {
if ($conteneur) {
// Détermination de l'identifiant du squelette contextualisé.
$squelette_contextualise = ncore_squelette_identifier($plugin, $squelette, $contexte, $stockage);
$squelette_contextualise = ncore_squelette_identifier($plugin, $conteneur, $stockage);
if (!empty($meta_noisettes[$squelette_contextualise])) {
$noisettes = $meta_noisettes[$squelette_contextualise];
$noisettes = $information
@ -541,7 +539,7 @@ function ncore_noisette_lister($plugin, $squelette = '', $contexte = array(), $i
* 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 chaine unique, soit la forme
* d'un triplet (squelette, contexte, rang).
* d'un couple (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 du plugin fournissant le stockage.
@ -593,8 +591,7 @@ function ncore_noisette_decrire($plugin, $noisette, $stockage = '') {
// Détermination de l'identifiant du squelette contextualisé.
$squelette_contextualise = ncore_squelette_identifier(
$plugin,
$noisette['squelette'],
$noisette['contexte'],
$noisette['conteneur'],
$stockage
);
if (!empty($meta_noisettes[$squelette_contextualise][$noisette['rang']])) {
@ -623,10 +620,11 @@ function ncore_noisette_decrire($plugin, $noisette, $stockage = '') {
* @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 string $squelette
* Chemin relatif du squelette où ajouter la noisette.
* @param array $contexte
* Tableau éventuellement vide matérialisant le contexte d'utilisation du squelette.
* @param array $conteneur
* Tableau associatif descriptif du conteneur accueillant la noisette. Un conteneur peut-être un squelette seul
* ou associé à un contexte d'utilisation et dans ce cas il possède un index `squelette` ou un objet quelconque
* sans lien avec un squelette. Dans tous les cas, les index, à l'exception de `squelette`, sont spécifiques
* à l'utilisation qui en est faite par le plugin.
* @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.
@ -634,7 +632,7 @@ function ncore_noisette_decrire($plugin, $noisette, $stockage = '') {
* @return string
* Identifiant du squelette contextualisé.
*/
function ncore_squelette_identifier($plugin, $squelette, $contexte, $stockage) {
function ncore_squelette_identifier($plugin, $conteneur, $stockage) {
// Il faut calculer l'identifiant du squelette contextualisé pour accéder à la bonne liste
// de noisettes. N-Core ne propose pas de fonction par défaut car l'élaboration de l'identifiant
@ -643,11 +641,11 @@ function ncore_squelette_identifier($plugin, $squelette, $contexte, $stockage) {
// fonction de calcul associée sinon le contexte ne sera pas pris en compte et seul l'identifiant
// du squelette sera retourné.
$squelette_contextualise = '';
if ($squelette or $contexte) {
if ($conteneur) {
include_spip('inc/ncore_utils');
if ($identifier = ncore_chercher_service($plugin, 'squelette_identifier', $stockage)) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
$squelette_contextualise = $identifier($plugin, $squelette, $contexte);
$squelette_contextualise = $identifier($plugin, $conteneur);
}
}

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="Ncore"
categorie="outil"
version="0.1.0"
version="0.2.0"
etat="dev"
compatibilite="[3.2.0-dev;3.2.*]"
logo="ncore_logo-32.png"

Loading…
Cancel
Save