[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / odt2spip_32 / formulaires / document2spip.php
1 <?php
2
3 if (!defined('_ECRIRE_INC_VERSION')) {
4 return;
5 }
6
7
8 /**
9 * Charger le contenu d’un document dans un objet SPIP.
10 *
11 * Le document est transformé en document ODT (si possible),
12 * puis la transformation odt2spip est appliquée.
13 *
14 * @param string $objet
15 * @param int $id_objet
16 * @param null|string $creer_objet
17 * Si définie, créera un nouvel objet enfant de $objet/$id_objet.
18 * Note que seul le cas 'article' dans une rubrique est actuellement géré.
19 * @param string $retour
20 * @return array|false
21 */
22 function formulaires_document2spip_charger_dist($objet, $id_objet, $creer_objet = null, $retour = '') {
23 include_spip('inc/config');
24
25 if ($creer_objet and !autoriser('creer' . objet_type($creer_objet) . 'dans', $objet, $id_objet)) {
26 return false;
27 } elseif (!autoriser('modifier', $objet, $id_objet)) {
28 return false;
29 }
30
31 include_spip('inc/odt2spip');
32 $valeurs = array(
33 'objet' => $objet,
34 'id_objet' => $id_objet,
35 'creer_objet' => $creer_objet,
36 'attacher_fichier' => lire_config('odt2spip/defaut_attacher'),
37 'attacher_fichier_odt' => lire_config('odt2spip/defaut_attacher_odt_genere'),
38 'mode_image' => 'image',
39 // interne.
40 '_conversion_disponible' => odt2spip_convertisseur_disponible(),
41 '_bigup_rechercher_fichiers' => true,
42 '_accept' => odt2spip_liste_extensions_acceptees(true),
43 '_selecteur_langue' => (bool)lire_config('langues_multilingue'),
44 );
45
46 return $valeurs;
47 }
48
49 /**
50 * Vérifier
51 *
52 * @param string $objet
53 * @param int $id_objet
54 * @param null|string $creer_objet
55 * Si définie, créera un nouvel objet enfant de $objet/$id_objet.
56 * Note que seul le cas 'article' dans une rubrique est actuellement géré.
57 * @param string $retour
58 * @return array
59 */
60 function formulaires_document2spip_verifier_dist($objet, $id_objet, $creer_objet = null, $retour = '') {
61 $erreurs = array();
62
63 if (!in_array(_request('mode_image'), array('image', 'document'))) {
64 $erreurs['mode_image'] = _T('info_obligatoire');
65 }
66
67 include_spip('inc/odt2spip');
68 $extensions_acceptees = odt2spip_liste_extensions_acceptees();
69
70 if (empty($_FILES['fichier']['name'])) {
71 $erreurs['fichier'] = _T('info_obligatoire');
72 } elseif ($_FILES['fichier']['error'] != 0) {
73 $erreurs['fichier'] = _T('odtspip:err_recuperer_fichier');
74 } elseif (!in_array(strtolower(pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION)), $extensions_acceptees)) {
75 $erreurs['fichier'] = _T('odtspip:err_extension_fichier', array('extension' => implode(', ', $extensions_acceptees)));
76 }
77
78 return $erreurs;
79 }
80
81 /**
82 * Traiter
83 *
84 * @param string $objet
85 * @param int $id_objet
86 * @param null|string $creer_objet
87 * Si définie, créera un nouvel objet enfant de $objet/$id_objet.
88 * Note que seul le cas 'article' dans une rubrique est actuellement géré.
89 * @param string $retour
90 * @return array
91 */
92 function formulaires_document2spip_traiter_dist($objet, $id_objet, $creer_objet = null, $retour = '') {
93 $res = array(
94 'editable' => true,
95 );
96
97 include_spip('inc/odt2spip');
98 try {
99 $fichier_source = odt2spip_deplacer_fichier_upload('fichier');
100 } catch (\Exception $e) {
101 $res['message_erreur'] = $e->getMessage();
102 return $res;
103 }
104
105 // Si le fichier n’est pas un document odt, le traduire.
106 $extension = strtolower(pathinfo($fichier_source, PATHINFO_EXTENSION));
107 if ($extension !== 'odt') {
108 try {
109 $fichier = odt2spip_convertir_fichier($fichier_source);
110 if (!$fichier) {
111 $res['message_erreur'] = _T('odtspip:err_convertir_fichier');
112 return $res;
113 }
114 } catch (\Exception $e) {
115 spip_log($e->getMessage(), 'odtspip.' . _LOG_ERREUR);
116 $res['message_erreur'] = _T('odtspip:err_convertir_fichier');
117 return $res;
118 }
119 } else {
120 $fichier = $fichier_source;
121 }
122
123 list($id, $erreurs) = odt2spip_integrer_fichier(
124 $fichier,
125 $objet,
126 $id_objet,
127 $creer_objet,
128 array(
129 'attacher_fichier' => _request('attacher_fichier'),
130 'fichier_source' => $fichier_source,
131 'attacher_fichier_odt' => _request('attacher_fichier_odt'),
132 )
133 );
134
135 if (!$id) {
136 $res['message_erreur'] = $erreurs;
137 return $res;
138 }
139
140 $res['redirect'] = generer_url_entite($id, $creer_objet ? $creer_objet : $objet);
141 $res['message_ok'] = _T('odtspip:fichier_traiter_ok');
142 return $res;
143 }