Changeset 3584


Ignore:
Timestamp:
07/15/09 13:43:44 (11 years ago)
Author:
patdenice
Message:

merge r3583 from branch 2.0 to trunk
Update smarty to 2.6.26

Location:
trunk/include/smarty
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/smarty/NEWS

    r3000 r3584  
     1Version 2.6.26 (June 18th, 2009) 
     2------------------------------- 
     3- revert super global access changes, and instead rely on 
     4  USE_SUPER_GLOBALS for security 
     5 
     6Version 2.6.25 (May 19th, 2009) 
     7------------------------------- 
     8- fix E_NOTICE when sessions are disabled (mohrt) 
     9 
     10Version 2.6.24 (May 16th, 2009) 
     11------------------------------- 
     12- fix problem introduced with super global changes (mohrt) 
     13 
     14Version 2.6.23 (May 13th, 2009) 
     15------------------------------- 
     16- strip backticks from {math} equations (mohrt) 
     17- make PHP super globals read-only from template (mohrt) 
     18- throw error when template exists but not readable (mohrt) 
     19 
    120Version 2.6.22 (Dec 17th, 2008) 
    221------------------------------- 
  • trunk/include/smarty/README

    r3000 r3584  
    44    Smarty - the PHP compiling template engine 
    55 
    6 VERSION: 2.6.22 
     6VERSION: 2.6.26 
    77 
    88AUTHORS: 
  • trunk/include/smarty/libs/Config_File.class.php

    r3282 r3584  
    2323 * 
    2424 * @link http://www.smarty.net/ 
    25  * @version 2.6.22 
     25 * @version 2.6.26 
    2626 * @copyright Copyright: 2001-2005 New Digital Group, Inc. 
    2727 * @author Andrei Zmievski <andrei@php.net> 
     
    3030 */ 
    3131 
    32 /* $Id: Config_File.class.php 2786 2008-09-18 21:04:38Z Uwe.Tews $ */ 
     32/* $Id: Config_File.class.php 3149 2009-05-23 20:59:25Z monte.ohrt $ */ 
    3333 
    3434/** 
  • trunk/include/smarty/libs/Smarty.class.php

    r3282 r3584  
    2121 * For questions, help, comments, discussion, etc., please join the 
    2222 * Smarty mailing list. Send a blank e-mail to 
    23  * smarty-discussion-subscribe@googlegroups.com 
     23 * smarty-discussion-subscribe@googlegroups.com  
    2424 * 
    2525 * @link http://www.smarty.net/ 
     
    2828 * @author Andrei Zmievski <andrei@php.net> 
    2929 * @package Smarty 
    30  * @version 2.6.22 
     30 * @version 2.6.26 
    3131 */ 
    3232 
    33 /* $Id: Smarty.class.php 2785 2008-09-18 21:04:12Z Uwe.Tews $ */ 
     33/* $Id: Smarty.class.php 3163 2009-06-17 14:39:24Z monte.ohrt $ */ 
    3434 
    3535/** 
     
    108108     * When set, smarty does uses this value as error_reporting-level. 
    109109     * 
    110      * @var boolean 
     110     * @var integer 
    111111     */ 
    112112    var $error_reporting  =  null; 
     
    237237                                    'PHP_TAGS'        => false, 
    238238                                    'MODIFIER_FUNCS'  => array('count'), 
    239                                     'ALLOW_CONSTANTS'  => false 
     239                                    'ALLOW_CONSTANTS'  => false, 
     240                                    'ALLOW_SUPER_GLOBALS' => true 
    240241                                   ); 
    241242 
     
    465466     * @var string 
    466467     */ 
    467     var $_version              = '2.6.22'; 
     468    var $_version              = '2.6.26'; 
    468469 
    469470    /** 
     
    10581059            // var non-existant, return valid reference 
    10591060            $_tmp = null; 
    1060             return $_tmp; 
     1061            return $_tmp;    
    10611062        } 
    10621063    } 
     
    11171118    { 
    11181119        static $_cache_info = array(); 
    1119  
     1120         
    11201121        $_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting) 
    11211122               ? $this->error_reporting : error_reporting() & ~E_NOTICE); 
     
    13041305            return; 
    13051306        } else { 
    1306             if ($this->debugging) { 
    1307                 // capture time for debugging info 
    1308                 $_params = array(); 
    1309                 require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); 
    1310                 $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = (smarty_core_get_microtime($_params, $this) - $_debug_start_time); 
    1311             } 
    13121307            error_reporting($_smarty_old_error_level); 
    13131308            if (isset($_smarty_results)) { return $_smarty_results; } 
     
    15551550                    } 
    15561551                    $params['resource_timestamp'] = filemtime($_resource_name); 
    1557                     $_return = is_file($_resource_name); 
     1552                    $_return = is_file($_resource_name) && is_readable($_resource_name); 
    15581553                    break; 
    15591554 
     
    17181713    function _read_file($filename) 
    17191714    { 
    1720         if ( file_exists($filename) && ($fd = @fopen($filename, 'rb')) ) { 
     1715        if ( file_exists($filename) && is_readable($filename) && ($fd = @fopen($filename, 'rb')) ) { 
    17211716            $contents = ''; 
    17221717            while (!feof($fd)) { 
     
    19391934        return eval($code); 
    19401935    } 
    1941  
     1936     
    19421937    /** 
    19431938     * Extracts the filter name from the given callback 
    1944      * 
     1939     *  
    19451940     * @param callback $function 
    19461941     * @return string 
     
    19571952                } 
    19581953        } 
    1959  
     1954   
    19601955    /**#@-*/ 
    19611956 
  • trunk/include/smarty/libs/Smarty_Compiler.class.php

    r3282 r3584  
    1919 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
    2020 * 
    21  * @link http://www.smarty.net/ 
     21 * @link http://smarty.php.net/ 
    2222 * @author Monte Ohrt <monte at ohrt dot com> 
    2323 * @author Andrei Zmievski <andrei@php.net> 
    24  * @version 2.6.22 
     24 * @version 2.6.26 
    2525 * @copyright 2001-2005 New Digital Group, Inc. 
    2626 * @package Smarty 
    2727 */ 
    2828 
    29 /* $Id: Smarty_Compiler.class.php 2966 2008-12-08 15:10:03Z monte.ohrt $ */ 
     29/* $Id: Smarty_Compiler.class.php 3163 2009-06-17 14:39:24Z monte.ohrt $ */ 
    3030 
    3131/** 
     
    7474    var $_strip_depth           =   0; 
    7575    var $_additional_newline    =   "\n"; 
    76      
    77     var $_phpversion            =   0; 
    78  
    7976 
    8077    /**#@-*/ 
     
    8481    function Smarty_Compiler() 
    8582    { 
    86         $this->_phpversion = substr(phpversion(),0,1); 
    87  
    8883        // matches double quoted strings: 
    8984        // "foobar" 
     
    158153        // $foo->bar($foo->bar()) 
    159154        // $foo->bar($foo->bar($blah,$foo,44,"foo",$foo[0].bar)) 
    160         // $foo->getBar()->getFoo() 
    161         // $foo->getBar()->foo 
    162155        $this->_obj_ext_regexp = '\->(?:\$?' . $this->_dvar_guts_regexp . ')'; 
    163156        $this->_obj_restricted_param_regexp = '(?:' 
    164              . '(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')(?:' . $this->_obj_ext_regexp . '(?:\((?:(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')' 
    165              . '(?:\s*,\s*(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . '))*)?\))?)*)'; 
    166  
    167        $this->_obj_single_param_regexp = '(?:\w+|' . $this->_obj_restricted_param_regexp . '(?:\s*,\s*(?:(?:\w+|' 
     157                . '(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')(?:' . $this->_obj_ext_regexp . '(?:\((?:(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')' 
     158                . '(?:\s*,\s*(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . '))*)?\))?)*)'; 
     159        $this->_obj_single_param_regexp = '(?:\w+|' . $this->_obj_restricted_param_regexp . '(?:\s*,\s*(?:(?:\w+|' 
    168160                . $this->_var_regexp . $this->_obj_restricted_param_regexp . ')))*)'; 
    169  
    170        $this->_obj_params_regexp = '\((?:' . $this->_obj_single_param_regexp 
     161        $this->_obj_params_regexp = '\((?:' . $this->_obj_single_param_regexp 
    171162                . '(?:\s*,\s*' . $this->_obj_single_param_regexp . ')*)?\)'; 
    172        $this->_obj_start_regexp = '(?:' . $this->_dvar_regexp . '(?:' . $this->_obj_ext_regexp . ')+)'; 
    173        $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?)'; 
     163        $this->_obj_start_regexp = '(?:' . $this->_dvar_regexp . '(?:' . $this->_obj_ext_regexp . ')+)'; 
     164        $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?)'; 
    174165         
    175166        // matches valid modifier syntax: 
     
    17061697        // replace double quoted literal string with single quotes 
    17071698        $_return = preg_replace('~^"([\s\w]+)"$~',"'\\1'",$_return); 
    1708         // escape dollar sign if not printing a var 
    1709         $_return = preg_replace('~\$(\W)~',"\\\\\$\\1",$_return); 
    17101699        return $_return; 
    17111700    } 
     
    17211710    { 
    17221711        $_has_math = false; 
    1723         $_has_php4_method_chaining = false; 
    17241712        $_math_vars = preg_split('~('.$this->_dvar_math_regexp.'|'.$this->_qstr_regexp.')~', $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE); 
    17251713 
     
    18341822                        } 
    18351823                    } else { 
    1836                        if ($this->_phpversion < 5) { 
    1837                          $_has_php4_method_chaining = true; 
    1838                          $_output .= "; \$_foo = \$_foo"; 
    1839                        } 
    18401824                        $_output .= $_index; 
    18411825                    } 
     
    18491833        } 
    18501834 
    1851         if ($_has_php4_method_chaining) { 
    1852            $_tmp = str_replace("'","\'",'$_foo = '.$_output.'; return $_foo;'); 
    1853            return "eval('".$_tmp."')"; 
    1854         } else { 
    1855            return $_output;  
    1856         } 
     1835        return $_output; 
    18571836    } 
    18581837 
     
    20692048 
    20702049            case 'get': 
    2071                 $compiled_ref = ($this->request_use_auto_globals) ? '$_GET' : "\$GLOBALS['HTTP_GET_VARS']"; 
     2050                if ($this->security && !$this->security_settings['ALLOW_SUPER_GLOBALS']) { 
     2051                    $this->_syntax_error("(secure mode) super global access not permitted", 
     2052                                         E_USER_WARNING, __FILE__, __LINE__); 
     2053                    return; 
     2054                } 
     2055                $compiled_ref = "\$_GET"; 
    20722056                break; 
    20732057 
    20742058            case 'post': 
    2075                 $compiled_ref = ($this->request_use_auto_globals) ? '$_POST' : "\$GLOBALS['HTTP_POST_VARS']"; 
     2059                if ($this->security && !$this->security_settings['ALLOW_SUPER_GLOBALS']) { 
     2060                    $this->_syntax_error("(secure mode) super global access not permitted", 
     2061                                         E_USER_WARNING, __FILE__, __LINE__); 
     2062                    return; 
     2063                } 
     2064                $compiled_ref = "\$_POST"; 
    20762065                break; 
    20772066 
    20782067            case 'cookies': 
    2079                 $compiled_ref = ($this->request_use_auto_globals) ? '$_COOKIE' : "\$GLOBALS['HTTP_COOKIE_VARS']"; 
     2068                if ($this->security && !$this->security_settings['ALLOW_SUPER_GLOBALS']) { 
     2069                    $this->_syntax_error("(secure mode) super global access not permitted", 
     2070                                         E_USER_WARNING, __FILE__, __LINE__); 
     2071                    return; 
     2072                } 
     2073                $compiled_ref = "\$_COOKIE"; 
    20802074                break; 
    20812075 
    20822076            case 'env': 
    2083                 $compiled_ref = ($this->request_use_auto_globals) ? '$_ENV' : "\$GLOBALS['HTTP_ENV_VARS']"; 
     2077                if ($this->security && !$this->security_settings['ALLOW_SUPER_GLOBALS']) { 
     2078                    $this->_syntax_error("(secure mode) super global access not permitted", 
     2079                                         E_USER_WARNING, __FILE__, __LINE__); 
     2080                    return; 
     2081                } 
     2082                $compiled_ref = "\$_ENV"; 
    20842083                break; 
    20852084 
    20862085            case 'server': 
    2087                 $compiled_ref = ($this->request_use_auto_globals) ? '$_SERVER' : "\$GLOBALS['HTTP_SERVER_VARS']"; 
     2086                if ($this->security && !$this->security_settings['ALLOW_SUPER_GLOBALS']) { 
     2087                    $this->_syntax_error("(secure mode) super global access not permitted", 
     2088                                         E_USER_WARNING, __FILE__, __LINE__); 
     2089                    return; 
     2090                } 
     2091                $compiled_ref = "\$_SERVER"; 
    20882092                break; 
    20892093 
    20902094            case 'session': 
    2091                 $compiled_ref = ($this->request_use_auto_globals) ? '$_SESSION' : "\$GLOBALS['HTTP_SESSION_VARS']"; 
     2095                if ($this->security && !$this->security_settings['ALLOW_SUPER_GLOBALS']) { 
     2096                    $this->_syntax_error("(secure mode) super global access not permitted", 
     2097                                         E_USER_WARNING, __FILE__, __LINE__); 
     2098                    return; 
     2099                } 
     2100                $compiled_ref = "\$_SESSION"; 
    20922101                break; 
    20932102 
     
    20972106             */ 
    20982107            case 'request': 
     2108                if ($this->security && !$this->security_settings['ALLOW_SUPER_GLOBALS']) { 
     2109                    $this->_syntax_error("(secure mode) super global access not permitted", 
     2110                                         E_USER_WARNING, __FILE__, __LINE__); 
     2111                    return; 
     2112                } 
    20992113                if ($this->request_use_auto_globals) { 
    2100                     $compiled_ref = '$_REQUEST'; 
     2114                    $compiled_ref = "\$_REQUEST"; 
    21012115                    break; 
    21022116                } else { 
  • trunk/include/smarty/libs/plugins/function.math.php

    r3282 r3584  
    2828    } 
    2929 
    30     $equation = $params['equation']; 
     30    // strip out backticks, not necessary for math 
     31    $equation = str_replace('`','',$params['equation']); 
    3132 
    3233    // make sure parenthesis are balanced 
Note: See TracChangeset for help on using the changeset viewer.