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.
This commit is contained in:
Andrew Nicols 2017-10-13 09:41:57 +08:00
parent 131e60741a
commit 0049244893

View File

@ -74,18 +74,18 @@ class skip_future_documents_iterator implements \Iterator {
}
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() {