From 70a9f616a340c5257d1822b35769494d89f204e4 Mon Sep 17 00:00:00 2001 From: Jure Kajzer Date: Fri, 8 Jan 2010 07:52:51 +0000 Subject: [PATCH] Escaped Oracle Text reserved words --- includes/search/SearchOracle.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/includes/search/SearchOracle.php b/includes/search/SearchOracle.php index 12f6f3049a..a7b6dbfb46 100644 --- a/includes/search/SearchOracle.php +++ b/includes/search/SearchOracle.php @@ -27,6 +27,34 @@ * @ingroup Search */ class SearchOracle extends SearchEngine { + + private $reservedWords = array ('ABOUT' => 1, + 'ACCUM' => 1, + 'AND' => 1, + 'BT' => 1, + 'BTG' => 1, + 'BTI' => 1, + 'BTP' => 1, + 'FUZZY' => 1, + 'HASPATH' => 1, + 'INPATH' => 1, + 'MINUS' => 1, + 'NEAR' => 1, + 'NOT' => 1, + 'NT' => 1, + 'NTG' => 1, + 'NTI' => 1, + 'NTP' => 1, + 'OR' => 1, + 'PT' => 1, + 'RT' => 1, + 'SQE' => 1, + 'SYN' => 1, + 'TR' => 1, + 'TRSYN' => 1, + 'TT' => 1, + 'WITHIN' => 1); + function __construct($db) { $this->db = $db; } @@ -191,6 +219,7 @@ class SearchOracle extends SearchEngine { private function escapeTerm($t) { global $wgContLang; $t = $wgContLang->stripForSearch($t); + $t = isset($this->reservedWords[strtoupper($t)]) ? '{'.$t.'}' : $t; $t = preg_replace('/^"(.*)"$/', '($1)', $t); $t = preg_replace('/([-&|])/', '\\\\$1', $t); return $t; -- 2.20.1