From 6ff1e627a7c4613dfa8a7a5eba498bf7e11b55f6 Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Tue, 14 Apr 2015 14:56:10 +0200 Subject: [PATCH 1/3] Ship EOM/EOL information with the symfony release instead of requesting it from symfony.com. --- .../DataCollector/ConfigDataCollector.php | 66 ++++--------------- src/Symfony/Component/HttpKernel/Kernel.php | 3 + 2 files changed, 16 insertions(+), 53 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php index 3344283a0d96e..5888db9f5bc75 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php @@ -83,7 +83,7 @@ public function collect(Request $request, Response $response, \Exception $except $this->data['bundles'][$name] = $bundle->getPath(); } - $this->data['symfony_state'] = $this->requestSymfonyState(); + $this->data['symfony_state'] = $this->caculateSymfonyState(); } } @@ -270,60 +270,20 @@ public function getName() * * @return string One of: unknown, dev, stable, eom, eol */ - private function requestSymfonyState() + private function caculateSymfonyState() { - $versionInfo = null; - - // get version information from cache or the roadmap - $versionCachePath = $this->kernel->getCacheDir().'/version_info.json'; - if (file_exists($versionCachePath)) { - $versionInfo = json_decode(file_get_contents($versionCachePath), true); + $now = new \DateTime(); + $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE)->modify('last day of this month'); + $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE)->modify('last day of this month'); + + if ($now > $eol) { + $versionState = 'eol'; + } elseif ($now > $eom) { + $versionState = 'eom'; + } elseif ('DEV' === Kernel::EXTRA_VERSION) { + $versionState = 'dev'; } else { - $versionResponse = @file_get_contents('http://symfony.com/roadmap.json?version='.preg_replace('/^(\d+\.\d+).*/', '\\1', $this->data['symfony_version'])); - - if (false !== $versionResponse) { - $versionInfo = json_decode($versionResponse, true); - - if (isset($versionInfo['error_message'])) { - // wrong version - $versionInfo = null; - } - } - } - - // get the version state - $versionState = 'unknown'; - if (null !== $versionInfo) { - $now = new \DateTime(); - $eom = \DateTime::createFromFormat('m/Y', $versionInfo['eom'])->modify('last day of this month'); - $eol = \DateTime::createFromFormat('m/Y', $versionInfo['eol'])->modify('last day of this month'); - - if ($now > $eom) { - $versionState = 'eom'; - } elseif ($now > $eol) { - $versionState = 'eol'; - } elseif ('DEV' === Kernel::EXTRA_VERSION) { - $versionState = 'dev'; - } else { - $versionState = 'stable'; - } - } - - // invalidate or create cache - if (null === $versionInfo) { - // nothing to cache - } elseif (isset($versionInfo['previous_state'])) { - if ($versionInfo['previous_state'] !== $versionState) { - // state changed => invalidate the cache - unlink($versionCachePath); - } - } elseif (substr(Kernel::VERSION, 0, 3) !== $versionInfo['version']) { - // version changed => invalidate the cache - unlink($versionCachePath); - } elseif ($this->cacheVersionInfo) { - // no cache yet - $versionInfo['previous_state'] = $versionState; - file_put_contents($versionCachePath, json_encode($versionInfo)); + $versionState = 'stable'; } return $versionState; diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index fe7657ff27b18..9f06edb923bde 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -67,6 +67,9 @@ abstract class Kernel implements KernelInterface, TerminableInterface const RELEASE_VERSION = '0'; const EXTRA_VERSION = 'DEV'; + const END_OF_MAINTENANCE = '05/2018'; + const END_OF_LIFE = '05/2019'; + /** * Constructor. * From 5c59148d905fa541fed918d2f77afcd565bcd521 Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Tue, 14 Apr 2015 16:15:17 +0200 Subject: [PATCH 2/3] Typo --- .../HttpKernel/DataCollector/ConfigDataCollector.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php index 5888db9f5bc75..750530f50ecaa 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php @@ -83,7 +83,7 @@ public function collect(Request $request, Response $response, \Exception $except $this->data['bundles'][$name] = $bundle->getPath(); } - $this->data['symfony_state'] = $this->caculateSymfonyState(); + $this->data['symfony_state'] = $this->calculateSymfonyState(); } } @@ -270,7 +270,7 @@ public function getName() * * @return string One of: unknown, dev, stable, eom, eol */ - private function caculateSymfonyState() + private function calculateSymfonyState() { $now = new \DateTime(); $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE)->modify('last day of this month'); From 6060735697d8febeb612891b61659642e1894afd Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Sun, 19 Apr 2015 14:31:05 +0200 Subject: [PATCH 3/3] Changes from PR discussion: * Renamed calculateSymfonyState() once again to determineSymfonyState(). * Beta and RC versions should be reported as unstable. * "unknown" ist not a possible state anymore. --- .../HttpKernel/DataCollector/ConfigDataCollector.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php index 750530f50ecaa..853adcb300a2c 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php @@ -83,7 +83,7 @@ public function collect(Request $request, Response $response, \Exception $except $this->data['bundles'][$name] = $bundle->getPath(); } - $this->data['symfony_state'] = $this->calculateSymfonyState(); + $this->data['symfony_state'] = $this->determineSymfonyState(); } } @@ -268,9 +268,9 @@ public function getName() /** * Tries to retrieve information about the current Symfony version. * - * @return string One of: unknown, dev, stable, eom, eol + * @return string One of: dev, stable, eom, eol */ - private function calculateSymfonyState() + private function determineSymfonyState() { $now = new \DateTime(); $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE)->modify('last day of this month'); @@ -280,7 +280,7 @@ private function calculateSymfonyState() $versionState = 'eol'; } elseif ($now > $eom) { $versionState = 'eom'; - } elseif ('DEV' === Kernel::EXTRA_VERSION) { + } elseif ('' !== Kernel::EXTRA_VERSION) { $versionState = 'dev'; } else { $versionState = 'stable';