1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-09 08:17:12 +02:00

Add database selector PageFinder support for id.sort=3|2|1 which is the same as id=3|2|1 except that it also forces it to load the pages in the order given, unless overridden by a different sort= in the selector. This is related to the request in processwire/processwire-issues#1477

This commit is contained in:
Ryan Cramer
2021-11-30 13:57:05 -05:00
parent bf3c442f38
commit 46215bdfc2

View File

@@ -2747,6 +2747,9 @@ class PageFinder extends Wire {
$field = $subfield;
}
}
} else if($field === 'id' && count($values) > 1 && $selector->operator === '=' && !$selector->not) {
$IDs = $values;
} else {
// primary field is not 'parent', 'children' or 'pages'
}
@@ -2756,7 +2759,10 @@ class PageFinder extends Wire {
$in = $selector->not ? "NOT IN" : "IN";
$sql .= in_array($field, array('parent', 'parent_id')) ? "$table.parent_id " : "$table.id ";
$IDs = $sanitizer->intArray($IDs);
$sql .= "$in(" . implode(',', $IDs) . ")";
$strIDs = implode(',', $IDs);
$sql .= "$in($strIDs)";
if($subfield === 'sort') $query->orderby("FIELD($table.id, $strIDs)");
unset($strIDs);
} else foreach($values as $value) {