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

Last change on this file since 62778 was 62778, checked in by rastapopoulos@…, 7 years ago

Report de [62777].

Bug : le plugin ne prenait pas en compte sa propre config. On a le droit de modifier la date que si c'est enregistré comme ça dans la meta.

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