| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\Diagnostics\Diagnostic; |
|
|
| use Piwik\Http; |
| use Piwik\SettingsPiwik; |
| use Piwik\Translation\Translator; |
| use Piwik\Url; |
| use Piwik\Log\LoggerInterface; |
|
|
| |
| |
| |
| class PageSpeedCheck implements Diagnostic |
| { |
| |
| |
| |
| private $translator; |
|
|
| |
| |
| |
| private $logger; |
|
|
| public function __construct(Translator $translator, LoggerInterface $logger) |
| { |
| $this->translator = $translator; |
| $this->logger = $logger; |
| } |
|
|
| public function execute() |
| { |
| $label = $this->translator->translate('Installation_SystemCheckPageSpeedDisabled'); |
|
|
| if (! $this->isPageSpeedEnabled()) { |
| return [DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK)]; |
| } |
|
|
| $comment = $this->translator->translate('Installation_SystemCheckPageSpeedWarning', [ |
| '(eg. Apache, Nginx or IIS)', |
| ]); |
|
|
| return [DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_WARNING, $comment)]; |
| } |
|
|
| private function isPageSpeedEnabled() |
| { |
| try { |
| $matomoUrl = SettingsPiwik::getPiwikUrl(); |
| } catch (\Exception $e) { |
| $matomoUrl = Url::getCurrentUrlWithoutQueryString(); |
| } |
|
|
| if (empty($matomoUrl)) { |
| |
| return false; |
| } |
|
|
| $url = $matomoUrl . '?module=Installation&action=getEmptyPageForSystemCheck'; |
|
|
| try { |
| $page = Http::sendHttpRequest( |
| $url, |
| $timeout = 1, |
| $userAgent = null, |
| $destinationPath = null, |
| $followDepth = 0, |
| $acceptLanguage = false, |
| $byteRange = false, |
| // Return headers |
| $getExtendedInfo = true |
| ); |
| } catch (\Exception $e) { |
| $this->logger->info('Unable to test if mod_pagespeed is enabled: the request to {url} failed', [ |
| 'url' => $url, |
| ]); |
| |
| return false; |
| } |
|
|
| return isset($page['headers']['X-Mod-Pagespeed']) || isset($page['headers']['X-Page-Speed']); |
| } |
| } |
|
|