[TASK] Only show active packages in PackageStates.php
[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 bool TRUE if package manager is in failsafe mode
26 */
27 protected $inFailsafeMode = false;
28
29 /**
30 * Loads the states of available packages from the PackageStates.php file.
31 * The result is stored in $this->packageStatesConfiguration.
32 *
33 * @return void
34 */
35 protected function loadPackageStates()
36 {
37 try {
38 parent::loadPackageStates();
39 } catch (Exception\PackageStatesUnavailableException $exception) {
40 $this->inFailsafeMode = true;
41 $this->packageStatesConfiguration = array();
42 $this->scanAvailablePackages();
43 }
44 }
45
46 /**
47 * Sort and save states
48 *
49 * @return void
50 */
51 protected function sortAndSavePackageStates()
52 {
53 // Do not save if in rescue mode
54 if (!$this->inFailsafeMode) {
55 parent::sortAndSavePackageStates();
56 }
57 }
58
59 /**
60 * To enable writing of the package states file the package states
61 * migration needs to override eventual failsafe blocks.
62 */
63 public function forceSortAndSavePackageStates()
64 {
65 parent::sortAndSavePackageStates();
66 }
67 }