source: spip-zone/_plugins_/relecture/relecture_pipelines.php @ 60723

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

Début d'ajout des relectures concernant l'auteur connecté dans la page d'accueil

  • Property svn:eol-style set to native
File size: 6.2 KB
Line 
1<?php
2
3/**
4 * Ajout de l'onglet Ajouter les plugins dont l'url depend du l'existence ou pas d'un depot
5 * de plugins
6 *
7 * @param array $flux
8 * @return array
9 */
10function relecture_ajouter_onglets($flux) {
11    return $flux;
12}
13
14
15/**
16 * Affichage en rappel dans la page d'accueil pour l'auteur connecte :
17 * - des relectures a lesquelles il participe en tant que relecteur
18 * - des relectures qu'il administre en tant qu'auteur de l'article
19 *
20 * @param array $flux
21 * @return array
22 *
23**/
24function relecture_accueil_encours($flux) {
25
26        $flux .= recuperer_fond('prive/squelettes/contenu/accueil-relectures');
27
28        return $flux;
29}
30
31
32/**
33 * Affichage du bloc relecture de l'article en cours d'affichage :
34 * - bouton ouvrir une relecture
35 * - ou informations sur la relecture en cours
36 *
37 * @param array $flux
38 * @return array
39 *
40**/
41function relecture_affiche_gauche($flux) {
42
43        if (($type = $flux['args']['exec'])=='article'){
44                if ($id = intval($flux['args']['id_article'])) {
45                        $table = table_objet($type);
46                        $id_table_objet = id_table_objet($type);
47
48                        $flux['data'] .= recuperer_fond('prive/squelettes/navigation/article-relecture_ouverte',
49                                                                array($id_table_objet => $id));
50                }
51        }
52
53        return $flux;
54}
55
56
57/**
58 * Affichage dans la boite d'informations de l'article en cours d'affichage :
59 * - du lien menant a l'historique des relectures cloturees
60 *
61 * @param array $flux
62 * @return array
63 *
64**/
65function relecture_boite_infos($flux){
66
67        if (($type = $flux['args']['type'])=='article') {
68                if ($id = intval($flux['args']['id'])) {
69                        $table = table_objet($type);
70                        $id_table_objet = id_table_objet($type);
71
72                        $flux['data'] .= recuperer_fond('prive/squelettes/infos/article-voir_relectures',
73                                                                array($id_table_objet => $id));
74                }
75        }
76
77        return $flux;
78}
79
80
81/**
82 * Surcharge de la fonction charger des formulaires concernes, a savoir :
83 * - dater : dans la page relecture permet de choisir la date de fin des commentaires
84 * - editer_liens : dans la page relecture permet de choisir les relecteurs
85 * - instituer_objet : dans la page de l'article en cours de relecture bloque le statut de l'article
86 *
87 * @param array $flux
88 * @return array
89 *
90**/
91function relecture_formulaire_charger($flux){
92
93        $form = $flux['args']['form'];
94        $objet = $flux['data']['objet'] ? $flux['data']['objet'] : $flux['data']['_objet'];
95        $id_objet = intval($flux['data']['id_objet']) ? intval($flux['data']['id_objet']) : intval($flux['data']['_id_objet']);
96
97        if ($objet == 'relecture') {
98                // Rendre editable le formulaire si la relecture n'est pas cloturee
99                $from = 'spip_relectures';
100                $where = array("id_relecture=$id_objet");
101                $statut = sql_getfetsel('statut', $from, $where);
102                $flux['data']['editable'] = ($statut !== 'fermee');
103
104                if ($form == 'dater') {
105                        // Identifier le label comme la date de fin des commentaires
106                        $flux['data']['_label_date'] = _T('relecture:label_relecture_date_fin_commentaire');
107                }
108                else if ($form == 'editer_liens') {
109                        // Changer le titre du formulaire pour désigner clairement les relecteurs
110                        $flux['data']['titre'] = _T('relecture:titre_liste_relecteurs');
111                }
112        }
113        else if ($objet == 'article') {
114                if ($form == 'instituer_objet') {
115                        // Si une relecture est ouverte sur l'article alors on interdit de modifier
116                        // le statut de l'article qui reste a "en cours de redaction"
117                        $from = 'spip_relectures';
118                        $where = array("id_article=$id_objet", "statut=" . sql_quote('ouverte'));
119                        $flux['data']['editable'] = (sql_countsel($from, $where) == 0);
120                }
121        }
122
123        return $flux;
124}
125
126
127/**
128 * Surcharge de l'insertion standard d'un objet en incluant des traitements prealables pour une relecture :
129 * - informations sur l'article
130 * - information sur l'ouverture et la date de fin des commentaires
131 * - positionnement du statut a ouvert
132 *
133 * @param array $flux
134 * @return array
135 *
136**/
137function relecture_pre_insertion($flux) {
138
139        // Traitements particuliers de l'objet relecture dans le cas d'une ouverture :
140        if ($flux['args']['table'] == 'spip_relectures') {
141                if ($id_article = intval(_request('id_article'))) {
142                        // - recuperation des informations de l'article concerne (id, chapo, texte, descriptif, ps et la revision courante)
143                        $select = array('id_article, chapo AS article_chapo', 'descriptif AS article_descr', 'texte AS article_texte', 'ps AS article_ps');
144                        $from = 'spip_articles';
145                        $where = array("id_article=$id_article");
146                        $article = sql_fetsel($select, $from, $where);
147                        foreach ($article as $_cle => $_valeur) {
148                                $flux['data'][$_cle] = $_valeur;
149                        }
150
151                        // - mise a jour de la revision d'ouverture
152                        // - correction de la date de fin de commentaire positionnee par defaut a cause de la configuration
153                        // - mise a jour de la date d'ouverture
154                        $from = 'spip_versions';
155                        $where = array("objet=" . sql_quote('article'), "id_objet=$id_article");
156                        $revision = sql_getfetsel('max(id_version) AS revision_ouverture', $from, $where);
157                        $flux['data']['revision_ouverture'] = $revision;
158                        $flux['data']['date_ouverture'] = $flux['data']['date_fin_commentaire'];
159                        $flux['data']['date_fin_commentaire'] = date('Y-m-d H:i:s', strtotime("+1 week"));
160
161                        // - surcharge la valeur du statut mis par le traitement par defaut
162                        $flux['data']['statut'] = 'ouverte';
163                }
164        }
165
166        return $flux;
167}
168
169
170/**
171 * Surcharge de l'action instituer standard d'un objet en incluant des traitements prealables pour une relecture :
172 * - date et revision de cloture
173 *
174 * @param array $flux
175 * @return array
176 *
177**/
178function relecture_pre_edition($flux) {
179
180        $table = $flux['args']['table'];
181        $id_relecture = intval($flux['args']['id_objet']);
182        $action = $flux['args']['action'];
183
184        // Traitements particuliers de l'objet relecture dans le cas d'une cloture :
185        if (($table == 'spip_relectures')
186        AND ($action == 'instituer')) {
187                if (($id_relecture) AND ($flux['args']['statut_ancien'] == 'ouverte')) {
188                        // - mise a jour de la date de cloture
189                        $flux['data']['date_cloture'] = date('Y-m-d H:i:s');
190
191                        // - mise a jour de la revision de cloture
192                        $from = 'spip_relectures';
193                        $where = array("id_relecture=$id_relecture");
194                        $id_article = sql_getfetsel('id_article', $from, $where);
195
196                        $from = 'spip_versions';
197                        $where = array("objet=" . sql_quote('article'), "id_objet=$id_article");
198                        $flux['data']['revision_cloture'] = sql_getfetsel('max(id_version) AS revision', $from, $where);
199                }
200        }
201
202        return $flux;
203}
204
205?>
Note: See TracBrowser for help on using the repository browser.