/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
- * Copyright (c) 2001-2016 *
+ * Copyright (c) 2001-2017 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
-if (!defined('_ECRIRE_INC_VERSION')) return;
+/**
+ * Déclaration de filtres permettent l'incrustation d'un document selon son type Mime
+ *
+ * Ces filtres peuvent être appelés par le modèle `<embXX>` dans certains cas,
+ * en utilisant `|appliquer_filtre{#MIME_TYPE}` sur un contenu
+ *
+ * @see appliquer_filtre()
+ *
+ * @package SPIP\Core\Filtres\Mime
+ **/
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
include_spip('inc/filtres');
-// Fichier des filtres d'incrustation d'un document selon son type MIME
+
// Les 7 familles de base ne font rien sauf celle des textes
-function filtre_image_dist($t) {return '';}
-function filtre_audio_dist($t) {return '';}
-function filtre_video_dist($t) {return '';}
-function filtre_application_dist($t) {return '';}
-function filtre_message_dist($t) {return '';}
-function filtre_multipart_dist($t) {return '';}
+/**
+ * Filtre d'incrustation d'un document image
+ *
+ * Ne fait rien.
+ *
+ * @filtre
+ * @param string $t Contenu
+ * @return string Rien.
+ **/
+function filtre_image_dist($t) {
+ return '';
+}
-// http://doc.spip.org/@filtre_text_txt_dist
+/**
+ * Filtre d'incrustation d'un document audio
+ *
+ * Ne fait rien.
+ *
+ * @filtre
+ * @param string $t Contenu
+ * @return string Rien.
+ **/
+function filtre_audio_dist($t) {
+ return '';
+}
+
+/**
+ * Filtre d'incrustation d'un document video
+ *
+ * Ne fait rien.
+ *
+ * @filtre
+ * @param string $t Contenu
+ * @return string Rien.
+ **/
+function filtre_video_dist($t) {
+ return '';
+}
+
+/**
+ * Filtre d'incrustation d'un document application
+ *
+ * Ne fait rien.
+ *
+ * @filtre
+ * @param string $t Contenu
+ * @return string Rien.
+ **/
+function filtre_application_dist($t) {
+ return '';
+}
+
+/**
+ * Filtre d'incrustation d'un document message
+ *
+ * Ne fait rien.
+ *
+ * @filtre
+ * @param string $t Contenu
+ * @return string Rien.
+ **/
+function filtre_message_dist($t) {
+ return '';
+}
+
+/**
+ * Filtre d'incrustation d'un document multipart
+ *
+ * Ne fait rien.
+ *
+ * @filtre
+ * @param string $t Contenu
+ * @return string Rien.
+ **/
+function filtre_multipart_dist($t) {
+ return '';
+}
+
+/**
+ * Filtre d'incrustation d'un document test
+ *
+ * Échappe les chevrons et l'esperluette.
+ *
+ * @filtre
+ * @param string $t Contenu
+ * @return string Contenu échappé.
+ **/
function filtre_text_dist($t) {
static $t1 = array('&', '<', '>');
static $t2 = array('&', '<', '>');
+
return '<pre>' . str_replace($t1, $t2, $t) . '</pre>';
}
-// http://doc.spip.org/@filtre_text_csv_dist
+/**
+ * Filtre d'incrustation d'un document CSV
+ *
+ * Produit un joli tableau à partir du texte CSV
+ *
+ * @filtre
+ * @param string $t
+ * Texte CSV
+ * @return string
+ * Tableau (formaté en SPIP)
+ **/
function filtre_text_csv_dist($t) {
include_spip('inc/csv');
- list($entete, $lignes) = analyse_csv($t);
- foreach ($lignes as &$l)
+ list($entete, $lignes, $caption) = analyse_csv($t);
+ foreach ($lignes as &$l) {
$l = join('|', $l);
+ }
$corps = join("\n", $lignes) . "\n";
$corps = $caption .
"\n|{{" .
- join('}}|{{',$entete) .
- "}}|" .
+ join('}}|{{', $entete) .
+ '}}|' .
"\n|" .
- str_replace("\n", "|\n|",$corps);
- $corps = str_replace('"#','"',$corps);
+ 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(',^(.*?)<body[^>]*>(.*)</body>,is', $t, $r))
- return appliquer_filtre($t,'text/plain');
+/**
+ * Filtre d'incrustation d'un document text/html
+ *
+ * Incrustation de HTML, si on est capable de le sécuriser,
+ * sinon, afficher la source
+ *
+ * @filtre
+ * @param string $t Code html
+ * @return string Code html sécurisé ou texte échappé
+ **/
+function filtre_text_html_dist($t) {
+ if (!preg_match(',^(.*?)<body[^>]*>(.*)</body>,is', $t, $r)) {
+ return appliquer_filtre($t, 'text/plain');
+ }
- list(,$h,$t) = $r;
+ list(, $h, $t) = $r;
$style = '';
// recuperer les styles internes
- if (preg_match_all(',<style>(.*?)</style>,is', $h, $r, PREG_PATTERN_ORDER))
- $style = join("\n",$r[1]);
+ if (preg_match_all(',<style>(.*?)</style>,is', $h, $r, PREG_PATTERN_ORDER)) {
+ $style = join("\n", $r[1]);
+ }
// ... et externes
include_spip('inc/distant');
- if (preg_match_all(',<link[^>]+type=.text/css[^>]*>,is', $h, $r, PREG_PATTERN_ORDER))
- foreach($r[0] as $l) {
- preg_match("/href='([^']*)'/", str_replace('"',"'",$l), $m);
+ if (preg_match_all(',<link[^>]+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]));
+ . str_replace('<', '', recuperer_page($m[1]));
}
+ }
// Pourquoi SafeHtml transforme-t-il en texte les scripts dans Body ?
- $t = safehtml(preg_replace(',<script'.'.*?</script>,is','',$t));
- return (!$style ? '' : "\n<style>".$style."</style>") . $t;
+ $t = safehtml(preg_replace(',<script' . '.*?</script>,is', '', $t));
+
+ return (!$style ? '' : "\n<style>" . $style . '</style>') . $t;
}
-// http://doc.spip.org/@filtre_audio_x_pn_realaudio
-function filtre_audio_x_pn_realaudio($id)
-{
- return "
+/**
+ * Filtre d'incrustation d'un document RealAudio
+ *
+ * Retourne les paramètres `<param>` nécessaires à la balise `<object>`
+ *
+ * @filtre
+ * @param string $id
+ * @return string Code HTML des balises `<param>`
+ **/
+function filtre_audio_x_pn_realaudio($id) {
+ return "
<param name='controls' value='PositionSlider' />
<param name='controls' value='ImageWindow' />
<param name='controls' value='PlayButton' />
<param name='console' value='Console$id' />
<param name='nojava' value='true' />";
}
-?>