[TASK] PHP7 compliance - part 1
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Package / FailsafePackageManager.php
1 <?php
2 namespace TYPO3\CMS\Core\Package;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 /**
18 * This is an intermediate package manager that loads just
19 * the required extensions for the install in case the package
20 * states are unavailable.
21 */
22 class FailsafePackageManager extends PackageManager {
23
24 /**
25 * @var \TYPO3\CMS\Core\Configuration\ConfigurationManager
26 */
27 protected $configurationManager;
28
29 /**
30 * @var bool TRUE if package manager is in failsafe mode
31 */
32 protected $inFailsafeMode = FALSE;
33
34 /**
35 * Constructor
36 */
37 public function __construct() {
38 $this->configurationManager = new \TYPO3\CMS\Core\Configuration\ConfigurationManager;
39 parent::__construct();
40 }
41
42 /**
43 * Loads the states of available packages from the PackageStates.php file.
44 * The result is stored in $this->packageStatesConfiguration.
45 *
46 * @return void
47 */
48 protected function loadPackageStates() {
49 try {
50 parent::loadPackageStates();
51 } catch (Exception\PackageStatesUnavailableException $exception) {
52 $this->inFailsafeMode = TRUE;
53 $this->packageStatesConfiguration = array();
54 $this->scanAvailablePackages();
55 }
56 }
57
58 /**
59 * Requires and registers all packages which were defined in packageStatesConfiguration
60 *
61 * @return void
62 */
63 protected function registerPackagesFromConfiguration($registerOnlyNewPackages = FALSE) {
64 $this->packageStatesConfiguration['packages']['install']['state'] = 'active';
65 parent::registerPackagesFromConfiguration();
66 }
67
68 /**
69 * Sort and save states
70 *
71 * @return void
72 */
73 protected function sortAndSavePackageStates() {
74 // Do not save if in rescue mode
75 if (!$this->inFailsafeMode) {
76 parent::sortAndSavePackageStates();
77 }
78 }
79
80 /**
81 * To enable writing of the package states file the package states
82 * migration needs to override eventual failsafe blocks.
83 */
84 public function forceSortAndSavePackageStates() {
85 parent::sortAndSavePackageStates();
86 }
87
88 }