Browse Source

Ajout d'une fonction API noisette pour vider les noisettes d'un squelette et modification en conséquence du service destocker.

svn/attic/tags/v010/106508
eric@smellup.net 6 years ago
parent
commit
f5887c8a31
  1. 39
      inc/ncore_noisette.php
  2. 41
      ncore/ncore.php

39
inc/ncore_noisette.php

@ -1,6 +1,6 @@
<?php
/**
* Ce fichier contient l'API N-Core de gestion des noisette, c'est-à-dire les instances paramétrées
* Ce fichier contient l'API N-Core de gestion des noisettes, c'est-à-dire les instances paramétrées
* de types de noisette affectées à un squelette.
*
* @package SPIP\NCORE\API\NOISETTE
@ -334,3 +334,40 @@ function noisette_deplacer($plugin, $noisette, $rang_destination, $stockage = ''
return $retour;
}
/**
* Supprime toutes les noisettes d’un squelette.
*
* @api
* @uses ncore_noisette_destocker()
*
* @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 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 bool
*/
function noisette_vider_squelette($plugin, $squelette, $stockage = '') {
// Initialisation du retour
$retour = false;
// 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");
if ($squelette) {
// Suppression de la noisette. On passe la description complète ce qui permet à la fonction de
// destockage de choisir la méthode pour identifier la noisette.
$retour = ncore_noisette_destocker($plugin, $squelette, $stockage);
}
return $retour;
}

41
ncore/ncore.php

@ -242,7 +242,7 @@ function ncore_noisette_stocker($plugin, $description, $stockage = '') {
include_spip('inc/ncore_utils');
if ($stocker = ncore_chercher_service($plugin, 'noisette_stocker', $stockage)) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
$noisette = $stocker($plugin, $description);
$id_noisette = $stocker($plugin, $description);
} else {
// Le plugin ne propose pas de fonction propre ou le stockage N-Core est explicitement demandé.
// -- N-Core stocke les noisettes dans une meta propre au plugin appelant contenant un tableau au format
@ -278,10 +278,10 @@ function ncore_noisette_stocker($plugin, $description, $stockage = '') {
ecrire_config("${plugin}_noisettes", $noisettes);
// On renvoie l'id de la noisette ajoutée ou modifiée.
$noisette = $description['id_noisette'];
$id_noisette = $description['id_noisette'];
}
return $noisette;
return $id_noisette;
}
@ -289,14 +289,14 @@ function ncore_noisette_stocker($plugin, $description, $stockage = '') {
*
* @package SPIP\NCORE\SERVICE\NOISETTE
*
* @param $plugin
* @param $action
* @param $description
* @param string $plugin
* @param array $description
* @param int $rang_destination
* @param string $stockage
*
* @return string
* @return bool
*/
function ncore_noisette_ranger($plugin, $description, $rang, $stockage = '') {
function ncore_noisette_ranger($plugin, $description, $rang_destination, $stockage = '') {
// Initialisation de la sortie.
$retour = false;
@ -308,7 +308,7 @@ function ncore_noisette_ranger($plugin, $description, $rang, $stockage = '') {
include_spip('inc/ncore_utils');
if ($ranger = ncore_chercher_service($plugin, 'noisette_ranger', $stockage)) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
$retour = $ranger($plugin, $description, $rang);
$retour = $ranger($plugin, $description, $rang_destination);
} else {
// Le plugin ne propose pas de fonction propre ou le stockage N-Core est explicitement demandé.
// -- N-Core stocke les noisettes dans une meta propre au plugin appelant contenant un tableau au format
@ -324,8 +324,8 @@ function ncore_noisette_ranger($plugin, $description, $rang, $stockage = '') {
// On ajoute la noisette au rang choisi même si on doit écraser un index existant.
// Il est donc nécessaire de gérer la collision en amont de cette fonction.
// De même, l'ancien rang de la noisette n'est pas supprimé, cela est aussi à gérer en amont.
$description['rang'] = $rang;
$noisettes[$description['squelette']][$rang] = $description;
$description['rang'] = $rang_destination;
$noisettes[$description['squelette']][$rang_destination] = $description;
// On met à jour la meta
ecrire_config("${plugin}_noisettes", $noisettes);
@ -336,9 +336,12 @@ function ncore_noisette_ranger($plugin, $description, $rang, $stockage = '') {
}
/**
* @param $plugin
* @param $description
* @param string $stockage
*
* @package SPIP\NCORE\SERVICE\NOISETTE
*
* @param string $plugin
* @param array|string $description
* @param string $stockage
*
* @return bool
*/
@ -359,14 +362,20 @@ function ncore_noisette_destocker($plugin, $description, $stockage = '') {
// Le plugin ne propose pas de fonction propre ou le stockage N-Core est explicitement demandé.
// -- N-Core stocke les noisettes dans une meta propre au plugin appelant contenant un tableau au format
// [squelette][rang] = description
// -- $description est soit le tableau descriptif de la noisette, soit une chaine représentant le nom du
// squelette et dans ce cas, il faut supprimer toutes les noisettes du squelette.
include_spip('inc/config');
$meta_noisettes = lire_config("${plugin}_noisettes", array());
if (isset($meta_noisettes[$description['squelette']][$description['rang']])) {
if (is_array($description) and isset($meta_noisettes[$description['squelette']][$description['rang']])) {
unset($meta_noisettes[$description['squelette']][$description['rang']]);
ecrire_config("${plugin}_noisettes", $meta_noisettes);
$retour = true;
}
} else if (is_string($description) and isset($meta_noisettes[$description['squelette']])) {
unset($meta_noisettes[$description['squelette']]);
ecrire_config("${plugin}_noisettes", $meta_noisettes);
$retour = true;
}
}
return $retour;

Loading…
Cancel
Save