/** 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); } }
/** 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); } }
/** 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); } }