source: spip-zone/_plugins_/metasplus/trunk/metasplus_pipelines.php @ 110213

Last change on this file since 110213 was 110213, checked in by tcharlss@…, 21 months ago

v2.0.15 : ajout d'un bouton dans la boite infos afin de permettre aux admins de prévisualiser les métas+. Pour l'instant il y a un petit bug : les URLs pointent vers le privé, on met un message de mise en garde temporaire le temps d'y remédier. On en profite pour faire un peu de rangement : l'identification du contexte et la sélection du fond sont dans des fonctions à part.

File size: 3.5 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par le plugin Métas+
4 *
5 * @plugin     Métas+
6 * @copyright  2016-2018
7 * @author     Tetue, Erational, Tcharlss
8 * @licence    GNU/GPL
9 * @package    SPIP\Metas+\Pipelines
10 */
11
12// Sécurité
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17
18/**
19 * Effectuer des traitements juste avant l'envoi des pages publiques.
20 *
21 * => Ajout des métadonnéess Open Graph, Dublin Core et Twitter
22 * dans le <head> public de certaines pages.
23 *
24 * @Note : on retrouve les informations du contexte de la page
25 * au moyen d'un squelette pour bénéficier de la mise en cache
26 * et éviter des requêtes SQL à chaque hit via decoder_url().
27 *
28 * @uses metasplus_identifier_contexte()
29 * @uses metasplus_selectionner_fond()
30 *
31 * @param $flux
32 * @return mixed
33 */
34function metasplus_affichage_final($flux) {
35
36        include_spip('inc/config');
37        include_spip('inc/utils'); // pour self()
38
39        // Tests préliminaires avant d'inclure éventuellement les métas
40        if (!test_espace_prive()
41                // Il y a un <head>
42                and $pos_head = strpos($flux, '</head>')
43                // Au moins un protocole est activé
44                and count(lire_config('metasplus'))
45                // Le contexte est retrouvé
46                and $url = self()
47                and $contexte = recuperer_fond('metasplus_identifier_contexte', array('url' => $url))
48                and is_array($contexte = unserialize($contexte))
49                // La page n'est pas en erreur
50                and empty($contexte['erreur'])
51                // La page n'est pas exclue
52                and is_array($pages_exclues = (
53                        (defined('_METASPLUS_PAGES_EXCLUES') and _METASPLUS_PAGES_EXCLUES) ?
54                                explode(',', _METASPLUS_PAGES_EXCLUES) :
55                                array()
56                ))
57                and (!in_array($contexte['type-page'], $pages_exclues))
58                // Ce n'est pas une page d'un pseudo fichier (ex. robots.txt.html)
59                and !strpos($contexte['type-page'], '.')
60        ) {
61
62                // Trouver le squelette à utiliser
63                $fond = metasplus_selectionner_fond($contexte['type-page']);
64
65                // Si le squelette n'est pas vide, on ajoute son contenu à la fin du head
66                if ($fond
67                        and $metas = recuperer_fond($fond, $contexte)
68                ) {
69                        $metas = "<!-- Plugin Métas + -->\n$metas\n";
70                        $flux = substr_replace($flux, $metas, $pos_head, 0);
71                }
72        }
73
74        return $flux;
75}
76
77
78/**
79 * pipeline post_edition pour supprimer la meta metasplus/id_doc_logo
80 * quand on supprime l'image dans le formualire de configuration
81 *
82 * @param $flux
83 * @return $flux
84 * @author tofulm
85 **/
86function metasplus_post_edition($flux){
87        if (
88                $flux['args']['table'] === 'spip_documents' and
89                $flux['args']['operation'] === 'supprimer_document' and
90                $flux['args']['action'] === 'supprimer_document' and
91                $flux['args']['id_objet'] == lire_config('metasplus/id_doc_logo')
92        ) {
93                effacer_config('metasplus/id_doc_logo');
94        }
95        return $flux;
96}
97
98
99/**
100 * Gérer les informations affichées dans l’espace privé
101 * dans le cadre d’information des objets SPIP
102 *
103 * => Ajout du bouton de prévisualisation des métas+
104 *
105 * @param $flux
106 * @return $flux
107 * @author tofulm
108 **/
109function metasplus_boite_infos($flux){
110
111        if ($objet = $flux['args']['type']
112                and $id_objet = $flux['args']['id']
113                and autoriser('previsualiser_metasplus', $objet, $id_objet)
114        ) {
115                include_spip('base/objets');
116                include_spip('inc/filtres');
117                $type_page = objet_info($objet, 'page');
118                $id_table_objet = id_table_objet($objet);
119                $contexte = array(
120                        'type-page'      => $type_page,
121                        'objet'          => $objet,
122                        'id_objet'       => $id_objet,
123                        $id_table_objet  => $id_objet,
124                );
125                $fond_previsu = recuperer_fond('prive/squelettes/inclure/metasplus_bouton_previsu', $contexte);
126                $flux['data'] .= $fond_previsu;
127        }
128
129        return $flux;
130}
Note: See TracBrowser for help on using the repository browser.