Changeset 69499 in spip-zone


Ignore:
Timestamp:
Jan 29, 2013, 1:34:37 PM (7 years ago)
Author:
cedric@…
Message:

refactoring de la fonction echappe_balise en filtre_texte_echape qui permet d'appliquer un filtre sur un texte dont on echappe des balises données en argument.

Location:
_plugins_/orthotypo/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/orthotypo/trunk/orthotypo_fonctions.php

    r69498 r69499  
    6565 * par exemple pour <html>, <cadre>, <code>, <frame>, <script>, <acronym> et <cite>, $balises = 'html|code|cadre|frame|script|acronym|cite'
    6666 *
     67 * @param $texte
     68 *   $texte a filtrer
     69 * @param $filtre
     70 *   le filtre a appliquer pour transformer $texte
     71 *   si $filtre = false, alors le texte est retourne protege, sans filtre
    6772 * @param $balises
    6873 *   balises concernees par l'echappement
    69  *   si $balises = '' alors la protection par defaut est : html|code|cadre|frame|script
     74 *   si $balises = '' alors la protection par defaut est sur les balises de _PROTEGE_BLOCS
    7075 *   si $balises = false alors le texte est utilise tel quel
    71  * @param $fonction
    72  *   la fonction prevue pour transformer $texte
    73  *   si $fonction = false, alors le texte est retourne simplement protege
    74  * @param $texte
    75  *   $texte a filtree
    76  * @param null $arg
     76 * @param null|array $args
     77 *   arguments supplementaires a passer au filtre
    7778 * @return string
    7879 */
    79 function orthotypo_echappe_balises($balises, $fonction, $texte, $arg=NULL){
     80function orthotypo_filtre_texte_echappe($texte, $filtre, $balises='', $args=NULL){
    8081        if(!strlen($texte)) return '';
    81         if (($fonction!==false) && !function_exists($fonction)) {
    82                 spip_log("orthotypo_echappe_balises() : $fonction() non definie","orthotypo"._LOG_ERREUR);
    83                 return $texte;
     82
     83        if ($filtre!==false){
     84                $fonction = chercher_filtre($filtre,false);
     85                if (!$fonction) {
     86                        spip_log("orthotypo_filtre_texte_echappe() : $filtre() non definie",_LOG_ERREUR);
     87                        return $texte;
     88                }
     89                $filtre = $fonction;
    8490        }
    8591
     
    9096                if (!function_exists('echappe_html'))
    9197                        include_spip('inc/texte_mini');
    92                 $texte = echappe_html($texte, 'ORTHOTYPO', true, $balises);
     98                $texte = echappe_html($texte, 'FILTRETEXTECHAPPE', true, $balises);
    9399        }
    94100        // retour du texte simplement protege
    95         if ($fonction===false) return $texte;
     101        if ($filtre===false) return $texte;
    96102        // transformation par $fonction
    97         $texte = (is_null($arg)?$fonction($texte):$fonction($texte, $arg));
    98 
    99         // deprotection en abime, notamment des modeles...
    100         return echappe_retour($texte, 'ORTHOTYPO');
     103        if (!$args)
     104                $texte = $filtre($texte);
     105        else {
     106                array_unshift($args,$texte);
     107                $texte = call_user_func_array($texte, $args);
     108        }
     109
     110        // deprotection des balises
     111        return echappe_retour($texte, 'FILTRETEXTECHAPPE');
    101112}
    102113
     
    206217function orthotypo_guillemets_post_typo($texte){
    207218        if (strpos($texte, '"')!==false)
    208                 $texte = orthotypo_echappe_balises('html|code|cadre|frame|script|acronym|cite', 'orthotypo_guillemets_rempl', $texte);
     219                $texte = orthotypo_filtre_texte_echappe($texte,'orthotypo_guillemets_rempl','html|code|cadre|frame|script|acronym|cite');
    209220        return $texte;
    210221}
     
    315326                if (strpos($texte, '<')!==false)
    316327                        $texte = preg_replace_callback('/(<(a|img)\s[^>]+>)/Uims', 'orthotypo_exposants_echappe_balises_callback', $texte);
    317                 $texte = orthotypo_echappe_balises('html|code|cadre|frame|script|acronym|cite', $fonction, $texte);
     328                $texte = orthotypo_filtre_texte_echappe($texte,$fonction,'html|code|cadre|frame|script|acronym|cite');
    318329                return echappe_retour($texte, 'EXPO');
    319330        }
     
    350361function orthotypo_mois_post_typo($texte){
    351362        if (strpbrk($texte,"123456789")!==false){
    352                 $texte = orthotypo_echappe_balises('html|code|cadre|frame|script|acronym|cite', "orthotypo_mois_rempl", $texte);
     363                $texte = orthotypo_filtre_texte_echappe($texte,'orthotypo_mois_rempl','html|code|cadre|frame|script|acronym|cite');
    353364        }
    354365        return $texte;
     
    410421
    411422function orthotypo_caps_post_typo($texte){
    412         $texte = orthotypo_echappe_balises('html|code|cadre|frame|script|acronym|cite', "orthotypo_caps_rempl", $texte);
     423        $texte = orthotypo_filtre_texte_echappe($texte,'orthotypo_caps_rempl','html|code|cadre|frame|script|acronym|cite');
    413424        return $texte;
    414425}
     
    473484// Fonctions de traitement sur #TEXTE
    474485function orthotypo_corrections_pre_propre($texte) {
    475         return orthotypo_echappe_balises('', 'orthotypo_corrections_rempl', $texte);
     486        return orthotypo_filtre_texte_echappe($texte,'orthotypo_corrections_rempl');
    476487}
    477488
  • _plugins_/orthotypo/trunk/paquet.xml

    r69498 r69499  
    22        prefix="orthotypo"
    33        categorie="edition"
    4         version="1.1.2"
     4        version="1.2.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.