Вход Регистрация
Файл: sngine-v2.8/Script/includes/libs/Smarty/sysplugins/smarty_internal_method_configload.php
Строк: 248
<?php

/**
 * Smarty Method ConfigLoad
 *
 * Smarty::configLoad() method
 *
 * @package    Smarty
 * @subpackage PluginsInternal
 * @author     Uwe Tews
 */
class Smarty_Internal_Method_ConfigLoad
{
    
/**
     * Valid for all objects
     *
     * @var int
     */
    
public $objMap 7;

    
/**
     * load a config file, optionally load just selected sections
     *
     * @api  Smarty::configLoad()
     * @link http://www.smarty.net/docs/en/api.config.load.tpl
     *
     * @param Smarty_Internal_Data|Smarty_Internal_Template|Smarty $data
     * @param string                                                  $config_file filename
     * @param mixed                                                   $sections    array of section names, single
     *                                                                             section or null
     *
     * @return Smarty|Smarty_Internal_Data|Smarty_Internal_Template
     * @throws Exception
     */
    
public function configLoad(Smarty_Internal_Data $data$config_file$sections null)
    {
        
$this->_loadConfigFile($data$config_file$sectionsnull);
        return 
$data;
    }

    
/**
     * load a config file, optionally load just selected sections
     *
     * @api  Smarty::configLoad()
     * @link http://www.smarty.net/docs/en/api.config.load.tpl
     *
     * @param Smarty|Smarty_Internal_Data|Smarty_Internal_Template $data
     * @param string                                                  $config_file filename
     * @param mixed                                                   $sections    array of section names, single
     *                                                                             section or null
     * @param int                                                     $scope       scope into which config variables
     *                                                                             shall be loaded
     *
     * @throws Exception
     */
    
public function _loadConfigFile(Smarty_Internal_Data $data$config_file$sections null$scope 0)
    {
        
/* @var Smarty $smarty */
        
$smarty $data->_getSmartyObj();
        
/* @var Smarty_Internal_Template $confObj */
        
$confObj = new Smarty_Internal_Template($config_file$smarty$datanullnullnullnulltrue);
        
$confObj->caching Smarty::CACHING_OFF;
        
$confObj->source->config_sections $sections;
        
$confObj->source->scope $scope;
        
$confObj->compiled Smarty_Template_Compiled::load($confObj);
        
$confObj->compiled->render($confObj);
        if (
$data->_isTplObj()) {
            
$data->compiled->file_dependency$confObj->source->uid ] =
                array(
$confObj->source->filepath$confObj->source->getTimeStamp(), $confObj->source->type);
        }
    }

    
/**
     * load config variables into template object
     *
     * @param Smarty_Internal_Template $tpl
     * @param array                     $new_config_vars
     */
    
public function _loadConfigVars(Smarty_Internal_Template $tpl$new_config_vars)
    {
        
$this->_assignConfigVars($tpl->parent->config_vars$tpl$new_config_vars);
        
$tagScope $tpl->source->scope;
        if (
$tagScope >= 0) {
            if (
$tagScope === Smarty::SCOPE_LOCAL) {
                
$this->_updateVarStack($tpl$new_config_vars);
                
$tagScope 0;
                if (!
$tpl->scope) {
                    return;
                }
            }
            if (
$tpl->parent->_isTplObj() && ($tagScope || $tpl->parent->scope)) {
                
$mergedScope $tagScope $tpl->scope;
                if (
$mergedScope) {
                    
// update scopes
                    /* @var Smarty_Internal_Template|Smarty|Smarty_Internal_Data $ptr */
                    
foreach ($tpl->smarty->ext->_updateScope->_getAffectedScopes($tpl->parent$mergedScope) as $ptr) {
                        
$this->_assignConfigVars($ptr->config_vars$tpl$new_config_vars);
                        if (
$tagScope && $ptr->_isTplObj() && isset($tpl->_cache'varStack' ])) {
                            
$this->_updateVarStack($tpl$new_config_vars);
                        }
                    }
                }
            }
        }
    }

    
/**
     * Assign all config variables in given scope
     *
     * @param array                     $config_vars     config variables in scope
     * @param Smarty_Internal_Template $tpl
     * @param array                     $new_config_vars loaded config variables
     */
    
public function _assignConfigVars(&$config_varsSmarty_Internal_Template $tpl$new_config_vars)
    {
        
// copy global config vars
        
foreach ($new_config_vars'vars' ] as $variable => $value) {
            if (
$tpl->smarty->config_overwrite || !isset($config_vars$variable ])) {
                
$config_vars$variable ] = $value;
            } else {
                
$config_vars$variable ] = array_merge((array)$config_vars$variable ], (array)$value);
            }
        }
        
// scan sections
        
$sections $tpl->source->config_sections;
        if (!empty(
$sections)) {
            foreach ((array)
$sections as $tpl_section) {
                if (isset(
$new_config_vars'sections' ][ $tpl_section ])) {
                    foreach (
$new_config_vars'sections' ][ $tpl_section ][ 'vars' ] as $variable => $value) {
                        if (
$tpl->smarty->config_overwrite || !isset($config_vars$variable ])) {
                            
$config_vars$variable ] = $value;
                        } else {
                            
$config_vars$variable ] = array_merge((array)$config_vars$variable ], (array)$value);
                        }
                    }
                }
            }
        }
    }

    
/**
     * Update config variables in template local variable stack
     *
     * @param Smarty_Internal_Template $tpl
     * @param array                     $config_vars
     */
    
public function _updateVarStack(Smarty_Internal_Template $tpl$config_vars)
    {
        
$i 0;
        while (isset(
$tpl->_cache'varStack' ][ $i ])) {
            
$this->_assignConfigVars($tpl->_cache'varStack' ][ $i ][ 'config' ], $tpl$config_vars);
            
$i++;
        }
    }

    
/**
     * gets  a config variable value
     *
     * @param Smarty|Smarty_Internal_Data|Smarty_Internal_Template $data
     * @param string                                                  $varName the name of the config variable
     * @param bool                                                    $errorEnable
     *
     * @return null|string  the value of the config variable
     */
    
public function _getConfigVariable(Smarty_Internal_Data $data$varName$errorEnable true)
    {
        
$_ptr $data;
        while (
$_ptr !== null) {
            if (isset(
$_ptr->config_vars$varName ])) {
                
// found it, return it
                
return $_ptr->config_vars$varName ];
            }
            
// not found, try at parent
            
$_ptr $_ptr->parent;
        }
        if (
$data->smarty->error_unassigned && $errorEnable) {
            
// force a notice
            
$x = $$varName;
        }
        return 
null;
    }
}
Онлайн: 4
Реклама