Changeset 56896 in spip-zone


Ignore:
Timestamp:
Jan 10, 2012, 11:01:23 PM (8 years ago)
Author:
fil@…
Message:

affiner un peu l'api

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/office2spip/action/otest.php

    r56894 r56896  
    11<?php
    22
     3//
     4// Ouvrir n'importe quel fichier avec LibreOffice et le renvoyer au format SPIP
     5//
     6// usage de ce webservice :
     7// curl -F "file=@toto.odt" "http://SERVEUR/?action=otest&secret=xxxx&fmt=spip"
     8// renvoie le fichier au format SPIP, dans un JSON
     9//
     10// - format de sortie dans &fmt=(spip|html|text)
     11// - images (en base64) avec &attachments=1
     12//
     13// TODO :
     14// - utiliser job_queue pour passer en asynchrone
     15// - codes de retours propres (ex: 404 : inconnu, 503 = pas encore converti)
     16// - etc.
     17
    318function action_otest() {
    4         include_spip('inc/securiser_action');
    5         $secret = substr(md5('otest+'.secret_du_site()), 0,6);
    6 
    7 
    8         if (_request('secret') != $secret) {
    9                 if (!autoriser('ecrire'))
    10                         echo "Connectez-vous pour connaitre le secret.";
    11                 else
    12                         echo "Le secret : ".$secret;
    13 
    14                 exit;
    15         }
    16 
    17         include_spip('inc/fonctionsale');
     19        office_controler_secret();
    1820
    1921        $rep = sous_repertoire(_DIR_TMP, 'upload_office');
     
    2527                                unset($file['tmp_name']);
    2628                                $file['md5'] = $dst;
    27                                 $file['text'] = sale(@file_get_contents($rep.$dst.'.html'));
    28                                 if ($g = glob($rep.$dst.'_*')) {
    29                                         $file['attachments'] = array();
    30                                         foreach($g as $j) {
    31                                                 $file['attachments'][basename($j)] = base64_encode(file_get_contents($j));
     29
     30                                $html = @file_get_contents($rep.$dst.'.html');
     31                                switch(_request('fmt')) {
     32                                        case 'html':
     33                                                $file['html'] = $html;
     34                                                break;
     35                                        case 'spip':
     36                                                include_spip('inc/fonctionsale');
     37                                                $file['spip'] = sale($html);
     38                                        default:
     39                                                include_spip('inc/filtres');
     40                                                include_spip('inc/charset');
     41                                                $file['text'] = unicode_to_utf_8(html2unicode(
     42                                                        trim(supprimer_tags($html))
     43                                                ));
     44                                                break;
     45                                }
     46
     47                                if (_request('attachments')) {
     48                                        if ($g = glob($rep.$dst.'_*')) {
     49                                                $file['attachments'] = array();
     50                                                foreach($g as $j) {
     51                                                        $file['attachments'][basename($j)] = base64_encode(file_get_contents($j));
     52                                                }
    3253                                        }
    3354                                }
     
    4263
    4364function office_load($file, $rep) {
    44         if (!preg_match(',\.(docx|doc|rtf|xls|xlsx)$,', $file['name'], $r))
     65        if (!preg_match(',\.(docx|doc|rtf|xls|xlsx|odt)$,', $file['name'], $r))
    4566                return;
    4667
     
    6182        exec("unoconv --format=html $doc");
    6283}
     84
     85// securiser en demandant le secret
     86function office_controler_secret() {
     87        include_spip('inc/securiser_action');
     88        $secret = substr(md5('otest+'.secret_du_site()), 0,6);
     89
     90        if (_request('secret') != $secret) {
     91                if (!autoriser('ecrire'))
     92                        echo "Connectez-vous pour connaitre le secret.";
     93                else
     94                        echo "Le secret : ".$secret;
     95
     96                exit;
     97        }
     98}
Note: See TracChangeset for help on using the changeset viewer.