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

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

Résolution du problème de cache : forcément si on donne pas l'url en contexte à récupérer_fond(), ça peut pas marcher... Quel andouille ! Mais là c'est bon, ça marche, on passe en test.

File size: 3.1 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 * Effectuer des traitements juste avant l'envoi des pages publiques.
19 *
20 * => Ajout des metas Open Graph, Dublin Core et Twitter dans le <head> public.
21 *
22 * Règles :
23 * On va chercher dans le dossier inclure/metasplus le squelette de la variante spécifique à la page si elle existe, sinon le squelette générique dist.html qui génère automatiquement les métas.
24 *
25 * @Note : on retrouve les informations du contexte de l apage actuelle au moyen d'un squelette pour bénéficier de la mise en cache et éviter des requêtes SQL à chaque hit via decoder_url()
26 *
27 * @param $flux
28 * @return mixed
29 */
30function metasplus_affichage_final($flux) {
31
32        include_spip('inc/config');
33        include_spip('inc/utils'); // pour self()
34
35        // Tests préliminaires avant d'inclure éventuellement les métas
36        if (!test_espace_prive()
37                // Il y a un <head>
38                and $pos_head = strpos($flux, '</head>')
39                // Les protocoles ne sont pas tous désactivés (improbable mais possible)
40                and (
41                        !lire_config('metasplus')
42                        or count(lire_config('metasplus')) < 3
43                )
44                // Le contexte est retrouvé
45                and $url = self()
46                and $contexte = recuperer_fond('metasplus_trouver_contexte', array('url' => $url))
47                and is_array($contexte = unserialize($contexte))
48                // La page n'est pas en erreur
49                and empty($contexte['erreur'])
50                // La page n'est pas exclue
51                and is_array($pages_exclues = (
52                        (defined('_METASPLUS_PAGES_EXCLUES') and _METASPLUS_PAGES_EXCLUES) ?
53                                explode(',', _METASPLUS_PAGES_EXCLUES) :
54                                array()
55                ))
56                and (!in_array($contexte['type-page'], $pages_exclues))
57                // Ce n'est pas une page d'un pseudo fichier (ex. robots.txt.html)
58                and !strpos($contexte['type-page'], '.')
59        ) {
60
61                // Trouver le squelette à utiliser : variante de la page si elle existe, sinon le squelette par défaut (dist.html)
62                $fond_defaut   = 'inclure/metasplus/dist';
63                $fond_variante = 'inclure/metasplus/' . $contexte['type-page'];
64                if (find_in_path($fond_variante.'.html')) {
65                        $fond = $fond_variante;
66                } elseif (find_in_path($fond_defaut.'.html')) {
67                        $fond = $fond_defaut;
68                }
69
70                // Si le squelette n'est pas vide, on ajoute son contenu à la fin du head
71                if ($fond
72                        and $metas = recuperer_fond($fond, $contexte)
73                ) {
74                        $metas = "<!-- Plugin Métas + -->\n$metas\n";
75                        $flux = substr_replace($flux, $metas, $pos_head, 0);
76                }
77        }
78
79        return $flux;
80}
81
82/**
83 * pipeline post_edition pour supprimer la meta metasplus/id_doc_logo
84 * quand on supprime l'image dans le formualire de configuration
85 *
86 * @param $flux
87 * @return $flux
88 * @author tofulm
89 **/
90function metasplus_post_edition($flux){
91        if (
92                $flux['args']['table'] === 'spip_documents' and
93                $flux['args']['operation'] === 'supprimer_document' and
94                $flux['args']['action'] === 'supprimer_document' and
95                $flux['args']['id_objet'] == lire_config('metasplus/id_doc_logo')
96        ) {
97                effacer_config('metasplus/id_doc_logo');
98        }
99        return $flux;
100}
Note: See TracBrowser for help on using the repository browser.