copier_local.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. /**
  13. * Fonction appellee lorsque l'utilisateur clique sur le bouton
  14. * 'copier en local' (document/portfolio).
  15. * Il s'agit de la partie logique, c'est a dire que cette fonction
  16. * realise la copie.
  17. *
  18. * http://code.spip.net/@action_copier_local_dist
  19. *
  20. * @param null $id_document
  21. * @return bool|mixed|string
  22. */
  23. function action_copier_local_dist($id_document=null) {
  24. if (!$id_document){
  25. // Recupere les arguments.
  26. $securiser_action = charger_fonction('securiser_action', 'inc');
  27. $arg = $securiser_action();
  28. $id_document = intval($arg);
  29. }
  30. if (!$id_document) {
  31. spip_log("action_copier_local_dist $arg pas compris");
  32. return false;
  33. } else {
  34. // arguments recuperes, on peut maintenant appeler la fonction.
  35. return action_copier_local_post($id_document);
  36. }
  37. }
  38. /**
  39. * http://code.spip.net/@action_copier_local_post
  40. *
  41. * @param $id_document
  42. * @return bool|mixed|string
  43. */
  44. function action_copier_local_post($id_document) {
  45. // Il faut la source du document pour le copier
  46. $row = sql_fetsel("mode,fichier, descriptif, credits", "spip_documents", "id_document=$id_document");
  47. $source = $row['fichier'];
  48. include_spip('inc/distant'); // pour 'copie_locale'
  49. $fichier = copie_locale($source);
  50. if ($fichier) {
  51. $fichier = _DIR_RACINE . $fichier;
  52. $files[] = array('tmp_name'=>$fichier,'name'=>basename($fichier));
  53. $ajouter_documents = charger_fonction('ajouter_documents','action');
  54. spip_log("convertit doc $id_document en local: $source => $fichier");
  55. $liste = array();
  56. $ajouter_documents($id_document,$files,'',0,$row['mode'],$liste);
  57. spip_unlink($fichier);
  58. // ajouter l'origine du document aux credits
  59. include_spip('action/editer_document');
  60. document_modifier($id_document,array('credits'=>($row['credits']?$row['credits'].', ':'').$source));
  61. return true;
  62. } else {
  63. spip_log("echec copie locale $source");
  64. }
  65. return _T('medias:erreur_copie_fichier',array('nom'=>$source));
  66. }
  67. ?>