Changeset 117981 in spip-zone


Ignore:
Timestamp:
Sep 28, 2019, 6:40:33 PM (12 months ago)
Author:
eric@…
Message:

Amélioration de la fonction de lecture d'une page et démo associée.

Location:
_plugins_/noizetier/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier/trunk/demo/noizetier.php

    r113001 r117981  
    1010include_spip('ncore/ncore');
    1111include_spip('ncore/noizetier');
     12include_spip('inc/noizetier_page');
    1213
    1314$contexte = array('objet' => 'auteur', 'id' => 12);
     
    1718
    1819        $timestamp_debut = microtime(true);
     20
     21        $page = 'article-ddu';
     22        $retour = page_noizetier_lire($page);
     23        var_dump('lecture page article-ddu', $retour);
     24
     25        $page = 'article-ddu';
     26        $retour = page_noizetier_lire($page, 'nom');
     27        var_dump('lecture nom page article-ddu', $retour);
     28
     29        $page = 'article-ddu';
     30        $retour = page_noizetier_lire($page, 'blocs');
     31        var_dump('lecture blocs page article-ddu', $retour);
     32
     33        $page = 'article-ddu';
     34        $retour = page_noizetier_lire($page, array('nom'));
     35        var_dump('lecture array nom page article-ddu', $retour);
     36
     37        $page = 'article-ddu';
     38        $retour = page_noizetier_lire($page, array('nom', 'blocs'));
     39        var_dump('lecture array nom et blocs page article-ddu', $retour);
     40
    1941
    2042//      $conteneur = array('squelette' => 'content/article');
  • _plugins_/noizetier/trunk/inc/noizetier_page.php

    r113625 r117981  
    192192 * @param string        $page
    193193 *              Identifiant de la page ou de la composition.
    194  * @param string  $information
    195  *        Information spécifique à retourner ou vide pour retourner toute la description.
     194 * @param array|string $informations
     195 *      Liste des champs à renvoyer. Si vide la fonction renvoie tous les champs. Il est possible de demander
     196 *      un seul champ sous la forme d'une chaine et pas de tableau.
    196197 * @param boolean       $traiter_typo
    197198 *      Indique si les données textuelles doivent être retournées brutes ou si elles doivent être traitées
     
    204205 *        traités avec la fonction typo().
    205206 */
    206 function page_noizetier_lire($page, $information = '', $traiter_typo = false) {
     207function page_noizetier_lire($page, $informations = array(), $traiter_typo = false) {
    207208
    208209        static $description_page = array();
    209210
    210         if (!isset($description_page[$traiter_typo][$page])) {
     211        // On vérifie si la page demandée n'est pas déjà stockée : si oui, la description sera utilisée
     212        if (isset($description_page[$traiter_typo][$page])) {
     213                $description = $description_page[$traiter_typo][$page];
     214        } else {
     215                $description = array();
     216        }
     217
     218        if (!$description) {
    211219                // Chargement de toute la configuration de la page en base de données.
    212220                $description = sql_fetsel('*', 'spip_noizetier_pages', array('page=' . sql_quote($page)));
     
    238246        }
    239247
    240         if ($information) {
    241                 if (isset($description_page[$traiter_typo][$page][$information])) {
    242                         $page_lue = $description_page[$traiter_typo][$page][$information];
    243                 } else {
    244                         $page_lue = '';
    245                 }
    246         } else {
    247                 $page_lue = $description_page[$traiter_typo][$page];
    248         }
    249 
    250         return $page_lue;
     248        // On ne retourne maintenant que les champs demandés.
     249        if ($description and $informations) {
     250                // Extraction des seules informations demandées.
     251                // -- si on demande une information unique on renvoie la valeur simple, sinon on renvoie un tableau.
     252                // -- si une information n'est pas un champ valide elle n'est pas renvoyée sans renvoyer d'erreur.
     253                if (is_array($informations)) {
     254                        if (count($informations) == 1) {
     255                                // Tableau d'une seule information : on revient à une chaine unique.
     256                                $informations = array_shift($informations);
     257                        } else {
     258                                // Tableau des informations valides
     259                                $description = array_intersect_key($description, array_flip($informations));
     260                        }
     261                }
     262
     263                if (is_string($informations)) {
     264                        // Valeur unique demandée.
     265                        $description = isset($description[$informations]) ? $description[$informations] : '';
     266                }
     267        }
     268
     269        return $description;
    251270}
    252271
  • _plugins_/noizetier/trunk/noizetier_pipelines.php

    r113857 r117981  
    161161        // étant donné qu'elles ne peuvent pas être détectées par Compositions car sans XML
    162162        // -- filtre sur l'indicateur est_virtuelle qui n'est à oui que pour les compositions
     163        // -- filtre sur l'indicateur est_page_objet à oui car on ne considère que les compositions virtuelles sur objet
    163164        // -- filtre sur le type de contenu ou pas suivant l'appel
    164165        include_spip('inc/noizetier_page');
    165166        $informations = array('type', 'composition', 'nom', 'description', 'icon', 'branche');
    166         $filtres = array('est_virtuelle' => 'oui');
     167        $filtres = array('est_virtuelle' => 'oui', 'est_page_objet' => 'oui');
    167168        if ($type) {
    168169                $filtres['type'] = $type;
     
    193194
    194195/**
    195  * Pipeline styliser pour les compositions du noizetier de type page si celles-ci sont activées.
     196 * Pipeline styliser pour les compositions virtuelles du noizetier.
    196197 *
    197198 * @param array $flux
     
    199200 * @return array
    200201 */
    201  // TODO : revoir l'utilité de ce code qui est mort à priori car on a toujours une page source pour une composition
    202 //function noizetier_styliser($flux) {
    203 //      if (defined('_NOIZETIER_COMPOSITIONS_TYPE_PAGE') and _NOIZETIER_COMPOSITIONS_TYPE_PAGE) {
    204 //              $squelette = $flux['data'];
    205 //              $fond = $flux['args']['fond'];
    206 //              $ext = $flux['args']['ext'];
    207 //
    208 //              // Si on n'a pas trouvé de squelette
    209 //              if (!$squelette) {
    210 //                      $noizetier_compositions = (isset($GLOBALS['meta']['noizetier_compositions'])) ? unserialize($GLOBALS['meta']['noizetier_compositions']) : array();
    211 //                      // On vérifie qu'on n'a pas demandé une composition du noizetier de type page et qu'on appele ?page=type
    212 //                      if (isset($noizetier_compositions['page'][$fond])) {
    213 //                              $flux['data'] = substr(find_in_path("page.$ext"), 0, -strlen(".$ext"));
    214 //                              $flux['args']['composition'] = $fond;
    215 //                      }
    216 //              }
    217 //      }
    218 //
    219 //      return $flux;
    220 //}
     202function noizetier_styliser($flux) {
     203/*
     204        // Initialisation du squelette, du fond et de l'extension.
     205        $squelette = $flux['data'];
     206        $fond = $flux['args']['fond'];
     207        $ext = $flux['args']['ext'];
     208
     209        // Si le squelette est vide, il est probable que l'on soit en présence d'une composition virtuelle.
     210        if (!$squelette) {
     211                include_spip('inc/noizetier_page');
     212            if ($page = page_noizetier_lire($fond, array('est_virtuelle', 'est_page_objet'))
     213            and ($page['est_virtuelle'] == 'oui')
     214            and ($page['est_page_objet'] == 'oui')) {
     215                        // Composition virtuelle du noiZetier basée sur une page autonome.
     216                        $flux['data'] = substr(find_in_path("page.$ext"), 0, -strlen(".$ext"));
     217                        $flux['args']['composition'] = $fond;
     218            }
     219        }
     220*/
     221        return $flux;
     222}
    221223
    222224/**
  • _plugins_/noizetier/trunk/paquet.xml

    r117927 r117981  
    22        prefix="noizetier"
    33        categorie="maintenance"
    4         version="3.0.101"
     4        version="3.0.102"
    55        etat="dev"
    66        compatibilite="[3.2.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.