source: spip-zone/_core_/plugins/sites/sites_pipelines.php @ 50546

Last change on this file since 50546 was 50546, checked in by cedric@…, 8 years ago

http://core.spip.org/issues/2227 : c'est a chaque extension d'inserer ses formulaires de configuration dans la page configurer contenus

File size: 7.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2011                                                *
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/**
15 * Ajouter les sites et syndication a valider sur les rubriques
16 *
17 * @param array $flux
18 * @return array
19**/
20function sites_rubrique_encours($flux){
21        if ($flux['args']['type'] == 'rubrique') {
22                $lister_objets = charger_fonction('lister_objets','inc');
23
24                $id_rubrique = $flux['args']['id_objet'];
25       
26                //
27                // Les sites references a valider
28                //
29                if ($GLOBALS['meta']['activer_sites'] != 'non') {
30                        $flux['data'] .= $lister_objets('sites',array('titre'=> _T('sites:info_site_valider') ,'statut'=>'prop','id_rubrique'=>$id_rubrique, 'par'=>'nom_site'));
31                }
32
33                //
34                // Les sites a probleme
35                //
36                if ($GLOBALS['meta']['activer_sites'] != 'non'
37                AND autoriser('publierdans','rubrique',$id_rubrique)) {
38                        $flux['data'] .= $lister_objets('sites',array('titre'=> _T('sites:avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'),'id_rubrique'=>$id_rubrique, 'par'=>'nom_site'));
39                }
40
41                // Les articles syndiques en attente de validation
42                if ($id_rubrique == 0
43                AND autoriser('publierdans','rubrique',$id_rubrique)) {
44
45                        $cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
46                        if ($cpt)
47                                $flux['data'] .= "<br /><small><a href='" .
48                                        generer_url_ecrire("sites") .
49                                        "' style='color: black;'>" .
50                                        $cpt .
51                                        " " .
52                                        _T('sites:info_liens_syndiques_1') .
53                                        " " .
54                                        _T('sites:info_liens_syndiques_2') .
55                                        "</a></small>";
56                }
57        }
58       
59        return $flux;
60}
61
62/**
63 * Configuration des contenus
64 * @param array $flux
65 * @return array
66 */
67function sites_affiche_milieu($flux){
68        if ($flux["args"]["exec"] == "configurer_contenu") {
69                $flux["data"] .=  recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_sites'));
70        }
71        return $flux;
72}
73
74/**
75 * Ajouter les sites et syndication a valider sur la page d'accueil
76 *
77 * @param array $flux
78 * @return array
79**/
80function sites_accueil_encours($flux){
81        $lister_objets = charger_fonction('lister_objets','inc');
82       
83        //
84        // Les sites references a valider
85        //
86        if ($GLOBALS['meta']['activer_sites'] != 'non') {
87                $flux .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites')). _T('sites:info_site_valider') ,'statut'=>'prop', 'par'=>'nom_site'));
88        }
89
90        if ($GLOBALS['visiteur_session']['statut'] == '0minirezo') {
91                //
92                // Les sites a probleme
93                //
94                if ($GLOBALS['meta']['activer_sites'] != 'non') {
95                        $flux .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites')). _T('sites:avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'), 'par'=>'nom_site'));
96                }
97
98                // Les articles syndiques en attente de validation
99                $cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
100                if ($cpt)
101                        $flux .= "\n<br /><small><a href='"
102                        . generer_url_ecrire("sites","")
103                        . "' style='color: black;'>"
104                        . $cpt
105                        . " "
106                        . _T('sites:info_liens_syndiques_1')
107                        . " "
108                        . _T('sites:info_liens_syndiques_2')
109                        . "</a></small>";
110
111        }
112        return $flux;
113}
114
115
116/**
117 * Ajouter les sites references sur les vues de rubriques
118 *
119 * @param array $flux
120 * @return array
121**/
122function sites_affiche_enfants($flux) {
123        if ($e = trouver_objet_exec($flux['args']['exec'])
124          AND $e['type'] == 'rubrique'
125          AND $e['edition'] == false) {
126                $id_rubrique = $flux['args']['id_rubrique'];
127 
128                if ($GLOBALS['meta']["activer_sites"] == 'oui') {
129                        $lister_objets = charger_fonction('lister_objets','inc');
130                        $bouton_sites = '';
131                        if (autoriser('creersitedans','rubrique',$id_rubrique)) {
132                                $bouton_sites .= icone_verticale(_T('sites:info_sites_referencer'), generer_url_ecrire('site_edit', "id_rubrique=$id_rubrique"), "site-24.png", "new", 'right')
133                                        . "<br class='nettoyeur' />";
134                        }
135                       
136                        $flux['data'] .= $lister_objets('sites',array('titre'=>_T('sites:titre_sites_references_rubrique') ,'where'=>"statut!='refuse' AND statut != 'prop' AND syndication NOT IN ('off','sus')", 'id_rubrique'=>$id_rubrique,'par'=>'nom_site'));
137                        $flux['data'] .= $bouton_sites;
138                }
139        }
140        return $flux;
141}
142
143
144
145/**
146 * Definir les meta de configuration liee aux syndications et sites
147 *
148 * @param array $metas
149 * @return array
150 */
151function sites_configurer_liste_metas($metas){
152        $metas['activer_sites']    = 'non';
153        $metas['proposer_sites']   = 0;
154        $metas['activer_syndic']   = 'oui';
155        $metas['moderation_sites'] = 'non';
156        return $metas;
157}
158
159/**
160 * Taches periodiques de syndication
161 *
162 * @param array $taches_generales
163 * @return array
164**/
165function sites_taches_generales_cron($taches_generales){
166
167        if ($GLOBALS['meta']["activer_syndic"] == "oui") {
168                $taches_generales['syndic'] = 90; 
169        }
170               
171        return $taches_generales;
172}
173
174
175/**
176 * Optimiser la base de donnee en supprimant les liens orphelins
177 *
178 * @param array $flux
179 * @return array
180 */
181function sites_optimiser_base_disparus($flux){
182        $n = &$flux['data'];
183        $mydate = $flux['args']['date'];
184
185
186        sql_delete("spip_syndic", "maj < $mydate AND statut = 'refuse'");
187
188
189        # les articles syndiques appartenant a des sites effaces
190        $res = sql_select("S.id_syndic AS id",
191                      "spip_syndic_articles AS S
192                        LEFT JOIN spip_syndic AS syndic
193                          ON S.id_syndic=syndic.id_syndic",
194                        "syndic.id_syndic IS NULL");
195
196        $n+= optimiser_sansref('spip_syndic_articles', 'id_syndic', $res);
197       
198
199        return $flux;
200
201}
202
203
204/**
205 * Publier et dater les rubriques qui ont un site publie
206 *
207 * @param array $flux
208 * @return array
209 */
210function sites_calculer_rubriques($flux) {
211       
212        $r = sql_select("R.id_rubrique AS id, max(A.date) AS date_h", "spip_rubriques AS R, spip_syndic AS A", "R.id_rubrique = A.id_rubrique AND R.date_tmp <= A.date AND A.statut='publie' ", "R.id_rubrique");
213        while ($row = sql_fetch($r))
214                sql_updateq('spip_rubriques', array('statut_tmp'=>'publie', 'date_tmp'=>$row['date_h']),"id_rubrique=".$row['id']);
215
216        return $flux;
217}
218
219/**
220 * Compter les sites dans une rubrique
221 *
222 * @param array $flux
223 * @return array
224 */
225function sites_objet_compte_enfants($flux){
226        if ($flux['args']['objet']=='rubrique'
227          AND $id_rubrique=intval($flux['args']['id_objet'])) {
228                // juste les publies ?
229                if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) {
230                        $flux['data']['site'] = sql_countsel('spip_syndic', "id_rubrique=".intval($id_rubrique)." AND (statut='publie')");
231                } else {
232                        $flux['data']['site'] = sql_countsel('spip_syndic', "id_rubrique=".intval($id_rubrique)." AND (statut='publie' OR statut='prop')");
233                }
234        }
235        return $flux;
236}
237
238
239function sites_trig_propager_les_secteurs($flux){
240        // reparer les sites
241        $r = sql_select("A.id_syndic AS id, R.id_secteur AS secteur", "spip_syndic AS A, spip_rubriques AS R", "A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur");
242        while ($row = sql_fetch($r))
243                sql_update("spip_syndic", array("id_secteur" => $row['secteur']), "id_syndic=".$row['id']);
244
245        return $flux;
246}
247
248/**
249 * Afficher le nombre de sites dans chaque rubrique
250 *
251 * @param array $flux
252 * @return array
253 */
254function sites_boite_infos($flux){
255        if ($flux['args']['type']=='rubrique'
256          AND $id_rubrique = $flux['args']['id']){
257                if ($nb = sql_countsel('spip_syndic',"statut='publie' AND id_rubrique=".intval($id_rubrique))){
258                        $nb = "<div>". singulier_ou_pluriel($nb, "info_1_site", "info_nb_sites") . "</div>";
259                        if ($p = strpos($flux['data'],"<!--nb_elements-->"))
260                                $flux['data'] = substr_replace($flux['data'],$nb,$p,0);
261                }
262        }
263        return $flux;
264}
265
266?>
Note: See TracBrowser for help on using the repository browser.