_anvil = $a; $this->createFromGlobals(); $this->clearFlashdata(); } public function createFromGlobals() { $this->type = strtoupper($_SERVER['REQUEST_METHOD']); if($this->type == 'GET') { $this->parameters = $_GET; } else { $this->parameters = $this->process_data(); } $this->cookie = $_COOKIE; $this->files = $_FILES; $this->server = $_SERVER; $this->uri_array = $this->uriToArray(); $this->original_uri_array = $this->uri_array; } /** Is this an HTTPS request? */ public function isSecure() { return !(!isset($this->server['HTTPS']) || empty($this->server['HTTPS']) || strtolower($this->server['HTTPS']) === 'off'); } /** Pull the JSON Payload **/ public function json() { if(!self::$request_params) { $payload = file_get_contents('php://input'); if(is_array($payload)) { self::$request_params = $payload; } else if((substr($payload, 0, 1) == "{") && (substr($payload, (strlen($payload)-1), 1) == "}")) { self::$request_params = json_decode($payload); } else { parse_str($payload, self::$request_params); } } return (object)self::$request_params; } public function post($index=NULL, $xss_clean=FALSE) { return $this->process_data($index, $xss_clean); } public function put($index=NULL, $xss_clean=FALSE) { return $this->process_data($index, $xss_clean); } public function patch($index=NULL, $xss_clean=FALSE) { return $this->process_data($index, $xss_clean); } public function delete($index=NULL, $xss_clean=FALSE) { return $this->process_data($index, $xss_clean); } public function process_data($index=NULL, $xss_clean=FALSE) { if(count($_FILES) > 0) { $request_vars = $_POST; } else { $request_vars = (array)$this->json(); } if($index==NULL && !empty($request_vars)) { $post = array(); foreach(array_keys($request_vars) as $key) { $post[$key] = $this->_fetch_from_array($request_vars, $key, $xss_clean); } return $post; } return $this->_fetch_from_array($request_vars, $index, $xss_clean); } private function _fetch_from_array(&$array, $index = '', $xss_clean = FALSE) { if(!isset($array[$index])) { return FALSE; } if($xss_clean === TRUE) { } return $array[$index]; } public function setCookie($key, $val, $expire=0, $path='/', $domain=NULL, $secure=0) { if($expire == 'never') { // We can't do never... Set it to 10 years, should be good enough. $expire = time()+60*60*24*365*10; } if(!isset($path) && ($this->_anvil->config->item('cookie_path') !== FALSE)) { $path = $this->_anvil->config->item('cookie_path'); } if(!isset($domain)) { if($this->_anvil->config->item('cookie_domain') !== FALSE) { $domain = $this->_anvil->config->item('cookie_domain'); } else { $domain = $this->_anvil->request->server['HTTP_HOST']; } } setcookie($key, $val, $expire, $path, $domain, $secure); } public function clearCookie($key) { $this->setCookie($key, '', time()-3600*24*365); } public function setFlashdata($key, $val) { return $this->setCookie('flashdata_'.$key, $val); } public function getFlashdata($key) { if(!isset($this->cookie['flashdata_'.$key])) { return false; } return $this->cookie['flashdata_'.$key]; } public function clearFlashdata() { foreach($this->cookie as $k => $v) { if(strpos($k, 'flashdata_') !== FALSE) { $this->clearCookie($k); } } } /** * URI Parsing Functions */ public function uriToArray($st = 0, $uri=NULL) { $uri = (isset($uri)?$uri:$this->server['REQUEST_URI']); if(substr($uri,0,10)=='/index.php') { $uri = substr($uri,10); } $uri=substr($uri,1); $uri_array = preg_split('^[\/\?]^', $uri); $uri_array = array_slice($uri_array, $st); return $uri_array; } /** * Parse URI into key=>value pairs */ public function uriToPairs($st = 0, $uri=NULL) { $uri = (isset($uri)?$uri:$this->server['REQUEST_URI']); $uri_array = $this->uriToArray($st, $uri); $pair_array = array(); $key = ''; foreach($uri_array as $a_val) { if(empty($key)) { $key = $a_val; } else { $pair_array[$key] = $a_val; $key = ''; } } if(!empty($key)) { $pair_array[$key] = ''; } return $pair_array; } } ?>