Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/histoire/ecrire/inc/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * \***************************************************************************/ /** * 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'); // Les 7 familles de base ne font rien sauf celle des textes /** * Filtre d'incrustation d'un document image * * Ne fait rien. * * @filtre * @param string $t Contenu * @return string Rien. **/ function filtre_image_dist($t) { return ''; } /** * 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 = ['&', '<', '>']; static $t2 = ['&', '<', '>']; return '<pre>' . str_replace($t1, $t2, (string) $t) . '</pre>'; } /** * 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'); [$entete, $lignes, $caption] = analyse_csv($t); foreach ($lignes as &$l) { $l = join('|', $l); } $corps = join("\n", $lignes) . "\n"; $corps = $caption . "\n|{{" . join('}}|{{', $entete) . '}}|' . "\n|" . str_replace("\n", "|\n|", $corps); include_spip('inc/texte'); return propre($corps); } /** * 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'); } [, $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]); } // ... 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); $page = recuperer_url($m[1]); $page = $page['page'] ?? ''; $style .= "\n/* $l */\n" . str_replace('<', '', $page); } } // 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; } /** * 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' />"; }