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:
@@ -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) {
|
||||
|
||||
|
Reference in New Issue
Block a user