A super easy PHP Framework for web development!
				https://github.com/exacti/phacil-framework
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					100 lines
				
				3.0 KiB
			
		
		
			
		
	
	
					100 lines
				
				3.0 KiB
			| 
								 
											7 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Smarty Config Source Plugin
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package    Smarty
							 | 
						||
| 
								 | 
							
								 * @subpackage TemplateResources
							 | 
						||
| 
								 | 
							
								 * @author     Uwe Tews
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Smarty Config Resource Data Object
							 | 
						||
| 
								 | 
							
								 * Meta Data Container for Template Files
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package    Smarty
							 | 
						||
| 
								 | 
							
								 * @subpackage TemplateResources
							 | 
						||
| 
								 | 
							
								 * @author     Uwe Tews
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class Smarty_Template_Config extends Smarty_Template_Source
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * array of section names, single section or null
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @var null|string|array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public $config_sections = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * scope into which the config variables shall be loaded
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @var int
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public $scope = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Flag that source is a config file
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @var bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public $isConfig = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Name of the Class to compile this resource's contents with
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @var string
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public $compiler_class = 'Smarty_Internal_Config_File_Compiler';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Name of the Class to tokenize this resource's contents with
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @var string
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public $template_lexer_class = 'Smarty_Internal_Configfilelexer';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Name of the Class to parse this resource's contents with
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @var string
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public $template_parser_class = 'Smarty_Internal_Configfileparser';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * initialize Source Object for given resource
							 | 
						||
| 
								 | 
							
								     * Either [$_template] or [$smarty, $template_resource] must be specified
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param  Smarty_Internal_Template $_template         template object
							 | 
						||
| 
								 | 
							
								     * @param  Smarty                   $smarty            smarty object
							 | 
						||
| 
								 | 
							
								     * @param  string                   $template_resource resource identifier
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return Smarty_Template_Config Source Object
							 | 
						||
| 
								 | 
							
								     * @throws SmartyException
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null,
							 | 
						||
| 
								 | 
							
								                                $template_resource = null)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        static $_incompatible_resources = array('extends' => true, 'php' => true);
							 | 
						||
| 
								 | 
							
								        if ($_template) {
							 | 
						||
| 
								 | 
							
								            $smarty = $_template->smarty;
							 | 
						||
| 
								 | 
							
								            $template_resource = $_template->template_resource;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if (empty($template_resource)) {
							 | 
						||
| 
								 | 
							
								            throw new SmartyException('Source: Missing  name');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								         // parse resource_name, load resource handler
							 | 
						||
| 
								 | 
							
								        list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type);
							 | 
						||
| 
								 | 
							
								        // make sure configs are not loaded via anything smarty can't handle
							 | 
						||
| 
								 | 
							
								        if (isset($_incompatible_resources[ $type ])) {
							 | 
						||
| 
								 | 
							
								            throw new SmartyException ("Unable to use resource '{$type}' for config");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $source = new Smarty_Template_Config($smarty, $template_resource, $type, $name);
							 | 
						||
| 
								 | 
							
								        $source->handler->populate($source, $_template);
							 | 
						||
| 
								 | 
							
								        if (!$source->exists && isset($smarty->default_config_handler_func)) {
							 | 
						||
| 
								 | 
							
								            Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
							 | 
						||
| 
								 | 
							
								            $source->handler->populate($source, $_template);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $source;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |