Changeset 113630 in spip-zone


Ignore:
Timestamp:
Jan 27, 2019, 10:37:18 AM (3 weeks ago)
Author:
eric@…
Message:

Par cohérence avec le fait de pouvoir compléter la description d'un type de noisette et d'une noisette, il faut proposer des services idoines pour traiter les champs textuels par typo() qui pourraient être spécifiques au plugin appelant. On crée donc type_noisette_traiter_typo() et noisette_traiter_typo().
Les API de lecture des types et noisettes sont donc maintenant finalisées.

Location:
_plugins_/n-core/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/n-core/trunk/inc/ncore_noisette.php

    r113624 r113630  
    354354                $noisette_invalide = false;
    355355                if (!is_array($noisette)) {
    356                         $description_existe = isset($description_noisette_par_id[$plugin][$noisette]) ? true : false;
     356                        $description_existe = isset($description_noisette_par_id[$plugin][$traiter_typo][$noisette]) ? true : false;
    357357                } elseif (isset($noisette['id_conteneur'], $noisette['rang_noisette'])) {
    358                         $description_existe = isset($description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang_noisette']])
     358                        $description_existe = isset($description_noisette_par_rang[$plugin][$traiter_typo][$noisette['id_conteneur']][$noisette['rang_noisette']])
    359359                                ? true
    360360                                : false;
     
    368368                                $description = ncore_noisette_decrire($plugin, $noisette, $stockage);
    369369
    370                                 // Traitements des champs tableaux sérialisés si nécessaire
    371370                                if ($description) {
    372                                         if (isset($description['parametres']) and is_string($description['parametres'])) {
    373                                                 $description['parametres'] = unserialize($description['parametres']);
     371                                        // Traitements des champs textuels : aucun champ textuel à traiter dans la description par défaut.
     372                                        if ($traiter_typo) {
     373                                                $description = ncore_noisette_traiter_typo($plugin, $description, $stockage);
    374374                                        }
    375                                         if (isset($description['conteneur']) and is_string($description['conteneur'])) {
    376                                                 $description['conteneur'] = unserialize($description['conteneur']);
    377                                         }
     375
     376                                        // Traitements des champs tableaux sérialisés si nécessaire
     377                                        $description['parametres'] = unserialize($description['parametres']);
     378                                        $description['conteneur'] = unserialize($description['conteneur']);
    378379                                }
    379380
     
    381382                                // en suivant le type d'identification.
    382383                                if (!is_array($noisette)) {
    383                                         $description_noisette_par_id[$plugin][$noisette] = $description;
     384                                        $description_noisette_par_id[$plugin][$traiter_typo][$noisette] = $description;
    384385                                } else {
    385                                         $description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang_noisette']] = $description;
     386                                        $description_noisette_par_rang[$plugin][$traiter_typo][$noisette['id_conteneur']][$noisette['rang_noisette']] = $description;
    386387                                }
    387388                        }
    388389
    389390                        if ($information) {
    390                                 if ((!is_array($noisette) and isset($description_noisette_par_id[$plugin][$noisette][$information]))
     391                                if ((!is_array($noisette) and isset($description_noisette_par_id[$plugin][$traiter_typo][$noisette][$information]))
    391392                                        or (is_array($noisette)
    392                                                 and isset($description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang_noisette']][$information]))) {
     393                                                and isset($description_noisette_par_rang[$plugin][$traiter_typo][$noisette['id_conteneur']][$noisette['rang_noisette']][$information]))) {
    393394                                        $noisette_lue = is_array($noisette)
    394                                                 ? $description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang_noisette']][$information]
    395                                                 : $description_noisette_par_id[$plugin][$noisette][$information];
     395                                                ? $description_noisette_par_rang[$plugin][$traiter_typo][$noisette['id_conteneur']][$noisette['rang_noisette']][$information]
     396                                                : $description_noisette_par_id[$plugin][$traiter_typo][$noisette][$information];
    396397                                } else {
    397398                                        $noisette_lue = '';
     
    399400                        } else {
    400401                                $noisette_lue = is_array($noisette)
    401                                         ? $description_noisette_par_rang[$plugin][$noisette['id_conteneur']][$noisette['rang_noisette']]
    402                                         : $description_noisette_par_id[$plugin][$noisette];
     402                                        ? $description_noisette_par_rang[$plugin][$traiter_typo][$noisette['id_conteneur']][$noisette['rang_noisette']]
     403                                        : $description_noisette_par_id[$plugin][$traiter_typo][$noisette];
    403404                        }
    404405                }
  • _plugins_/n-core/trunk/inc/ncore_type_noisette.php

    r113516 r113630  
    264264        // On indexe le tableau des descriptions par le plugin appelant en cas d'appel sur le même hit
    265265        // par deux plugins différents.
    266         static $donnees_typo = array('nom', 'description');
    267         static $description_noisette = array();
     266        static $description_type_noisette = array();
    268267
    269268        // Stocker la description de la noisette si besoin
    270         if (!isset($description_noisette[$plugin][$type_noisette])) {
     269        if (!isset($description_type_noisette[$plugin][$traiter_typo][$type_noisette])) {
    271270                // On charge l'API de N-Core.
    272271                // Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
     
    276275                $description = ncore_type_noisette_decrire($plugin, $type_noisette, $stockage);
    277276
    278                 // Sauvegarde de la description de la page pour une consultation ultérieure dans le même hit.
    279277                if ($description) {
     278                        // Traitements des champs textuels
     279                        if ($traiter_typo) {
     280                                $description = ncore_type_noisette_traiter_typo($plugin, $description, $stockage);
     281                        }
     282
    280283                        // Traitements des champs tableaux sérialisés
    281284                        $description['contexte'] = unserialize($description['contexte']);
     
    284287                }
    285288
    286                 // Stockage de la description
    287                 $description_noisette[$plugin][$type_noisette] = $description;
     289                // Sauvegarde de la description de la page pour une consultation ultérieure dans le même hit.
     290                $description_type_noisette[$plugin][$traiter_typo][$type_noisette] = $description;
    288291        }
    289292
    290293        if ($information) {
    291                 if (isset($description_noisette[$plugin][$type_noisette][$information])) {
    292                         if (in_array($information, $donnees_typo) and $traiter_typo) {
    293                                 // Traitements de la donnée textuelle
    294                                 $retour = typo($description_noisette[$plugin][$type_noisette][$information]);
    295                         } else {
    296                                 $retour = $description_noisette[$plugin][$type_noisette][$information];
    297                         }
     294                if (isset($description_type_noisette[$plugin][$traiter_typo][$type_noisette][$information])) {
     295                        $type_noisette_lu = $description_type_noisette[$plugin][$traiter_typo][$type_noisette][$information];
    298296                } else {
    299                         $retour = '';
     297                        $type_noisette_lu = '';
    300298                }
    301299        } else {
    302                 $retour = $description_noisette[$plugin][$type_noisette];
    303                 // Traitements des données textuels
    304                 if ($traiter_typo) {
    305                         foreach ($donnees_typo as $_champ) {
    306                                 if (isset($retour[$_champ])) {
    307                                         $retour[$_champ] = typo($retour[$_champ]);
    308                                 }
    309                         }
    310                 }
    311         }
    312 
    313         return $retour;
     300                $type_noisette_lu = $description_type_noisette[$plugin][$traiter_typo][$type_noisette];
     301        }
     302
     303        return $type_noisette_lu;
    314304}
    315305
  • _plugins_/n-core/trunk/ncore/ncore.php

    r113529 r113630  
    139139        $description_complete = $description;
    140140
    141         // On cherche le service de stockage à utiliser selon la logique suivante :
    142         // - si le service de stockage est non vide on l'utilise en considérant que la fonction existe forcément;
    143         // - sinon, on utilise la fonction du plugin appelant si elle existe;
    144         // - et sinon, on utilise la fonction de N-Core.
     141        // Si le plugin utilisateur complète la description avec des champs spécifiques il doit proposer un service
     142        // de complément propre.
    145143        include_spip('inc/ncore_utils');
    146144        if ($completer = ncore_chercher_service($plugin, 'type_noisette_completer', $stockage)) {
     
    150148
    151149        return $description_complete;
     150}
     151
     152/**
     153 * Traite les champs textuels de la description brute d'un type de noisette issue de la lecture de l'espace de stockage
     154 * avec la fonction typo(). Si le plugin utilisateur complète la description du type de noisette avec de tels champs
     155 * textuels il doit donc les traiter dans son service dédié.
     156 *
     157 * Le plugin N-Core traite toujours les champs `nom` et `description.
     158 *
     159 * @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
     160 *
     161 * @uses ncore_chercher_service()
     162 *
     163 * @param string $plugin
     164 *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
     165 *        un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     166 * @param array  $description
     167 *        Description brute du type de noisette issue de la lecture dans l'espace de stockage du plugin utilisateur.
     168 * @param string $stockage
     169 *        Identifiant du service de stockage à utiliser si précisé.
     170 *
     171 * @return array
     172 *        Description du type de noisette dont les champs textuels ont été traités avec la fonction typo().
     173 */
     174function ncore_type_noisette_traiter_typo($plugin, $description, $stockage = '') {
     175
     176        // N-Core traite toujours les champs nom et description inclus dans les YAML.
     177        $description['nom'] = typo($description['nom']);
     178        if ($description['description']) {
     179                $description['description'] = typo($description['description']);
     180        }
     181
     182        // Si le plugin appelant complète la description du type de noisette avec des champs textuels il doit
     183        // proposer un service propre de traitement de ces champs.
     184        include_spip('inc/ncore_utils');
     185        if ($traiter_typo = ncore_chercher_service($plugin, 'type_noisette_traiter_typo', $stockage)) {
     186                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     187                $description = $traiter_typo($plugin, $description);
     188        }
     189
     190        return $description;
    152191}
    153192
     
    557596
    558597        return $description_complete;
     598}
     599
     600/**
     601 * Traite les champs textuels de la description brute d'une noisette issue de la lecture de l'espace de stockage
     602 * avec la fonction typo(). Si le plugin utilisateur complète la description de la noisette avec de tels champs
     603 * textuels il doit donc les traiter dans son service dédié.
     604 *
     605 * Le plugin N-Core n'a aucun champ textuel à traiter dans la description de base d'une noisette.
     606 *
     607 * @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
     608 *
     609 * @uses ncore_chercher_service()
     610 *
     611 * @param string $plugin
     612 *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
     613 *        un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     614 * @param array  $description
     615 *        Description brute de la noisette issue de la lecture dans l'espace de stockage du plugin utilisateur.
     616 * @param string $stockage
     617 *        Identifiant du service de stockage à utiliser si précisé.
     618 *
     619 * @return array
     620 *        Description du type de noisette dont les champs textuels ont été traités avec la fonction typo().
     621 */
     622function ncore_noisette_traiter_typo($plugin, $description, $stockage = '') {
     623
     624        // N-Core n'a aucun champ textuel à traiter dans la description de base d'une noisette.
     625        // Si le plugin appelant complète la description du type de noisette avec des champs textuels il doit
     626        // proposer un service propre de traitement de ces champs.
     627        include_spip('inc/ncore_utils');
     628        if ($traiter_typo = ncore_chercher_service($plugin, 'noisette_traiter_typo', $stockage)) {
     629                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     630                $description = $traiter_typo($plugin, $description);
     631        }
     632
     633        return $description;
    559634}
    560635
  • _plugins_/n-core/trunk/paquet.xml

    r113533 r113630  
    22        prefix="ncore"
    33        categorie="outil"
    4         version="0.8.3"
     4        version="0.8.4"
    55        etat="test"
    66        compatibilite="[3.2.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.