Commit 75eea8450550597e1a6deac32c161f9cd20ebfec

Authored by Neil Blakey-Milner
1 parent cc9e80fb

Save table size by checking public folders at search-time, rather than

table-generation time.

Submitted by:	Stefano Ciancio (sciancio)
SF Tracker:	1199729


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3279 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/security/Permission.inc
... ... @@ -531,19 +531,7 @@ class Permission {
531 531 } else {
532 532 $default->log->error("rolePerms failed");
533 533 }
534   -
535   - // public folders
536   - $sPublicFolderPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " .
537   - "SELECT U.id, D.id " . /*ok*/
538   - "FROM $default->users_table AS U, $default->documents_table AS D INNER JOIN $default->folders_table AS F ON D.folder_id = F.id " .
539   - "WHERE F.is_public = 1 " .
540   - "AND D.id = ?", $iDocumentID);
541   - $default->log->debug("addDocument publicFolder=$sPublicFolderPerms");
542   - if ($sql->query($sPublicFolderPerms)) {
543   - $default->log->debug("publicFolder succeeded");
544   - } else {
545   - $default->log->error("publicFolder failed");
546   - }
  534 +
547 535  
548 536 // creator permissions
549 537 $sCreatorPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " .
... ... @@ -593,19 +581,7 @@ class Permission {
593 581 } else {
594 582 $default->log->error("rolePerms failed");
595 583 }
596   -
597   - // public folders
598   - $sPublicFolderPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " .
599   - "SELECT U.id, D.id " . /*ok*/
600   - "FROM $default->users_table AS U, $default->documents_table AS D INNER JOIN $default->folders_table AS F ON D.folder_id = F.id " .
601   - "WHERE F.is_public = 1 " .
602   - "AND U.id = ?", $iUserID);
603   - $default->log->debug("addDocument publicFolder=$sPublicFolderPerms");
604   - if ($sql->query($sPublicFolderPerms)) {
605   - $default->log->debug("publicFolder succeeded");
606   - } else {
607   - $default->log->error("publicFolder failed");
608   - }
  584 +
609 585  
610 586 // creator permissions
611 587 $sCreatorPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " .
... ...
presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php
... ... @@ -99,7 +99,8 @@ FROM
99 99 INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id
100 100 INNER JOIN $default->status_table AS SL on D.status_id=SL.id
101 101 WHERE
102   - SDUL.user_id = ?
  102 + (F.is_public OR
  103 + SDUL.user_id = ?)
103 104 AND SL.name = ?
104 105 AND ($sSQLSearchString)
105 106 GROUP BY D.id
... ...
presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc
... ... @@ -118,7 +118,8 @@ function getSearchResults($sMetaTagIDs, $sSQLSearchString, $iStartIndex, $sSearc
118 118 "INNER JOIN $default->status_table AS SL on D.status_id=SL.id " .
119 119 "WHERE DF.ID IN ($sQms) " .
120 120 "AND (" . $sSQLSearchString . ") " .
121   - "AND SDUL.user_id = ? " .
  121 + "AND (F.is_public " .
  122 + "OR SDUL.user_id = ?) " .
122 123 "AND SL.name = ? " .
123 124 "GROUP BY D.id " .
124 125 "ORDER BY doc_count DESC ";
... ...
presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc
... ... @@ -44,7 +44,7 @@ function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCate
44 44 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " .
45 45 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " .
46 46 "WHERE MATCH(DT.document_text) AGAINST (?) " .
47   - "AND SDUL.user_id = ? " .
  47 + "AND (F.is_public OR SDUL.user_id = ?) " .
48 48 "AND SL.name='Live' ";
49 49 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]);
50 50 //only check in the parent_folder_ids if we're not searching from the
... ... @@ -81,7 +81,7 @@ function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $i
81 81 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " .
82 82 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " .
83 83 "WHERE MATCH(DT.document_text) AGAINST (?) " .
84   - "AND SDUL.user_id = ? ";
  84 + "AND (F.is_public OR SDUL.user_id = ?) ";
85 85 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]);
86 86 if (isset($iDocTypeID)) {
87 87 $sQuery .= "AND D.document_type_id = ? ";
... ... @@ -118,7 +118,7 @@ function getSeachResultsByFolder($iFolderID, $iStartIndex, $sKeywords) {
118 118 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " .
119 119 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " .
120 120 "WHERE MATCH(DT.document_text) AGAINST (?) " .
121   - "AND SDUL.user_id = ? " .
  121 + "AND (F.is_public OR SDUL.user_id = ?) " .
122 122 "AND SL.name='Live' ";
123 123 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]);
124 124 //only check in the parent_folder_ids if we're not searching from the
... ...