Proposer une amélioration de commentaire

Le commentaire à poster est au format «docblock» (de phpDoc) qui peut être enrichi de tags spécifiques pour SPIP.
Fichier
ecrire/inc/filtres_mime.php

    Nom ou pseudo de l'auteur de la proposition

Code original

<?php
 
/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2016                                                *
 *  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.   *
\***************************************************************************/
 
/**
 * 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 = array('&', '<', '>');
	static $t2 = array('&amp;', '&lt;', '&gt;');
 
	return '<pre>' . str_replace($t1, $t2, $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');
	list($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);
	$corps = str_replace('&#34#', '&#34;', $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');
	}
 
	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]);
	}
	// ... 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);
			$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(',<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' />";
}

Le commentaire au format « docblock » peut être complété des éléments suivants sécifiques
à SPIP.

Sur un entête de fichier :

  • @package SPIP\Core\x (pour un fichier du core, x dépendant du fichier)
  • @package SPIP\Nom\x (pour un fichier de plugin, Nom étant le nom du plugin)

Sur un entête de fonction :

  • @pipeline x : indique que la fonction est une utilisation d’un pipeline
  • @pipeline_appel x : indique que la fonction appelle le pipeline indiqué
  • @balise : indique que la fonction est une compilation de balise
  • @filtre : indique un |filtre
  • @critere : indique que la fonction est une compilaiton de critère
  • @boucle : indique que la fonction est une compilaiton de boucle
Vous inscrire sur ce site

L’espace privé de ce site est ouvert aux visiteurs, après inscription. Une fois enregistré, vous pourrez consulter les articles en cours de rédaction, proposer des articles et participer à tous les forums.

Identifiants personnels

Indiquez ici votre nom et votre adresse email. Votre identifiant personnel vous parviendra rapidement, par courrier électronique.