source: spip-zone/_core_/plugins/medias/action/copier_local.php

Last change on this file was 113294, checked in by spip.franck@…, 2 months ago

Il parait que le futur c'est maintenant :-D

File size: 3.0 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
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
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17/**
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
21 * realise la copie.
22 *
23 * https://code.spip.net/@action_copier_local_dist
24 *
25 * @param null $id_document
26 * @return bool|mixed|string
27 */
28function action_copier_local_dist($id_document = null) {
29
30        if (!$id_document) {
31                // Recupere les arguments.
32                $securiser_action = charger_fonction('securiser_action', 'inc');
33                $arg = $securiser_action();
34
35                $id_document = intval($arg);
36        }
37
38        if (!$id_document) {
39                spip_log("action_copier_local_dist $arg pas compris");
40
41                return false;
42        } else {
43                // arguments recuperes, on peut maintenant appeler la fonction.
44                return action_copier_local_post($id_document);
45        }
46}
47
48/**
49 * https://code.spip.net/@action_copier_local_post
50 *
51 * @param  $id_document
52 * @return bool|mixed|string
53 */
54function action_copier_local_post($id_document) {
55
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'];
59
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);
65                if ($fichier
66                        and tester_url_absolue($source)) {
67                        $fichier = _DIR_RACINE . $fichier;
68                        $files = array();
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');
72                        $liste = array();
73                        $ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste);
74
75                        spip_unlink($fichier);
76
77                        // ajouter l'origine du document aux credits
78                        include_spip('action/editer_document');
79                        document_modifier(
80                                $id_document,
81                                array('credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source)
82                        );
83
84                        return true;
85                } else {
86                        spip_log("echec copie locale $source", 'medias' . _LOG_ERREUR);
87                }
88        } else {
89                spip_log("echec copie locale $source n'est pas une URL distante", 'medias' . _LOG_ERREUR);
90        }
91
92        return _T('medias:erreur_copie_fichier', array('nom' => $source));
93}
Note: See TracBrowser for help on using the repository browser.