From 0049244893d5b602c9c0d1c125d3cd21583b8c26 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Fri, 13 Oct 2017 09:41:57 +0800 Subject: [PATCH] MDL-60357 search: Ensure that the document is valid We were previously testing tha the parent is valid, which it was, and then fetching the current record, before fetching data from it. However, the way in which the recordset walk works, the valid function checks whether the _record_ itself is valid, whilst the current allows for a callback to be applied. In this instance, the data-entry was failing because the count of indexfields was < 2. The recordset data itself was valid, but the view was not, and as a result, the current() function returned false. This false was not previously handled. I've changed the logic so that we handle this case, and have removed a double-negative in the process. --- search/classes/skip_future_documents_iterator.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/search/classes/skip_future_documents_iterator.php b/search/classes/skip_future_documents_iterator.php index 3204c833f37d..c5a0279ae15c 100644 --- a/search/classes/skip_future_documents_iterator.php +++ b/search/classes/skip_future_documents_iterator.php @@ -74,18 +74,18 @@ public function key() { } public function valid() { - // Check parent. + // Check that the parent is valid. if (!$this->parent->valid()) { return false; } - // See if document is after the cut-off time. - $doc = $this->parent->current(); - if ($doc->get('modified') > $this->cutoff) { - return false; + if ($doc = $this->parent->current()) { + // This document is valid if the modification date is before the cutoff. + return $doc->get('modified') <= $this->cutoff; } - return true; + return false; + } public function rewind() {