Open Journal Systems  3.3.0
ServiceDescriptionLoader.php
1 <?php
2 
4 
7 
12 {
13  protected function build($config, array $options)
14  {
15  $operations = array();
16  if (!empty($config['operations'])) {
17  foreach ($config['operations'] as $name => $op) {
18  $name = $op['name'] = isset($op['name']) ? $op['name'] : $name;
19  // Extend other operations
20  if (!empty($op['extends'])) {
21  $this->resolveExtension($name, $op, $operations);
22  }
23  $op['parameters'] = isset($op['parameters']) ? $op['parameters'] : array();
24  $operations[$name] = $op;
25  }
26  }
27 
28  return new ServiceDescription(array(
29  'apiVersion' => isset($config['apiVersion']) ? $config['apiVersion'] : null,
30  'baseUrl' => isset($config['baseUrl']) ? $config['baseUrl'] : null,
31  'description' => isset($config['description']) ? $config['description'] : null,
32  'operations' => $operations,
33  'models' => isset($config['models']) ? $config['models'] : null
34  ) + $config);
35  }
36 
43  protected function resolveExtension($name, array &$op, array &$operations)
44  {
45  $resolved = array();
46  $original = empty($op['parameters']) ? false: $op['parameters'];
47  $hasClass = !empty($op['class']);
48  foreach ((array) $op['extends'] as $extendedCommand) {
49  if (empty($operations[$extendedCommand])) {
50  throw new DescriptionBuilderException("{$name} extends missing operation {$extendedCommand}");
51  }
52  $toArray = $operations[$extendedCommand];
53  $resolved = empty($resolved)
54  ? $toArray['parameters']
55  : array_merge($resolved, $toArray['parameters']);
56 
57  $op = $op + $toArray;
58  if (!$hasClass && isset($toArray['class'])) {
59  $op['class'] = $toArray['class'];
60  }
61  }
62  $op['parameters'] = $original ? array_merge($resolved, $original) : $resolved;
63  }
64 }
$op
$op
Definition: lib/pkp/pages/help/index.php:18
Guzzle\Service\AbstractConfigLoader
Definition: AbstractConfigLoader.php:11
Guzzle\Service\Description\ServiceDescriptionLoader\resolveExtension
resolveExtension($name, array &$op, array &$operations)
Definition: ServiceDescriptionLoader.php:43
Guzzle\Service\Description\ServiceDescription
Definition: ServiceDescription.php:11
Guzzle\Service\Description
Definition: Operation.php:3
Guzzle\Service\Description\ServiceDescriptionLoader\build
build($config, array $options)
Definition: ServiceDescriptionLoader.php:13
Guzzle\Service\Exception\DescriptionBuilderException
Definition: DescriptionBuilderException.php:7
Guzzle\Service\Description\ServiceDescriptionLoader
Definition: ServiceDescriptionLoader.php:11