source: spip-zone/_plugins_/fabrique/trunk/fabrique/prefixe_pipelines.php.html @ 90304

Last change on this file since 90304 was 90304, checked in by marcimat@…, 4 years ago

Il manquait des morceaux de reports dans le trunk de r79326 et r79327, ce qui
empêchait les plugins générés par la fabrique de SPIP 3.1 d'affecter le statut
des rubriques si l'objet créé est présent dedans. (hadrien)

File size: 6.4 KB
Line 
1#PHP
2[(#INCLURE{fond=fabrique/entetes/php,env,
3        description=Utilisations de pipelines par #ENV{paquet/nom},
4        package=Pipelines})]
5
6<BOUCLE_si_exemples(CONDITION){si #EXEMPLES}>
7/*
8 * Un fichier de pipelines permet de regrouper
9 * les fonctions de branchement de votre plugin
10 * sur des pipelines existants.
11 */
12
13</BOUCLE_si_exemples>[
14(#REM)
15
16
17
18        AFFICHE ENFANTS
19
20
21
22]<BOUCLE_si_affiche_enfants(CONDITION){si #OBJETS|fabrique_necessite_pipeline{affiche_enfants}}>
23/**
24 * Ajouter les objets sur les vues de rubriques
25 *
26 * @pipeline affiche_enfants
27 * @param  array $flux Données du pipeline
28 * @return array       Données du pipeline
29**/
30function [(#PREFIXE)]_affiche_enfants($flux) {
31        if ($e = trouver_objet_exec($flux['args']['exec'])
32                AND $e['type'] == 'rubrique'
33                AND $e['edition'] == false) {
34
35                $id_rubrique = $flux['args']['id_rubrique'];
36                $lister_objets = charger_fonction('lister_objets', 'inc');
37<BOUCLE_objets_affiche_enfants(DATA){source tableau,(#OBJETS|objets_option_presente{vue_rubrique})}>
38                $bouton = '';
39                if (autoriser('creer#TYPEdans', 'rubrique', $id_rubrique)) {
40                        $bouton .= icone_verticale(_T("#TYPE:icone_creer_#TYPE"), generer_url_ecrire("[(#TYPE)]_edit", "id_rubrique=$id_rubrique"), "#TYPE-24.png", "new", "right")
41                                        . "<br class='nettoyeur' />";
42                }
43
44                $flux['data'] .= $lister_objets('#OBJET', array('titre'=>_T('#TYPE:titre_[(#OBJET)]_rubrique') , 'id_rubrique'=>$id_rubrique[, 'par'=>'(#CHAMP_TITRE)']));
45                $flux['data'] .= $bouton;
46</BOUCLE_objets_affiche_enfants>
47        }
48        return $flux;
49}
50</BOUCLE_si_affiche_enfants>[
51(#REM)
52
53
54
55        AFFICHE MILIEU
56
57
58
59]<BOUCLE_si_affiche_milieu(CONDITION){si #OBJETS|fabrique_necessite_pipeline{affiche_milieu}}>
60
61/**
62 * Ajout de contenu sur certaines pages,
63 * notamment des formulaires de liaisons entre objets
64 *
65 * @pipeline affiche_milieu
66 * @param  array $flux Données du pipeline
67 * @return array       Données du pipeline
68 */
69function [(#PREFIXE)]_affiche_milieu($flux) {
70        $texte = "";
71        $e = trouver_objet_exec($flux['args']['exec']);
72<BOUCLE_si_affiche_milieu_auteurs(CONDITION){si (#OBJETS|objets_option_presente{auteurs_liens})}>
73        // auteurs sur les [(#OBJETS|objets_option_presente{auteurs_liens, objet}|implode{', '})]
74        if (!$e['edition'] AND in_array($e['type'], array('[(#OBJETS|objets_option_presente{auteurs_liens, type}|implode{"', '"})]'))) {
75                $texte .= recuperer_fond('prive/objets/editer/liens', array(
76                        'table_source' => 'auteurs',
77                        'objet' => $e['type'],
78                        'id_objet' => $flux['args'][$e['id_table_objet']]
79                ));
80        }</BOUCLE_si_affiche_milieu_auteurs>
81
82<BOUCLE_objet_liens_sur_objet(DATA){source tableau,(#OBJETS|objets_options_presentes{#LISTE{table_liens,vue_liens}})}>
83        // #LOBJET sur les [(#VAL{table_objet}|array_map{#VUE_LIENS}|implode{', '})]
84        if (!$e['edition'] AND in_array($e['type'], array('[(#VAL{objet_type}|array_map{#VUE_LIENS}|implode{"', '"})]'))) {
85                $texte .= recuperer_fond('prive/objets/editer/liens', array(
86                        'table_source' => '#LOBJET',
87                        'objet' => $e['type'],
88                        'id_objet' => $flux['args'][$e['id_table_objet']]
89                ));
90        }</BOUCLE_objet_liens_sur_objet>
91
92        if ($texte) {
93                if ($p=strpos($flux['data'],"<!--affiche_milieu-->"))
94                        $flux['data'] = substr_replace($flux['data'],$texte,$p,0);
95                else
96                        $flux['data'] .= $texte;
97        }
98
99        return $flux;
100}
101</BOUCLE_si_affiche_milieu>[
102(#REM)
103
104
105
106        AFFICHE AUTEURS INTERVENTIONS
107
108
109
110]<BOUCLE_si_affiche_auteurs_interventions(CONDITION){si (#OBJETS|fabrique_necessite_pipeline{affiche_auteurs_interventions})}>
111
112/**
113 * Ajout de liste sur la vue d'un auteur
114 *
115 * @pipeline affiche_auteurs_interventions
116 * @param  array $flux Données du pipeline
117 * @return array       Données du pipeline
118 */
119function [(#PREFIXE)]_affiche_auteurs_interventions($flux) {
120        if ($id_auteur = intval($flux['args']['id_auteur'])) {
121<BOUCLE_affiche_auteurs_interventions(DATA){source tableau,(#OBJETS|objets_option_presente{vue_auteurs_liens})}>
122                $flux['data'] .= recuperer_fond('prive/objets/liste/#OBJET', array(
123                        'id_auteur' => $id_auteur,
124                        'titre' => _T('#TYPE:info_[(#OBJET)]_auteur')
125                ), array('ajax' => true));
126</BOUCLE_affiche_auteurs_interventions>
127        }
128        return $flux;
129}
130</BOUCLE_si_affiche_auteurs_interventions>[
131(#REM)
132
133
134
135        AFFICHER CONTENU OBJET
136
137
138
139]<BOUCLE_si_afficher_contenu_objet(CONDITION){si #OBJETS|fabrique_necessite_pipeline{afficher_contenu_objet}}>
140
141/**
142 * Ajout de formulaires de liens
143 *
144 * @pipeline affiche_contenu_objet
145 * @param  array $flux Données du pipeline
146 * @return array       Données du pipeline
147 */
148function [(#PREFIXE)]_afficher_contenu_objet($flux) {
149
150        $type = $flux['args']['type'];
151        $id   = $flux['args']['id_objet'];
152
153        return $flux;
154}
155</BOUCLE_si_afficher_contenu_objet>[
156(#REM)
157
158
159
160        OBJET COMPTE ENFANT
161
162
163
164]
165<B_objet_compte_enfants>
166/**
167 * Compter les enfants d'une rubrique
168 *
169 * @pipeline objets_compte_enfants
170 * @param  array $flux Données du pipeline
171 * @return array       Données du pipeline
172**/
173function [(#PREFIXE)]_objet_compte_enfants($flux) {
174        if ($flux['args']['objet']=='rubrique'
175                AND $id_rubrique=intval($flux['args']['id_objet'])) {
176
177<BOUCLE_objet_compte_enfants(DATA){source tableau,(#OBJETS|objets_options_presentes{#LISTE{statut_rubrique,id_rubrique}})}>
178                [(#STATUT|oui)
179                // juste les publiés ?
180                if (array_key_exists('statut', $flux\['args'\]) and ($flux\['args'\]\['statut'\] == 'publie')) {
181                        $flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', "id_rubrique=".intval($id_rubrique)." AND (statut='publie')");
182                } else {
183                        $flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', "id_rubrique=".intval($id_rubrique)." AND (statut<>'poubelle')");
184                }
185                ][(#STATUT|non)
186                        $flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', "id_rubrique=".intval($id_rubrique));
187                ]
188</BOUCLE_objet_compte_enfants>
189        }
190        return $flux;
191}
192</B_objet_compte_enfants>[
193(#REM)
194
195
196
197        OPTIMISER BASE DISPARUS
198
199
200
201]<BOUCLE_si_optimiser_base_disparus(CONDITION){si #OBJETS|fabrique_necessite_pipeline{optimiser_base_disparus}}>
202
203/**
204 * Optimiser la base de données en supprimant les liens orphelins
205 * de l'objet vers quelqu'un et de quelqu'un vers l'objet.
206 *
207 * @pipeline optimiser_base_disparus
208 * @param  array $flux Données du pipeline
209 * @return array       Données du pipeline
210 */
211function [(#PREFIXE)]_optimiser_base_disparus($flux){
212        include_spip('action/editer_liens');
213        $flux['data'] += objet_optimiser_liens(array(<BOUCLE_objets_optimiser_base_disparus(DATA){source tableau,(#OBJETS|objets_options_presentes{table_liens})}{', '}>'#TYPE'=>'*'</BOUCLE_objets_optimiser_base_disparus>),'*');
214        return $flux;
215}</BOUCLE_si_optimiser_base_disparus>
216
Note: See TracBrowser for help on using the repository browser.