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\Route;
12 use nk2580\wordsmith\Utillities\JsonResponse;
13 
14 /**
15  * Description of RouteGroup
16  *
17  * @author Nik Kyriakidis
18  */
19 class RouteGroup {
20 
21     protected $routes = [];
22     public $name;
23     private $request;
24     private $endpoint;
25 
26     public function __construct($name) {
27         $this->name = $name;
28     }
29 
30     public function add(Route $route) {
31         $this->routes[] = $route;
32     }
33 
34     public function routes() {
35         return $this->routes;
36     }
37 
38     public function run($endpoint) {
39         $this->endpoint = $endpoint;
40         $this->parseRequest();
41         $route = $this->determineRoute();
42         if ($route) {
43             $route->invoke($this->request);
44         } else {
45             JsonResponse::showError(404, 'No route matched your request');
46         }
47     }
48 
49     private function parseRequest() {
50         global $wp;
51         $this->request = str_replace($this->endpoint, '', $wp->request);
52     }
53 
54     private function determineRoute() {
55         foreach ($this->routes as $r) {
56             //serach post requests
57             if (($_SERVER['REQUEST_METHOD'] == $r->getMethod())) {
58                 //then search get requests
59                 if ($r->matchesRequest($this->request)) {
60                     return $r;
61                 }
62             }
63         }
64     }
65 
66 }
67 
API documentation generated by ApiGen