We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.
| 1 | <?php |
||
| 21 | class FieldsConfigSolution extends AbstractConfigSolution |
||
| 22 | { |
||
| 23 | /** |
||
| 24 | * @var TypeConfigSolution |
||
| 25 | */ |
||
| 26 | private $typeConfigSolution; |
||
| 27 | |||
| 28 | /** |
||
| 29 | * @var ResolveCallbackConfigSolution |
||
| 30 | */ |
||
| 31 | private $resolveCallbackConfigSolution; |
||
| 32 | |||
| 33 | 32 | public function __construct( |
|
| 40 | |||
| 41 | 27 | public function solve($values, array &$config = null) |
|
| 64 | |||
| 65 | private function solveComplexity($options, $field) |
||
|
|
|||
| 66 | { |
||
| 67 | $treatedOptions = $options; |
||
| 68 | |||
| 69 | $value = $treatedOptions['complexity']; |
||
| 70 | |||
| 71 | $treatedOptions['complexity'] = function () use ($value) { |
||
| 72 | $args = func_get_args(); |
||
| 73 | $complexity = $this->solveUsingExpressionLanguageIfNeeded( |
||
| 74 | $value, |
||
| 75 | [ |
||
| 76 | 'childrenComplexity' => $args[0], |
||
| 77 | 'args' => new Argument($args[1]), |
||
| 78 | ] |
||
| 79 | ); |
||
| 80 | |||
| 81 | return (int) $complexity; |
||
| 82 | }; |
||
| 83 | |||
| 84 | return $treatedOptions; |
||
| 85 | } |
||
| 86 | |||
| 87 | 19 | private function solveBuilder($options, $field) |
|
| 88 | { |
||
| 89 | 19 | $builderConfig = isset($options['builderConfig']) ? $options['builderConfig'] : []; |
|
| 90 | |||
| 91 | 19 | $access = isset($options['access']) ? $options['access'] : null; |
|
| 92 | 19 | $options = $this->builderToMappingDefinition($options['builder'], $builderConfig, $this->fieldResolver, $field); |
|
| 93 | 19 | $options['access'] = $access; |
|
| 94 | 19 | $options = $this->resolveResolveAndAccessIfNeeded($options); |
|
| 95 | |||
| 96 | 19 | unset($options['builderConfig'], $options['builder']); |
|
| 97 | |||
| 98 | 19 | return $options; |
|
| 99 | } |
||
| 100 | |||
| 101 | 27 | private function solveType($options) |
|
| 107 | |||
| 108 | private function solveArgs($options) |
||
| 119 | |||
| 120 | 8 | private function solveArgsBuilder($options) |
|
| 133 | |||
| 134 | private function solveDeprecationReason($options) |
||
| 140 | |||
| 141 | 27 | private function builderToMappingDefinition($rawBuilder, array $rawBuilderConfig, ResolverInterface $builderResolver, $name = null) |
|
| 157 | |||
| 158 | 27 | private function resolveResolveAndAccessIfNeeded(array $options) |
|
| 159 | { |
||
| 160 | 27 | $treatedOptions = $options; |
|
| 161 | |||
| 162 | 27 | if (isset($treatedOptions['resolve'])) { |
|
| 163 | 27 | $treatedOptions['resolve'] = $this->resolveCallbackConfigSolution->solve($treatedOptions['resolve']); |
|
| 164 | 27 | } |
|
| 165 | |||
| 166 | 27 | if (isset($treatedOptions['access'])) { |
|
| 167 | $resolveCallback = $this->configResolver->getDefaultResolveFn(); |
||
| 168 | |||
| 169 | if (isset($treatedOptions['resolve'])) { |
||
| 170 | $resolveCallback = $treatedOptions['resolve']; |
||
| 171 | } |
||
| 172 | |||
| 173 | $treatedOptions['resolve'] = $this->resolveAccessAndWrapResolveCallback($treatedOptions['access'], $resolveCallback); |
||
| 174 | } |
||
| 175 | 27 | unset($treatedOptions['access']); |
|
| 176 | |||
| 177 | 27 | return $treatedOptions; |
|
| 178 | } |
||
| 179 | |||
| 180 | 5 | private function resolveAccessAndWrapResolveCallback($expression, callable $resolveCallback = null) |
|
| 192 | |||
| 193 | 5 | private function filterResultUsingAccess($result, $expression, $values) |
|
| 194 | { |
||
| 195 | 5 | $checkAccess = $this->checkAccessCallback($expression, $values); |
|
| 196 | |||
| 197 | 5 | switch (true) { |
|
| 198 | 5 | case is_array($result): |
|
| 199 | 1 | $result = array_map( |
|
| 200 | function ($object) use ($checkAccess) { |
||
| 201 | 1 | return $checkAccess($object) ? $object : null; |
|
| 202 | 1 | }, |
|
| 203 | $result |
||
| 204 | 1 | ); |
|
| 205 | 1 | break; |
|
| 206 | |||
| 207 | 4 | case $result instanceof Connection: |
|
| 208 | 1 | $result->edges = array_map( |
|
| 209 | function (Edge $edge) use ($checkAccess) { |
||
| 210 | 1 | $edge->node = $checkAccess($edge->node) ? $edge->node : null; |
|
| 211 | |||
| 212 | 1 | return $edge; |
|
| 213 | 1 | }, |
|
| 214 | 1 | $result->edges |
|
| 215 | 1 | ); |
|
| 216 | 1 | break; |
|
| 217 | |||
| 218 | 3 | default: |
|
| 219 | 3 | $checkAccess($result, true); |
|
| 220 | 1 | break; |
|
| 221 | 3 | } |
|
| 222 | |||
| 223 | 3 | return $result; |
|
| 224 | } |
||
| 225 | |||
| 226 | private function checkAccessCallback($expression, $values) |
||
| 245 | } |
||
| 246 |
This check looks from parameters that have been defined for a function or method, but which are not used in the method body.