source: spip-zone/_plugins_/agenda/trunk/agenda_pipelines.php @ 53989

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

mode agenda sur les rubriques

File size: 4.9 KB
Line 
1<?php
2
3function agenda_ajouter_onglets($flux) {
4        if($flux['args']=='calendrier' AND !defined('_DIR_PLUGIN_BANDO')){
5                $flux['data']['agenda']= new Bouton(chemin_image('agenda-24.png'), _T('agenda:agenda'),
6                                                                                                                generer_url_ecrire("calendrier","type=semaine"));
7                $flux['data']['calendrier']= new Bouton(
8                                                                                                         'cal-rv.png', _T('agenda:activite_editoriale'),
9                                                                                                         generer_url_ecrire("calendrier","mode=editorial&type=semaine"));
10        }
11        return $flux;
12}
13
14function agenda_affiche_milieu($flux) {
15        $e = trouver_objet_exec($flux['args']['exec']);
16        $out = "";
17        if ($e['type']=='rubrique'
18          AND $e['edition']==false
19          AND $id_rubrique = intval($flux['args']['id_rubrique'])){
20                $activer = true;
21                $res = "";
22                $actif = sql_getfetsel('agenda','spip_rubriques','id_rubrique='.intval($id_rubrique));
23                $statut="-32";
24                $alt = "";
25                $voir = "";
26                if (!sql_countsel('spip_rubriques','agenda=1'))
27                        $res .= "<span class='small'>" . _T('agenda:aucune_rubrique_mode_agenda') . "</span><br />";
28                else {
29                        include_spip('inc/agenda_gestion');
30                        if (sql_countsel('spip_rubriques',sql_in('id_rubrique',calcul_hierarchie_in($id_rubrique))." AND agenda=1 AND id_rubrique<>".intval($id_rubrique))){
31                                $alt = _T('agenda:rubrique_dans_une_rubrique_mode_agenda');
32                                $activer = false;
33                                $statut="-ok-32";
34                                $voir = _T('agenda:voir_evenements_rubrique');
35                        }
36                        elseif(!$actif) {
37                                $alt = _T('agenda:rubrique_sans_gestion_evenement').'<br />';
38                                $statut="-non-32";
39                        }
40                        if ($actif){
41                                $alt = _T('agenda:rubrique_mode_agenda').'<br />';
42                                $statut="-ok-32";
43                                $voir = _T('agenda:voir_evenements_rubrique');
44                        }
45                }
46
47                if (!$actif){
48                        if($activer){
49                                $res .= bouton_action(_T('agenda:rubrique_activer_agenda'),generer_action_auteur('rubrique_activer_agenda',$id_rubrique,self()),'ajax');
50                        }
51                }
52                else
53                        $res .= bouton_action(_T('agenda:rubrique_desactiver_agenda'),generer_action_auteur('rubrique_activer_agenda',"-$id_rubrique",self()),'ajax');
54                if ($voir)
55                        $res .= " | <a href='".generer_url_ecrire('calendrier',"id_rubrique=$id_rubrique")."'>$voir</a>";
56                if ($res)
57                        $out .= boite_ouvrir(_T('agenda:agenda').http_img_pack("agenda$statut.png",$alt,"class='statut'",$alt),'simple agenda-statut')
58                          . $res
59                          . boite_fermer();
60        }
61        elseif ($e['type']=='article'
62          AND $e['edition']==false){
63                $id_article = $flux['args']['id_article'];
64                $afficher = autoriser('creerevenementdans','article',$id_article);
65                if ($afficher) {
66                        $contexte = array();
67                        foreach($_GET as $key=>$val)
68                                $contexte[$key] = $val;
69                         $evenements = recuperer_fond('prive/contenu/evenements_article',$contexte);
70                         $out .= $evenements;
71                }
72        }
73        elseif ($e['type']=='mot'
74          AND $e['edition']==false
75          AND $id_mot = intval($flux['args']['id_mot'])){
76                foreach($_GET as $key=>$val)
77                        $contexte[$key] = $val;
78         $evenements = recuperer_fond('prive/contenu/agenda_evenements',$contexte);
79         $out .= $evenements;
80        }
81        if ($out){
82                if ($p=strpos($flux['data'],'<!--affiche_milieu-->'))
83                        $flux['data'] = substr_replace($flux['data'],$out,$p,0);
84                else
85                        $flux['data'] .= $out;
86        }
87        return $flux;
88}
89
90function agenda_taches_generales_cron($taches_generales){
91        $taches_generales['agenda_nettoyer_base'] = 3600*48;
92        return $taches_generales;
93}
94
95function agenda_editer_contenu_objet($flux){
96        if ($flux['args']['type']=='groupe_mot'){
97                // ajouter l'input sur les evenements
98                $checked = in_array('evenements',$flux['args']['contexte']['tables_liees']);
99                $checked = $checked?" checked='checked'":'';
100                $input = "<div class='choix'><input type='checkbox' class='checkbox' name='tables_liees&#91;&#93;' value='evenements'$checked id='evenements' /><label for='evenements'>"._T('agenda:item_mots_cles_association_evenements')."</label></div>";
101                $flux['data'] = str_replace('<!--choix_tables-->',"$input\n<!--choix_tables-->",$flux['data']);
102        }
103        return $flux;
104}
105
106function agenda_libelle_association_mots($libelles){
107        $libelles['evenements'] = 'agenda:info_evenements';
108        return $libelles;
109}
110
111
112function agenda_objets_extensibles($objets){
113                return array_merge($objets, array('evenement' => _T('agenda:evenements')));
114}
115
116function agenda_afficher_nombre_objets_associes_a($flux){
117        if ($flux['args']['objet']=='mot'
118          AND $id_mot=$flux['args']['id_objet']){
119                $aff_articles = sql_in('A.statut',  ($GLOBALS['connect_statut'] =="0minirezo")  ? array('prepa','prop','publie') : array('prop','publie'));
120                $nb = sql_countsel("spip_mots_liens AS L LEFT JOIN spip_evenements AS E ON E.id_evenement=L.id_objet AND L.objet='evenement' LEFT JOIN spip_articles AS A ON E.id_article=A.id_article", "L.id_mot=".intval($id_mot)." AND $aff_articles");
121                if ($nb)
122                        $flux['data'][] = singulier_ou_pluriel($nb, "agenda:info_un_evenement", "agenda:info_nombre_evenements");
123        }
124        return $flux;
125}
126
127/**
128 * Declarer evenement comme un objet interpretable dans les url
129 * ?evenement12
130 *
131 * @param array $objets
132 * @return array
133 */
134function agenda_declarer_url_objets($objets){
135        $objets[] = 'evenement';
136        return $objets;
137}
138?>
Note: See TracBrowser for help on using the repository browser.