[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / medias / action / copier_local.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 /**
16 * Fonction appellee lorsque l'utilisateur clique sur le bouton
17 * 'copier en local' (document/portfolio).
18 * Il s'agit de la partie logique, c'est a dire que cette fonction
19 * realise la copie.
20 *
21 * http://code.spip.net/@action_copier_local_dist
22 *
23 * @param null $id_document
24 * @return bool|mixed|string
25 */
26 function action_copier_local_dist($id_document=null) {
27
28 if (!$id_document){
29 // Recupere les arguments.
30 $securiser_action = charger_fonction('securiser_action', 'inc');
31 $arg = $securiser_action();
32
33 $id_document = intval($arg);
34 }
35
36 if (!$id_document) {
37 spip_log("action_copier_local_dist $arg pas compris");
38 return false;
39 } else {
40 // arguments recuperes, on peut maintenant appeler la fonction.
41 return action_copier_local_post($id_document);
42 }
43 }
44
45 /**
46 * http://code.spip.net/@action_copier_local_post
47 *
48 * @param $id_document
49 * @return bool|mixed|string
50 */
51 function action_copier_local_post($id_document) {
52
53 // Il faut la source du document pour le copier
54 $row = sql_fetsel("mode,fichier, descriptif, credits", "spip_documents", "id_document=$id_document");
55 $source = $row['fichier'];
56
57 // si la source est bien un fichier distant
58 // sinon c'est une donnee moisie, on ne fait rien
59 if (tester_url_absolue($source)){
60
61 include_spip('inc/distant'); // pour 'copie_locale'
62 $fichier = copie_locale($source);
63 if ($fichier) {
64 $fichier = _DIR_RACINE . $fichier;
65 $files[] = array('tmp_name'=>$fichier,'name'=>basename($fichier));
66 $ajouter_documents = charger_fonction('ajouter_documents','action');
67 spip_log("convertit doc $id_document en local: $source => $fichier");
68 $liste = array();
69 $ajouter_documents($id_document,$files,'',0,$row['mode'],$liste);
70
71 spip_unlink($fichier);
72
73 // ajouter l'origine du document aux credits
74 include_spip('action/editer_document');
75 document_modifier($id_document,array('credits'=>($row['credits']?$row['credits'].', ':'').$source));
76 return true;
77
78 } else {
79 spip_log("echec copie locale $source");
80 }
81 } else {
82 spip_log("echec copie locale $source n'est pas une URL distante", "medias" . _LOG_ERREUR);
83 }
84
85 return _T('medias:erreur_copie_fichier',array('nom'=>$source));
86 }
87
88 ?>