42 $routes =
$source->getElementsByTagName(
'route');
44 foreach ($routes as $route) {
45 if ($route->nodeType != XML_ELEMENT_NODE) {
49 $service = $route->getElementsByTagName(
'service')->item(0);
50 $serviceClass =
$service->attributes->getNamedItem(
'class')->nodeValue;
51 $serviceMethod =
$service->attributes->getNamedItem(
'method')->nodeValue;
52 $url = trim($route->attributes->getNamedItem(
'url')->nodeValue);
55 $serviceClassData = [];
60 $resources = $route->getElementsByTagName(
'resource');
61 $resourceReferences = [];
62 $resourcePermissionSet = [];
65 if (
$resource->nodeType != XML_ELEMENT_NODE) {
68 $ref =
$resource->attributes->getNamedItem(
'ref')->nodeValue;
69 $resourceReferences[$ref] =
true;
71 $resourcePermissionSet[] = $ref;
74 if (!isset($serviceClassData[self::KEY_METHODS][$serviceMethod])) {
80 $serviceClassData[self::KEY_METHODS][$serviceMethod][self::KEY_ACL_RESOURCES],
81 $resourcePermissionSet
86 $method = $route->attributes->getNamedItem(
'method')->nodeValue;
87 $secureNode = $route->attributes->getNamedItem(
'secure');
88 $secure = $secureNode ? (bool)trim($secureNode->nodeValue) :
false;
89 $data = $this->convertMethodParameters($route->getElementsByTagName(
'parameter'));
93 self::KEY_SECURE => $secure,
94 self::KEY_SERVICE => [
95 self::KEY_SERVICE_CLASS => $serviceClass,
96 self::KEY_SERVICE_METHOD => $serviceMethod,
98 self::KEY_ACL_RESOURCES => $resourceReferences,
99 self::KEY_DATA_PARAMETERS =>
$data,
102 $serviceSecure =
false;
103 if (isset($serviceClassData[self::KEY_METHODS][$serviceMethod][self::KEY_SECURE])) {
120 protected function convertMethodParameters($parameters)
124 foreach ($parameters as $parameter) {
125 if ($parameter->nodeType != XML_ELEMENT_NODE) {
128 $name = $parameter->attributes->getNamedItem(
'name')->nodeValue;
129 $forceNode = $parameter->attributes->getNamedItem(
'force');
130 $force = $forceNode ? (bool)$forceNode->nodeValue :
false;
131 $value = $parameter->nodeValue;
133 self::KEY_FORCE => $force,
136 $sourceNode = $parameter->attributes->getNamedItem(
'source');
140 $methodNode = $parameter->attributes->getNamedItem(
'method');
157 return substr(
$url, 1, strpos(
$url,
'/', 1)-1);
const KEY_DATA_PARAMETERS
if(!isset($_GET['name'])) $name