From 420cbc1deaa10b62f6a17945ea6b9132398e7177 Mon Sep 17 00:00:00 2001 From: Michael Joseph Date: Tue, 1 Jul 2003 10:32:30 +0000 Subject: [PATCH] (#2681) added code to automatically insert into search permissions table to enable immediate metadata searching --- lib/documentmanagement/Document.inc | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+), 0 deletions(-) diff --git a/lib/documentmanagement/Document.inc b/lib/documentmanagement/Document.inc index 464448f..389b163 100644 --- a/lib/documentmanagement/Document.inc +++ b/lib/documentmanagement/Document.inc @@ -317,6 +317,8 @@ class Document { if ($result) { //set the current documents primary key $this->iId = $sql->insert_id(); + // also insert into search permissions table to enable immediate metadata searching (#2681) + $this->insertDocumentPermissions(); return true; } $_SESSION["errorMessage"] = $lang_err_database; @@ -326,6 +328,62 @@ class Document { return false; } + + function insertDocumentPermissions() { + global $default; + + $sql = $default->db; + + // group permissions + $sGroupPerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " . + "SELECT UGL.user_id AS user_id, D.id AS document_id " . + "FROM $default->owl_documents_table AS D INNER JOIN folders AS F ON D.folder_id = F.id " . + "INNER JOIN $default->owl_groups_folders_table AS GFL ON GFL.folder_id = F.id " . + "INNER JOIN $default->owl_users_groups_table AS UGL ON UGL.group_id = GFL.group_id " . + "WHERE D.id=$this->iId"; + $default->log->info("addDocument groupPerms=$sGroupPerms"); + if ($sql->query($sGroupPerms)) { + $default->log->info("groupPerms succeeded"); + } else { + $default->log->info("groupPerms failed"); + } + // role permissions + $sRolePerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " . + "SELECT user_id, document_id " . + "FROM $default->owl_folders_user_roles_table " . + "WHERE document_id=$this->iId"; + $default->log->info("addDocument rolePerms=$sRolePerms"); + if ($sql->query($sRolePerms)) { + $default->log->info("rolePerms succeeded"); + } else { + $default->log->info("rolePerms failed"); + } + + // public folders + $sPublicFolderPerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " . + "SELECT U.id, D.id " . + "FROM $default->owl_users_table AS U, $default->owl_documents_table AS D INNER JOIN $default->owl_folders_table AS F ON D.folder_id = F.id " . + "WHERE F.is_public = 1 " . + "AND D.id=$this->iId"; + $default->log->info("addDocument publicFolder=$sPublicFolderPerms"); + if ($sql->query($sPublicFolderPerms)) { + $default->log->info("publicFolder succeeded"); + } else { + $default->log->info("publicFolder failed"); + } + + // creator permissions + $sCreatorPerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " . + "SELECT creator_id, id " . + "FROM $default->owl_documents_table " . + "WHERE id=$this->iId"; + $default->log->info("addDocument creatorPerms=$sCreatorPerms"); + if ($sql->query($sCreatorPerms)) { + $default->log->info("creatorPerms succeeded"); + } else { + $default->log->info("creatorPerms failed"); + } + } /** * Update the documents current values in the database -- libgit2 0.21.4