gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

smarty_internal_extension_config.php (5518B)


      1 <?php
      2 
      3 /**
      4  * @package    Smarty
      5  * @subpackage PluginsInternal
      6  */
      7 class Smarty_Internal_Extension_Config
      8 {
      9     /**
     10      * @param        $obj
     11      * @param        $config_file
     12      * @param null   $sections
     13      * @param string $scope
     14      */
     15     static function configLoad($obj, $config_file, $sections = null, $scope = 'local')
     16     {
     17         $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
     18         $confObj = new $smarty->template_class($config_file, $smarty, $obj);
     19         $confObj->caching = Smarty::CACHING_OFF;
     20         $confObj->source = Smarty_Template_Config::load($confObj);
     21         $confObj->source->config_sections = $sections;
     22         $confObj->source->scope = $scope;
     23         $confObj->compiled = Smarty_Template_Compiled::load($confObj);
     24         if ($confObj->smarty->debugging) {
     25             Smarty_Internal_Debug::start_render($confObj);
     26         }
     27         $confObj->compiled->render($confObj);
     28         if ($confObj->smarty->debugging) {
     29             Smarty_Internal_Debug::end_render($confObj);
     30         }
     31         if ($obj instanceof Smarty_Internal_Template) {
     32             $obj->properties['file_dependency'][$confObj->source->uid] = array($confObj->source->filepath, $confObj->source->timestamp, $confObj->source->type);
     33         }
     34     }
     35 
     36     /**
     37      * load config variables
     38      *
     39      * @param mixed  $sections array of section names, single section or null
     40      * @param string $scope    global,parent or local
     41      *
     42      * @throws Exception
     43      */
     44     static function loadConfigVars($_template, $_config_vars)
     45     {
     46         $scope = $_template->source->scope;
     47         // pointer to scope (local scope is parent of template object
     48         $scope_ptr = $_template->parent;
     49         if ($scope == 'parent') {
     50             if (isset($_template->parent->parent)) {
     51                 $scope_ptr = $_template->parent->parent;
     52             }
     53         } elseif ($scope == 'root' || $scope == 'global') {
     54             while (isset($scope_ptr->parent)) {
     55                 $scope_ptr = $scope_ptr->parent;
     56             }
     57         }
     58         // copy global config vars
     59         foreach ($_config_vars['vars'] as $variable => $value) {
     60             if ($_template->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
     61                 $scope_ptr->config_vars[$variable] = $value;
     62             } else {
     63                 $scope_ptr->config_vars[$variable] = array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
     64             }
     65         }
     66         // scan sections
     67         $sections = $_template->source->config_sections;
     68         if (!empty($sections)) {
     69             foreach ((array) $sections as $_template_section) {
     70                 if (isset($_config_vars['sections'][$_template_section])) {
     71                     foreach ($_config_vars['sections'][$_template_section]['vars'] as $variable => $value) {
     72                         if ($_template->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
     73                             $scope_ptr->config_vars[$variable] = $value;
     74                         } else {
     75                             $scope_ptr->config_vars[$variable] = array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
     76                         }
     77                     }
     78                 }
     79             }
     80         }
     81     }
     82 
     83     /**
     84      * Returns a single or all config variables
     85      *
     86      * @param  string $varname variable name or null
     87      * @param bool    $search_parents
     88      *
     89      * @return string variable value or or array of variables
     90      */
     91     static function getConfigVars($obj, $varname = null, $search_parents = true)
     92     {
     93         $_ptr = $obj;
     94         $var_array = array();
     95         while ($_ptr !== null) {
     96             if (isset($varname)) {
     97                 if (isset($_ptr->config_vars[$varname])) {
     98                     return $_ptr->config_vars[$varname];
     99                 }
    100             } else {
    101                 $var_array = array_merge($_ptr->config_vars, $var_array);
    102             }
    103             // not found, try at parent
    104             if ($search_parents) {
    105                 $_ptr = $_ptr->parent;
    106             } else {
    107                 $_ptr = null;
    108             }
    109         }
    110         if (isset($varname)) {
    111             return '';
    112         } else {
    113             return $var_array;
    114         }
    115     }
    116 
    117     /**
    118      * gets  a config variable
    119      *
    120      * @param  string $variable the name of the config variable
    121      * @param bool    $error_enable
    122      *
    123      * @return mixed  the value of the config variable
    124      */
    125     static function getConfigVariable($obj, $variable, $error_enable = true)
    126     {
    127         $_ptr = $obj;
    128         while ($_ptr !== null) {
    129             if (isset($_ptr->config_vars[$variable])) {
    130                 // found it, return it
    131                 return $_ptr->config_vars[$variable];
    132             }
    133             // not found, try at parent
    134             $_ptr = $_ptr->parent;
    135         }
    136         if ($obj->error_unassigned && $error_enable) {
    137             // force a notice
    138             $x = $$variable;
    139         }
    140 
    141         return null;
    142     }
    143 
    144     /**
    145      * remove a single or all config variables
    146      *
    147      * @param  string $name variable name or null
    148      *
    149      * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
    150      */
    151     static function clearConfig($obj, $name = null)
    152     {
    153         if (isset($name)) {
    154             unset($obj->config_vars[$name]);
    155         } else {
    156             $obj->config_vars = array();
    157         }
    158         return $obj;
    159     }
    160 }