Browse Source

Sauvegarde intermédiaire, l'API n'étant pas définitive.

svn/attic/tags/v010/106508
eric@smellup.net 6 years ago
parent
commit
73e60ea75d
  1. 22
      inc/ncore_noisette.php
  2. 43
      ncore/ncore.php

22
inc/ncore_noisette.php

@ -81,12 +81,10 @@ function ncore_noisette_ajouter($plugin, $type_noisette, $squelette, $rang = 0,
// existantes, donc on ne fait rien.
// Sinon, il faut décaler les noisettes de rang supérieur ou égal.
if ($rang <= $rang_max) {
$modification['squelette'] = $description['squelette'];
foreach ($noisettes as $_id_noisette => $_description) {
if ($_description['rang'] >= $rang) {
$modification['id_noisette'] = $_description['id_noisette'];
$modification['rang'] = $_description['rang'] + 1;
ncore_noisette_stocker($plugin, 'modification', $modification, $stockage);
$_description['rang'] += 1;
ncore_noisette_stocker($plugin, 'modification', $_description, $stockage);
}
}
}
@ -98,3 +96,19 @@ function ncore_noisette_ajouter($plugin, $type_noisette, $squelette, $rang = 0,
return $noisette_ajoutee;
}
function ncore_noisette_supprimer($plugin, $identifiant, $stockage = '') {
// Initialisation du retour
$retour = false;
if (intval($identifiant)) {
// Suppression d'un noisette connue par son id.
$retour = ncore_noisette_destocker($plugin, $identifiant, $stockage);
} elseif (is_string($identifiant) and $identifiant) {
// Suppression de toutes les noisettes affectées à un squelette.
$retour = ncore_noisette_destocker_squelette($plugin, $identifiant, $stockage);
}
return $retour;
}

43
ncore/ncore.php

@ -252,13 +252,18 @@ function ncore_noisette_stocker($plugin, $action, $description, $stockage = '')
// -- et on range la noisette avec les noisettes affectées au même squelette en fonction de son rang.
$description['id_noisette'] = uniqid("${plugin}_");
$noisettes[$description['squelette']][$description['rang']] = $description;
} elseif ($noisettes[$description['squelette']][$description['rang']]) {
// Modification de certains champs de la noisette :
} else {
// Modification de la noisette :
// -- les informations identifiant sont toujours fournies, à savoir, l'id, le squelette et le rang.
// -- on utilise le squelette et le rang pour se positionner sur la noisette concernée.
$noisettes[$description['squelette']][$description['rang']] = array_merge(
$noisettes[$description['squelette']][$description['rang']],
$description);
// -- pour un changement de rang il faut mettre à jour toute la description.
if (!isset($noisettes[$description['squelette']][$description['rang']])) {
$noisettes[$description['squelette']][$description['rang']] = $description;
} else {
$noisettes[$description['squelette']][$description['rang']] = array_merge(
$noisettes[$description['squelette']][$description['rang']],
$description);
}
}
// On met à jour la meta
@ -281,6 +286,9 @@ function ncore_noisette_stocker($plugin, $action, $description, $stockage = '')
*/
function ncore_noisette_lister($plugin, $squelette = '', $information = '', $stockage = '') {
// Initialisation du tableau de sortie.
$noisettes = array();
// On cherche le service de stockage à utiliser selon la logique suivante :
// - 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;
@ -294,22 +302,21 @@ function ncore_noisette_lister($plugin, $squelette = '', $information = '', $sto
// -- N-Core stocke les noisettes dans une meta propre au plugin appelant contenant un tableau au format
// [squelette][rang] = description
include_spip('inc/config');
$noisettes = lire_config("${plugin}_noisettes", array());
$meta_noisettes = lire_config("${plugin}_noisettes", array());
if ($squelette) {
if (empty($noisettes[$squelette])) {
$noisettes = array();
} else {
$noisettes = $noisettes[$squelette];
if ($information) {
$noisettes = array_column($noisettes, $information, 'id_noisette');
}
if (!empty($meta_noisettes[$squelette])) {
$noisettes = $meta_noisettes[$squelette];
$noisettes = $information
? array_column($noisettes, $information, 'id_noisette')
: array_column($noisettes, null, 'id_noisette');
}
} elseif ($noisettes) {
if ($information) {
$noisettes = array_column($noisettes, $information, 'id_noisette');
} else {
$noisettes = array_column($noisettes, null, 'id_noisette');
} elseif ($meta_noisettes) {
foreach ($meta_noisettes as $_squelette => $_descriptions) {
$noisettes_squelette = $information
? array_column($_descriptions, $information, 'id_noisette')
: array_column($_descriptions, null, 'id_noisette');
$noisettes = array_merge($noisettes, $noisettes_squelette);
}
}
}

Loading…
Cancel
Save