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 . "')";