1 | <?php |
||
61 | class Server extends \Apparat\Server\Domain\Model\Server |
||
62 | { |
||
63 | /** |
||
64 | * View resources |
||
65 | * |
||
66 | * @var array |
||
67 | */ |
||
68 | protected $viewResources = []; |
||
69 | |||
70 | /** |
||
71 | * Enable the object route for a particular repository |
||
72 | * |
||
73 | * @param string $repositoryPath Repository path |
||
74 | * @param int $enable Enable / disable default actions |
||
75 | */ |
||
76 | 1 | public function enableObjectRoute($repositoryPath = '', $enable = ObjectRoute::ALL) |
|
77 | { |
||
78 | 1 | $routeName = ObjectRoute::OBJECT_STR; |
|
79 | 1 | $datePrecision = intval(getenv('OBJECT_DATE_PRECISION')); |
|
80 | 1 | $selectorRegex = SelectorFactory::getSelectorRegex($datePrecision); |
|
81 | 1 | $objectRouteActions = array_filter( |
|
82 | 1 | array_merge( |
|
83 | 1 | self::getEnabledObjectActionClasses($enable), |
|
84 | 1 | self::getEnabledDateActionClasses($enable, $datePrecision) |
|
85 | 1 | ) |
|
86 | 1 | ); |
|
87 | |||
88 | // Add a repository sub-pattern |
||
89 | 1 | if (strlen($repositoryPath)) { |
|
90 | 1 | $selectorRegex = '(?:/(?P<repository>.+?))'.$selectorRegex; |
|
91 | 1 | $routeName .= '.'.$repositoryPath; |
|
92 | 1 | } |
|
93 | |||
94 | 1 | $route = new Route(Route::GET, $routeName, $selectorRegex, $objectRouteActions); |
|
95 | 1 | $route->setAccepts(ObjectRoute::$accept); |
|
96 | 1 | $route->setObject(true); |
|
97 | 1 | $this->registerRoute($route); |
|
98 | 1 | } |
|
99 | |||
100 | /** |
||
101 | * Return the enabled object action classes |
||
102 | * |
||
103 | * @param int $enable Enable / disable default actions |
||
104 | * @return array Enabled object action classes |
||
105 | */ |
||
106 | 1 | protected function getEnabledObjectActionClasses($enable) |
|
107 | { |
||
108 | return [ |
||
109 | 1 | ObjectRoute::OBJECT_STR => (ObjectRoute::OBJECT & $enable) ? ObjectAction::class : null, |
|
110 | 1 | ObjectRoute::TYPE_STR => (ObjectRoute::TYPE & $enable) ? TypeAction::class : null, |
|
111 | 1 | ObjectRoute::OBJECTS_STR => (ObjectRoute::OBJECTS & $enable) ? ObjectsAction::class : null, |
|
112 | 1 | ]; |
|
113 | } |
||
114 | |||
115 | /** |
||
116 | * Return the enabled date action classes |
||
117 | * |
||
118 | * @param int $enable Enable / disable default actions |
||
119 | * @param int $datePrecision Date precision |
||
120 | * @return array Enabled date action classes |
||
121 | */ |
||
122 | 1 | protected function getEnabledDateActionClasses($enable, $datePrecision) |
|
123 | { |
||
124 | 1 | return array_slice( |
|
125 | [ |
||
126 | 1 | ObjectRoute::SECOND_STR => (ObjectRoute::SECOND & $enable) ? SecondAction::class : null, |
|
127 | 1 | ObjectRoute::MINUTE_STR => (ObjectRoute::MINUTE & $enable) ? MinuteAction::class : null, |
|
128 | 1 | ObjectRoute::HOUR_STR => (ObjectRoute::HOUR & $enable) ? HourAction::class : null, |
|
129 | 1 | ObjectRoute::DAY_STR => (ObjectRoute::DAY & $enable) ? DayAction::class : null, |
|
130 | 1 | ObjectRoute::MONTH_STR => (ObjectRoute::MONTH & $enable) ? MonthAction::class : null, |
|
131 | 1 | ObjectRoute::YEAR_STR => (ObjectRoute::YEAR & $enable) ? YearAction::class : null, |
|
132 | 1 | ], |
|
133 | 6 - $datePrecision |
||
134 | 1 | ); |
|
135 | } |
||
136 | |||
137 | /** |
||
138 | * Prepare and return a route action |
||
139 | * |
||
140 | * @param ServerRequestInterface $request Request |
||
141 | * @param AbstractActionRoute $route Route |
||
142 | * @return ActionInterface|Callable $action Action |
||
143 | */ |
||
144 | 80 | public function getRouteAction(ServerRequestInterface $request, AbstractActionRoute $route) |
|
148 | |||
149 | /** |
||
150 | * Return view resources |
||
151 | * |
||
152 | * @param string|null $name Optional: view resource name |
||
153 | * @return array View resources |
||
154 | */ |
||
155 | 78 | public function getViewResources($name = null) |
|
161 | |||
162 | /** |
||
163 | * Set the view resources |
||
164 | * |
||
165 | * @param array $viewResources View resources |
||
166 | */ |
||
167 | 2 | public function setViewResources(array $viewResources) |
|
171 | } |
||
172 |