/** * buildResourceOperationCollection * * @param string $resourceKey * * @return OperationCollection * @throws ResourceException */ protected function buildResourceOperationCollection($resourceKey) { if (array_key_exists($resourceKey, $this->operations)) { return $this->operations[$resourceKey]; } $resourceConfig = $this->getResourceConfig(); $resourceKeys = explode('::', $resourceKey); $resourceName = $resourceKeys[0]; $methodName = $resourceKeys[1]; $controllerMethod = $resourceKeys[2]; if (!array_key_exists($resourceName, $resourceConfig)) { throw new ResourceException('Resource config missing for ' . $resourceName); } /** @var Options $resourceOptions */ $resourceOptions = $resourceConfig[$resourceName]; $methods = $resourceOptions->get('methods', []); if (!array_key_exists($methodName, $methods)) { throw new ResourceException('Resource method config missing for ' . $methodName); } $operations = new BasicOperationCollection(); $methodOptions = new BasicOptions($methods[$methodName]); // Controller Pre $this->buildOperations($operations, $resourceOptions->get('preServiceNames', []), $resourceOptions->getOptions('preServiceOptions'), $resourceOptions->getOptions('preServicePriority')); // Method Pre $this->buildOperations($operations, $methodOptions->get('preServiceNames', []), $methodOptions->getOptions('preServiceOptions'), $methodOptions->getOptions('preServicePriority')); // ControllerMethod $controllerOptions = $resourceOptions->getOptions('controllerServiceOptions'); $controllerOptions->set('method', $controllerMethod); $operations->addOperation($this->buildOperation($resourceOptions->get('controllerServiceName'), $this->serviceManager->get($resourceOptions->get('controllerServiceName')), $controllerOptions, 1000)); // Method Post $this->buildOperations($operations, $methodOptions->get('postServiceNames', []), $methodOptions->getOptions('postServiceOptions'), $methodOptions->getOptions('postServicePriority')); // Controller Post $this->buildOperations($operations, $resourceOptions->get('postServiceNames', []), $resourceOptions->getOptions('postServiceOptions'), $resourceOptions->getOptions('postServicePriority')); $this->operations[$resourceKey] = $operations; return $this->operations[$resourceKey]; }
/** * buildSimpleMethods * * @param $resourceName * @param $resourcePath * @param array $methodsAllowed * @param array $methods * * @return void */ protected function buildSimpleMethods($resourceName, $resourcePath, array $methodsAllowed, array $methods) { $methods = array_reverse($methods, true); foreach ($methods as $methodName => $methodProperties) { if (!in_array($methodName, $methodsAllowed)) { continue; } $methodOptions = new BasicOptions($methodProperties); $fullPath = $resourcePath . $methodOptions->get('path', '/' . $methodName); $controllerMethod = $methodOptions->get('controllerMethod', $methodName); $resourceKey = $this->getResourceKey($resourceName, $methodName, $controllerMethod); $this->addPath($fullPath, $methodOptions->get('httpVerb', 'GET'), $resourceKey); } }
/** * buildMarkup * * @param $properties * @param $templateConfig * @param $containerTag * @param $containerAttributes * * @return void */ protected function buildMarkup($properties, $templateConfig, $containerTag, $containerAttributes) { $templateConfigOptions = new BasicOptions($templateConfig); $markup = ''; foreach ($properties as $property => $content) { if (!$templateConfigOptions->has($property)) { continue; } $templateOptions = $templateConfigOptions->getOptions($property); $subTemplateConfig = $templateOptions->get('properties', []); if (!empty($subProperties)) { $markup = $markup . $this->buildMarkup($subProperties, $subTemplateConfig->get($property)); } $markup = $this->buildTag($content, $templateOptions->get, $attr = []); } return $this->buildTag($markup, $containerTag, $containerAttributes); }