Commit ef7a2afb03828ed6e12e006406bc866ae7621daf
1 parent
d081e3fc
Updated to search functionality to make use of new permissions table
msyql full text indexer git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@1736 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
2 changed files
with
82 additions
and
16 deletions
presentation/lookAndFeel/knowledgeTree/search/standardSearchBL.php
| @@ -33,17 +33,19 @@ if (checkSession()) { | @@ -33,17 +33,19 @@ if (checkSession()) { | ||
| 33 | if (!$fFolderID) { | 33 | if (!$fFolderID) { |
| 34 | //start at the root folder | 34 | //start at the root folder |
| 35 | $fFolderID = 0; | 35 | $fFolderID = 0; |
| 36 | - $sFolderString = getApprovedFolderString($fFolderID); | 36 | + $sFolderString = getFolderString($fFolderID); |
| 37 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 37 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 38 | $oPatternCustom = & new PatternCustom(); | 38 | $oPatternCustom = & new PatternCustom(); |
| 39 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); | 39 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); |
| 40 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, $fStandardSearchString)); | ||
| 40 | $main->setCentralPayload($oPatternCustom); | 41 | $main->setCentralPayload($oPatternCustom); |
| 41 | $main->render(); | 42 | $main->render(); |
| 42 | } else { | 43 | } else { |
| 43 | - $sFolderString = getApprovedFolderString($fFolderID); | 44 | + $sFolderString = getFolderString($fFolderID); |
| 44 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 45 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 45 | $oPatternCustom = & new PatternCustom(); | 46 | $oPatternCustom = & new PatternCustom(); |
| 46 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); | 47 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); |
| 48 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, $fStandardSearchString)); | ||
| 47 | $main->setCentralPayload($oPatternCustom); | 49 | $main->setCentralPayload($oPatternCustom); |
| 48 | $main->render(); | 50 | $main->render(); |
| 49 | } | 51 | } |
| @@ -53,17 +55,19 @@ if (checkSession()) { | @@ -53,17 +55,19 @@ if (checkSession()) { | ||
| 53 | if (!$fCategoryName) { | 55 | if (!$fCategoryName) { |
| 54 | //no category name specified, so just start at the root folder | 56 | //no category name specified, so just start at the root folder |
| 55 | $fFolderID = 0; | 57 | $fFolderID = 0; |
| 56 | - $sFolderString = getApprovedFolderString($fFolderID); | 58 | + $sFolderString = getFolderString($fFolderID); |
| 57 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 59 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 58 | $oPatternCustom = & new PatternCustom(); | 60 | $oPatternCustom = & new PatternCustom(); |
| 59 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); | 61 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); |
| 62 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, $fStandardSearchString)); | ||
| 60 | $main->setCentralPayload($oPatternCustom); | 63 | $main->setCentralPayload($oPatternCustom); |
| 61 | $main->render(); | 64 | $main->render(); |
| 62 | } else { | 65 | } else { |
| 63 | - $sFolderString = getApprovedFolderStringFromCategory($fCategoryName); | 66 | + $sFolderString = getFolderStringFromCategory($fCategoryName); |
| 64 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 67 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 65 | $oPatternCustom = & new PatternCustom(); | 68 | $oPatternCustom = & new PatternCustom(); |
| 66 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); | 69 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); |
| 70 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, $fStandardSearchString)); | ||
| 67 | $main->setCentralPayload($oPatternCustom); | 71 | $main->setCentralPayload($oPatternCustom); |
| 68 | $main->render(); | 72 | $main->render(); |
| 69 | } | 73 | } |
| @@ -77,14 +81,16 @@ if (checkSession()) { | @@ -77,14 +81,16 @@ if (checkSession()) { | ||
| 77 | $sFolderString = getApprovedFolderString($fFolderID); | 81 | $sFolderString = getApprovedFolderString($fFolderID); |
| 78 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 82 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 79 | $oPatternCustom = & new PatternCustom(); | 83 | $oPatternCustom = & new PatternCustom(); |
| 80 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); | 84 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); |
| 85 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, $fStandardSearchString)); | ||
| 81 | $main->setCentralPayload($oPatternCustom); | 86 | $main->setCentralPayload($oPatternCustom); |
| 82 | $main->render(); | 87 | $main->render(); |
| 83 | } else { | 88 | } else { |
| 84 | $sDocumentString = getApprovedDocsDocType($fDocTypeID); | 89 | $sDocumentString = getApprovedDocsDocType($fDocTypeID); |
| 85 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 90 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 86 | $oPatternCustom = & new PatternCustom(); | 91 | $oPatternCustom = & new PatternCustom(); |
| 87 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sDocumentString, $fStartIndex, getSQLSearchString($fStandardSearchString), true)); | 92 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sDocumentString, $fStartIndex, getSQLSearchString($fStandardSearchString), true)); |
| 93 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sDocumentString, $fStartIndex, $fStandardSearchString, true)); | ||
| 88 | $main->setCentralPayload($oPatternCustom); | 94 | $main->setCentralPayload($oPatternCustom); |
| 89 | $main->render(); | 95 | $main->render(); |
| 90 | } | 96 | } |
| @@ -104,7 +110,8 @@ if (checkSession()) { | @@ -104,7 +110,8 @@ if (checkSession()) { | ||
| 104 | $sFolderString = getApprovedFolderString($oDocument->getFolderID()); | 110 | $sFolderString = getApprovedFolderString($oDocument->getFolderID()); |
| 105 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 111 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 106 | $oPatternCustom = & new PatternCustom(); | 112 | $oPatternCustom = & new PatternCustom(); |
| 107 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); | 113 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); |
| 114 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, $fStandardSearchString)); | ||
| 108 | $main->setCentralPayload($oPatternCustom); | 115 | $main->setCentralPayload($oPatternCustom); |
| 109 | $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); | 116 | $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); |
| 110 | $main->setHasRequiredFields(true); | 117 | $main->setHasRequiredFields(true); |
| @@ -112,10 +119,12 @@ if (checkSession()) { | @@ -112,10 +119,12 @@ if (checkSession()) { | ||
| 112 | } else { | 119 | } else { |
| 113 | //search from the root folder down i.e. all documents | 120 | //search from the root folder down i.e. all documents |
| 114 | $fFolderID = 0; | 121 | $fFolderID = 0; |
| 115 | - $sFolderString = getApprovedFolderString($fFolderID); | 122 | + //$sFolderString = getApprovedFolderString($fFolderID); |
| 123 | + $sFolderString = getFolderString($fFolderID); | ||
| 116 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | 124 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 117 | $oPatternCustom = & new PatternCustom(); | 125 | $oPatternCustom = & new PatternCustom(); |
| 118 | - $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); | 126 | + //$oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, getSQLSearchString($fStandardSearchString))); |
| 127 | + $oPatternCustom->setHtml(getPage($fStandardSearchString, $fBrowseType, $fFolderID, $fDocumentID, $fCategoryName, $fDocType, $sFolderString, $fStartIndex, $fStandardSearchString)); | ||
| 119 | $main->setCentralPayload($oPatternCustom); | 128 | $main->setCentralPayload($oPatternCustom); |
| 120 | $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); | 129 | $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); |
| 121 | $main->setHasRequiredFields(true); | 130 | $main->setHasRequiredFields(true); |
| @@ -123,6 +132,14 @@ if (checkSession()) { | @@ -123,6 +132,14 @@ if (checkSession()) { | ||
| 123 | } | 132 | } |
| 124 | } | 133 | } |
| 125 | 134 | ||
| 135 | +function getFolderString($iFolderID) { | ||
| 136 | + $aChildren = Folder::getChildren($iFolderID); | ||
| 137 | + //add the folder we started on | ||
| 138 | + $aChildren[count($aChildren)] = $iFolderID; | ||
| 139 | + return implode(",", $aChildren); | ||
| 140 | +} | ||
| 141 | + | ||
| 142 | +/* | ||
| 126 | function getApprovedFolderString($iFolderID) { | 143 | function getApprovedFolderString($iFolderID) { |
| 127 | $aChildren = Folder::getChildren($iFolderID); | 144 | $aChildren = Folder::getChildren($iFolderID); |
| 128 | $aApprovedChildren = array(); | 145 | $aApprovedChildren = array(); |
| @@ -159,7 +176,33 @@ function getApprovedFolderString($iFolderID) { | @@ -159,7 +176,33 @@ function getApprovedFolderString($iFolderID) { | ||
| 159 | return implode(",", $aApprovedChildren); | 176 | return implode(",", $aApprovedChildren); |
| 160 | } | 177 | } |
| 161 | 178 | ||
| 162 | -function getApprovedFolderStringFromCategory($sCategory) { | 179 | + |
| 180 | +*/ | ||
| 181 | + | ||
| 182 | +function getFolderStringFromCategory($sCategory) { | ||
| 183 | + global $default; | ||
| 184 | + $sQuery = "SELECT DISTINCT D.folder_id " . | ||
| 185 | + "FROM $default->owl_documents_table AS D inner join $default->owl_document_fields_table AS DFL ON D.id = DFL.document_id " . | ||
| 186 | + "INNER JOIN $default->owl_fields_table AS DF ON DF.id = DFL.document_field_id " . | ||
| 187 | + "WHERE DF.name LIKE 'Category' " . | ||
| 188 | + "AND DFL.value LIKE '$sCategory'"; | ||
| 189 | + | ||
| 190 | + $sql = $default->db; | ||
| 191 | + $sql->query($sQuery); | ||
| 192 | + | ||
| 193 | + if ($sql->next_record()) { | ||
| 194 | + //get all the folders in the category | ||
| 195 | + $aFolders = array($sql->f("folder_id")); | ||
| 196 | + while ($sql->next_record()) { | ||
| 197 | + $aFolders[count($aFolders)] = $sql->f("folder_id"); | ||
| 198 | + } | ||
| 199 | + return implode(",", $aFolders); | ||
| 200 | + } | ||
| 201 | + return "0"; | ||
| 202 | + | ||
| 203 | +} | ||
| 204 | + | ||
| 205 | +/*function getApprovedFolderStringFromCategory($sCategory) { | ||
| 163 | global $default; | 206 | global $default; |
| 164 | $sQuery = "SELECT DISTINCT D.folder_id " . | 207 | $sQuery = "SELECT DISTINCT D.folder_id " . |
| 165 | "FROM $default->owl_documents_table AS D inner join $default->owl_document_fields_table AS DFL ON D.id = DFL.document_id " . | 208 | "FROM $default->owl_documents_table AS D inner join $default->owl_document_fields_table AS DFL ON D.id = DFL.document_id " . |
| @@ -210,7 +253,7 @@ function getApprovedFolderStringFromCategory($sCategory) { | @@ -210,7 +253,7 @@ function getApprovedFolderStringFromCategory($sCategory) { | ||
| 210 | return implode(",", $aApprovedChildren); | 253 | return implode(",", $aApprovedChildren); |
| 211 | } | 254 | } |
| 212 | return "0"; | 255 | return "0"; |
| 213 | -} | 256 | +}*/ |
| 214 | 257 | ||
| 215 | function getSQLSearchString($sSearchString) { | 258 | function getSQLSearchString($sSearchString) { |
| 216 | $aWords = explode(" ", $sSearchString); | 259 | $aWords = explode(" ", $sSearchString); |
presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc
| @@ -23,7 +23,7 @@ function getPage($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategor | @@ -23,7 +23,7 @@ function getPage($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategor | ||
| 23 | return "<table width=\"600\">" . renderHeading() . "</table>" . getSearchResults($sFolderIDs, $sSQLSearchString, $iStartIndex, $bSearchByDocument) . $sRefreshMessage . getSearchVariablesHtml($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategoryName, $iDocType); | 23 | return "<table width=\"600\">" . renderHeading() . "</table>" . getSearchResults($sFolderIDs, $sSQLSearchString, $iStartIndex, $bSearchByDocument) . $sRefreshMessage . getSearchVariablesHtml($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategoryName, $iDocType); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | -function getSearchResults($sIDs,$sSQLSearchString, $iStartIndex, $bSearchByDocument = false) { | 26 | +/*function getSearchResults($sIDs,$sSQLSearchString, $iStartIndex, $bSearchByDocument = false) { |
| 27 | global $default; | 27 | global $default; |
| 28 | $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, F.id folder_id, D.id document_id, D.name AS document_name " . | 28 | $sQuery = "SELECT DISTINCT '" . "$default->graphicsUrl/widgets/dfolder.gif" . "' AS folder_image_url, F.id folder_id, D.id document_id, D.name AS document_name " . |
| 29 | "FROM $default->owl_documents_table AS D INNER JOIN $default->owl_folders_table AS F ON D.folder_id = F.id " . | 29 | "FROM $default->owl_documents_table AS D INNER JOIN $default->owl_folders_table AS F ON D.folder_id = F.id " . |
| @@ -52,6 +52,29 @@ function getSearchResults($sIDs,$sSQLSearchString, $iStartIndex, $bSearchByDocum | @@ -52,6 +52,29 @@ function getSearchResults($sIDs,$sSQLSearchString, $iStartIndex, $bSearchByDocum | ||
| 52 | $oPatternBrowse = & new PatternBrowseableSearchResults($sQuery, 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); | 52 | $oPatternBrowse = & new PatternBrowseableSearchResults($sQuery, 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); |
| 53 | $oPatternBrowse->setStartIndex($iStartIndex); | 53 | $oPatternBrowse->setStartIndex($iStartIndex); |
| 54 | return $oPatternBrowse->render(); | 54 | return $oPatternBrowse->render(); |
| 55 | +}*/ | ||
| 56 | + | ||
| 57 | +function getSearchResults($sFolderIDs, $sKeywords, $iStartIndex) { | ||
| 58 | + global $default; | ||
| 59 | + $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, MATCH(DT.document_text) AGAINST ('" . $sKeywords . "') AS score " . | ||
| 60 | + "FROM search_document_user_link AS SDUL INNER JOIN document_text AS DT ON SDUL.document_id = DT.document_id " . | ||
| 61 | + "INNER JOIN documents AS D ON D.id = SDUL.document_id " . | ||
| 62 | + "INNER JOIN folders AS F on F.ID = D.folder_id " . | ||
| 63 | + "WHERE MATCH(DT.document_text) AGAINST ('" . $sKeywords . "') " . | ||
| 64 | + "AND SDUL.user_id = " . $_SESSION["userID"] . " " . | ||
| 65 | + "AND F.id IN ($sFolderIDs) " . | ||
| 66 | + "ORDER BY score DESC"; | ||
| 67 | + | ||
| 68 | + $aColumns = array("folder_image_url", "document_name","score"); | ||
| 69 | + $aColumnTypes = array(4,3,3); | ||
| 70 | + $aColumnHeaders = array("<font color=\"ffffff\">Folder</font>","<font color=\"ffffff\">Document</font>","<font color=\"ffffff\">Score</font>"); | ||
| 71 | + $aLinkURLs = array("$default->rootUrl/control.php?action=browse","$default->rootUrl/control.php?action=viewDocument"); | ||
| 72 | + $aDBQueryStringColumns = array("document_id","folder_id","score"); | ||
| 73 | + $aQueryStringVariableNames = array("fDocumentID", "fFolderID"); | ||
| 74 | + | ||
| 75 | + $oPatternBrowse = & new PatternBrowseableSearchResults($sQuery, 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); | ||
| 76 | + $oPatternBrowse->setStartIndex($iStartIndex); | ||
| 77 | + return $oPatternBrowse->render(); | ||
| 55 | } | 78 | } |
| 56 | 79 | ||
| 57 | function getSearchVariablesHtml($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategoryName, $iDocType) { | 80 | function getSearchVariablesHtml($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategoryName, $iDocType) { |