Example #1
0
 /**
  * Process a Plugin Request
  *
  * @param $route SimpleXMLElement the route
  * @param $url string The URL
  * @return bool
  */
 private function _processPlugin($route, $url = "")
 {
     if (count($route["options"]) > 0) {
         $filter = Filter::getInstance();
         $options = $route["options"];
         $name = $options["plugin"];
         $action = $options["action"];
         $type = $route["type"];
         $this->_type = $type;
         $rparams = array("type" => $type, "name" => $name, "action" => $action);
         $this->_params = $rparams;
         $parameters = array();
         if (count($route["parameters"]) > 0) {
             foreach ($route["parameters"] as $parameter) {
                 $name = $parameter["name"];
                 $type = $parameter["type"];
                 $required = $parameter["required"];
                 $res = $this->_getParamValue($url, $name);
                 if (!$res) {
                     if ($required == "true") {
                         trigger_error("ROUTER | Parameter {$name} is required for {$route["path"]}", E_USER_WARNING);
                         return false;
                     }
                 } else {
                     $urlArr = explode("/", $url);
                     $urlArr = array_slice($urlArr, 3);
                     for ($pos = 0; $pos < count($urlArr); $pos++) {
                         if ($url[$pos] == $name) {
                             break;
                         }
                     }
                     $value = $this->_getParamValue($url, $name);
                     if (!empty($value)) {
                         try {
                             $value = trim($value);
                             if ($type == "string") {
                                 $res = $filter->isString($value);
                                 if (!$res) {
                                     trigger_error("ROUTER | Paramater {$name} must be type {$type} for {$route["path"]} using url {$url}", E_USER_WARNING);
                                     return false;
                                 } else {
                                     Request::registerParameter($name, $value);
                                 }
                             }
                             if ($type == "integer") {
                                 $res = $filter->isInteger($value);
                                 if ($res) {
                                     Request::registerParameter($name, $value);
                                 } else {
                                     trigger_error("ROUTER | Paramater {$name} must be type {$type} for {$route["path"]} using url {$url}", E_USER_WARNING);
                                     return false;
                                 }
                             }
                             if ($type == "float") {
                                 $res = $filter->isFloat($value);
                                 if ($res) {
                                     Request::registerParameter($name, $value);
                                 } else {
                                     trigger_error("ROUTER | Paramater {$name} must be type {$type} for {$route["path"]} using url {$url}", E_USER_WARNING);
                                     return false;
                                 }
                             }
                             if ($type == "boolean") {
                                 $res = $filter->isBoolean($value);
                                 if ($res) {
                                     Request::registerParameter($name, $value);
                                 } else {
                                     trigger_error("ROUTER | Paramater {$name} must be type {$type} for {$route["path"]} using url {$url}", E_USER_WARNING);
                                     return false;
                                 }
                             }
                         } catch (Exception $ex) {
                             trigger_error("ROUTER | An exception has been produced in the router {$ex->getMessage()} ", E_USER_WARNING);
                             return false;
                         }
                     }
                 }
                 $parameters[] = array("name" => $name, "type" => $type, "required" => $required);
             }
         }
         return true;
     }
     return false;
 }