Commit ef7a2afb03828ed6e12e006406bc866ae7621daf

Authored by rob
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
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) {
... ...