editer_document.php 8.1 KB

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