diff --git a/lib/security/Permission.inc b/lib/security/Permission.inc index 91d287e..fe3f102 100644 --- a/lib/security/Permission.inc +++ b/lib/security/Permission.inc @@ -531,19 +531,7 @@ class Permission { } else { $default->log->error("rolePerms failed"); } - - // public folders - $sPublicFolderPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " . - "SELECT U.id, D.id " . /*ok*/ - "FROM $default->users_table AS U, $default->documents_table AS D INNER JOIN $default->folders_table AS F ON D.folder_id = F.id " . - "WHERE F.is_public = 1 " . - "AND D.id = ?", $iDocumentID); - $default->log->debug("addDocument publicFolder=$sPublicFolderPerms"); - if ($sql->query($sPublicFolderPerms)) { - $default->log->debug("publicFolder succeeded"); - } else { - $default->log->error("publicFolder failed"); - } + // creator permissions $sCreatorPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " . @@ -593,19 +581,7 @@ class Permission { } else { $default->log->error("rolePerms failed"); } - - // public folders - $sPublicFolderPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " . - "SELECT U.id, D.id " . /*ok*/ - "FROM $default->users_table AS U, $default->documents_table AS D INNER JOIN $default->folders_table AS F ON D.folder_id = F.id " . - "WHERE F.is_public = 1 " . - "AND U.id = ?", $iUserID); - $default->log->debug("addDocument publicFolder=$sPublicFolderPerms"); - if ($sql->query($sPublicFolderPerms)) { - $default->log->debug("publicFolder succeeded"); - } else { - $default->log->error("publicFolder failed"); - } + // creator permissions $sCreatorPerms = array("INSERT INTO $default->search_permissions_table (user_id, document_id) " . diff --git a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php index 654b0f7..86bce83 100644 --- a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php +++ b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php @@ -99,7 +99,8 @@ FROM INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id INNER JOIN $default->status_table AS SL on D.status_id=SL.id WHERE - SDUL.user_id = ? + (F.is_public OR + SDUL.user_id = ?) AND SL.name = ? AND ($sSQLSearchString) GROUP BY D.id diff --git a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc index ed4e4a2..0f08187 100644 --- a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc @@ -118,7 +118,8 @@ function getSearchResults($sMetaTagIDs, $sSQLSearchString, $iStartIndex, $sSearc "INNER JOIN $default->status_table AS SL on D.status_id=SL.id " . "WHERE DF.ID IN ($sQms) " . "AND (" . $sSQLSearchString . ") " . - "AND SDUL.user_id = ? " . + "AND (F.is_public " . + "OR SDUL.user_id = ?) " . "AND SL.name = ? " . "GROUP BY D.id " . "ORDER BY doc_count DESC "; diff --git a/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc b/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc index c6c65f9..1098ce4 100644 --- a/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/search/standardSearchUI.inc @@ -44,7 +44,7 @@ function getSearchResultsByCategory($iFolderID, $sKeywords, $iStartIndex, $sCate "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . "WHERE MATCH(DT.document_text) AGAINST (?) " . - "AND SDUL.user_id = ? " . + "AND (F.is_public OR SDUL.user_id = ?) " . "AND SL.name='Live' "; $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); //only check in the parent_folder_ids if we're not searching from the @@ -81,7 +81,7 @@ function getSearchResultsByDocumentType($iFolderID, $sKeywords, $iStartIndex, $i "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . "WHERE MATCH(DT.document_text) AGAINST (?) " . - "AND SDUL.user_id = ? "; + "AND (F.is_public OR SDUL.user_id = ?) "; $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); if (isset($iDocTypeID)) { $sQuery .= "AND D.document_type_id = ? "; @@ -118,7 +118,7 @@ function getSeachResultsByFolder($iFolderID, $iStartIndex, $sKeywords) { "INNER JOIN $default->folders_table AS F on F.ID = D.folder_id " . "INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id " . "WHERE MATCH(DT.document_text) AGAINST (?) " . - "AND SDUL.user_id = ? " . + "AND (F.is_public OR SDUL.user_id = ?) " . "AND SL.name='Live' "; $aParams = array($sKeywords, $sKeywords, $_SESSION["userID"]); //only check in the parent_folder_ids if we're not searching from the