source: spip-zone/_plugins_/convertisseur/exec/convertisseur.php @ 57284

Last change on this file since 57284 was 57284, checked in by erational@…, 8 years ago

un peu de nettoyage en même temps que le rafraichissement de la doc.
faut il conserver tous les formats (moinmoin ? phpBB ?). prochain chantier virer les eregs + passage à spip3

File size: 6.8 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5// -------------------------------
6// Main
7// ------------------------------
8function exec_convertisseur(){
9
10        include_spip("inc/vieilles_defs");
11        define('_SIGNALER_ECHOS', false); // on sait qu'on est vieux-code
12       
13        include_spip("inc/presentation");
14        include_spip('inc/convertisseur');
15
16        global $spip_lang_right;
17        global $log;
18
19        global $conv_formats;
20        global $conv_functions_pre;
21
22  $conv_in  = ""; 
23  $conv_out = "";
24
25  // check rights (utile ?)
26  global $connect_statut;
27        global $connect_toutes_rubriques;
28  if ($connect_statut != '0minirezo') {   
29                echo debut_page(_T("convertisseur:convertir_titre"), "naviguer", "plugin");
30                echo _T('avis_non_acces_page');
31                echo fin_page();
32                exit;
33        }
34
35
36
37        // ---------------------------------------------------------------------
38        // Action ?
39        // ---------------------------------------------------------------------
40
41        if (isset($_POST['conv_in'])) {
42
43                $conv_textes = array();
44
45                // upload ?
46                if (count($_FILES)) {
47                        include_spip('inc/getdocument');
48                        include_spip('inc/pclzip');
49                        include_spip('inc/invalideur');  # pour purger_repertoire()
50                        foreach ($_FILES as $file)
51                        if ($file['size']) {
52                                chdir('..'); ## dirty
53                                $a = deplacer_fichier_upload($file['tmp_name'],
54                                        'tmp/convertisseur.tmp');
55                                chdir('ecrire/');
56                                if (!$a) next;
57
58                                // traitement specifique des .zip : on les
59                                // eclate en autant de sources
60                                if ($file['type'] == 'application/x-zip-compressed'
61                                OR preg_match(',\.zip$,', $file['name'])) {
62                                        $zip = new PclZip('../tmp/convertisseur.tmp');
63                                        if (!$list = $zip->listContent()) {
64                                                $log = 'erreur zip';
65                                        } else {
66                                                $tmp = sous_repertoire(_DIR_TMP,'convertisseur');
67                                                if ($tmp == _DIR_TMP) die('erreur creation repertoire temporaire');
68                                                define('_tmp_dir', $tmp);
69                                                purger_repertoire($tmp);
70                                                // extraire dans le temporaire
71                                                $zip->extract(
72                                                        PCLZIP_OPT_PATH, _tmp_dir,
73                                                        PCLZIP_CB_PRE_EXTRACT,
74                                                        'callback_admissibles'
75                                                );
76                                                // lire les fichiers temporaires
77                                                foreach (glob(_tmp_dir.'*') as $f) {
78                                                        if (lire_fichier($f, $tmp)
79                                                        AND strlen(trim($tmp)))
80                                                                $conv_textes[$f] = $tmp;
81                                                }
82                                        }
83                                }
84
85                                // fichier simple
86                                else
87                                if (lire_fichier('../tmp/convertisseur.tmp', $tmp))
88                                        $conv_textes[$file['name']] = $tmp;
89
90                        }
91                }
92
93                // Pas de fichier : on regarde le POST
94                if (!count($conv_textes))
95                        $conv_textes[] = _request('conv_in');
96
97                // convertir le charset ?
98                $convert_charset = (_request('convert_charset') == 'true');
99                $GLOBALS['auteur_session']['prefs']['convertisseur_cvcharset'] = $convert_charset;
100                if ($convert_charset) {
101                        include_spip('inc/charsets');
102                        foreach ($conv_textes as $i => $t)
103                                $conv_textes[$i] = importer_charset($t, $charset);
104                }
105
106                // detection du format
107                if (isset($_POST['format'])) {
108                        $format = trim(strip_tags($_POST['format']));
109
110                        // on le memorise dans les prefs de l'auteur
111                        // pour permettre de proposer le meme la prochaine fois
112                        $GLOBALS['auteur_session']['prefs']['convertisseur_format'] = $format;
113
114                        // enregistrer les prefs de l'auteur
115                        spip_query('UPDATE spip_auteurs SET prefs='
116                                ._q(serialize($GLOBALS['auteur_session']['prefs']))
117                                .' WHERE id_auteur='.intval($GLOBALS['auteur_session']['id_auteur'])
118                        );
119
120
121                        // Traitement et conversion de chaque texte soumis, dans un tableau
122                        $out = array();
123                        foreach ($conv_textes as $f => $conv_in) {
124                                $tmp = conversion_format($conv_in, $format);
125                                $out[$f] = nettoyer_format($tmp);
126                                if ($id_rubrique = intval(_request('id_parent')))
127                                        $id_article = inserer_conversion($out[$f], $id_rubrique, $f);
128                                        $article[$f] = $id_article;
129                        }
130
131                }
132
133
134        } // fin action
135
136
137  // ---------------------------------------------------------------------------
138  // HTML output
139  // ---------------------------------------------------------------------------
140        echo debut_page(_T("convertisseur:convertir_titre"), "naviguer", "plugin");     
141  debut_gauche();
142        echo debut_boite_info();
143        echo _T("convertisseur:convertir_desc");
144        echo fin_boite_info();
145       
146        echo debut_droite();
147        echo $log;
148        echo "<form method='post' enctype='multipart/form-data'>\n";
149
150        if ($out) {
151                echo "<div style='background-color:#E6ECF9;padding:8px 3px;margin-bottom:5px'>"._T("convertisseur:convertir_en");
152           if (isset($conv_formats[$format])) echo "<strong>"._T("convertisseur:$format")."</strong>\n";
153
154                foreach ($out as $f => $texte) {
155                        if ($f) echo "<h2>".basename($f)."</h2>\n";
156                        echo "<textarea name='conv_out' cols='65' rows='12'>".entites_html($texte)."</textarea><br />\n";
157
158                        if (isset($article[$f]))
159                                echo "<div>article ".$article[$f].": <a href='".generer_url_ecrire('articles_edit', 'id_article='.$article[$f])."'>&#233;diter</a></div>\n";
160                }
161
162                echo "</div>\n";
163        }
164
165        echo "<h3>"._L("Votre texte &agrave; convertir :")."</h3>\n";
166
167
168        // format memorise pour avoir le selected dans le menu
169        if (!$format)
170                $format = $GLOBALS['auteur_session']['prefs']['convertisseur_format'];
171        echo "<p>";
172        echo _T("convertisseur:from");
173        echo "<select name='format'>\n";
174        foreach ($conv_formats as $k=>$val) { 
175                if ($format==$k)
176                        $selected = " selected='selected'";
177                else
178                        $selected = "";
179                echo "<option value='$k'$selected>"._T("convertisseur:$k")."</option>\n";
180        }
181        echo "</select></p>\n";
182
183
184        echo _L("Copiez-le ci-dessous :")."<br />\n";
185
186        $conv_in = entites_html(substr($conv_in,0,40000));
187        echo "<textarea name='conv_in' cols='65' rows='12'>$conv_in</textarea><br />\n";
188
189
190        echo "<div style='float:$spip_lang_right;'>";
191        echo _L("ou choisissez un fichier :")."<br />\n";
192        echo "<input type='file' name='upload' />\n";
193        echo "</div>\n";
194
195        echo "<br style='clear:both;' />\n";
196
197        echo "<p align='right'><small>Il est possible de convertir plusieurs fichiers en une seule fois, en les regroupant dans une archive ZIP</small></p>\n";
198
199        echo "<h5>"._L('Options:')."</h5>\n";
200
201        $checked = $GLOBALS['auteur_session']['prefs']['convertisseur_cvcharset']
202                ? ' checked="checked"'
203                : '';
204        echo "<label><input type='checkbox' value='true' name='convert_charset'$checked
205        />"._L("convertir en UTF-8")."\n";
206        echo "</label>\n";
207
208
209        // Ajouter sous forme d'article dans la rubrique
210        if (
211        function_exists('charger_fonction')
212        AND $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc', true)) {
213                echo "<p/><div><label>Choisissez une rubrique si vous voulez insérer le résultat de la conversion dans un nouvel article sur le site :";
214                echo $chercher_rubrique(null,'rubrique',null);
215                echo "</label></div>\n";
216        }
217
218  echo "<p style='float:right;'><input type='submit' value='". _T("convertisseur:convertir")."'></p>\n";   
219  echo "</form>\n"; 
220
221 
222  echo fin_page();
223}
224?>
Note: See TracBrowser for help on using the repository browser.