From add8d846d938d944b1d0cecdcfd25d9f4ee177af Mon Sep 17 00:00:00 2001 From: David Monllao Date: Mon, 26 Mar 2018 09:38:37 +0200 Subject: [PATCH] MDL-53226 search_simpledb: Remove unnecessary object clone --- search/engine/simpledb/classes/engine.php | 47 +++++++++++------------ 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/search/engine/simpledb/classes/engine.php b/search/engine/simpledb/classes/engine.php index f77084b07b9..3d229f9f5c8 100644 --- a/search/engine/simpledb/classes/engine.php +++ b/search/engine/simpledb/classes/engine.php @@ -54,9 +54,6 @@ class engine extends \core_search\engine { public function execute_query($filters, $usercontexts, $limit = 0) { global $DB, $USER; - // Let's keep these changes internal. - $data = clone $filters; - $serverstatus = $this->is_server_ready(); if ($serverstatus !== true) { throw new \core_search\engine_exception('engineserverstatus', 'search'); @@ -82,7 +79,7 @@ class engine extends \core_search\engine { // Join all area contexts into a single array and implode. $allcontexts = array(); foreach ($usercontexts as $areaid => $areacontexts) { - if (!empty($data->areaids) && !in_array($areaid, $data->areaids)) { + if (!empty($filters->areaids) && !in_array($areaid, $filters->areaids)) { // Skip unused areas. continue; } @@ -102,35 +99,35 @@ class engine extends \core_search\engine { } // Course id filter. - if (!empty($data->courseids)) { - list($conditionsql, $conditionparams) = $DB->get_in_or_equal($data->courseids); + if (!empty($filters->courseids)) { + list($conditionsql, $conditionparams) = $DB->get_in_or_equal($filters->courseids); $ands[] = 'courseid ' . $conditionsql; $params = array_merge($params, $conditionparams); } // Area id filter. - if (!empty($data->areaids)) { - list($conditionsql, $conditionparams) = $DB->get_in_or_equal($data->areaids); + if (!empty($filters->areaids)) { + list($conditionsql, $conditionparams) = $DB->get_in_or_equal($filters->areaids); $ands[] = 'areaid ' . $conditionsql; $params = array_merge($params, $conditionparams); } - if (!empty($data->title)) { + if (!empty($filters->title)) { $ands[] = $DB->sql_like('title', '?', false, false); - $params[] = $data->title; + $params[] = $filters->title; } - if (!empty($data->timestart)) { + if (!empty($filters->timestart)) { $ands[] = 'modified >= ?'; - $params[] = $data->timestart; + $params[] = $filters->timestart; } - if (!empty($data->timeend)) { + if (!empty($filters->timeend)) { $ands[] = 'modified <= ?'; - $params[] = $data->timeend; + $params[] = $filters->timeend; } // And finally the main query after applying all AND filters. - if (!empty($data->q)) { + if (!empty($filters->q)) { switch ($DB->get_dbfamily()) { case 'postgres': $ands[] = "(" . @@ -139,24 +136,24 @@ class engine extends \core_search\engine { "to_tsvector('simple', description1) @@ plainto_tsquery('simple', ?) OR ". "to_tsvector('simple', description2) @@ plainto_tsquery('simple', ?)". ")"; - $params[] = $data->q; - $params[] = $data->q; - $params[] = $data->q; - $params[] = $data->q; + $params[] = $filters->q; + $params[] = $filters->q; + $params[] = $filters->q; + $params[] = $filters->q; break; case 'mysql': if ($DB->is_fulltext_search_supported()) { $ands[] = "MATCH (title, content, description1, description2) AGAINST (?)"; - $params[] = $data->q; + $params[] = $filters->q; // Sorry for the hack, but it does not seem that we will have a solution for // this soon (https://bugs.mysql.com/bug.php?id=78485). - if ($data->q === '*') { + if ($filters->q === '*') { return array(); } } else { // Clumsy version for mysql versions with no fulltext support. - list($queryand, $queryparams) = $this->get_simple_query($data->q); + list($queryand, $queryparams) = $this->get_simple_query($filters->q); $ands[] = $queryand; $params = array_merge($params, $queryparams); } @@ -167,16 +164,16 @@ class engine extends \core_search\engine { // Special treatment for double quotes: // - Puntuation is ignored so we can get rid of them. // - Phrases should be enclosed in double quotation marks. - $params[] = '"' . str_replace('"', '', $data->q) . '"'; + $params[] = '"' . str_replace('"', '', $filters->q) . '"'; } else { // Clumsy version for mysql versions with no fulltext support. - list($queryand, $queryparams) = $this->get_simple_query($data->q); + list($queryand, $queryparams) = $this->get_simple_query($filters->q); $ands[] = $queryand; $params = array_merge($params, $queryparams); } break; default: - list($queryand, $queryparams) = $this->get_simple_query($data->q); + list($queryand, $queryparams) = $this->get_simple_query($filters->q); $ands[] = $queryand; $params = array_merge($params, $queryparams); break;