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

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

Premier jet de la page d'accueil.

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