Commit 75eea8450550597e1a6deac32c161f9cd20ebfec
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
Showing
4 changed files
with
9 additions
and
31 deletions
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 | ... | ... |