Commit 420cbc1deaa10b62f6a17945ea6b9132398e7177
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
Showing
1 changed file
with
58 additions
and
0 deletions
lib/documentmanagement/Document.inc
| ... | ... | @@ -317,6 +317,8 @@ class Document { |
| 317 | 317 | if ($result) { |
| 318 | 318 | //set the current documents primary key |
| 319 | 319 | $this->iId = $sql->insert_id(); |
| 320 | + // also insert into search permissions table to enable immediate metadata searching (#2681) | |
| 321 | + $this->insertDocumentPermissions(); | |
| 320 | 322 | return true; |
| 321 | 323 | } |
| 322 | 324 | $_SESSION["errorMessage"] = $lang_err_database; |
| ... | ... | @@ -326,6 +328,62 @@ class Document { |
| 326 | 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 | 389 | * Update the documents current values in the database | ... | ... |