X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fodt2spip_32%2Fformulaires%2Fdocument2spip.php;fp=www%2Fplugins%2Fodt2spip_32%2Fformulaires%2Fdocument2spip.php;h=18f24d862824c11a7a73f69a45440242b5c8e9ab;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=0000000000000000000000000000000000000000;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins/odt2spip_32/formulaires/document2spip.php b/www/plugins/odt2spip_32/formulaires/document2spip.php new file mode 100644 index 00000000..18f24d86 --- /dev/null +++ b/www/plugins/odt2spip_32/formulaires/document2spip.php @@ -0,0 +1,143 @@ + $objet, + 'id_objet' => $id_objet, + 'creer_objet' => $creer_objet, + 'attacher_fichier' => lire_config('odt2spip/defaut_attacher'), + 'attacher_fichier_odt' => lire_config('odt2spip/defaut_attacher_odt_genere'), + 'mode_image' => 'image', + // interne. + '_conversion_disponible' => odt2spip_convertisseur_disponible(), + '_bigup_rechercher_fichiers' => true, + '_accept' => odt2spip_liste_extensions_acceptees(true), + '_selecteur_langue' => (bool)lire_config('langues_multilingue'), + ); + + return $valeurs; +} + +/** + * Vérifier + * + * @param string $objet + * @param int $id_objet + * @param null|string $creer_objet + * Si définie, créera un nouvel objet enfant de $objet/$id_objet. + * Note que seul le cas 'article' dans une rubrique est actuellement géré. + * @param string $retour + * @return array + */ +function formulaires_document2spip_verifier_dist($objet, $id_objet, $creer_objet = null, $retour = '') { + $erreurs = array(); + + if (!in_array(_request('mode_image'), array('image', 'document'))) { + $erreurs['mode_image'] = _T('info_obligatoire'); + } + + include_spip('inc/odt2spip'); + $extensions_acceptees = odt2spip_liste_extensions_acceptees(); + + if (empty($_FILES['fichier']['name'])) { + $erreurs['fichier'] = _T('info_obligatoire'); + } elseif ($_FILES['fichier']['error'] != 0) { + $erreurs['fichier'] = _T('odtspip:err_recuperer_fichier'); + } elseif (!in_array(strtolower(pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION)), $extensions_acceptees)) { + $erreurs['fichier'] = _T('odtspip:err_extension_fichier', array('extension' => implode(', ', $extensions_acceptees))); + } + + return $erreurs; +} + +/** + * Traiter + * + * @param string $objet + * @param int $id_objet + * @param null|string $creer_objet + * Si définie, créera un nouvel objet enfant de $objet/$id_objet. + * Note que seul le cas 'article' dans une rubrique est actuellement géré. + * @param string $retour + * @return array + */ +function formulaires_document2spip_traiter_dist($objet, $id_objet, $creer_objet = null, $retour = '') { + $res = array( + 'editable' => true, + ); + + include_spip('inc/odt2spip'); + try { + $fichier_source = odt2spip_deplacer_fichier_upload('fichier'); + } catch (\Exception $e) { + $res['message_erreur'] = $e->getMessage(); + return $res; + } + + // Si le fichier n’est pas un document odt, le traduire. + $extension = strtolower(pathinfo($fichier_source, PATHINFO_EXTENSION)); + if ($extension !== 'odt') { + try { + $fichier = odt2spip_convertir_fichier($fichier_source); + if (!$fichier) { + $res['message_erreur'] = _T('odtspip:err_convertir_fichier'); + return $res; + } + } catch (\Exception $e) { + spip_log($e->getMessage(), 'odtspip.' . _LOG_ERREUR); + $res['message_erreur'] = _T('odtspip:err_convertir_fichier'); + return $res; + } + } else { + $fichier = $fichier_source; + } + + list($id, $erreurs) = odt2spip_integrer_fichier( + $fichier, + $objet, + $id_objet, + $creer_objet, + array( + 'attacher_fichier' => _request('attacher_fichier'), + 'fichier_source' => $fichier_source, + 'attacher_fichier_odt' => _request('attacher_fichier_odt'), + ) + ); + + if (!$id) { + $res['message_erreur'] = $erreurs; + return $res; + } + + $res['redirect'] = generer_url_entite($id, $creer_objet ? $creer_objet : $objet); + $res['message_ok'] = _T('odtspip:fichier_traiter_ok'); + return $res; +}