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 | **/ |
---|
13 | function 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 | **/ |
---|
32 | function 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 | **/ |
---|
56 | function 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 | **/ |
---|
82 | function 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 | **/ |
---|
127 | function 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 | **/ |
---|
162 | function 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 | ?> |
---|