function __construct($in = false, $cookieMessagesName = false) { //+ parse input{ if ($in === false) { //apply default //+ Handle GET and POST variables{ $in['get'] = $_SERVER['QUERY_STRING']; //we take it from here b/c php will replace characters like '.' and will ignore duplicate keys when forming $_GET //can cause script to hang (if no stdin), so don't run if in script unless configured to if (!$_ENV['inScript'] || $_ENV['scriptGetsStdin']) { //multipart forms can either result in 1. input being blank or 2. including the upload. In case 1, post vars can be taken from $_POST. In case 2, need to avoid putting entire file in memory by parsing input if (substr($_SERVER['CONTENT_TYPE'], 0, 19) != 'multipart/form-data') { $in['post'] = file_get_contents('php://input'); $in['post'] = $in['post'] ? $in['post'] : file_get_contents('php://stdin'); } elseif ($_POST) { $in['post'] = http_build_query($_POST); } } if ($_SERVER['CONTENT_TYPE'] == 'application/json') { $in['post'] = ['json' => json_decode($in['post'])]; } else { $in['post'] = Http::parseQuery($in['post'], $_ENV['pageInPHPStyle']); } $in['get'] = Http::parseQuery($in['get'], $_ENV['pageInPHPStyle']); $this->in = Arrays::merge($in['get'], $in['post']); //+ } } elseif (is_array($in)) { $this->in = $in; } else { $this->in = Http::parseQuery($in, $_ENV['pageInPHPStyle']); } $this->originalIn = $this->in; if ($_ENV['stripInputContexts']) { $this->in = self::removeInputContexts($this->in); } //+ } //+ Handle COOKIE system messages{ if ($cookieMessagesName === false) { //apply default $cookieMessagesName = '_PageMessages'; } //Page message are intended to be shown on viewed pages, not ajax responses, so ignore on ajax if ($cookieMessagesName && $_COOKIE[$cookieMessagesName] && !$this->in['_ajax']) { do { $cookie = @unserialize($_COOKIE[$cookieMessagesName]); if (is_array($cookie)) { $code = self::saveMessagesCode($cookie['data']); if ($cookie['code'] == $code) { if (is_array($cookie['target'])) { if (!array_diff($cookie['target'], Route::$urlTokens)) { $this->messages = @unserialize($cookie['data']); } else { //not on right page, so break break; } } else { $this->messages = @unserialize($cookie['data']); } } } Cookie::remove($cookieMessagesName); } while (false); } //+ } //load db if configured if ($_ENV['database']['default']) { $this->db = Db::init(null, $_ENV['database']['default']); } }
function standardizeConcernData($concernData) { if (is_string($concernData)) { $concernData = Http::parseQuery($concernData); $standard = array(); foreach ($concernData as $k => $v) { if ($k[0] == '-') { $standard[substr($k, 1)] = null; } else { $standard[$k] = $v; } } return $standard; } return $concernData; }