mirror of
https://github.com/processwire/processwire.git
synced 2025-08-10 08:44:46 +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;
|
$field = $subfield;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if($field === 'id' && count($values) > 1 && $selector->operator === '=' && !$selector->not) {
|
||||||
|
$IDs = $values;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// primary field is not 'parent', 'children' or 'pages'
|
// primary field is not 'parent', 'children' or 'pages'
|
||||||
}
|
}
|
||||||
@@ -2756,7 +2759,10 @@ class PageFinder extends Wire {
|
|||||||
$in = $selector->not ? "NOT IN" : "IN";
|
$in = $selector->not ? "NOT IN" : "IN";
|
||||||
$sql .= in_array($field, array('parent', 'parent_id')) ? "$table.parent_id " : "$table.id ";
|
$sql .= in_array($field, array('parent', 'parent_id')) ? "$table.parent_id " : "$table.id ";
|
||||||
$IDs = $sanitizer->intArray($IDs);
|
$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) {
|
} else foreach($values as $value) {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user