diff --git a/classes/GlossaryManager.php b/classes/GlossaryManager.php index 787ccb1fec..5a9b5dae06 100644 --- a/classes/GlossaryManager.php +++ b/classes/GlossaryManager.php @@ -53,20 +53,20 @@ public function __destruct(){ parent::__destruct(); } - public function getTermSearch($keyword,$language,$tid,$deepSearch = 1){ + public function getTermSearch($keyword, $language, $tid, $deepSearch = 1){ $retArr = array(); + if(!is_numeric($tid)) $tid = 0; $sqlWhere = ''; if($keyword){ - $sqlWhere .= 'AND (g.term LIKE "'.$this->cleanInStr($keyword).'%" OR g.term LIKE "% '.$this->cleanInStr($keyword).'%" '; - if($deepSearch) $sqlWhere .= 'OR g.definition LIKE "%'.$this->cleanInStr($keyword).'%"'; + $keyword = str_replace(array(' ','-'), array('% %','%-%'), $keyword); + $sqlWhere .= 'AND (g.term LIKE "%'.$this->cleanInStr($keyword).'%"'; + if($deepSearch) $sqlWhere .= ' OR g.definition LIKE "%'.$this->cleanInStr($keyword).'%"'; $sqlWhere .= ') '; } - if($language) $sqlWhere .= 'AND (g.`language` = "'.$this->cleanInStr($language).'") '; - if($tid && is_numeric($tid)) $sqlWhere .= 'AND (t.tid = '.$tid.' OR t2.tid = '.$tid.' OR (t.tid IS NULL AND t2.tid IS NULL)) '; - $sql = 'SELECT DISTINCT g.glossid, g.term '. - 'FROM glossary g LEFT JOIN glossarytermlink tl ON g.glossid = tl.glossid '. - 'LEFT JOIN glossarytaxalink t ON tl.glossgrpid = t.glossid '. - 'LEFT JOIN glossarytaxalink t2 ON g.glossid = t2.glossid '; + if($language) $sqlWhere .= 'AND (g.language = "'.$this->cleanInStr($language).'") '; + if($tid) $sqlWhere .= 'AND (t.tid = '.$tid.' OR t2.tid = '.$tid.') '; + $sql = 'SELECT DISTINCT g.glossid, g.term FROM glossary g INNER JOIN glossarytermlink tl ON g.glossid = tl.glossid '; + if($tid) $sql .= 'INNER JOIN glossarytaxalink t ON tl.glossgrpid = t.glossid INNER JOIN glossarytaxalink t2 ON g.glossid = t2.glossid '; if($sqlWhere) $sql .= 'WHERE '.substr($sqlWhere, 3); $sql .= 'ORDER BY g.term '; //echo '