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,19 +531,7 @@ class Permission {
531 } else { 531 } else {
532 $default->log->error("rolePerms failed"); 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 // creator permissions 536 // creator permissions
549 $sCreatorPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " . 537 $sCreatorPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " .
@@ -593,19 +581,7 @@ class Permission { @@ -593,19 +581,7 @@ class Permission {
593 } else { 581 } else {
594 $default->log->error("rolePerms failed"); 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 // creator permissions 586 // creator permissions
611 $sCreatorPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " . 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,7 +99,8 @@ FROM
99 INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id 99 INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id
100 INNER JOIN $default->status_table AS SL on D.status_id=SL.id 100 INNER JOIN $default->status_table AS SL on D.status_id=SL.id
101 WHERE 101 WHERE
102 - SDUL.user_id = ? 102 + (F.is_public OR
  103 + SDUL.user_id = ?)
103 AND SL.name = ? 104 AND SL.name = ?
104 AND ($sSQLSearchString) 105 AND ($sSQLSearchString)
105 GROUP BY D.id 106 GROUP BY D.id
presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc
@@ -118,7 +118,8 @@ function getSearchResults($sMetaTagIDs, $sSQLSearchString, $iStartIndex, $sSearc @@ -118,7 +118,8 @@ function getSearchResults($sMetaTagIDs, $sSQLSearchString, $iStartIndex, $sSearc
118 "INNER JOIN $default->status_table AS SL on D.status_id=SL.id " . 118 "INNER JOIN $default->status_table AS SL on D.status_id=SL.id " .
119 "WHERE DF.ID IN ($sQms) " . 119 "WHERE DF.ID IN ($sQms) " .
120 "AND (" . $sSQLSearchString . ") " . 120 "AND (" . $sSQLSearchString . ") " .
121 - "AND SDUL.user_id = ? " . 121 + "AND (F.is_public " .
  122 + "OR SDUL.user_id = ?) " .
122 "AND SL.name = ? " . 123 "AND SL.name = ? " .
123 "GROUP BY D.id " . 124 "GROUP BY D.id " .
124 "ORDER BY doc_count DESC "; 125 "ORDER BY doc_count DESC ";
presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc
@@ -44,7 +44,7 @@ function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCate @@ -44,7 +44,7 @@ function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCate
44 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . 44 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " .
45 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . 45 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " .
46 "WHERE MATCH(DT.document_text) AGAINST (?) " . 46 "WHERE MATCH(DT.document_text) AGAINST (?) " .
47 - "AND SDUL.user_id = ? " . 47 + "AND (F.is_public OR SDUL.user_id = ?) " .
48 "AND SL.name='Live' "; 48 "AND SL.name='Live' ";
49 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); 49 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]);
50 //only check in the parent_folder_ids if we're not searching from the 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,7 +81,7 @@ function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $i
81 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . 81 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " .
82 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . 82 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " .
83 "WHERE MATCH(DT.document_text) AGAINST (?) " . 83 "WHERE MATCH(DT.document_text) AGAINST (?) " .
84 - "AND SDUL.user_id = ? "; 84 + "AND (F.is_public OR SDUL.user_id = ?) ";
85 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); 85 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]);
86 if (isset($iDocTypeID)) { 86 if (isset($iDocTypeID)) {
87 $sQuery .= "AND D.document_type_id = ? "; 87 $sQuery .= "AND D.document_type_id = ? ";
@@ -118,7 +118,7 @@ function getSeachResultsByFolder($iFolderID, $iStartIndex, $sKeywords) { @@ -118,7 +118,7 @@ function getSeachResultsByFolder($iFolderID, $iStartIndex, $sKeywords) {
118 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . 118 "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " .
119 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . 119 "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " .
120 "WHERE MATCH(DT.document_text) AGAINST (?) " . 120 "WHERE MATCH(DT.document_text) AGAINST (?) " .
121 - "AND SDUL.user_id = ? " . 121 + "AND (F.is_public OR SDUL.user_id = ?) " .
122 "AND SL.name='Live' "; 122 "AND SL.name='Live' ";
123 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); 123 $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]);
124 //only check in the parent_folder_ids if we're not searching from the 124 //only check in the parent_folder_ids if we're not searching from the