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

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

Amélioration de la page d'accueil.
Meilleure découpage entre les traitements des fonctions inserer et instituer.
Renommage.

  • Property svn:eol-style set to native
File size: 6.4 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',
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'] = autoriser('modifier', 'relecture', $id_objet);
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 * - date de fin des commentaires
122 *
123 * @param array $flux
124 * @return array
125 *
126**/
127function relecture_pre_insertion($flux) {
128
129        // Traitements particuliers de l'objet relecture dans le cas d'une ouverture :
130        if ($flux['args']['table'] == 'spip_relectures') {
131                if ($id_article = intval(_request('id_article'))) {
132                        // - recuperation des informations de l'article concerne (id, chapo, texte, descriptif, ps et la revision courante)
133                        $select = array('id_article, chapo AS article_chapo', 'descriptif AS article_descr', 'texte AS article_texte', 'ps AS article_ps');
134                        $from = 'spip_articles';
135                        $where = array("id_article=$id_article");
136                        $article = sql_fetsel($select, $from, $where);
137                        foreach ($article as $_cle => $_valeur) {
138                                $flux['data'][$_cle] = $_valeur;
139                        }
140
141                        // - correction de la date de fin de commentaire positionnee par defaut a cause de la configuration
142                        $flux['data']['date_fin_commentaire'] = date('Y-m-d H:i:s', strtotime("+1 week"));
143
144                        // - Le statut, la date d'ouverture et la revision de l'article a l'ouverture sont mis a jour dans la fonction
145                        // instituer surchargee dans le pipeline pre_edition
146                }
147        }
148
149        return $flux;
150}
151
152
153/**
154 * Surcharge de l'action instituer standard d'un objet en incluant des traitements prealables pour une relecture :
155 * - pour une ouverture, on ecrase le statut a ouverte car il est automatiquement mis a prepa par defaut
156 * - pour une cloture, date et revision de cloture
157 *
158 * @param array $flux
159 * @return array
160 *
161**/
162function relecture_pre_edition($flux) {
163
164        $table = $flux['args']['table'];
165        $id_relecture = intval($flux['args']['id_objet']);
166        $action = $flux['args']['action'];
167
168        // Traitements particuliers de l'objet relecture dans le cas d'une cloture :
169        if (($table == 'spip_relectures')
170        AND ($id_relecture)) {
171
172                // Instituer
173                if ($action == 'instituer') {
174
175                        // Recherche de l'id de l'article sur lequel porte la relecture
176                        $from = 'spip_relectures';
177                        $where = array("id_relecture=$id_relecture");
178                        $id_article = sql_getfetsel('id_article', $from, $where);
179                        // Determination de la revision courante de l'article
180                        $from = 'spip_versions';
181                        $where = array("objet=" . sql_quote('article'), "id_objet=$id_article");
182                        $revision = sql_getfetsel('max(id_version) AS revision', $from, $where);
183
184                        // -- Ouverture
185                        if ($flux['args']['statut_ancien'] == 'prepa') {
186                                // - mise a jour du "vrai" statut de la relecture
187                                $flux['data']['statut'] = 'ouverte';
188
189                                // - mise a jour de la date d'ouverture
190                                $flux['data']['date_ouverture'] = date('Y-m-d H:i:s');
191
192                                // - mise a jour de la revision d'ouverture
193                                $flux['data']['revision_ouverture'] = $revision;
194                        }
195
196                        // -- Cloture
197                        if (($flux['args']['statut_ancien'] == 'ouverte')
198                        AND ($flux['data']['statut'] == 'fermee')) {
199                                // - mise a jour de la date de cloture
200                                $flux['data']['date_cloture'] = date('Y-m-d H:i:s');
201
202                                // - mise a jour de la revision de cloture
203                                $flux['data']['revision_cloture'] = $revision;
204                        }
205                }
206        }
207
208        return $flux;
209}
210
211?>
Note: See TracBrowser for help on using the repository browser.