diff options
author | Jeremy Benoist <jeremy.benoist@gmail.com> | 2016-09-11 15:53:16 +0200 |
---|---|---|
committer | Jeremy Benoist <jeremy.benoist@gmail.com> | 2016-09-11 15:53:16 +0200 |
commit | 58fadbc9df3f8b735c04995919b6cf913ca6a977 (patch) | |
tree | bab121477c81ee68c1b0300464c2532407290222 | |
parent | 04d5c60216eb4577fbf9846d10862a332d7656fd (diff) | |
download | wallabag-58fadbc9df3f8b735c04995919b6cf913ca6a977.tar.gz wallabag-58fadbc9df3f8b735c04995919b6cf913ca6a977.tar.zst wallabag-58fadbc9df3f8b735c04995919b6cf913ca6a977.zip |
Fix error on EntityManager clear
Introduced in the recent 2.5.5 release.
Also updated deps.
-rwxr-xr-x | bin/symfony_requirements | 13 | ||||
-rw-r--r-- | src/Wallabag/ImportBundle/Import/PocketImport.php | 5 | ||||
-rw-r--r-- | src/Wallabag/ImportBundle/Import/ReadabilityImport.php | 5 | ||||
-rw-r--r-- | src/Wallabag/ImportBundle/Import/WallabagImport.php | 5 | ||||
-rw-r--r-- | var/SymfonyRequirements.php | 74 |
5 files changed, 76 insertions, 26 deletions
diff --git a/bin/symfony_requirements b/bin/symfony_requirements index 8825a964..a7bf65a1 100755 --- a/bin/symfony_requirements +++ b/bin/symfony_requirements | |||
@@ -22,7 +22,6 @@ echo '> Checking Symfony requirements:'.PHP_EOL.' '; | |||
22 | 22 | ||
23 | $messages = array(); | 23 | $messages = array(); |
24 | foreach ($symfonyRequirements->getRequirements() as $req) { | 24 | foreach ($symfonyRequirements->getRequirements() as $req) { |
25 | /** @var $req Requirement */ | ||
26 | if ($helpText = get_error_message($req, $lineSize)) { | 25 | if ($helpText = get_error_message($req, $lineSize)) { |
27 | echo_style('red', 'E'); | 26 | echo_style('red', 'E'); |
28 | $messages['error'][] = $helpText; | 27 | $messages['error'][] = $helpText; |
@@ -121,10 +120,14 @@ function echo_block($style, $title, $message) | |||
121 | 120 | ||
122 | echo PHP_EOL.PHP_EOL; | 121 | echo PHP_EOL.PHP_EOL; |
123 | 122 | ||
124 | echo_style($style, str_repeat(' ', $width).PHP_EOL); | 123 | echo_style($style, str_repeat(' ', $width)); |
125 | echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL); | 124 | echo PHP_EOL; |
126 | echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL); | 125 | echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT)); |
127 | echo_style($style, str_repeat(' ', $width).PHP_EOL); | 126 | echo PHP_EOL; |
127 | echo_style($style, $message); | ||
128 | echo PHP_EOL; | ||
129 | echo_style($style, str_repeat(' ', $width)); | ||
130 | echo PHP_EOL; | ||
128 | } | 131 | } |
129 | 132 | ||
130 | function has_color_support() | 133 | function has_color_support() |
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php index 798cfdae..841f829d 100644 --- a/src/Wallabag/ImportBundle/Import/PocketImport.php +++ b/src/Wallabag/ImportBundle/Import/PocketImport.php | |||
@@ -255,7 +255,10 @@ class PocketImport extends AbstractImport | |||
255 | // flush every 20 entries | 255 | // flush every 20 entries |
256 | if (($i % 20) === 0) { | 256 | if (($i % 20) === 0) { |
257 | $this->em->flush(); | 257 | $this->em->flush(); |
258 | $this->em->clear($entry); | 258 | |
259 | // clear only affected entities | ||
260 | $this->em->clear(Entry::class); | ||
261 | $this->em->clear(Tag::class); | ||
259 | } | 262 | } |
260 | ++$i; | 263 | ++$i; |
261 | } | 264 | } |
diff --git a/src/Wallabag/ImportBundle/Import/ReadabilityImport.php b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php index 37b160c5..7bae647d 100644 --- a/src/Wallabag/ImportBundle/Import/ReadabilityImport.php +++ b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php | |||
@@ -169,7 +169,10 @@ class ReadabilityImport extends AbstractImport | |||
169 | // flush every 20 entries | 169 | // flush every 20 entries |
170 | if (($i % 20) === 0) { | 170 | if (($i % 20) === 0) { |
171 | $this->em->flush(); | 171 | $this->em->flush(); |
172 | $this->em->clear($entry); | 172 | |
173 | // clear only affected entities | ||
174 | $this->em->clear(Entry::class); | ||
175 | $this->em->clear(Tag::class); | ||
173 | } | 176 | } |
174 | ++$i; | 177 | ++$i; |
175 | } | 178 | } |
diff --git a/src/Wallabag/ImportBundle/Import/WallabagImport.php b/src/Wallabag/ImportBundle/Import/WallabagImport.php index a1cc085b..9cd3dcb8 100644 --- a/src/Wallabag/ImportBundle/Import/WallabagImport.php +++ b/src/Wallabag/ImportBundle/Import/WallabagImport.php | |||
@@ -172,7 +172,10 @@ abstract class WallabagImport extends AbstractImport | |||
172 | // flush every 20 entries | 172 | // flush every 20 entries |
173 | if (($i % 20) === 0) { | 173 | if (($i % 20) === 0) { |
174 | $this->em->flush(); | 174 | $this->em->flush(); |
175 | $this->em->clear($entry); | 175 | |
176 | // clear only affected entities | ||
177 | $this->em->clear(Entry::class); | ||
178 | $this->em->clear(Tag::class); | ||
176 | } | 179 | } |
177 | ++$i; | 180 | ++$i; |
178 | } | 181 | } |
diff --git a/var/SymfonyRequirements.php b/var/SymfonyRequirements.php index 0a5de546..f3e8ca8e 100644 --- a/var/SymfonyRequirements.php +++ b/var/SymfonyRequirements.php | |||
@@ -168,6 +168,9 @@ class PhpIniRequirement extends Requirement | |||
168 | */ | 168 | */ |
169 | class RequirementCollection implements IteratorAggregate | 169 | class RequirementCollection implements IteratorAggregate |
170 | { | 170 | { |
171 | /** | ||
172 | * @var Requirement[] | ||
173 | */ | ||
171 | private $requirements = array(); | 174 | private $requirements = array(); |
172 | 175 | ||
173 | /** | 176 | /** |
@@ -265,7 +268,7 @@ class RequirementCollection implements IteratorAggregate | |||
265 | /** | 268 | /** |
266 | * Returns both requirements and recommendations. | 269 | * Returns both requirements and recommendations. |
267 | * | 270 | * |
268 | * @return array Array of Requirement instances | 271 | * @return Requirement[] |
269 | */ | 272 | */ |
270 | public function all() | 273 | public function all() |
271 | { | 274 | { |
@@ -275,7 +278,7 @@ class RequirementCollection implements IteratorAggregate | |||
275 | /** | 278 | /** |
276 | * Returns all mandatory requirements. | 279 | * Returns all mandatory requirements. |
277 | * | 280 | * |
278 | * @return array Array of Requirement instances | 281 | * @return Requirement[] |
279 | */ | 282 | */ |
280 | public function getRequirements() | 283 | public function getRequirements() |
281 | { | 284 | { |
@@ -292,7 +295,7 @@ class RequirementCollection implements IteratorAggregate | |||
292 | /** | 295 | /** |
293 | * Returns the mandatory requirements that were not met. | 296 | * Returns the mandatory requirements that were not met. |
294 | * | 297 | * |
295 | * @return array Array of Requirement instances | 298 | * @return Requirement[] |
296 | */ | 299 | */ |
297 | public function getFailedRequirements() | 300 | public function getFailedRequirements() |
298 | { | 301 | { |
@@ -309,7 +312,7 @@ class RequirementCollection implements IteratorAggregate | |||
309 | /** | 312 | /** |
310 | * Returns all optional recommendations. | 313 | * Returns all optional recommendations. |
311 | * | 314 | * |
312 | * @return array Array of Requirement instances | 315 | * @return Requirement[] |
313 | */ | 316 | */ |
314 | public function getRecommendations() | 317 | public function getRecommendations() |
315 | { | 318 | { |
@@ -326,7 +329,7 @@ class RequirementCollection implements IteratorAggregate | |||
326 | /** | 329 | /** |
327 | * Returns the recommendations that were not met. | 330 | * Returns the recommendations that were not met. |
328 | * | 331 | * |
329 | * @return array Array of Requirement instances | 332 | * @return Requirement[] |
330 | */ | 333 | */ |
331 | public function getFailedRecommendations() | 334 | public function getFailedRecommendations() |
332 | { | 335 | { |
@@ -376,7 +379,8 @@ class RequirementCollection implements IteratorAggregate | |||
376 | */ | 379 | */ |
377 | class SymfonyRequirements extends RequirementCollection | 380 | class SymfonyRequirements extends RequirementCollection |
378 | { | 381 | { |
379 | const REQUIRED_PHP_VERSION = '5.3.3'; | 382 | const LEGACY_REQUIRED_PHP_VERSION = '5.3.3'; |
383 | const REQUIRED_PHP_VERSION = '5.5.9'; | ||
380 | 384 | ||
381 | /** | 385 | /** |
382 | * Constructor that initializes the requirements. | 386 | * Constructor that initializes the requirements. |
@@ -386,16 +390,26 @@ class SymfonyRequirements extends RequirementCollection | |||
386 | /* mandatory requirements follow */ | 390 | /* mandatory requirements follow */ |
387 | 391 | ||
388 | $installedPhpVersion = phpversion(); | 392 | $installedPhpVersion = phpversion(); |
393 | $requiredPhpVersion = $this->getPhpRequiredVersion(); | ||
389 | 394 | ||
390 | $this->addRequirement( | 395 | $this->addRecommendation( |
391 | version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='), | 396 | $requiredPhpVersion, |
392 | sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion), | 397 | 'Vendors should be installed in order to check all requirements.', |
393 | sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run. | 398 | 'Run the <code>composer install</code> command.', |
394 | Before using Symfony, upgrade your PHP installation, preferably to the latest version.', | 399 | 'Run the "composer install" command.' |
395 | $installedPhpVersion, self::REQUIRED_PHP_VERSION), | ||
396 | sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion) | ||
397 | ); | 400 | ); |
398 | 401 | ||
402 | if (false !== $requiredPhpVersion) { | ||
403 | $this->addRequirement( | ||
404 | version_compare($installedPhpVersion, $requiredPhpVersion, '>='), | ||
405 | sprintf('PHP version must be at least %s (%s installed)', $requiredPhpVersion, $installedPhpVersion), | ||
406 | sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run. | ||
407 | Before using Symfony, upgrade your PHP installation, preferably to the latest version.', | ||
408 | $installedPhpVersion, $requiredPhpVersion), | ||
409 | sprintf('Install PHP %s or newer (installed version is %s)', $requiredPhpVersion, $installedPhpVersion) | ||
410 | ); | ||
411 | } | ||
412 | |||
399 | $this->addRequirement( | 413 | $this->addRequirement( |
400 | version_compare($installedPhpVersion, '5.3.16', '!='), | 414 | version_compare($installedPhpVersion, '5.3.16', '!='), |
401 | 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', | 415 | 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', |
@@ -433,7 +447,7 @@ class SymfonyRequirements extends RequirementCollection | |||
433 | ); | 447 | ); |
434 | } | 448 | } |
435 | 449 | ||
436 | if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) { | 450 | if (false !== $requiredPhpVersion && version_compare($installedPhpVersion, $requiredPhpVersion, '>=')) { |
437 | $timezones = array(); | 451 | $timezones = array(); |
438 | foreach (DateTimeZone::listAbbreviations() as $abbreviations) { | 452 | foreach (DateTimeZone::listAbbreviations() as $abbreviations) { |
439 | foreach ($abbreviations as $abbreviation) { | 453 | foreach ($abbreviations as $abbreviation) { |
@@ -689,7 +703,7 @@ class SymfonyRequirements extends RequirementCollection | |||
689 | $this->addRecommendation( | 703 | $this->addRecommendation( |
690 | \Symfony\Component\Intl\Intl::getIcuDataVersion() === \Symfony\Component\Intl\Intl::getIcuVersion(), | 704 | \Symfony\Component\Intl\Intl::getIcuDataVersion() === \Symfony\Component\Intl\Intl::getIcuVersion(), |
691 | sprintf('intl ICU version installed on your system (%s) does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()), | 705 | sprintf('intl ICU version installed on your system (%s) does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()), |
692 | 'To avoid internationalization data incosistencies upgrade the symfony/intl component.' | 706 | 'To avoid internationalization data inconsistencies upgrade the symfony/intl component.' |
693 | ); | 707 | ); |
694 | } | 708 | } |
695 | } | 709 | } |
@@ -725,9 +739,9 @@ class SymfonyRequirements extends RequirementCollection | |||
725 | 739 | ||
726 | if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { | 740 | if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { |
727 | $this->addRecommendation( | 741 | $this->addRecommendation( |
728 | $this->getRealpathCacheSize() > 1000, | 742 | $this->getRealpathCacheSize() > 5 * 1024 * 1024, |
729 | 'realpath_cache_size should be above 1024 in php.ini', | 743 | 'realpath_cache_size should be above 5242880 in php.ini', |
730 | 'Set "<strong>realpath_cache_size</strong>" to e.g. "<strong>1024</strong>" in php.ini<a href="#phpini">*</a> to improve performance on windows.' | 744 | 'Setting "<strong>realpath_cache_size</strong>" to e.g. "<strong>5242880</strong>" or "<strong>5000k</strong>" in php.ini<a href="#phpini">*</a> may improve performance on Windows significantly in some cases.' |
731 | ); | 745 | ); |
732 | } | 746 | } |
733 | 747 | ||
@@ -778,4 +792,28 @@ class SymfonyRequirements extends RequirementCollection | |||
778 | return (int) $size; | 792 | return (int) $size; |
779 | } | 793 | } |
780 | } | 794 | } |
795 | |||
796 | /** | ||
797 | * Defines PHP required version from Symfony version. | ||
798 | * | ||
799 | * @return string|false The PHP required version or false if it could not be guessed | ||
800 | */ | ||
801 | protected function getPhpRequiredVersion() | ||
802 | { | ||
803 | if (!file_exists($path = __DIR__.'/../composer.lock')) { | ||
804 | return false; | ||
805 | } | ||
806 | |||
807 | $composerLock = json_decode(file_get_contents($path), true); | ||
808 | foreach ($composerLock['packages'] as $package) { | ||
809 | $name = $package['name']; | ||
810 | if ('symfony/symfony' !== $name && 'symfony/http-kernel' !== $name) { | ||
811 | continue; | ||
812 | } | ||
813 | |||
814 | return (int) $package['version'][1] > 2 ? self::REQUIRED_PHP_VERSION : self::LEGACY_REQUIRED_PHP_VERSION; | ||
815 | } | ||
816 | |||
817 | return false; | ||
818 | } | ||
781 | } | 819 | } |