Example #1
0
 protected function __new__()
 {
     if (func_num_args() > 0) {
         foreach (Text::dict(func_get_arg(0)) as $n => $v) {
             switch ($n) {
                 case "_scope_":
                 case "_inc_session_":
                 case "_init_":
                     $this->{$n} = $v;
             }
         }
     }
     if (isset($_GET) && is_array($_GET)) {
         foreach ($_GET as $key => $value) {
             $this->vars[$key] = $this->mq_off($value);
         }
     }
     if (isset($_POST) && is_array($_POST)) {
         foreach ($_POST as $key => $value) {
             $this->vars[$key] = $this->mq_off($value);
         }
     }
     if (empty($this->vars) && isset($_SERVER['argv'])) {
         $argv = $_SERVER['argv'];
         array_shift($argv);
         if (isset($argv[0]) && $argv[0][0] != '-') {
             $this->args = implode(' ', $argv);
         } else {
             $size = sizeof($argv);
             for ($i = 0; $i < $size; $i++) {
                 if ($argv[$i][0] == '-') {
                     if (isset($argv[$i + 1]) && $argv[$i + 1][0] != '-') {
                         $this->vars[substr($argv[$i], 1)] = $argv[$i + 1];
                         $i++;
                     } else {
                         $this->vars[substr($argv[$i], 1)] = '';
                     }
                 }
             }
         }
     }
     if ('' != ($pathinfo = array_key_exists('PATH_INFO', $_SERVER) ? empty($_SERVER['PATH_INFO']) && array_key_exists('ORIG_PATH_INFO', $_SERVER) ? $_SERVER['ORIG_PATH_INFO'] : $_SERVER['PATH_INFO'] : (isset($this->vars['pathinfo']) ? $this->vars['pathinfo'] : null))) {
         if ($pathinfo[0] != '/') {
             $pathinfo = '/' . $pathinfo;
         }
         $this->args = preg_replace("/(.*?)\\?.*/", "\\1", $pathinfo);
     }
     if (isset($this->vars['application_branch'])) {
         App::branch($this->vars['application_branch']);
         unset($this->vars['application_branch']);
     }
     if (isset($_COOKIE) && is_array($_COOKIE)) {
         foreach ($_COOKIE as $key => $value) {
             $this->vars[$key] = $this->mq_off($value);
         }
     }
     if (isset($_FILES) && is_array($_FILES)) {
         foreach ($_FILES as $key => $files) {
             $this->files($key, $files);
         }
     }
     if ($this->_inc_session_) {
         if (!self::$session_start) {
             ini_set('session.gc_probability', '1');
             ini_set('session.gc_divisor', self::$session_gc_divisor);
             session_cache_limiter(self::$session_limiter);
             session_cache_expire(self::$session_expire);
             session_name(self::$session_name);
             if (Object::C(__CLASS__)->has_module('session_read')) {
                 ini_set('session.save_handler', 'user');
                 session_set_save_handler(array($this, '__session_open__'), array($this, '__session_close__'), array($this, '__session_read__'), array($this, '__session_write__'), array($this, '__session_destroy__'), array($this, '__session_gc__'));
                 if (isset($this->vars[self::$session_name])) {
                     list($session_name, $id, $path) = array(self::$session_name, $this->vars[self::$session_name], session_save_path());
                     if (Object::C(__CLASS__)->call_module('session_verify', $session_name, $id, $path) !== true) {
                         session_regenerate_id(true);
                     }
                 }
             } else {
                 if (isset($this->vars[self::$session_name]) && is_dir(session_save_path()) && !is_file(File::absolute(session_save_path(), 'sess_' . $this->vars[self::$session_name]))) {
                     session_regenerate_id(true);
                 }
             }
             session_start();
             self::$session_start = true;
         }
         if (empty($this->_scope_)) {
             $this->_scope_ = $this->_class_;
         }
         $this->session_init();
     }
 }