Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions ProcessMaker/ImportExport/Exporters/GroupExporter.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace ProcessMaker\ImportExport\Exporters;

use ProcessMaker\ImportExport\DependentType;
use Illuminate\Support\Facades\Log;
use ProcessMaker\Models\Permission;

class GroupExporter extends ExporterBase
Expand All @@ -15,20 +15,21 @@ class GroupExporter extends ExporterBase

public function export() : void
{
foreach ($this->model->users as $dependentModel) {
$this->addDependent(DependentType::USERS, $dependentModel, UserExporter::class);
}

// Skipping user expansion to avoid exporting entire group membership (can be tens of thousands).
Log::info('[GroupExporter] Skipping user expansion', [
'group_id' => $this->model->id,
]);
$this->addReference('permissions', $this->model->permissions()->pluck('name')->toArray());
}

public function import() : bool
{
$group = $this->model;

foreach ($this->getDependents('users') as $dependent) {
$dependent->model->groups()->syncWithoutDetaching($group->id);
}
// Skipping user import for group membership. Can be tens of thousands of users.
Log::info('[GroupExporter] Skipping user import for group', [
'group_id' => $group->id,
]);

$permissions = $this->getReference('permissions') ?? [];
$permissionIds = Permission::whereIn('name', $permissions)->pluck('id')->toArray();
Expand Down
2 changes: 2 additions & 0 deletions tests/Feature/ImportExport/Exporters/GroupExporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public function testGroupExporter()

public function testGroupWithUsers()
{
$this->markTestSkipped('Group members are no longer exported/imported to avoid massive expansions.');

DB::beginTransaction();

// Creating 1 group and 10 users
Expand Down
4 changes: 2 additions & 2 deletions tests/Feature/ImportExport/Exporters/UserExporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ public function testDoNotCopyAdmin()
$user = User::where('username', 'admin')->firstOrFail();

$this->assertEquals($originalUserCount, User::count());
// Added to original users group
$this->assertEquals(['test group', 'test group 2'], $user->groups()->pluck('name')->toArray());
// Group memberships are no longer copied; original memberships remain
$this->assertEquals(['test group'], $user->groups()->pluck('name')->toArray());

// Test importing on new instance
DB::rollBack(); // Delete all created items since DB::beginTransaction
Expand Down
Loading