Replace comma-separated tags with relational tag system.

- Add tags and domain_tags tables
- Support tag management
- Support user isolation (global/private tags)
- Add filtering all domain views to operations
- Update all domain views automatically
This commit is contained in:
Hosteroid
2025-10-25 02:04:00 +03:00
parent 75f0ae35fb
commit 06596b8044
16 changed files with 2729 additions and 170 deletions

View File

@@ -533,7 +533,7 @@ class SettingsController extends Controller
return;
}
$_SESSION['success'] = "Isolation mode enabled. {$migrationResult['domains_assigned']} domains and {$migrationResult['groups_assigned']} groups assigned to admin.";
$_SESSION['success'] = "Isolation mode enabled. {$migrationResult['domains_assigned']} domains, {$migrationResult['groups_assigned']} groups, and {$migrationResult['tags_assigned']} tags assigned to admin.";
} else {
// Switching back to shared mode
$this->settingModel->setValue('user_isolation_mode', 'shared');
@@ -572,6 +572,10 @@ class SettingsController extends Controller
$groupModel = new \App\Models\NotificationGroup();
$groupCount = $groupModel->assignUnassignedGroupsToUser($adminId);
// Assign all tags to admin
$tagModel = new \App\Models\Tag();
$tagCount = $tagModel->assignUnassignedTagsToUser($adminId);
// Set isolation mode
$this->settingModel->setValue('user_isolation_mode', 'isolated');
@@ -579,7 +583,8 @@ class SettingsController extends Controller
'success' => true,
'admin_id' => $adminId,
'domains_assigned' => $domainCount,
'groups_assigned' => $groupCount
'groups_assigned' => $groupCount,
'tags_assigned' => $tagCount
];
} catch (\Exception $e) {