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 | 33 | if (!$fFolderID) { |
| 34 | 34 | //start at the root folder |
| 35 | 35 | $fFolderID = 0; |
| 36 | - $sFolderString = getApprovedFolderString($fFolderID); | |
| 36 | + $sFolderString = getFolderString($fFolderID); | |
| 37 | 37 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 38 | 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 | 41 | $main->setCentralPayload($oPatternCustom); |
| 41 | 42 | $main->render(); |
| 42 | 43 | } else { |
| 43 | - $sFolderString = getApprovedFolderString($fFolderID); | |
| 44 | + $sFolderString = getFolderString($fFolderID); | |
| 44 | 45 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 45 | 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 | 49 | $main->setCentralPayload($oPatternCustom); |
| 48 | 50 | $main->render(); |
| 49 | 51 | } |
| ... | ... | @@ -53,17 +55,19 @@ if (checkSession()) { |
| 53 | 55 | if (!$fCategoryName) { |
| 54 | 56 | //no category name specified, so just start at the root folder |
| 55 | 57 | $fFolderID = 0; |
| 56 | - $sFolderString = getApprovedFolderString($fFolderID); | |
| 58 | + $sFolderString = getFolderString($fFolderID); | |
| 57 | 59 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 58 | 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 | 63 | $main->setCentralPayload($oPatternCustom); |
| 61 | 64 | $main->render(); |
| 62 | 65 | } else { |
| 63 | - $sFolderString = getApprovedFolderStringFromCategory($fCategoryName); | |
| 66 | + $sFolderString = getFolderStringFromCategory($fCategoryName); | |
| 64 | 67 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 65 | 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 | 71 | $main->setCentralPayload($oPatternCustom); |
| 68 | 72 | $main->render(); |
| 69 | 73 | } |
| ... | ... | @@ -77,14 +81,16 @@ if (checkSession()) { |
| 77 | 81 | $sFolderString = getApprovedFolderString($fFolderID); |
| 78 | 82 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 79 | 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 | 86 | $main->setCentralPayload($oPatternCustom); |
| 82 | 87 | $main->render(); |
| 83 | 88 | } else { |
| 84 | 89 | $sDocumentString = getApprovedDocsDocType($fDocTypeID); |
| 85 | 90 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 86 | 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 | 94 | $main->setCentralPayload($oPatternCustom); |
| 89 | 95 | $main->render(); |
| 90 | 96 | } |
| ... | ... | @@ -104,7 +110,8 @@ if (checkSession()) { |
| 104 | 110 | $sFolderString = getApprovedFolderString($oDocument->getFolderID()); |
| 105 | 111 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 106 | 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 | 115 | $main->setCentralPayload($oPatternCustom); |
| 109 | 116 | $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); |
| 110 | 117 | $main->setHasRequiredFields(true); |
| ... | ... | @@ -112,10 +119,12 @@ if (checkSession()) { |
| 112 | 119 | } else { |
| 113 | 120 | //search from the root folder down i.e. all documents |
| 114 | 121 | $fFolderID = 0; |
| 115 | - $sFolderString = getApprovedFolderString($fFolderID); | |
| 122 | + //$sFolderString = getApprovedFolderString($fFolderID); | |
| 123 | + $sFolderString = getFolderString($fFolderID); | |
| 116 | 124 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 117 | 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 | 128 | $main->setCentralPayload($oPatternCustom); |
| 120 | 129 | $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); |
| 121 | 130 | $main->setHasRequiredFields(true); |
| ... | ... | @@ -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 | 143 | function getApprovedFolderString($iFolderID) { |
| 127 | 144 | $aChildren = Folder::getChildren($iFolderID); |
| 128 | 145 | $aApprovedChildren = array(); |
| ... | ... | @@ -159,7 +176,33 @@ function getApprovedFolderString($iFolderID) { |
| 159 | 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 | 206 | global $default; |
| 164 | 207 | $sQuery = "SELECT DISTINCT D.folder_id " . |
| 165 | 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 | 253 | return implode(",", $aApprovedChildren); |
| 211 | 254 | } |
| 212 | 255 | return "0"; |
| 213 | -} | |
| 256 | +}*/ | |
| 214 | 257 | |
| 215 | 258 | function getSQLSearchString($sSearchString) { |
| 216 | 259 | $aWords = explode(" ", $sSearchString); | ... | ... |
presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc
| ... | ... | @@ -23,7 +23,7 @@ function getPage($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategor |
| 23 | 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 | 27 | global $default; |
| 28 | 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 | 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 | 52 | $oPatternBrowse = & new PatternBrowseableSearchResults($sQuery, 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); |
| 53 | 53 | $oPatternBrowse->setStartIndex($iStartIndex); |
| 54 | 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 | 80 | function getSearchVariablesHtml($sSearchText, $sBrowseType, $iFolderID, $iDocumentID, $sCategoryName, $iDocType) { | ... | ... |