Changeset 107320 in spip-zone
- Timestamp:
- Nov 3, 2017, 4:58:53 PM (3 years ago)
- Location:
- _plugins_/n-core/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/n-core/trunk/inc/ncore_noisette.php
r107316 r107320 62 62 $parametres = saisies_lister_valeurs_defaut($champs); 63 63 64 // On initialise la description de la noisette à ajouter65 $description = array(66 'plugin' => $plugin,67 'noisette' => $type_noisette,68 'conteneur' => serialize($conteneur),69 'rang' => intval($rang),70 'parametres' => serialize($parametres),71 'balise' => 'defaut',72 'css' => ''73 );74 75 64 // On charge les services de N-Core. 76 65 // Ce sont ces fonctions qui aiguillent ou pas vers un service spécifique du plugin. 77 66 include_spip('ncore/ncore'); 67 68 // On initialise la description de la noisette à ajouter et en particulier on stocke l'id du conteneur 69 // pour simplifier les traitements par la suite. 70 $description = array( 71 'plugin' => $plugin, 72 'noisette' => $type_noisette, 73 'conteneur' => serialize($conteneur), 74 'id_conteneur' => ncore_conteneur_identifier($plugin, $conteneur, $stockage), 75 'rang' => intval($rang), 76 'parametres' => serialize($parametres), 77 'balise' => 'defaut', 78 'css' => '' 79 ); 78 80 79 81 // Complément à la description par défaut, spécifique au plugin utilisateur, si nécessaire. … … 130 132 * @param mixed $noisette 131 133 * Identifiant de la noisette qui peut prendre soit la forme d'un entier ou d'une chaine unique, soit la forme 132 * d'un couple ( conteneur, rang).134 * d'un couple (id conteneur, rang). 133 135 * @param string $stockage 134 136 * Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin … … 154 156 if (!empty($noisette) and (is_string($noisette) or is_numeric($noisette) or is_array($noisette))) { 155 157 // Avant de supprimer la noisette on sauvegarde sa description. 156 // Cela permet de conserver le rang et l econteneur indépendamment de l'identifiant158 // Cela permet de conserver le rang et l'id du conteneur indépendamment de l'identifiant 157 159 // utilisé pour spécifier la noisette. 158 160 $description = ncore_noisette_decrire($plugin, $noisette, $stockage); … … 165 167 $autres_noisettes = ncore_noisette_lister( 166 168 $plugin, 167 unserialize($description['conteneur']),169 $description['id_conteneur'], 168 170 '', 169 171 'rang', … … 199 201 * @param mixed $noisette 200 202 * Identifiant de la noisette qui peut prendre soit la forme d'un entier ou d'une chaine unique, soit la forme 201 * d'un couple ( conteneur, rang).203 * d'un couple (id conteneur, rang). 202 204 * @param string $information 203 205 * Information spécifique à retourner ou vide pour retourner toute la description. … … 218 220 // On indexe le tableau des descriptions par le plugin appelant en cas d'appel sur le même hit 219 221 // par deux plugins différents. 220 // En outre, on gère un tableau par type d'identification, id noisette ou couple ( conteneur, rang).222 // En outre, on gère un tableau par type d'identification, id noisette ou couple (id conteneur, rang). 221 223 static $description_noisette_par_id = array(); 222 224 static $description_noisette_par_rang = array(); … … 230 232 include_spip('ncore/ncore'); 231 233 232 // On vérifie si la description n'a pas déjà été enregistrée dans le tableau adéquat. 233 $description_existe = isset($description_noisette_par_id[$plugin][$noisette]) ? true : false; 234 // On vérifie si la noisette est valide et si la description n'a pas déjà été enregistrée dans le tableau adéquat. 235 $description_existe = false; 236 $noisette_invalide = false; 234 237 if (!is_array($noisette)) { 235 238 $description_existe = isset($description_noisette_par_id[$plugin][$noisette]) ? true : false; 239 } elseif (isset($noisette['id_conteneur'], $noisette['rang'])) { 240 $description_existe = isset($description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang']]) 241 ? true 242 : false; 236 243 } else { 237 if (isset($noisette['conteneur'], $noisette['rang'])) { 238 $id_conteneur = ncore_conteneur_identifier($plugin, $noisette['conteneur'], $stockage); 239 $description_existe = isset($description_noisette_par_rang[$plugin][$id_conteneur][$noisette['rang']]) 240 ? true 241 : false; 242 } 244 $noisette_invalide = true; 243 245 } 244 246 245 if (!$description_existe) { 246 // Lecture de toute la configuration de la noisette: les données retournées sont brutes. 247 $description = ncore_noisette_decrire($plugin, $noisette, $stockage); 248 249 // Traitements des champs tableaux sérialisés si nécessaire 250 if ($description) { 251 if (is_string($description['parametres'])) { 252 $description['parametres'] = unserialize($description['parametres']); 253 } 254 if (is_string($description['conteneur'])) { 255 $description['conteneur'] = unserialize($description['conteneur']); 256 } 257 } 258 259 // Sauvegarde de la description de la noisette pour une consultation ultérieure dans le même hit 260 // en suivant le type d'identification. 261 if (is_array($noisette)) { 262 $description_noisette_par_rang[$plugin][$id_conteneur][$noisette['rang']] = $description; 247 if (!$noisette_invalide) { 248 if (!$description_existe) { 249 // Lecture de toute la configuration de la noisette: les données retournées sont brutes. 250 $description = ncore_noisette_decrire($plugin, $noisette, $stockage); 251 252 // Traitements des champs tableaux sérialisés si nécessaire 253 if ($description) { 254 if (isset($description['parametres']) and is_string($description['parametres'])) { 255 $description['parametres'] = unserialize($description['parametres']); 256 } 257 if (isset($description['conteneur']) and is_string($description['conteneur'])) { 258 $description['conteneur'] = unserialize($description['conteneur']); 259 } 260 } 261 262 // Sauvegarde de la description de la noisette pour une consultation ultérieure dans le même hit 263 // en suivant le type d'identification. 264 if (!is_array($noisette)) { 265 $description_noisette_par_id[$plugin][$noisette] = $description; 266 } else { 267 $description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang']] = $description; 268 } 269 } 270 271 if ($information) { 272 if ((!is_array($noisette) and isset($description_noisette_par_id[$plugin][$noisette][$information])) 273 or (is_array($noisette) 274 and isset($description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang']][$information]))) { 275 $retour = is_array($noisette) 276 ? $description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang']][$information] 277 : $description_noisette_par_id[$plugin][$noisette][$information]; 278 } else { 279 $retour = ''; 280 } 263 281 } else { 264 $description_noisette_par_id[$plugin][$noisette] = $description;265 }266 }267 268 if ($information) {269 if ((!is_array($noisette) and isset($description_noisette_par_id[$plugin][$noisette][$information]))270 or (is_array($noisette)271 and isset($description_noisette_par_rang[$plugin][$id_conteneur][$noisette['rang']][$information]))) {272 282 $retour = is_array($noisette) 273 ? $description_noisette_par_rang[$plugin][$id_conteneur][$noisette['rang']][$information] 274 : $description_noisette_par_id[$plugin][$noisette][$information]; 275 } else { 276 $retour = ''; 277 } 278 } else { 279 $retour = is_array($noisette) 280 ? $description_noisette_par_rang[$plugin][$id_conteneur][$noisette['rang']] 281 : $description_noisette_par_id[$plugin][$noisette]; 283 ? $description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang']] 284 : $description_noisette_par_id[$plugin][$noisette]; 285 } 282 286 } 283 287 } … … 300 304 * @param mixed $noisette 301 305 * Identifiant de la noisette qui peut prendre soit la forme d'un entier ou d'une chaine unique, soit la forme 302 * d'un couple ( conteneur, rang).306 * d'un couple (id conteneur, rang). 303 307 * @param int $rang_destination 304 308 * Entier représentant le rang où repositionner la noisette dans le squelette contextualisé. … … 334 338 $noisettes = ncore_noisette_lister( 335 339 $plugin, 336 unserialize($description['conteneur']),340 $description['id_conteneur'], 337 341 '', 338 342 'rang', -
_plugins_/n-core/trunk/ncore/ncore.php
r107316 r107320 6 6 * ou à un autre service de stockage, soit déroule sa propre implémentation. 7 7 * Ainsi, les plugins externes peuvent, si elle leur convient, utiliser l'implémentation proposée par N-Core 8 * sans coder la moindre fonction.8 * en codant un minimum de fonction, à savoir, `conteneur_identifier`. 9 9 */ 10 10 if (!defined('_ECRIRE_INC_VERSION')) {
Note: See TracChangeset
for help on using the changeset viewer.