X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Ffiltres.php;h=7ebc9be4b0d617aa67973fc7e63212c5e36c6bab;hp=0777c47a56169ef8510de57dd06bfed98cffa6d7;hb=e99f0878011913365e49b30d90e496c24c301393;hpb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed diff --git a/www/ecrire/inc/filtres.php b/www/ecrire/inc/filtres.php index 0777c47..7ebc9be 100644 --- a/www/ecrire/inc/filtres.php +++ b/www/ecrire/inc/filtres.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2011 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -541,6 +541,7 @@ function majuscules($texte) { // "127.4 ko" ou "3.1 Mo" // http://doc.spip.org/@taille_en_octets function taille_en_octets ($taille) { + if ($taille < 1) return ''; if ($taille < 1024) {$taille = _T('taille_octets', array('taille' => $taille));} else if ($taille < 1024*1024) { $taille = _T('taille_ko', array('taille' => ((floor($taille / 102.4))/10))); @@ -569,14 +570,9 @@ function attribut_html($texte,$textebrut = true) { function vider_url($url, $entites = true) { # un message pour abs_url $GLOBALS['mode_abs_url'] = 'url'; - $url = trim($url); - if (preg_match(",^(http:?/?/?|mailto:?)$,iS", $url)) - return ''; - - if ($entites) $url = entites_html($url); - - return $url; + $r = ",^(?:" . _PROTOCOLES_STD . '):?/?/?$,iS'; + return preg_match($r, $url) ?'': ($entites ? entites_html($url) : $url); } // Extraire une date de n'importe quel champ (a completer...) @@ -1520,35 +1516,17 @@ function vider_attribut ($balise, $attribut) { return inserer_attribut($balise, $attribut, '', false, true); } - -// Un filtre pour determiner le nom du mode des librement inscrits, -// a l'aide de la liste globale des statuts (tableau mode => nom du mode) -// Utile pour le formulaire d'inscription. -// Si un mode est fourni, verifier que la configuration l'accepte. -// Si mode inconnu laisser faire, c'est une extension non std -// mais verifier que la syntaxe est compatible avec SQL - // http://doc.spip.org/@tester_config function tester_config($id, $mode='') { + include_spip('inc/autoriser'); + if ($mode) + return autoriser('inscrireauteur', $mode, $id) ? $mode : ''; + elseif ( + autoriser('inscrireauteur', $mode = "1comite", $id) + OR autoriser('inscrireauteur', $mode = "6forum", $id)) + return $mode; - $s = array_search($mode, $GLOBALS['liste_des_statuts']); - switch ($s) { - - case 'info_redacteurs' : - return (($GLOBALS['meta']['accepter_inscriptions'] == 'oui') ? $mode : ''); - - case 'info_visiteurs' : - return (($GLOBALS['meta']['accepter_visiteurs'] == 'oui' OR $GLOBALS['meta']['forums_publics'] == 'abo') ? $mode : ''); - - default: - if ($mode AND $mode == addslashes($mode)) - return $mode; - if ($GLOBALS['meta']["accepter_inscriptions"] == "oui") - return $GLOBALS['liste_des_statuts']['info_redacteurs']; - if ($GLOBALS['meta']["accepter_visiteurs"] == "oui") - return $GLOBALS['liste_des_statuts']['info_visiteurs']; - return ''; - } + return ''; } // @@ -1598,6 +1576,33 @@ function modulo($nb, $mod, $add=0) { return ($mod?$nb%$mod:0)+$add; } +/** + * Vérifie qu'un nom (d'auteur) ne comporte pas d'autres tags que + * et ceux volontairement spécifiés dans la constante + * + * @param string $nom + * Nom (signature) proposé + * @return bool + * - false si pas conforme, + * - true sinon +**/ +function nom_acceptable($nom) { + if (!is_string($nom)) { + return false; + } + if (!defined('_TAGS_NOM_AUTEUR')) define('_TAGS_NOM_AUTEUR',''); + $tags_acceptes = array_unique(explode(',', 'multi,' . _TAGS_NOM_AUTEUR)); + foreach($tags_acceptes as $tag) { + if (strlen($tag)) { + $remp1[] = '<'.trim($tag).'>'; + $remp1[] = ''; + $remp2[] = '\x60'.trim($tag).'\x61'; + $remp2[] = '\x60/'.trim($tag).'\x61'; + } + } + $v_nom = str_replace($remp2, $remp1, supprimer_tags(str_replace($remp1, $remp2, $nom))); + return str_replace('<', '<', $v_nom) == $nom; +} // Verifier la conformite d'une ou plusieurs adresses email // retourne false ou la normalisation de la derniere adresse donnee