source: spip-zone/_plugins_/seminaire/trunk/seminaire_pipelines.php @ 80068

Last change on this file since 80068 was 80068, checked in by kent1@…, 6 years ago

Des chaines de langue qui peuvent servir

Insertion dans recuperer_fond :
Si on est dans un article séminaire, que l'on utilise un squelette basé sur z ou zcore, on passe la composition seminaire à structure.html

Cela permet par exemple d'avoir un squelette content/article-seminaire.html avec spipr

File size: 4.2 KB
Line 
1<?php
2/**
3 * Plugin Séminaires
4 * Licence GNU/GPL
5 *
6 * @package SPIP\Seminaires\Pipelines
7 */
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10/**
11 * Insertion dans le pipeline post_insertion (SPIP)
12 *
13 * A la création d'un évènement on associe le mot clé du formulaire
14 *
15 * @param array $flux
16 *      Le contexte du pipeline
17 * @return array $flux
18 *      Le même contexte sans modification, on a juste lié le mot clé récupéré dans le post
19 */
20function seminaire_post_insertion($flux) {
21        if ($flux['args']['table'] == 'spip_evenements') {
22                if(($id_mot = _request('id_mot')) && ($id_evenement = $flux['args']['id_objet'])){
23                        include_spip('action/editer_liens');
24                        objet_associer(array('mot'=>$id_mot),array('evenement'=>$id_evenement), $qualif = null);
25                }
26        }
27        return $flux;
28}
29
30/**
31 * Insertion dans le pipeline formulaire_charger (SPIP)
32 *
33 * On ajoute le mot clé du type d'évènement dans l'environnement
34 *
35 * @param array $flux
36 *      Le contexte du pipeline
37 * @return array $flux
38 *      Le contexte modifié en cas d'erreur
39 */
40function seminaire_formulaire_charger($flux){
41        if(isset($flux['args']['form']) && $flux['args']['form'] == 'editer_evenement'){
42                if(isset($flux['data']['id_parent']) && $id_parent = $flux['data']['id_parent']){
43                        $seminaire = sql_getfetsel('seminaire','spip_articles','id_article='.intval($id_parent));
44                        $flux['data']['seminaire'] = $seminaire;
45                }
46                $flux['data']['id_mot'] = sql_getfetsel('lien.id_mot','spip_mots_liens as lien LEFT JOIN spip_mots as mots ON lien.id_mot=mots.id_mot LEFT JOIN spip_groupes_mots as groupe ON mots.id_groupe=groupe.id_groupe','lien.objet='.sql_quote('evenement').' AND lien.id_objet='.intval($flux['data']['id_evenement']).' AND groupe.id_groupe='.intval(lire_config('seminaire/groupe_mot_type')));
47        }
48        return $flux;
49}
50
51/**
52 * Insertion dans le pipeline formulaire_verifier
53 *
54 * On vérifie que le mot clé, obligatoire, a bien été sélectionné
55 *
56 * @param array $flux
57 *      Le contexte du pipeline
58 * @return array $flux
59 *      Le contexte modifié en cas d'erreur
60 */
61function seminaire_formulaire_verifier($flux){
62        if(isset($flux['args']['form']) && $flux['args']['form'] == 'editer_evenement'){
63                if(!_request('id_mot') && _request('seminaire'))
64                        $flux['data']['id_mot'] = _T('seminaire:mot_obligatoire');
65        }
66        return $flux;
67}
68
69/**
70 * Insertion dans le pipeline formulaire_traiter
71 *
72 * On lie le mot sur les évènements "séminaire"
73 *
74 * @param array $flux
75 *      Le contexte du pipeline
76 * @return array $flux
77 *      Le même contexte du pipeline après que le mot soit lié
78 */
79function seminaire_formulaire_traiter($flux){
80        if(isset($flux['args']['form']) && $flux['args']['form'] == 'editer_evenement'){
81                if(($id_mot = _request('id_mot')) && ($id_evenement = $flux['data']['id_evenement'])){
82                        $id_mot_origine = sql_getfetsel('lien.id_mot','spip_mots_liens as lien LEFT JOIN spip_mots as mots ON lien.id_mot=mots.id_mot LEFT JOIN spip_groupes_mots as groupe ON mots.id_groupe=groupe.id_groupe','lien.objet='.sql_quote('evenement').' AND groupe.id_groupe='.intval(lire_config('seminaire/groupe_mot_type')).' AND lien.id_objet='.intval($id_evenement));
83                        if(!$id_mot_origine || $id_mot_origine != $id_mot){
84                                include_spip('action/editer_liens');
85                                if($id_mot_origine)
86                                        objet_dissocier(array('mot'=>$id_mot_origine),array('evenement'=>$id_evenement));
87                                objet_associer(array('mot'=>$id_mot),array('evenement'=>$id_evenement));
88                        }
89                }
90        }
91        return $flux;
92}
93
94/**
95 * Insertion dans le pipeline recuperer_fond (SPIP)
96 *
97 * Si on est dans un article séminaire, que l'on utilise un squelette basé sur z ou zcore,
98 * on passe la composition seminaire à structure.html
99 *
100 * Cela permet par exemple d'avoir un squelette content/article-seminaire.html avec spipr
101 */
102function seminaire_recuperer_fond($flux){
103        if(isset($flux['args']['contexte']['id_article']) && isset($flux['args']['contexte']['type-page'])
104                && ($flux['args']['fond'] == 'structure')
105                && ($flux['args']['contexte']['id_article'] > 0)
106                && $flux['args']['contexte']['type-page'] == 'article'
107                && sql_getfetsel('seminaire','spip_articles','id_article='.intval($flux['args']['contexte']['id_article'])) == 'on'){
108                        $flux['args']['contexte']['composition'] = 'seminaire';
109                        $flux['data'] = evaluer_fond('structure', $flux['args']['contexte']);
110        }
111        return $flux;
112}
113?>
Note: See TracBrowser for help on using the repository browser.