source: spip-zone/_plugins_/dictionnaires/trunk/dictionnaires_pipelines.php @ 110957

Last change on this file since 110957 was 66220, checked in by marcimat@…, 8 years ago
  • Séparer le calcul les liens des définitions du pipeline post_propre, en créant un filtre «definitions»
  • Permettre de dire, via une constante define('DICTIONNAIRES_DETECTION_MANUELLE', true); que le squelette se charge d'appliquer le filtre |definition sur ce qui lui plait, et pas sur tout ce qui passe par propre.
File size: 2.5 KB
Line 
1<?php
2
3/**
4 * Usage de pipelines
5 *
6 * @package SPIP\Dictionnaires\Pipelines
7**/
8
9// Sécurité
10if (!defined('_ECRIRE_INC_VERSION')) return;
11
12/**
13 * Crée des liaisons entre les objets et les définitions.
14 *
15 * Pour chaque objet édité, regarde si les contenus possèdent des définitions
16 * que l'on connaît et dans ce cas crée une liaison entre l'objet et la définition.
17 *
18 * Cela permet de connaître, pour une définition donnée, la liste des
19 * objets sur lesquels est rattaché une définition. À l'inverse, cela
20 * permet, pour un objet de connaître les définitions qu'il possède.
21 *
22 * @todo
23 *     Tout cela est à faire !!!
24 *
25 * @pipeline post_edition
26 *
27 * @param array $flux   Données du pipeline
28 * @return array        Données du pipeline
29**/
30function dictionnaires_post_edition($flux){
31        // TOUT CELA EST A FAIRE
32        return $flux;
33
34        // Seulement si c'est une modif d'objet
35        if ($flux['args']['action'] == 'modifier' and $id_objet = $flux['args']['id_objet']){
36                $trouver_table = charger_fonction('trouver_table', 'base/');
37                $desc = $trouver_table($flux['args']['table_objet'], $flux['args']['serveur']);
38                $id_table_objet = id_table_objet($flux['args']['type']);
39               
40                // On cherche les champs textuels
41                $champs_texte = array();
42                foreach ($desc['field'] as $champ=>$sql){
43                        if (preg_match('/(text|blob|varchar)/', $sql)){
44                                $champs_texte[] = $champ;
45                        }
46                }
47               
48                // On récupère ces champs
49                $textes = sql_fetsel($champs_texte, $flux['args']['spip_table_objet'], "$id_table_objet = $id_objet");
50                // On récupère les définitions
51                include_spip('inc/dictionnaires');
52                $definitions = dictionnaires_lister_definitions();
53               
54                // On les scanne
55                foreach ($textes as $texte){
56                       
57                }
58        }
59}
60
61/**
62 * Ajoute pour les textes passés à propre les définitions sur les
63 * termes à définir.
64 *
65 * Les définitions sont calculées ici uniquement si le dictionnaire
66 * n'est pas en mode manuel. Ce mode est activable par la constante
67 * DICTIONNAIRES_DETECTION_MANUELLE mise à TRUE.
68 *
69 * @pipeline post_edition
70 *
71 * @param string $texte  Texte
72 * @return string        Texte
73**/
74function dictionnaires_post_propre($texte) {
75        static $filtre_definitions = false;
76
77        // lorsqu'il n'est pas demandé explicitement un usage
78        // manuel, appliquer automatiquement la recherche de terme
79        if (!defined('DICTIONNAIRES_DETECTION_MANUELLE')
80                OR !DICTIONNAIRES_DETECTION_MANUELLE)
81        {
82                if (!$filtre_definitions) {
83                        $filtre_definitions = charger_filtre('definitions');
84                }
85                $texte = $filtre_definitions($texte);
86        }
87
88        return $texte;
89}
90
91
92?>
Note: See TracBrowser for help on using the repository browser.