Example #1
0
 public static function serve($query_string = false, $method = null, $payload = null, $check_perms = true)
 {
     if ($query_string) {
         self::$mode = self::MODE_EXECUTE;
         self::$query_string = $query_string;
         self::$method = is_null($method) ? request_method() : $method;
         //The payload must be specified, either through the query string or in the payload itself...
         self::$payload = $payload;
     } else {
         self::$mode = self::MODE_REQUEST;
         self::$query_string = $_SERVER['QUERY_STRING'];
         self::$method = is_null($method) ? request_method() : $method;
         ///Payload is always set with _GET / _POST with requests
         switch (self::$method) {
             case 'GET':
                 self::$payload = array_map('stripslashes_deep', $_GET);
                 break;
             case 'POST':
                 //Add GET variables as well. Should POST overwrites GET vars
                 self::$payload = array_map('stripslashes_deep', $_GET);
                 self::$payload = array_merge(self::$payload, array_map('stripslashes_deep', $_POST));
                 break;
         }
     }
     self::$check_perms = $check_perms;
     self::$ob_level = ob_get_level();
     parse_str(self::$query_string, self::$query_vars);
     if (empty(self::$payload) && !is_array(self::$payload)) {
         self::$payload = array();
     }
     //Make sure that all of query string vars is in the payload.
     if (self::$mode == self::MODE_EXECUTE && self::$method == 'GET') {
         self::$payload = array_merge(self::$query_vars, self::$payload);
     }
     self::init();
     self::start();
     list($controller, $result) = self::action();
     if ($controller instanceof AreaCtl) {
         self::display($controller, $result);
     }
     if (self::$mode == self::MODE_EXECUTE) {
         self::finish();
     }
 }