[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / action / copier_local.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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 // Fonction appellee lorsque l'utilisateur clique sur le bouton
16 // 'copier en local' (document/portfolio).
17 // Il s'agit de la partie logique, c'est a dire que cette fonction
18 // realise la copie.
19
20 // http://doc.spip.org/@action_copier_local_dist
21 function action_copier_local_dist() {
22
23 // Recupere les arguments.
24 $securiser_action = charger_fonction('securiser_action', 'inc');
25 $arg = $securiser_action();
26
27 $id_document = intval($arg);
28
29 if (!$id_document) {
30 spip_log("action_copier_local_dist $arg pas compris");
31 } else {
32 // arguments recuperes, on peut maintenant appeler la fonction.
33 action_copier_local_post($id_document);
34 }
35 }
36
37 // http://doc.spip.org/@action_copier_local_post
38 function action_copier_local_post($id_document) {
39
40 // Il faut la source du document pour le copier
41 $row = sql_fetsel("fichier, descriptif", "spip_documents", "id_document=$id_document");
42 $source = $row['fichier'];
43
44 include_spip('inc/distant'); // pour 'copie_locale'
45 include_spip('inc/documents'); // pour 'set_spip_doc'
46 $fichier = copie_locale($source);
47 if ($fichier) {
48 $fichier = _DIR_RACINE . $fichier;
49 $taille = filesize($fichier);
50 // On le sort du repertoire IMG/distant/
51 $dest = preg_replace(',^.*/distant/[^/_]+[/_],', '', $fichier);
52 $dest = sous_repertoire(_DIR_IMG, preg_replace(',^.*\.,', '', $fichier)) . $dest;
53 if ($dest != $fichier
54 AND @rename($fichier, $dest))
55 $fichier = $dest;
56
57 // On indique l'ancien URL dans le descriptif (pis-aller)
58 $row['descriptif'] .= ($row['descriptif'] ? "\n\n":'') . "[->$source]";
59
60 // $fichier contient IMG/distant/...
61 // or, dans la table documents, IMG doit etre exclu.
62 $fichier = set_spip_doc($fichier);
63 spip_log("convertit doc $id_document en local: $source => $fichier");
64 sql_updateq('spip_documents', array('fichier' =>$fichier, 'distant'=>'non', 'taille'=>$taille, 'descriptif'=> $row['descriptif']),"id_document=".$id_document);
65
66 } else {
67 spip_log("echec copie locale $source");
68 }
69 }
70
71 ?>