private function prepareDecodedQueryForUse(&$decoded, &$metaParameters, &$ctypeParameters)
{
// If there is only 1 contenttype we assume the where is NOT nested
if (count($decoded['contenttypes']) == 1) {
// So we need to add this nesting
$ctypeParameters = [$decoded['contenttypes'][0] => $ctypeParameters];
} else {
// We need to set every non-contenttypeslug parameters to each individual contenttypes
$globalParameters = [];
foreach ($ctypeParameters as $key => $parameter) {
if (!in_array($key, $decoded['contenttypes'])) {
$globalParameters[$key] = $parameter;
}
}
foreach ($globalParameters as $key => $parameter) {
unset($ctypeParameters[$key]);
foreach ($decoded['contenttypes'] as $contenttype) {
if (!isset($ctypeParameters[$contenttype])) {
$ctypeParameters[$contenttype] = [];
}
if (!isset($ctypeParameters[$contenttype][$key])) {
$ctypeParameters[$contenttype][$key] = $parameter;
}
}
}
// In this case query pagination never makes sense!
$decoded['self_paginated'] = false;
}
if ($decoded['order_callback'] !== false || $decoded['return_single'] === true) {
// Callback sorting disables pagination
$decoded['self_paginated'] = false;
}
if (!isset($metaParameters['order']) || $metaParameters['order'] === false) {
if (count($decoded['contenttypes']) == 1) {
if ($this->getContentTypeGrouping($decoded['contenttypes'][0])) {
$decoded['order_callback'] = [$this, 'groupingSort'];
}
}
}
if ($decoded['return_single']) {
$metaParameters['limit'] = 1;
} elseif (!isset($metaParameters['limit'])) {
$metaParameters['limit'] = 9999;
}
}