source: spip-zone/_core_/plugins/medias/formulaires/editer_document.php

Last change on this file was 113294, checked in by spip.franck@…, 2 months ago

Il parait que le futur c'est maintenant :-D

File size: 8.6 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17include_spip('inc/actions');
18include_spip('inc/editer');
19include_spip('inc/documents');
20include_spip('inc/config');
21
22function formulaires_editer_document_charger_dist(
23        $id_document = 'new',
24        $id_parent = '',
25        $retour = '',
26        $lier_trad = 0,
27        $config_fonc = 'documents_edit_config',
28        $row = array(),
29        $hidden = ''
30) {
31        $valeurs = formulaires_editer_objet_charger('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row, $hidden);
32
33        // relier les parents
34        $valeurs['parents'] = array();
35        $valeurs['_hidden'] = '';
36        $parents = sql_allfetsel('objet,id_objet', 'spip_documents_liens', 'id_document=' . intval($id_document));
37        foreach ($parents as $p) {
38                if (in_array($p['objet'], array('article', 'rubrique')) and $p['id_objet'] > 0) {
39                        $valeurs['parents'][] = $p['objet'] . '|' . $p['id_objet'];
40                } else {
41                        $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='" . $p['objet'] . '|' . $p['id_objet'] . "' />";
42                }
43        }
44
45        // en fonction de la config du site on a le droit ou pas de modifier la date
46        if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')) {
47                $valeurs['saisie_date'] = affdate($valeurs['date'], 'd/m/Y');
48                $valeurs['saisie_heure'] = affdate($valeurs['date'], 'H:i');
49        } elseif (isset($valeurs['date'])) {
50                unset($valeurs['date']);
51        }
52
53        // en fonction du format
54        $valeurs['_editer_dimension'] = autoriser('tailler', 'document', $id_document) ? ' ' : '';
55
56        // type du document et inclusion
57        $row = sql_fetsel(
58                'titre as type_document,inclus',
59                'spip_types_documents',
60                'extension=' . sql_quote($valeurs['extension'])
61        );
62        $valeurs['type_document'] = $row['type_document'];
63        $valeurs['_inclus'] = $row['inclus'];
64        if (in_array($valeurs['extension'], array('jpg', 'gif', 'png'))) {
65                $valeurs['apercu'] = get_spip_doc($valeurs['fichier']);
66        }
67
68        // verifier les infos de taille et dimensions sur les fichiers locaux
69        // cas des maj de fichier directes par ftp
70        if ($valeurs['distant'] !== 'oui') {
71                include_spip('inc/renseigner_document');
72                $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']), $valeurs['extension']);
73                if ($infos and is_array($infos) and isset($infos['taille'])) {
74                        if ($infos['taille'] != $valeurs['taille']
75                                or ($infos['type_image'] && ($infos['largeur'] != $valeurs['largeur']))
76                                or ($infos['type_image'] && ($infos['hauteur'] != $valeurs['hauteur']))
77                        ) {
78                                $valeurs['_taille_modif'] = $infos['taille'];
79                                $valeurs['_largeur_modif'] = $infos['largeur'];
80                                $valeurs['_hauteur_modif'] = $infos['hauteur'];
81                                $valeurs['_hidden'] .=
82                                        "<input type='hidden' name='_taille_modif' value='" . $infos['taille'] . "' />"
83                                        . "<input type='hidden' name='_largeur_modif' value='" . $infos['largeur'] . "' />"
84                                        . "<input type='hidden' name='_hauteur_modif' value='" . $infos['hauteur'] . "' />";
85                        }
86                }
87        }
88
89
90        // pour l'upload d'un nouveau doc
91        if ($valeurs['fichier']) {
92                $charger = charger_fonction('charger', 'formulaires/joindre_document');
93                $valeurs = array_merge($valeurs, $charger($id_document, 0, '', 'choix'));
94                $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />";
95        }
96
97        return $valeurs;
98}
99
100// Choix par defaut des options de presentation
101function documents_edit_config($row) {
102        global $spip_lang;
103
104        $config = array();//$GLOBALS['meta'];
105        $config['lignes'] = 8;
106        $config['langue'] = $spip_lang;
107
108        $config['restreint'] = ($row['statut'] == 'publie');
109
110        return $config;
111}
112
113function formulaires_editer_document_verifier_dist(
114        $id_document = 'new',
115        $id_parent = '',
116        $retour = '',
117        $lier_trad = 0,
118        $config_fonc = 'documents_edit_config',
119        $row = array(),
120        $hidden = ''
121) {
122        $erreurs = formulaires_editer_objet_verifier('document', $id_document, is_numeric($id_document) ? array() : array('titre'));
123
124        // verifier l'upload si on a demande a changer le document
125        if (_request('joindre_upload') or _request('joindre_ftp') or _request('joindre_distant')) {
126                if (_request('copier_local')) {
127                } else {
128                        $verifier = charger_fonction('verifier', 'formulaires/joindre_document');
129                        $erreurs = array_merge($erreurs, $verifier($id_document));
130                }
131        }
132
133        // On ne vérifie la date que si on avait le droit de la modifier
134        if (lire_config('documents_date') == 'oui') {
135                if (!$date = recup_date(_request('saisie_date') . ' ' . _request('saisie_heure') . ':00')
136                        or !($date = mktime($date[3], $date[4], 0, $date[1], $date[2], $date[0]))
137                ) {
138                        $erreurs['saisie_date'] = _T('medias:format_date_incorrect');
139                } else {
140                        set_request('saisie_date', date('d/m/Y', $date));
141                        set_request('saisie_heure', date('H:i', $date));
142                        set_request('date', date('Y-m-d H:i:s', $date));
143                }
144        }
145
146        return $erreurs;
147}
148
149// https://code.spip.net/@inc_editer_article_dist
150function formulaires_editer_document_traiter_dist(
151        $id_document = 'new',
152        $id_parent = '',
153        $retour = '',
154        $lier_trad = 0,
155        $config_fonc = 'documents_edit_config',
156        $row = array(),
157        $hidden = ''
158) {
159        if (is_null(_request('parents'))) {
160                set_request('parents', array());
161        }
162
163        // verifier les infos de taille et dimensions sur les fichiers locaux
164        // cas des maj de fichier directes par ftp
165        foreach (array('taille', 'largeur', 'hauteur') as $c) {
166                if (($v = _request("_{$c}_modif")) and !_request($c)) {
167                        set_request($c, $v);
168                }
169        }
170
171        $res = formulaires_editer_objet_traiter('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row, $hidden);
172        set_request('parents');
173        $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
174        if (_request('copier_local')
175                or _request('joindre_upload')
176                or _request('joindre_ftp')
177                or _request('joindre_distant')
178                or _request('joindre_zip')
179        ) {
180                $autoclose = '';
181                if (_request('copier_local')) {
182                        $copier_local = charger_fonction('copier_local', 'action');
183                        $res = array('editable' => true);
184                        if (($err = $copier_local($id_document)) === true) {
185                                $res['message_ok'] = (isset($res['message_ok']) ? $res['message_ok'] . '<br />' : '') . _T('medias:document_copie_locale_succes');
186                        } else {
187                                $res['message_erreur'] = (isset($res['message_erreur']) ? $res['message_erreur'] . '<br />' : '') . $err;
188                        }
189                        set_request('credits'); // modifie par la copie locale
190                } else {
191                        // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
192                        if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document))
193                                and !tester_url_absolue($ancien_fichier)
194                                and @file_exists($rename = get_spip_doc($ancien_fichier))
195                        ) {
196                                @rename($rename, "$rename--.old");
197                        }
198                        $traiter = charger_fonction('traiter', 'formulaires/joindre_document');
199                        $res2 = $traiter($id_document);
200                        if (isset($res2['message_erreur'])) {
201                                $res['message_erreur'] = $res2['message_erreur'];
202                                // retablir le fichier !
203                                if ($rename) {
204                                        @rename("$rename--.old", $rename);
205                                }
206                        } else // supprimer vraiment le fichier initial
207                        {
208                                spip_unlink("$rename--.old");
209                        }
210                }
211                // on annule les saisies largeur/hauteur : l'upload a pu charger les siens
212                set_request('largeur');
213                set_request('hauteur');
214        } else {
215                // regarder si une demande de rotation a eu lieu
216                // c'est un bouton image, dont on a pas toujours le name en request, on fait avec
217                $angle = 0;
218                if (_request('tournerL90') or _request('tournerL90_x')) {
219                        $angle = -90;
220                }
221                if (_request('tournerR90') or _request('tournerR90_x')) {
222                        $angle = 90;
223                }
224                if (_request('tourner180') or _request('tourner180_x')) {
225                        $angle = 180;
226                }
227                if ($angle) {
228                        $autoclose = '';
229                        $tourner = charger_fonction('tourner', 'action');
230                        action_tourner_post($id_document, $angle);
231                }
232        }
233
234        if (!isset($res['redirect'])) {
235                $res['editable'] = true;
236        }
237        if (!isset($res['message_erreur'])) {
238                $res['message_ok'] = _T('info_modification_enregistree') . $autoclose;
239        }
240
241        if ($res['message_ok']) {
242                $res['message_ok'] .= '<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>';
243        }
244
245        return $res;
246}
Note: See TracBrowser for help on using the repository browser.