Overview
  • Namespace
  • Class

Namespaces

  • nk2580
    • wordsmith
      • Actions
      • Endpoints
      • Environment
      • Filters
      • Inputs
        • Fields
      • Menus
      • MetaBoxes
      • PostTypes
      • Routes
      • Scripts
      • SettingsPages
      • Taxonomies
        • Hierarchical
        • NonHierarchical
      • UserCapabilities
      • UserRoles
      • Utillities
        • NavWalkers

Classes

  • nk2580\wordsmith\Actions\Action
  • nk2580\wordsmith\Actions\AJAXAction
  • nk2580\wordsmith\Endpoints\Endpoint
  • nk2580\wordsmith\Endpoints\EndpointHandler
  • nk2580\wordsmith\Environment\Instance
  • nk2580\wordsmith\Environment\Plugin
  • nk2580\wordsmith\Environment\Theme
  • nk2580\wordsmith\Filters\Filter
  • nk2580\wordsmith\Inputs\Fields\AddressField
  • nk2580\wordsmith\Inputs\Fields\CheckBoxField
  • nk2580\wordsmith\Inputs\Fields\EmailField
  • nk2580\wordsmith\Inputs\Fields\FileUploadField
  • nk2580\wordsmith\Inputs\Fields\GalleryField
  • nk2580\wordsmith\Inputs\Fields\HiddenField
  • nk2580\wordsmith\Inputs\Fields\ImageUploadField
  • nk2580\wordsmith\Inputs\Fields\PasswordField
  • nk2580\wordsmith\Inputs\Fields\RadioButtonField
  • nk2580\wordsmith\Inputs\Fields\SelectBoxField
  • nk2580\wordsmith\Inputs\Fields\TextAreaField
  • nk2580\wordsmith\Inputs\Fields\TextField
  • nk2580\wordsmith\Inputs\Fields\UrlField
  • nk2580\wordsmith\Inputs\Input
  • nk2580\wordsmith\Inputs\Repeater
  • nk2580\wordsmith\Menus\Menu
  • nk2580\wordsmith\MetaBoxes\MetaBox
  • nk2580\wordsmith\PostTypes\PostType
  • nk2580\wordsmith\Routes\Route
  • nk2580\wordsmith\Routes\RouteFactory
  • nk2580\wordsmith\Routes\RouteGroup
  • nk2580\wordsmith\Scripts\AdminScript
  • nk2580\wordsmith\Scripts\PublicScript
  • nk2580\wordsmith\SettingsPages\SettingsPage
  • nk2580\wordsmith\Taxonomies\Hierarchical\HierarchicalTaxonomy
  • nk2580\wordsmith\Taxonomies\NonHierarchical\NonHierarchicalTaxonomy
  • nk2580\wordsmith\Taxonomies\Taxonomy
  • nk2580\wordsmith\UserCapabilities\UserCapability
  • nk2580\wordsmith\UserRoles\UserRole
  • nk2580\wordsmith\Utillities\Cypher
  • nk2580\wordsmith\Utillities\JsonResponse
  • nk2580\wordsmith\Utillities\NavWalkers\Bootstrap
  • nk2580\wordsmith\Utillities\PDF
  1 <?php
  2 
  3 /*
  4  * To change this license header, choose License Headers in Project Properties.
  5  * To change this template file, choose Tools | Templates
  6  * and open the template in the editor.
  7  */
  8 
  9 namespace nk2580\wordsmith\Routes;
 10 
 11 use nk2580\wordsmith\Routes\RouteFactory;
 12 
 13 /**
 14  * Description of Route
 15  *
 16  * @author Nik Kyriakidis
 17  */
 18 class Route {
 19 
 20     protected $method;
 21     protected $uri;
 22     protected $group;
 23     protected $action;
 24     protected $parameters;
 25 
 26     public function __construct($method, $group, $uri, $action) {
 27         $this->method = $method;
 28         $this->uri = $uri;
 29         $this->group = $group;
 30         $this->action = $action;
 31     }
 32 
 33     public function getGroup() {
 34         return $this->group;
 35     }
 36 
 37     public function getURI() {
 38         return $this->uri;
 39     }
 40 
 41     public function getAction() {
 42         return $this->action;
 43     }
 44 
 45     public function getMethod() {
 46         return $this->method;
 47     }
 48 
 49     public static function get($group, $uri, $action) {
 50         $route = new self('GET', $group, $uri, $action);
 51         RouteFactory::addRoute($route);
 52     }
 53 
 54     public static function post($group, $uri, $action) {
 55         $route = new self('POST', $group, $uri, $action);
 56         RouteFactory::addRoute($route);
 57     }
 58     
 59     public function invoke($request) {
 60         if (is_object($this->action) && ($this->action instanceof Closure)) {
 61             $this->action();
 62         } else {
 63             $parts = $pieces = explode("@", $this->action);
 64             $class = $parts[0];
 65             $method = $parts[1];
 66             $obj = new $class();
 67             if ($this->hasParameters()) {
 68                 $this->setupParams($request);
 69                 call_user_func_array(array($obj, $method), $this->parameters);
 70             } else {
 71                 $obj->$method();
 72             }
 73         }
 74     }
 75 
 76     public function matchesRequest($request) {
 77         if ($request == $this->getURI()) {
 78             return true;
 79         } else if ($this->hasParameters()) {
 80             return preg_match($this->regexURI(), $request);
 81         } else {
 82             return false;
 83         }
 84     }
 85 
 86     private function hasParameters() {
 87         return preg_match('/\{(.*?)\}/', $this->uri);
 88     }
 89 
 90     public function regexURI() {
 91         $raw = preg_replace('/\{(.*?)\}/', "([a-zA-Z0-9]+)", $this->uri);
 92         $processed = preg_replace("/\//", "\/", $raw);
 93         return "/" . $processed . "$/";
 94     }
 95 
 96     private function setupParams($request) {
 97         $params = array();
 98         preg_match($this->regexURI(), $request, $params);
 99         unset($params[0]);
100         $this->parameters = $params;
101     }
102 
103 }
104 
API documentation generated by ApiGen