Пример #1
0
 /**
 		Bind value to framework variable
 			@param $key string
 			@param $val mixed
 			@param $persist bool
 			@param $resolve bool
 			@public
 	**/
 static function set($key, $val, $persist = FALSE, $resolve = NULL)
 {
     $all = $resolve === TRUE;
     if (is_null($resolve)) {
         $resolve = TRUE;
     }
     if (preg_match('/{{.+}}/', $key)) {
         // Variable variable
         $key = self::resolve($key);
     }
     if (!self::valid($key)) {
         return;
     }
     if (preg_match('/COOKIE\\b/', $key) && !headers_sent()) {
         // Create/modify cookie
         $matches = preg_split('/\\[\\s*[\'"]?|[\'"]?\\s*\\]|\\./', self::remix($key), NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
         array_shift($matches);
         if ($matches) {
             $var = '';
             foreach ($matches as $match) {
                 if (!$var) {
                     $var = $match;
                 } else {
                     $var .= '[\'' . $match . '\']';
                 }
             }
             $val = array($var => $val);
         }
         if (is_array($val)) {
             foreach ($val as $var => $sub) {
                 $func = self::$vars['JAR'];
                 array_unshift($func, $var, $sub);
                 call_user_func_array('setcookie', $func);
             }
         }
         return;
     }
     $var =& self::ref($key);
     if ($resolve) {
         if (is_string($val)) {
             $val = self::resolve($val);
         } elseif (is_array($val) && $all) {
             $var = array();
             // Recursive token substitution
             foreach ($val as $subk => $subv) {
                 $subp = $key . '[' . var_export($subk, TRUE) . ']';
                 self::set($subp, $subv, FALSE, $all);
                 $val[$subk] = self::ref($subp);
             }
         }
     }
     $var = $val;
     if (preg_match('/^(?:GET|POST|COOKIE)/', $key, $php)) {
         // Sync with REQUEST
         $var =& self::ref(preg_replace('/^' . $php[0] . '\\b/', 'REQUEST', $key));
         $var = $val;
     }
     if (preg_match('/LANGUAGE|LOCALES/', $key) && class_exists('ICU')) {
         // Load appropriate dictionaries
         ICU::load();
     } elseif ($key == 'ENCODING') {
         ini_set('default_charset', $val);
     } elseif ($key == 'TZ') {
         date_default_timezone_set($val);
     } elseif ($key == 'CACHE' && $val) {
         self::$vars['CACHE'] = Cache::load($val);
     }
     if ($persist) {
         $hash = 'var.' . self::hash(self::remix($key));
         Cache::set($hash, $val);
     }
 }
Пример #2
0
 /**
 		Bind value to framework variable
 			@param $key string
 			@param $val mixed
 			@param $persist bool
 			@param $resolve bool
 			@public
 	**/
 static function set($key, $val, $persist = FALSE, $resolve = TRUE)
 {
     if (preg_match('/{{.+}}/', $key)) {
         // Variable variable
         $key = self::resolve($key);
     }
     if (!self::valid($key)) {
         return;
     }
     if (preg_match('/COOKIE\\b/', $key) && !headers_sent()) {
         // Create/modify cookie
         $matches = preg_split('/\\[\\s*[\'"]?|[\'"]?\\s*\\]|\\./', self::remix($key), NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
         array_shift($matches);
         if ($matches) {
             $var = '';
             foreach ($matches as $match) {
                 if (!$var) {
                     $var = $match;
                 } else {
                     $var .= '[\'' . $match . '\']';
                 }
             }
             $val = array($var => $val);
         }
         if (is_array($val)) {
             foreach ($val as $var => $sub) {
                 $func = self::$vars['JAR'];
                 array_unshift($func, $var, $sub);
                 call_user_func_array('setcookie', $func);
             }
         }
         return;
     }
     $var =& self::ref($key);
     if (is_string($val) && $resolve) {
         $val = self::resolve($val);
     } elseif (is_array($val)) {
         $var = array();
         // Recursive token substitution
         foreach ($val as $subk => $subv) {
             self::set($key . '[' . var_export($subk, TRUE) . ']', $subv, FALSE);
         }
         return;
     }
     $var = $val;
     if (preg_match('/LANGUAGE|LOCALES/', $key) && class_exists('ICU')) {
         // Load appropriate dictionaries
         ICU::load();
     } elseif ($key == 'CACHE' && $val) {
         Cache::prep();
     }
     if ($persist) {
         $hash = 'var.' . self::hash(self::remix($key));
         Cache::set($hash, $val);
     }
 }
Пример #3
0
 /**
 		Bind value to framework variable
 			@param $key string
 			@param $val mixed
 			@param $persist boolean
 			@param $resolve boolean
 			@public
 	**/
 static function set($key, $val, $persist = FALSE, $resolve = TRUE)
 {
     if (preg_match('/{{.+}}/', $key)) {
         // Variable variable
         $key = self::resolve($key);
     }
     if (!self::valid($key)) {
         return;
     }
     $var =& self::ref($key);
     if (is_string($val) && $resolve) {
         $val = self::resolve($val);
     } elseif (is_array($val)) {
         $var = array();
         // Recursive token substitution
         foreach ($val as $subk => $subv) {
             self::set($key . '[' . var_export($subk, TRUE) . ']', $subv, FALSE);
         }
         return;
     }
     $var = $val;
     if (preg_match('/LANGUAGE|LOCALES/', $key) && class_exists('ICU')) {
         // Load appropriate dictionaries
         ICU::load();
     } elseif ($key == 'CACHE' && !is_bool($val)) {
         Cache::prep();
     }
     if ($persist) {
         $hash = 'var.' . self::hash(self::remix($key));
         Cache::set($hash, $val);
     }
 }