[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / odt2spip_32 / action / odt2spip_importe.php
1 <?php
2
3 /**
4 * Créer un article à partir d'un fichier au format odt
5 *
6 * @author cy_altern
7 * @license GNU/LGPL
8 *
9 * @package plugins
10 * @subpackage odt2spip
11 * @category import
12 *
13 * @version $Id: odt2spip_importe.php 106329 2017-09-18 20:38:37Z marcimat@rezo.net $
14 *
15 */
16 if (!defined('_ECRIRE_INC_VERSION')) {
17 return;
18 }
19
20 /**
21 * Création de l'article et redirection vers celui-ci
22 *
23 * Le fichier .odt est envoyé par un formulaire, ainsi que des informations sur
24 * la rubrique dans laquelle créer l'article, un flag qui indique s'il faut joindre
25 * le document à l'article créé, etc..
26 * Cette fonction s'assure avant tout que l'utilisateur peut y ajouter un article.
27 * Le fichier .odt est traité et transformé en article.
28 * En fin de traitement, on est redirigé vers l'article qui vient d'être créé.
29 *
30 * {@internal
31 * Un répertoire temporaire, spécifique à l'utilisateur en cours, est utilisé et
32 * créé si nécessaire. Il est supprimé en fin de traitement.
33 * Le format odt correspond à une archive .zip, et regroupe le contenu dans un fichier
34 * content.xml : ce fichier est transformé par XSLT afin de générer un texte
35 * utilisant les balises SPIP pour sa mise en forme.
36 * }}
37 *
38 */
39 function action_odt2spip_importe($fichier = null, $arg = null) {
40 if (is_null($arg)) {
41 $arg = _request('arg');
42 }
43
44 // arg : id_rubrique=XXX ou id_article=YYY
45 $id_article = $id_rubrique = false;
46 list($objet, $id_objet) = explode('=', $arg);
47 if ($objet === 'id_rubrique') {
48 $id_rubrique = intval($id_objet);
49 $objet = 'rubrique';
50 $creer_objet = 'article';
51 } else {
52 $id_article = intval($id_objet);
53 $objet = 'article';
54 $creer_objet = false;
55 }
56
57 include_spip('inc/securiser_action');
58
59 if (
60 ($id_rubrique and !autoriser('creerarticledans', 'rubrique', $id_rubrique))
61 or ($id_article and !autoriser('modifier', 'article', $id_article))
62 ) {
63 die(_T('avis_non_acces_page'));
64 }
65
66 include_spip('inc/odt2spip');
67 try {
68 $fichier = odt2spip_deplacer_fichier_upload('fichier_odt');
69 } catch (\Exception $e) {
70 die();
71 }
72
73 list($id, $erreurs) = odt2spip_integrer_fichier(
74 $fichier,
75 $objet,
76 $id_objet,
77 $creer_objet,
78 array(
79 'attacher_fichier' => _request('attacher_odt'),
80 )
81 );
82
83 if (!$id) {
84 die($erreurs);
85 }
86
87 if (is_null(_request('redirect'))) {
88 include_spip('inc/headers');
89 redirige_par_entete(generer_url_entite($id, $creer_objet ? $creer_objet : $objet));
90 }
91 }