Commit c24905056b9fa96f028a9f5a42da0cb7cd3f3ea4
1 parent
b5e4fe2c
Only use IN BOOLEAN MODE on MySQL 4 and above.
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3430 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
33 additions
and
6 deletions
presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc
| @@ -36,16 +36,25 @@ function getMessage() { | @@ -36,16 +36,25 @@ function getMessage() { | ||
| 36 | function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCategory) { | 36 | function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCategory) { |
| 37 | global $default; | 37 | global $default; |
| 38 | 38 | ||
| 39 | + // XXX: Icky MySQL-specific stuff. | ||
| 40 | + $sVersion = DBUtil::getOneResultKey("SHOW VARIABLES LIKE 'version'", "Value"); | ||
| 41 | + if ((int)substr($sVersion, 0, 1) >= 4) { | ||
| 42 | + $boolean_mode = "IN BOOLEAN MODE"; | ||
| 43 | + } else { | ||
| 44 | + $boolean_mode = ""; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + | ||
| 39 | /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . | 48 | /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . |
| 40 | "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . | 49 | "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . |
| 41 | - "ROUND(MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) OR 1, 3) AS score " . | 50 | + "ROUND(MATCH(DT.document_text) AGAINST (? $boolean_mode) OR 1, 3) AS score " . |
| 42 | "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . | 51 | "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . |
| 43 | "INNER JOIN $default->document_fields_link_table AS DFL ON DT.document_id=DFL.document_id " . | 52 | "INNER JOIN $default->document_fields_link_table AS DFL ON DT.document_id=DFL.document_id " . |
| 44 | "INNER JOIN $default->document_fields_table AS DF ON DF.id = DFL.document_field_id " . | 53 | "INNER JOIN $default->document_fields_table AS DF ON DF.id = DFL.document_field_id " . |
| 45 | "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . | 54 | "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . |
| 46 | "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . | 55 | "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . |
| 47 | "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . | 56 | "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . |
| 48 | - "WHERE MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) " . | 57 | + "WHERE MATCH(DT.document_text) AGAINST (? $boolean_mode) " . |
| 49 | "AND (F.is_public OR SDUL.user_id = ?) " . | 58 | "AND (F.is_public OR SDUL.user_id = ?) " . |
| 50 | "AND SL.name='Live' "; | 59 | "AND SL.name='Live' "; |
| 51 | $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); | 60 | $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); |
| @@ -77,14 +86,23 @@ function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCate | @@ -77,14 +86,23 @@ function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCate | ||
| 77 | 86 | ||
| 78 | function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $iDocTypeID) { | 87 | function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $iDocTypeID) { |
| 79 | global $default; | 88 | global $default; |
| 89 | + | ||
| 90 | + // XXX: Icky MySQL-specific stuff. | ||
| 91 | + $sVersion = DBUtil::getOneResultKey("SHOW VARIABLES LIKE 'version'", "Value"); | ||
| 92 | + if ((int)substr($sVersion, 0, 1) >= 4) { | ||
| 93 | + $boolean_mode = "IN BOOLEAN MODE"; | ||
| 94 | + } else { | ||
| 95 | + $boolean_mode = ""; | ||
| 96 | + } | ||
| 97 | + | ||
| 80 | /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . | 98 | /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . |
| 81 | "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . | 99 | "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . |
| 82 | - "ROUND(MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE),3) AS score " . | 100 | + "ROUND(MATCH(DT.document_text) AGAINST (? $boolean_mode),3) AS score " . |
| 83 | "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . | 101 | "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . |
| 84 | "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . | 102 | "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . |
| 85 | "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . | 103 | "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . |
| 86 | "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . | 104 | "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . |
| 87 | - "WHERE MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) " . | 105 | + "WHERE MATCH(DT.document_text) AGAINST (? $boolean_mode) " . |
| 88 | "AND (F.is_public OR SDUL.user_id = ?) "; | 106 | "AND (F.is_public OR SDUL.user_id = ?) "; |
| 89 | $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); | 107 | $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); |
| 90 | if (isset($iDocTypeID)) { | 108 | if (isset($iDocTypeID)) { |
| @@ -116,14 +134,23 @@ function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $i | @@ -116,14 +134,23 @@ function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $i | ||
| 116 | 134 | ||
| 117 | function getSeachResultsByFolder($iFolderID, $iStartIndex, $sKeywords) { | 135 | function getSeachResultsByFolder($iFolderID, $iStartIndex, $sKeywords) { |
| 118 | global $default; | 136 | global $default; |
| 137 | + | ||
| 138 | + // XXX: Icky MySQL-specific stuff. | ||
| 139 | + $sVersion = DBUtil::getOneResultKey("SHOW VARIABLES LIKE 'version'", "Value"); | ||
| 140 | + if ((int)substr($sVersion, 0, 1) >= 4) { | ||
| 141 | + $boolean_mode = "IN BOOLEAN MODE"; | ||
| 142 | + } else { | ||
| 143 | + $boolean_mode = ""; | ||
| 144 | + } | ||
| 145 | + | ||
| 119 | /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . | 146 | /*ok*/ $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, " . |
| 120 | "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . | 147 | "F.id AS folder_id, D.id AS document_id, D.name AS document_name, " . |
| 121 | - "ROUND(MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE),3) AS score " . | 148 | + "ROUND(MATCH(DT.document_text) AGAINST (? $boolean_mode),3) AS score " . |
| 122 | "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . | 149 | "FROM $default->documents_table AS D INNER JOIN $default->document_text_table AS DT ON D.id = DT.document_id " . |
| 123 | "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . | 150 | "INNER JOIN $default->status_table AS SL ON D.status_id = SL.id " . |
| 124 | "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . | 151 | "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . |
| 125 | "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . | 152 | "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . |
| 126 | - "WHERE MATCH(DT.document_text) AGAINST (? IN BOOLEAN MODE) " . | 153 | + "WHERE MATCH(DT.document_text) AGAINST (? $boolean_mode) " . |
| 127 | "AND (F.is_public OR SDUL.user_id = ?) " . | 154 | "AND (F.is_public OR SDUL.user_id = ?) " . |
| 128 | "AND SL.name='Live' "; | 155 | "AND SL.name='Live' "; |
| 129 | $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); | 156 | $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); |