[SPIP] v3.2.1-->v3.2.3
[lhc/web/www.git] / www / plugins-dist / mots / mots_pipelines.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Utilisations de pipelines
15 *
16 * @package SPIP\Mots\Pipelines
17 **/
18 if (!defined('_ECRIRE_INC_VERSION')) {
19 return;
20 }
21
22 /**
23 * Définir les meta de configuration liées aux mots
24 *
25 * @pipeline configurer_liste_metas
26 * @param array $metas
27 * Couples nom de la méta => valeur par défaut
28 * @return array
29 * Couples nom de la méta => valeur par défaut
30 */
31 function mots_configurer_liste_metas($metas) {
32 $metas['articles_mots'] = 'non';
33 $metas['config_precise_groupes'] = 'non';
34
35 #$metas['mots_cles_forums'] = 'non';
36 return $metas;
37 }
38
39 /**
40 * Utilisation du pipeline affiche milieu
41 *
42 * - Ajoute le formulaire de configuration des mots sur la configuration des contenus
43 * - Ajoute le formulaire d'édition de mots sur les objets qui le peuvent
44 *
45 * @pipeline affiche_milieu
46 *
47 * @param array $flux
48 * Données du pipeline
49 * @return array
50 * Données du pipeline
51 */
52 function mots_affiche_milieu($flux) {
53 if ($flux['args']['exec'] == 'configurer_contenu') {
54 $flux['data'] .= recuperer_fond('prive/squelettes/inclure/configurer', array('configurer' => 'configurer_mots'));
55 }
56
57 // si on est sur une page ou il faut inserer les mots cles...
58 if ($en_cours = trouver_objet_exec($flux['args']['exec'])
59 and $en_cours['edition'] !== true // page visu
60 and $type = $en_cours['type']
61 and $id_table_objet = $en_cours['id_table_objet']
62 and isset($flux['args'][$id_table_objet])
63 and ($id = intval($flux['args'][$id_table_objet]))
64 ) {
65 $texte = recuperer_fond(
66 'prive/objets/editer/liens',
67 array(
68 'table_source' => 'mots',
69 'objet' => $type,
70 'id_objet' => $id,
71 )
72 );
73 if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
74 $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
75 } else {
76 $flux['data'] .= $texte;
77 }
78 }
79
80 return $flux;
81 }
82
83 /**
84 * Optimise la base de données en supprimant les liens orphelins
85 *
86 * @pipeline optimiser_base_disparus
87 *
88 * @param array $flux
89 * Données du pipeline
90 * @return array
91 * Données du pipeline
92 */
93 function mots_optimiser_base_disparus($flux) {
94 $n = &$flux['data'];
95 $mydate = $flux['args']['date'];
96
97 $result = sql_delete('spip_mots', 'length(titre)=0 AND maj < ' . sql_quote($mydate));
98
99 include_spip('action/editer_liens');
100 // optimiser les liens morts :
101 // entre mots vers des objets effaces
102 // depuis des mots effaces
103 $n += objet_optimiser_liens(array('mot' => '*'), '*');
104
105 return $flux;
106
107 }
108
109
110 /**
111 * Copier le type des groupes sur la table spip_mots
112 * à chaque changement d'un groupe.
113 *
114 * @pipeline post_edition
115 *
116 * @param array $flux
117 * Données du pipeline
118 * @return array
119 * Données du pipeline
120 */
121 function mots_post_edition($flux) {
122 if (isset($flux['args']['table'])
123 and ($flux['args']['table'] == 'spip_groupes_mots')
124 and isset($flux['data']['titre'])
125 ) {
126 sql_updateq('spip_mots', array('type' => $flux['data']['titre']), 'id_groupe=' . $flux['args']['id_objet']);
127 }
128
129 return $flux;
130 }