Вход Регистрация
Файл: app/lib/smarty/sysplugins/smarty_internal_compile_private_special_variable.php
Строк: 69
<?php
/**
 * Smarty Internal Plugin Compile Special Smarty Variable
 * Compiles the special $smarty variables
 *
 * @package    Smarty
 * @subpackage Compiler
 * @author     Uwe Tews
 */

/**
 * Smarty Internal Plugin Compile special Smarty Variable Class
 *
 * @package    Smarty
 * @subpackage Compiler
 */
class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase
{
    
/**
     * Compiles code for the special $smarty variables
     *
     * @param  array  $args     array with attributes from parser
     * @param  object $compiler compiler object
     * @param         $parameter
     *
     * @return string compiled code
     */
    
public function compile($args$compiler$parameter)
    {
        
$_index preg_split("/][/"substr($parameter1strlen($parameter) - 2));
        
$compiled_ref ' ';
        
$variable trim($_index[0], "'");
        switch (
$variable) {
            case 
'foreach':
                return 
"$_smarty_tpl->getVariable('smarty')->value$parameter";
            case 
'section':
                return 
"$_smarty_tpl->getVariable('smarty')->value$parameter";
            case 
'capture':
                return 
"Smarty::$_smarty_vars$parameter";
            case 
'now':
                return 
'time()';
            case 
'cookies':
                if (isset(
$compiler->smarty->security_policy) && !$compiler->smarty->security_policy->allow_super_globals) {
                    
$compiler->trigger_template_error("(secure mode) super globals not permitted");
                    break;
                }
                
$compiled_ref '$_COOKIE';
                break;

            case 
'get':
            case 
'post':
            case 
'env':
            case 
'server':
            case 
'session':
            case 
'request':
                if (isset(
$compiler->smarty->security_policy) && !$compiler->smarty->security_policy->allow_super_globals) {
                    
$compiler->trigger_template_error("(secure mode) super globals not permitted");
                    break;
                }
                
$compiled_ref '$_' strtoupper($variable);
                break;

            case 
'template':
                return 
'basename($_smarty_tpl->source->filepath)';

            case 
'template_object':
                return 
'$_smarty_tpl';

            case 
'current_dir':
                return 
'dirname($_smarty_tpl->source->filepath)';

            case 
'version':
                
$_version Smarty::SMARTY_VERSION;

                return 
"'$_version'";

            case 
'const':
                if (isset(
$compiler->smarty->security_policy) && !$compiler->smarty->security_policy->allow_constants) {
                    
$compiler->trigger_template_error("(secure mode) constants not permitted");
                    break;
                }

                return 
"@constant({$_index[1]})";

            case 
'config':
                if (isset(
$_index[2])) {
                    return 
"(is_array($tmp = $_smarty_tpl->getConfigVariable($_index[1])) ? $tmp[$_index[2]] : null)";
                } else {
                    return 
"$_smarty_tpl->getConfigVariable($_index[1])";
                }
            case 
'ldelim':
                
$_ldelim $compiler->smarty->left_delimiter;

                return 
"'$_ldelim'";

            case 
'rdelim':
                
$_rdelim $compiler->smarty->right_delimiter;

                return 
"'$_rdelim'";

            default:
                
$compiler->trigger_template_error('$smarty.' trim($_index[0], "'") . ' is invalid');
                break;
        }
        if (isset(
$_index[1])) {
            
array_shift($_index);
            foreach (
$_index as $_ind) {
                
$compiled_ref $compiled_ref "[$_ind]";
            }
        }

        return 
$compiled_ref;
    }
}
Онлайн: 1
Реклама