Commit 420cbc1deaa10b62f6a17945ea6b9132398e7177

Authored by Michael Joseph
1 parent a17e89e1

(#2681) added code to automatically insert into search permissions table to enab…

…le immediate metadata searching


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@2259 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/documentmanagement/Document.inc
@@ -317,6 +317,8 @@ class Document { @@ -317,6 +317,8 @@ class Document {
317 if ($result) { 317 if ($result) {
318 //set the current documents primary key 318 //set the current documents primary key
319 $this->iId = $sql->insert_id(); 319 $this->iId = $sql->insert_id();
  320 + // also insert into search permissions table to enable immediate metadata searching (#2681)
  321 + $this->insertDocumentPermissions();
320 return true; 322 return true;
321 } 323 }
322 $_SESSION["errorMessage"] = $lang_err_database; 324 $_SESSION["errorMessage"] = $lang_err_database;
@@ -326,6 +328,62 @@ class Document { @@ -326,6 +328,62 @@ class Document {
326 return false; 328 return false;
327 329
328 } 330 }
  331 +
  332 + function insertDocumentPermissions() {
  333 + global $default;
  334 +
  335 + $sql = $default->db;
  336 +
  337 + // group permissions
  338 + $sGroupPerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " .
  339 + "SELECT UGL.user_id AS user_id, D.id AS document_id " .
  340 + "FROM $default->owl_documents_table AS D INNER JOIN folders AS F ON D.folder_id = F.id " .
  341 + "INNER JOIN $default->owl_groups_folders_table AS GFL ON GFL.folder_id = F.id " .
  342 + "INNER JOIN $default->owl_users_groups_table AS UGL ON UGL.group_id = GFL.group_id " .
  343 + "WHERE D.id=$this->iId";
  344 + $default->log->info("addDocument groupPerms=$sGroupPerms");
  345 + if ($sql->query($sGroupPerms)) {
  346 + $default->log->info("groupPerms succeeded");
  347 + } else {
  348 + $default->log->info("groupPerms failed");
  349 + }
  350 + // role permissions
  351 + $sRolePerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " .
  352 + "SELECT user_id, document_id " .
  353 + "FROM $default->owl_folders_user_roles_table " .
  354 + "WHERE document_id=$this->iId";
  355 + $default->log->info("addDocument rolePerms=$sRolePerms");
  356 + if ($sql->query($sRolePerms)) {
  357 + $default->log->info("rolePerms succeeded");
  358 + } else {
  359 + $default->log->info("rolePerms failed");
  360 + }
  361 +
  362 + // public folders
  363 + $sPublicFolderPerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " .
  364 + "SELECT U.id, D.id " .
  365 + "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 " .
  366 + "WHERE F.is_public = 1 " .
  367 + "AND D.id=$this->iId";
  368 + $default->log->info("addDocument publicFolder=$sPublicFolderPerms");
  369 + if ($sql->query($sPublicFolderPerms)) {
  370 + $default->log->info("publicFolder succeeded");
  371 + } else {
  372 + $default->log->info("publicFolder failed");
  373 + }
  374 +
  375 + // creator permissions
  376 + $sCreatorPerms = "INSERT INTO $default->search_permissions_table (user_id, document_id) " .
  377 + "SELECT creator_id, id " .
  378 + "FROM $default->owl_documents_table " .
  379 + "WHERE id=$this->iId";
  380 + $default->log->info("addDocument creatorPerms=$sCreatorPerms");
  381 + if ($sql->query($sCreatorPerms)) {
  382 + $default->log->info("creatorPerms succeeded");
  383 + } else {
  384 + $default->log->info("creatorPerms failed");
  385 + }
  386 + }
329 387
330 /** 388 /**
331 * Update the documents current values in the database 389 * Update the documents current values in the database