[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / medias / formulaires / editer_document.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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
13 if (!defined("_ECRIRE_INC_VERSION")) return;
14
15 include_spip('inc/actions');
16 include_spip('inc/editer');
17 include_spip('inc/documents');
18 include_spip('inc/config');
19
20 function 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
84 function 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
96 function 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://code.spip.net/@inc_editer_article_dist
125 function 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 set_request('parents');
138 $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
139 if (_request('copier_local')
140 OR _request('joindre_upload')
141 OR _request('joindre_ftp')
142 OR _request('joindre_distant')
143 OR _request('joindre_zip')){
144 $autoclose = "";
145 if (_request('copier_local')){
146 $copier_local = charger_fonction('copier_local','action');
147 $res = array('editable'=>true);
148 if (($err=$copier_local($id_document))===true)
149 $res['message_ok'] = (isset($res['message_ok'])?$res['message_ok'].'<br />':'')._T('medias:document_copie_locale_succes');
150 else
151 $res['message_erreur'] = (isset($res['message_erreur'])?$res['message_erreur'].'<br />':'').$err;
152 set_request('credits'); // modifie par la copie locale
153 }
154 else {
155 // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
156 if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document))
157 AND !tester_url_absolue($ancien_fichier)
158 AND @file_exists($rename = get_spip_doc($ancien_fichier))){
159 @rename($rename,"$rename--.old");
160
161 }
162 $traiter = charger_fonction('traiter','formulaires/joindre_document');
163 $res2 = $traiter($id_document);
164 if (isset($res2['message_erreur'])){
165 $res['message_erreur'] = $res2['message_erreur'];
166 // retablir le fichier !
167 if ($rename)
168 @rename("$rename--.old",$rename);
169 }
170 else
171 // supprimer vraiment le fichier initial
172 spip_unlink("$rename--.old");
173 }
174 // on annule les saisies largeur/hauteur : l'upload a pu charger les siens
175 set_request('largeur');
176 set_request('hauteur');
177 }
178 else{
179 // regarder si une demande de rotation a eu lieu
180 // c'est un bouton image, dont on a pas toujours le name en request, on fait avec
181 $angle = 0;
182 if (_request('tournerL90') OR _request('tournerL90_x'))
183 $angle = -90;
184 if (_request('tournerR90') OR _request('tournerR90_x'))
185 $angle = 90;
186 if (_request('tourner180') OR _request('tourner180_x'))
187 $angle = 180;
188 if ($angle){
189 $autoclose = "";
190 $tourner = charger_fonction('tourner','action');
191 action_tourner_post($id_document,$angle);
192 }
193 }
194
195 if (!isset($res['redirect']))
196 $res['editable'] = true;
197 if (!isset($res['message_erreur']))
198 $res['message_ok'] = _T('info_modification_enregistree').$autoclose;
199
200 if ($res['message_ok'])
201 $res['message_ok'].='<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>';
202
203 return $res;
204 }
205
206 ?>