Dotclear


Ignore:
Timestamp:
11/30/16 09:40:32 (9 years ago)
Author:
Jean-Christian Denis
Branch:
Template tags filters
Message:

Open template tags to third party filters, addresses #2051

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inc/public/class.dc.template.php

    r3424 r3426  
    273273     } 
    274274 
    275      public function getFilters($attr) 
    276      { 
    277           $p[0] = '0';   # encode_xml 
    278           $p[1] = '0';   # remove_html 
    279           $p[2] = '0';   # cut_string 
    280           $p[3] = '0';   # lower_case 
    281           $p[4] = '0';   # upper_case or capitalize 
    282           $p[5] = '0';    # encode_url 
    283  
    284           $p[0] = (integer) (!empty($attr['encode_xml']) || !empty($attr['encode_html'])); 
    285           $p[1] = (integer) !empty($attr['remove_html']); 
    286  
    287           if (!empty($attr['cut_string']) && (integer) $attr['cut_string'] > 0) { 
    288                $p[2] = (integer) $attr['cut_string']; 
    289           } 
    290  
    291           $p[3] = (integer) !empty($attr['lower_case']); 
    292           $p[4] = (integer) !empty($attr['upper_case']); 
    293           $p[4] = (!empty($attr['capitalize']) ? 2 : $p[4]); 
    294           $p[5] = (integer) !empty($attr['encode_url']); 
    295  
    296           return "context::global_filter(%s,".implode(",",$p).",'".addslashes($this->current_tag)."')"; 
     275     public function getFilters($attr,$default=array()) 
     276     { 
     277          if (!is_array($attr) && !($attr instanceof arrayObject)) { 
     278               $attr = array(); 
     279          } 
     280 
     281          $p = array_merge( 
     282               array( 
     283                    0 => null, 
     284                    'encode_xml' => 0, 
     285                    'encode_html' => 0, 
     286                    'cut_string' => 0, 
     287                    'lower_case' => 0, 
     288                    'upper_case' => 0, 
     289                    'encode_url' => 0, 
     290                    'remove_html' => 0, 
     291                    'capitalize' => 0, 
     292                    'strip_tags' => 0 
     293               ), 
     294               $default 
     295          ); 
     296 
     297          foreach($attr as $k => $v) { 
     298               // attributes names must follow this rule 
     299               $k = preg_filter('/[a-zA-Z0-9_]/','$0',$k); 
     300               if ($k) { 
     301                    // addslashes protect var_export, str_replace protect sprintf; 
     302                    $p[$k] = str_replace('%','%%',addslashes($v)); 
     303               } 
     304          } 
     305 
     306          return "context::global_filters(%s,".var_export($p,true).",'".addslashes($this->current_tag)."')"; 
    297307     } 
    298308 
Note: See TracChangeset for help on using the changeset viewer.

Sites map