PHP7.2 compatibility

each() and  create_function() are deprecated in PHP7.2 ,

-> I copied the code from the 4 branch - seems to work in my local environment
This commit is contained in:
Hendrik Schaper 2018-09-26 12:26:54 +02:00 committed by Robbie Averill
parent 8e871460a8
commit e86ac130a5

View File

@ -131,12 +131,12 @@ class SearchForm extends Form {
$keywords = $data['Search']; $keywords = $data['Search'];
$andProcessor = create_function('$matches',' $andProcessor = function ($matches) {
return " +" . $matches[2] . " +" . $matches[4] . " "; return ' +' . $matches[2] . ' +' . $matches[4] . ' ';
'); };
$notProcessor = create_function('$matches', ' $notProcessor = function ($matches) {
return " -" . $matches[3]; return ' -' . $matches[3];
'); };
$keywords = preg_replace_callback('/()("[^()"]+")( and )("[^"()]+")()/i', $andProcessor, $keywords); $keywords = preg_replace_callback('/()("[^()"]+")( and )("[^"()]+")()/i', $andProcessor, $keywords);
$keywords = preg_replace_callback('/(^| )([^() ]+)( and )([^ ()]+)( |$)/i', $andProcessor, $keywords); $keywords = preg_replace_callback('/(^| )([^() ]+)( and )([^ ()]+)( |$)/i', $andProcessor, $keywords);
@ -173,23 +173,31 @@ class SearchForm extends Form {
return $results; return $results;
} }
protected function addStarsToKeywords($keywords) { protected function addStarsToKeywords($keywords)
if(!trim($keywords)) return ""; {
// Add * to each keyword if (!trim($keywords)) {
$splitWords = preg_split("/ +/" , trim($keywords)); return "";
while(list($i,$word) = each($splitWords)) { }
if($word[0] == '"') { // Add * to each keyword
while(list($i,$subword) = each($splitWords)) { $splitWords = preg_split("/ +/", trim($keywords));
$word .= ' ' . $subword; $newWords = [];
if(substr($subword,-1) == '"') break; for ($i = 0; $i < count($splitWords); $i++) {
} $word = $splitWords[$i];
} else { if ($word[0] == '"') {
$word .= '*'; while (++$i < count($splitWords)) {
} $subword = $splitWords[$i];
$newWords[] = $word; $word .= ' ' . $subword;
} if (substr($subword, -1) == '"') {
return implode(" ", $newWords); break;
} }
}
} else {
$word .= '*';
}
$newWords[] = $word;
}
return implode(" ", $newWords);
}
/** /**
* Get the search query for display in a "You searched for ..." sentence. * Get the search query for display in a "You searched for ..." sentence.