Skip to content

Commit 7095523

Browse files
T3RAN13T3RAN13
authored andcommitted
CommandQueryData fixes
1 parent ac0afb4 commit 7095523

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

Commands/CommandQueryData.php

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public function prepareData($map)
4747
{
4848
$queryData = [];
4949
foreach ($map as $route => $rules) {
50-
$this->prepareQueryDataForRoute($queryData, $route, $rules);
50+
$queryData = $this->prepareQueryDataForRoute($queryData, $route, $rules);
5151
}
5252

5353
return $queryData;
@@ -58,9 +58,12 @@ public function prepareData($map)
5858
* @param array $data
5959
* @param string $route
6060
* @param array $rules
61+
*
62+
* @return mixed
63+
*
6164
* @throws CommandQueryDataException
6265
*/
63-
protected function prepareQueryDataForRoute(&$data, $route, $rules = [])
66+
protected function prepareQueryDataForRoute($data, $route, $rules = [])
6467
{
6568
$errors = [];
6669
$routeParts = explode(':', $route);
@@ -73,13 +76,15 @@ protected function prepareQueryDataForRoute(&$data, $route, $rules = [])
7376
}
7477
}
7578
if ($value !== null) {
76-
$this->setArrayElementByKey($data, $route, $value);
79+
$data = $this->setArrayElementByKey($data, $route, $value);
7780
}
7881
}
7982

8083
if (!empty($errors)) {
8184
throw new CommandQueryDataException(implode(PHP_EOL, $errors));
8285
}
86+
87+
return $data;
8388
}
8489

8590

@@ -117,7 +122,7 @@ protected function getParamsListByKey($params, $routeParts = [])
117122
{
118123
$values = [];
119124
if (empty($routeParts)) {
120-
$values[] = $params;
125+
$values = $params;
121126
} else {
122127
$currentKeyPart = array_shift($routeParts);
123128
if (
@@ -127,13 +132,23 @@ protected function getParamsListByKey($params, $routeParts = [])
127132
$currentKeyPart = (integer)$currentKeyPart;
128133
}
129134
if (isset($params[$currentKeyPart])) {
130-
foreach ($this->getParamsListByKey($params[$currentKeyPart], $routeParts) as $valueKey => $value) {
131-
$values[$currentKeyPart . ':' . $valueKey] = $value;
135+
$tmp = $this->getParamsListByKey($params[$currentKeyPart], $routeParts);
136+
if (is_array($tmp)) {
137+
foreach ($tmp as $valueKey => $value) {
138+
$values[$currentKeyPart . ':' . $valueKey] = $value;
139+
}
140+
} else {
141+
$values[$currentKeyPart] = $tmp;
132142
}
133143
} elseif (is_array($params) && $currentKeyPart === '*') {
134144
foreach ($params as $paramKey => $param) {
135-
foreach ($this->getParamsListByKey($param, $routeParts) as $valueKey => $value) {
136-
$values[$paramKey . ':' . $valueKey] = $value;
145+
$tmp = $this->getParamsListByKey($param, $routeParts);
146+
if (is_array($tmp)) {
147+
foreach ($this->getParamsListByKey($param, $routeParts) as $valueKey => $value) {
148+
$values[$paramKey . ':' . $valueKey] = $value;
149+
}
150+
} else {
151+
$values[$paramKey] = $tmp;
137152
}
138153
}
139154
} else {
@@ -156,9 +171,9 @@ protected function getParamsListByKey($params, $routeParts = [])
156171
*
157172
* @return array
158173
*/
159-
protected function setArrayElementByKey(&$array, $setKey, $setVal)
174+
protected function setArrayElementByKey($array, $setKey, $setVal)
160175
{
161-
$link = $array;
176+
$link = &$array;
162177
$keyParts = explode(':', $setKey);
163178
foreach ($keyParts as $key) {
164179
if (

0 commit comments

Comments
 (0)