X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Ffiltres_mime.php;fp=www%2Fecrire%2Finc%2Ffiltres_mime.php;h=5ca260dc237c5975721dfe348675d86cb2c63187;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c
diff --git a/www/ecrire/inc/filtres_mime.php b/www/ecrire/inc/filtres_mime.php
new file mode 100644
index 0000000..5ca260d
--- /dev/null
+++ b/www/ecrire/inc/filtres_mime.php
@@ -0,0 +1,148 @@
+' . echapper_tags($t) . '';
+}
+
+// http://doc.spip.org/@filtre_text_csv_dist
+function filtre_text_csv_dist($t)
+{
+ $virg = substr_count($t, ',');
+ $pvirg = substr_count($t, ';');
+ $tab = substr_count($t, "\t");
+ if ($virg > $pvirg)
+ { $sep = ','; $hs = ',';}
+ else { $sep = ';'; $hs = ';'; $virg = $pvirg;}
+ if ($tab > $virg) {$sep = "\t"; $hs = "\t";}
+
+ $t = preg_replace('/\r?\n/', "\n",
+ preg_replace('/[\r\n]+/', "\n", $t));
+ // un separateur suivi de 3 guillemets attention !
+ // attention au ; suceptible d'etre confondu avec un separateur
+ // on substitue un # et on remplacera a la fin
+ $t = preg_replace("/([\n$sep])\"\"\"/",'\\1""#',$t);
+ $t = str_replace('""','"#',$t);
+ preg_match_all('/"[^"]*"/', $t, $r);
+ foreach($r[0] as $cell)
+ $t = str_replace($cell,
+ str_replace($sep, $hs,
+ str_replace("\n", "
",
+ substr($cell,1,-1))),
+ $t);
+ list($entete, $corps) = explode("\n",$t,2);
+ $caption = '';
+ // sauter la ligne de tete formee seulement de separateurs
+ if (substr_count($entete, $sep) == strlen($entete)) {
+ list($entete, $corps) = explode("\n",$corps,2);
+ }
+ // si une seule colonne, en faire le titre
+ if (preg_match("/^([^$sep]+)$sep+\$/", $entete, $l)) {
+ $caption = "\n||" . $l[1] . "|";
+ list($entete, $corps) = explode("\n",$corps,2);
+ }
+ // si premiere colonne vide, le raccourci doit quand meme produire
0
+ AND preg_match("/^$sep*$/", $lignes[count($lignes)-1]))
+ unset($lignes[count($lignes)-1]);
+ // calcul du nombre de colonne a chaque ligne
+ $nbcols = array();
+ $max = $mil = substr_count($entete, $sep);
+ foreach($lignes as $k=>$v) {
+ if ($max <> ($nbcols[$k]= substr_count($v, $sep))) {
+ if ($max > $nbcols[$k])
+ $mil = $nbcols[$k];
+ else { $mil = $max; $max = $nbcols[$k];}
+ }
+ }
+ // Si pas le meme nombre, cadrer au nombre max
+ if ($mil <> $max)
+ foreach($nbcols as $k=>$v) {
+ if ($v < $max) $lignes[$k].= str_repeat($sep, $max-$v);
+ }
+ // et retirer les colonnes integralement vides
+ while(true) {
+ $nbcols = ($entete[strlen($entete)-1]===$sep);
+ foreach($lignes as $v) $nbcols &= ($v[strlen($v)-1]===$sep);
+ if (!$nbcols) break;
+ $entete = substr($entete,0,-1);
+ foreach($lignes as $k=>$v) $lignes[$k] = substr($v,0,-1);
+ }
+ $corps = join("\n", $lignes) . "\n";
+ $corps = $caption .
+ "\n|{{" .
+ str_replace($sep,'}}|{{',$entete) .
+ "}}|" .
+ "\n|" .
+ str_replace($sep,'|',str_replace("\n", "|\n|",$corps));
+ $corps = str_replace('"#','"',$corps);
+ include_spip('inc/texte');
+ return propre($corps);
+}
+
+// Incrustation de HTML, si on est capable de le securiser
+// sinon, afficher le source
+// http://doc.spip.org/@filtre_text_html_dist
+function filtre_text_html_dist($t)
+{
+ if (!preg_match(',^(.*?)]*>(.*),is', $t, $r))
+ return appliquer_filtre($t,'text/plain');
+
+ list(,$h,$t) = $r;
+
+ $style = '';
+ // recuperer les styles internes
+ if (preg_match_all(',,is', $h, $r, PREG_PATTERN_ORDER))
+ $style = join("\n",$r[1]);
+ // ... et externes
+
+ include_spip('inc/distant');
+ if (preg_match_all(',]+type=.text/css[^>]*>,is', $h, $r, PREG_PATTERN_ORDER))
+ foreach($r[0] as $l) {
+ preg_match("/href='([^']*)'/", str_replace('"',"'",$l), $m);
+ $style .= "\n/* $l */\n"
+ . str_replace('<','',recuperer_page($m[1]));
+ }
+ // Pourquoi SafeHtml transforme-t-il en texte les scripts dans Body ?
+ $t = safehtml(preg_replace(',,is','',$t));
+ return (!$style ? '' : "\n") . $t;
+}
+
+// http://doc.spip.org/@filtre_audio_x_pn_realaudio
+function filtre_audio_x_pn_realaudio($id)
+{
+ return "
+
+
+
+
+ ";
+}
+?>