3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2020 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
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 \***************************************************************************/
13 if (!defined('_ECRIRE_INC_VERSION')) {
18 * Fonction appellee lorsque l'utilisateur clique sur le bouton
19 * 'copier en local' (document/portfolio).
20 * Il s'agit de la partie logique, c'est a dire que cette fonction
23 * https://code.spip.net/@action_copier_local_dist
25 * @param null $id_document
26 * @return bool|mixed|string
28 function action_copier_local_dist($id_document = null) {
31 // Recupere les arguments.
32 $securiser_action = charger_fonction('securiser_action', 'inc');
33 $arg = $securiser_action();
35 $id_document = intval($arg);
39 spip_log("action_copier_local_dist $arg pas compris");
43 // arguments recuperes, on peut maintenant appeler la fonction.
44 return action_copier_local_post($id_document);
49 * https://code.spip.net/@action_copier_local_post
52 * @return bool|mixed|string
54 function action_copier_local_post($id_document) {
56 // Il faut la source du document pour le copier
57 $row = sql_fetsel('mode,fichier, descriptif, credits', 'spip_documents', 'id_document='.intval($id_document));
58 $source = $row['fichier'];
60 // si la source est bien un fichier distant
61 // sinon c'est une donnee moisie, on ne fait rien
62 if (tester_url_absolue($source)) {
63 include_spip('inc/distant'); // pour 'copie_locale'
64 $fichier = copie_locale($source);
66 and tester_url_absolue($source)) {
67 $fichier = _DIR_RACINE
. $fichier;
69 $files[] = array('tmp_name' => $fichier, 'name' => basename($fichier));
70 $ajouter_documents = charger_fonction('ajouter_documents', 'action');
71 spip_log("convertit doc $id_document en local: $source => $fichier", 'medias');
73 $ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste);
75 spip_unlink($fichier);
77 // ajouter l'origine du document aux credits
78 include_spip('action/editer_document');
81 array('credits' => ($row['credits'] ?
$row['credits'] . ', ' : '') . $source)
86 spip_log("echec copie locale $source", 'medias' . _LOG_ERREUR
);
89 spip_log("echec copie locale $source n'est pas une URL distante", 'medias' . _LOG_ERREUR
);
92 return _T('medias:erreur_copie_fichier', array('nom' => $source));