1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-09 16:26:59 +02:00
This commit is contained in:
Ryan Cramer
2021-08-17 10:55:53 -04:00
parent 695a39b281
commit 5ac7c127eb
2 changed files with 19 additions and 3 deletions

View File

@@ -1728,6 +1728,7 @@ class PageFinder extends Wire {
$joinType = 'join';
if(count($fields) > 1
|| !empty($options['startAfterID']) || !empty($options['stopBeforeID'])
|| (count($valueArray) > 1 && $numEmptyValues > 0)
|| ($subfield == 'count' && !$this->isRepeaterFieldtype($field->type))
|| ($selector->not && $selector->operator != '!=')
@@ -1796,6 +1797,17 @@ class PageFinder extends Wire {
$this->getQuerySortSelector($query, $s);
}
}
if((!empty($options['startAfterID']) || !empty($options['stopBeforeID'])) && count($query->where)) {
$wheres = array('(' . implode(' AND ', $query->where) . ')');
$query->set('where', array());
foreach(array('startAfterID', 'stopBeforeID') as $key) {
if(empty($options[$key])) continue;
$bindKey = $query->bindValueGetKey($options[$key], \PDO::PARAM_INT);
array_unshift($wheres, "pages.id=$bindKey");
}
$query->where(implode("\n OR ", $wheres));
}
$this->postProcessQuery($query);
$this->finalSelectors = $selectors;

View File

@@ -327,8 +327,11 @@ class PageTraversal {
}
if(!$options['until']) return $fo;
// all code below this specific to the 'until' option
/***************************************************************
* All code below this specific to the 'until' option
*
*/
$until = $options['until'];
/** @var string $until */
@@ -352,7 +355,8 @@ class PageTraversal {
} else {
// selector string
$stopPage = $page->_pages('find', "$selector, limit=1, $until")->first();
$findOptions = $options['prev'] ? array() : array('startAfterID' => $page->id);
$stopPage = $page->_pages('find', "$selector, limit=1, $until", $findOptions)->first();
}
if($stopPage && $stopPage->id) {