registerModule('testmodule', 500, 'office'); return $ok && $this->registerSubPermission('testmodule_extra', 'testmodule'); } public function uninstall(): bool { return true; } protected function log(string $level, string $message): void { // No-op in tests: results come from PHPUnit, not log files. } public function publicRegisterModule(string $module_id): bool { return $this->registerModule($module_id); } public function publicUnregisterModule(string $module_id): bool { return $this->unregisterModule($module_id); } public function publicRegisterSubPermission(string $permission_id, string $module_id): bool { return $this->registerSubPermission($permission_id, $module_id); } public function publicUnregisterSubPermission(string $permission_id): bool { return $this->unregisterSubPermission($permission_id); } }