source: spip-zone/_plugins_/encarts/trunk/encarts_pipelines.php @ 100136

Last change on this file since 100136 was 100136, checked in by teddy.spip@…, 5 years ago
  • Retour du traitement des balises <encart> et <marge> dans le texte ;
  • Intégration de la liste des articles auxquels l'encart est lié dans sa fiche au lieu de la zone d'extra ;
  • On a maintenant une liaison plus classique des encarts, à la méthode de SPIP. On verra au retour des utilisateurs si on garde cette affichage ou pas.
  • Grosse mise à niveau, donc, up de y.
File size: 2.9 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par encarts
4 *
5 * @plugin     encarts
6 * @copyright  2013-2016
7 * @author     Cyril
8 * @licence    GNU/GPL
9 * @package    SPIP\Encarts\Pipelines
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16/*
17 * Un fichier de pipelines permet de regrouper
18 * les fonctions de branchement de votre plugin
19 * sur des pipelines existants.
20 */
21
22/**
23 * Ajout de contenu sur certaines pages,
24 * notamment des formulaires de liaisons entre objets
25 *
26 * @pipeline affiche_milieu
27 *
28 * @param  array $flux Données du pipeline
29 *
30 * @return array       Données du pipeline
31 */
32function encarts_affiche_milieu($flux) {
33        include_spip('inc/pipelines_ecrire');
34        include_spip('inc/utils');
35        $texte = "";
36        $e = trouver_objet_exec($flux['args']['exec']);
37
38        // encarts sur les articles
39        if (!$e['edition'] AND in_array($e['type'], array('article'))) {
40                $texte .= recuperer_fond('prive/objets/editer/liens', array(
41                        'table_source' => 'encarts',
42                        'objet' => $e['type'],
43                        'id_objet' => $flux['args'][$e['id_table_objet']],
44                ));
45        }
46
47        if ($texte) {
48                if ($p = strpos($flux['data'], "<!--affiche_milieu-->")) {
49                        $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
50                } else {
51                        $flux['data'] .= $texte;
52                }
53        }
54
55        return $flux;
56}
57
58/**
59 * Optimiser la base de données en supprimant les liens orphelins
60 * de l'objet vers quelqu'un et de quelqu'un vers l'objet.
61 *
62 * @pipeline optimiser_base_disparus
63 *
64 * @param  array $flux Données du pipeline
65 *
66 * @return array       Données du pipeline
67 */
68function encarts_optimiser_base_disparus($flux) {
69        include_spip('action/editer_liens');
70        $flux['data'] += objet_optimiser_liens(array('encart' => '*'), '*');
71
72        return $flux;
73}
74
75/**
76 * Traiter les textes contenant des <encart> .... </encart>
77 * ou des <marge>...</marge>
78 * en les remplaçant par un span...
79 *
80 * @param string $texte à analyser
81 * @return texte modifié
82 **/
83function encarts_pre_propre($texte) {
84        if (false !== strpos($texte, '<')) {
85                if (preg_match_all(',<(' . _TYPES_ENCARTS . ')>(.*?)</\1>,is', $texte, $regs, PREG_SET_ORDER)) {
86                        foreach ($regs as $reg) {
87                                $css = 'encart';
88                                if ($reg[1] != 'encart') {
89                                        $css .= " " . $reg[1];
90                                }
91                                $texte = str_replace($reg[0], "<span class='$css'>" . $reg[2] . "</span>", $texte);
92                        }
93                }
94        }
95
96        return $texte;
97}
98
99/**
100 * Mettre les vu=oui lorsque l'on met un modèle
101 * d'encart dans un texte.
102 *
103 **/
104function encarts_post_edition($flux) {
105        include_spip('inc/utils');
106        include_spip('base/objets');
107        if (!in_array($flux['args']['type'], array('forum', 'signature'))) {
108                $marquer_doublons_encart = charger_fonction('marquer_doublons_encart', 'inc');
109                $marquer_doublons_encart($flux['data'], $flux['args']['id_objet'], $flux['args']['type'], id_table_objet($flux['args']['type'], $flux['args']['serveur']), $flux['args']['table_objet'], $flux['args']['spip_table_objet'], '', $flux['args']['serveur']);
110        }
111
112        return $flux;
113}
Note: See TracBrowser for help on using the repository browser.