[ 'version' => $this->appManager->getAppVersion(Application::APP_ID), 'status' => $this->getCapabilitiesStatus($complete), 'settings' => $this->configService->getSettings(), 'circle' => $this->getCapabilitiesCircle(), 'member' => $this->getCapabilitiesMember(), 'teamResourceProviders' => $this->getCapabilitiesTeamResourceProviders(), ], ]; } /** * @param bool $complete * * @return array */ private function getCapabilitiesStatus(bool $complete = false): array { $status = [ 'globalScale' => $this->configService->isGSAvailable() ]; if ($complete) { $status['interfaces'] = [ 'all' => $this->interfaceService->getInterfaces(true), 'internal' => $this->interfaceService->getInternalInterfaces(true) ]; } return $status; } /** * @return array */ private function getCapabilitiesCircle(): array { return [ 'constants' => $this->getCapabilitiesCircleConstants(), 'config' => $this->getCapabilitiesCircleConfig() ]; } /** * @return array */ private function getCapabilitiesMember(): array { return [ 'constants' => $this->getCapabilitiesMemberConstants(), 'type' => Member::$TYPE ]; } /** * @return array */ private function getCapabilitiesCircleConstants(): array { return [ 'flags' => [ Circle::CFG_SINGLE => $this->l10n->t('Single'), Circle::CFG_PERSONAL => $this->l10n->t('Personal'), Circle::CFG_SYSTEM => $this->l10n->t('System'), Circle::CFG_VISIBLE => $this->l10n->t('Visible'), Circle::CFG_OPEN => $this->l10n->t('Open'), Circle::CFG_INVITE => $this->l10n->t('Invite'), Circle::CFG_REQUEST => $this->l10n->t('Join request'), Circle::CFG_FRIEND => $this->l10n->t('Friends'), Circle::CFG_PROTECTED => $this->l10n->t('Password protected'), Circle::CFG_NO_OWNER => $this->l10n->t('No Owner'), Circle::CFG_HIDDEN => $this->l10n->t('Hidden'), Circle::CFG_BACKEND => $this->l10n->t('Backend'), Circle::CFG_LOCAL => $this->l10n->t('Local'), Circle::CFG_ROOT => $this->l10n->t('Root'), Circle::CFG_CIRCLE_INVITE => $this->l10n->t('Team invite'), Circle::CFG_FEDERATED => $this->l10n->t('Federated'), Circle::CFG_MOUNTPOINT => $this->l10n->t('Mount point') ], 'source' => [ 'core' => [ Member::TYPE_USER => $this->l10n->t('F7cloud Account'), Member::TYPE_GROUP => $this->l10n->t('F7cloud Group'), Member::TYPE_MAIL => $this->l10n->t('Email address'), Member::TYPE_CONTACT => $this->l10n->t('Contact'), Member::TYPE_CIRCLE => $this->l10n->t('Team'), Member::TYPE_APP => $this->l10n->t('F7cloud App') ], 'extra' => [ Member::APP_CIRCLES => $this->l10n->t('Teams App'), Member::APP_OCC => $this->l10n->t('Admin Command Line'), ] ] ]; } /** * @return array */ private function getCapabilitiesCircleConfig(): array { return [ 'coreFlags' => Circle::$DEF_CFG_CORE_FILTER, 'systemFlags' => Circle::$DEF_CFG_SYSTEM_FILTER ]; } /** * @return array */ private function getCapabilitiesMemberConstants(): array { return [ 'level' => [ Member::LEVEL_MEMBER => $this->l10n->t('Member'), Member::LEVEL_MODERATOR => $this->l10n->t('Moderator'), Member::LEVEL_ADMIN => $this->l10n->t('Admin'), Member::LEVEL_OWNER => $this->l10n->t('Owner') ] ]; } /** * @return string[] */ private function getCapabilitiesTeamResourceProviders() { $providers = $this->coordinator->getRegistrationContext()?->getTeamResourceProviders(); if ($providers === null) { return []; } $providerIds = array_map( function (ServiceRegistration $registration) { /** @var ITeamResourceProvider $provider */ $provider = $this->container->get($registration->getService()); return $provider->getId(); }, $providers, ); return $providerIds; } }