do_member_parent_changed_refresh_object_permisssions($member_id, $old_parent_id); } DB::commit(); } catch (Exception $e) { DB::rollback(); Logger::log("Error saving permissions (1): " . $e->getMessage() . "\n" . $e->getTraceAsString()); } $changed_pgs = array_var($result, 'changed_pgs'); if (is_array($changed_pgs)) { foreach ($changed_pgs as $pg_id) { try { // create flag for this $pg_id DB::beginWork(); $flag = new SharingTableFlag(); $flag->setPermissionGroupId($pg_id); $flag->setMemberId($member->getId()); $flag->setPermissionString($permissions); $flag->setExecutionDate(DateTimeValueLib::now()); $flag->setCreatedById(logged_user()->getId()); $flag->save(); DB::commit(); } catch (Exception $e) { DB::rollback(); Logger::log("Error saving permissions (2): " . $e->getMessage() . "\n" . $e->getTraceAsString()); } } } $flags_to_delete = array(); // transactions to update_sharing table $sharingTablecontroller = new SharingTableController(); if (is_array($changed_pgs)) {
$root_permissions = json_decode(file_get_contents($root_permissions_filename), true); $users_ids_to_check = json_decode(file_get_contents($users_ids_to_check_filename), true); $perms = array('permissions' => $permissions, 'sys_perm' => $sys_permissions, 'mod_perm' => $mod_permissions, 'root_perm' => $root_permissions, 'root_perm_genid' => $root_permissions_genid); // save permissions try { $result = save_permissions($pg_id, $is_guest, $perms, true, false, false, false, array(), $only_member_permissions); } catch (Exception $e) { Logger::log("Error saving permissions (1): " . $e->getMessage() . "\n" . $e->getTraceAsString()); } // update sharing table try { // create flag for this $pg_id DB::beginWork(); $flag = new SharingTableFlag(); $flag->setPermissionGroupId($pg_id); $flag->setMemberId(0); $flag->setPermissionString($permissions); $flag->setExecutionDate(DateTimeValueLib::now()); $flag->setCreatedById(logged_user()->getId()); $flag->save(); DB::commit(); // populate permission groups $permissions_decoded = json_decode($permissions); $to_insert = array(); $to_delete = array(); if (is_array($permissions_decoded)) { foreach ($permissions_decoded as $perm) { if ($perm->r) { $to_insert[] = "('" . $pg_id . "','" . $perm->m . "','" . $perm->o . "','" . $perm->d . "','" . $perm->w . "')"; } else { $to_delete[] = "(permission_group_id='" . $pg_id . "' AND member_id='" . $perm->m . "' AND object_type_id='" . $perm->o . "')";