translator = $translator; } public function execute() { $isMatomoInstalling = !Config::getInstance()->existsLocalConfig(); if ($isMatomoInstalling) { // Skip the diagnostic if Matomo is being installed return array(); } $label = $this->translator->translate('UserCountry_Geolocation'); $currentProviderId = LocationProvider::getCurrentProviderId(); $allProviders = LocationProvider::getAllProviderInfo(); $providerStatus = $allProviders[$currentProviderId]['status'] ?? LocationProvider::NOT_INSTALLED; $providerWarning = $allProviders[$currentProviderId]['usageWarning'] ?? null; $statusMessage = $allProviders[$currentProviderId]['statusMessage'] ?? null; if ($providerStatus === LocationProvider::BROKEN) { $message = Piwik::translate('UserCountry_GeolocationProviderBroken', '' . $allProviders[$currentProviderId]['title'] . ''); if ($statusMessage) { $message .= '

' . $statusMessage; } return [DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_ERROR, $message)]; } if ($providerStatus === LocationProvider::NOT_INSTALLED) { $provider = $allProviders[$currentProviderId] ?? null; if ($provider) { $message = Piwik::translate('UserCountry_GeolocationProviderBroken', '' . $allProviders[$currentProviderId]['title'] . ''); } else { $message = Piwik::translate('UserCountry_GeolocationProviderUnavailable', '' . LocationProvider::getCurrentProviderId() . ''); } return [DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_ERROR, $message)]; } if (!empty($providerWarning)) { return [DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_WARNING, $providerWarning)]; } $availableInfo = LocationProvider::getProviderById($currentProviderId)->getSupportedLocationInfo(); $message = sprintf("%s (%s)", $currentProviderId, implode(', ', array_keys(array_filter($availableInfo)))); return [DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK, $message)]; } }