From 09684993bb86590b8cb5215c2ede3cb470fa4e72 Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Thu, 21 Jul 2005 19:03:32 +0000 Subject: [PATCH] Only use IN BOOLEAN MODE on MySQL 4 and above. --- presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc b/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc index 25d5b50..2ed62fb 100644 --- a/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc @@ -36,16 +36,25 @@ function getMessage() { function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCategory) { global $default; + // XXX: Icky MySQL-specific stuff. + $sVersion = DBUtil::getOneResultKey("SHOW VARIABLES LIKE 'version'", "Value"); + if ((int)substr($sVersion, 0, 1) >= 4) { + $boolean_mode = "IN BOOLEAN MODE"; + } else { + $boolean_mode = ""; + } + + /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . - "ROUND(MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) OR 1, 3) AS score " . + "ROUND(MATCH(DT.document_text) AGAINST (? $boolean_mode) OR 1, 3) AS score " . "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . "INNER JOIN $default->document_fields_link_table AS DFL ON DT.document_id=DFL.document_id " . "INNER JOIN $default->document_fields_table AS DF ON DF.id = DFL.document_field_id " . "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . - "WHERE MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) " . + "WHERE MATCH(DT.document_text) AGAINST (? $boolean_mode) " . "AND (F.is_public OR SDUL.user_id = ?) " . "AND SL.name='Live' "; $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); @@ -77,14 +86,23 @@ function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCate function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $iDocTypeID) { global $default; + + // XXX: Icky MySQL-specific stuff. + $sVersion = DBUtil::getOneResultKey("SHOW VARIABLES LIKE 'version'", "Value"); + if ((int)substr($sVersion, 0, 1) >= 4) { + $boolean_mode = "IN BOOLEAN MODE"; + } else { + $boolean_mode = ""; + } + /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . - "ROUND(MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE),3) AS score " . + "ROUND(MATCH(DT.document_text) AGAINST (? $boolean_mode),3) AS score " . "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . - "WHERE MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) " . + "WHERE MATCH(DT.document_text) AGAINST (? $boolean_mode) " . "AND (F.is_public OR SDUL.user_id = ?) "; $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); if (isset($iDocTypeID)) { @@ -116,14 +134,23 @@ function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $i function getSeachResultsByFolder($iFolderID, $iStartIndex, $sKeywords) { global $default; + + // XXX: Icky MySQL-specific stuff. + $sVersion = DBUtil::getOneResultKey("SHOW VARIABLES LIKE 'version'", "Value"); + if ((int)substr($sVersion, 0, 1) >= 4) { + $boolean_mode = "IN BOOLEAN MODE"; + } else { + $boolean_mode = ""; + } + /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . - "ROUND(MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE),3) AS score " . + "ROUND(MATCH(DT.document_text) AGAINST (? $boolean_mode),3) AS score " . "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . - "WHERE MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) " . + "WHERE MATCH(DT.document_text) AGAINST (? $boolean_mode) " . "AND (F.is_public OR SDUL.user_id = ?) " . "AND SL.name='Live' "; $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); -- libgit2 0.21.4