‪TYPO3CMS  ‪main
FailsafePackageManager.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
20 
26 class ‪FailsafePackageManager extends PackageManager
27 {
31  protected ‪$inFailsafeMode = false;
32 
37  protected function ‪loadPackageStates()
38  {
39  try {
40  parent::loadPackageStates();
41  } catch (‪PackageStatesUnavailableException $exception) {
42  $this->inFailsafeMode = true;
43  $this->scanAvailablePackages();
44  }
45  }
46 
50  protected function ‪saveToPackageCache(): void
51  {
52  // Do not save cache if in rescue mode
53  if (!$this->inFailsafeMode) {
54  parent::saveToPackageCache();
55  }
56  }
57 
61  protected function ‪savePackageStates()
62  {
63  // Do not save if in rescue mode
64  if (!$this->inFailsafeMode) {
65  parent::savePackageStates();
66  }
67  }
68 
73  public function ‪forceSortAndSavePackageStates()
74  {
75  $this->sortActivePackagesByDependencies();
76  parent::savePackageStates();
77  }
78 
87  public function ‪recreatePackageStatesFileIfMissing(bool $useFactoryDefault = false): void
88  {
89  if (!‪Environment::isComposerMode() && !file_exists($this->packageStatesPathAndFilename)) {
90  $packages = $this->getAvailablePackages();
91  foreach ($packages as $package) {
92  if ($package instanceof ‪PackageInterface && ($useFactoryDefault ? $package->isPartOfFactoryDefault() : $package->isPartOfMinimalUsableSystem())) {
93  $this->activatePackage($package->getPackageKey());
94  }
95  }
97  }
98  }
99 }
‪TYPO3\CMS\Core\Package\FailsafePackageManager
Definition: FailsafePackageManager.php:27
‪TYPO3\CMS\Core\Core\Environment\isComposerMode
‪static isComposerMode()
Definition: Environment.php:137
‪TYPO3\CMS\Core\Package\FailsafePackageManager\forceSortAndSavePackageStates
‪forceSortAndSavePackageStates()
Definition: FailsafePackageManager.php:72
‪TYPO3\CMS\Core\Package\PackageInterface
Definition: PackageInterface.php:24
‪TYPO3\CMS\Core\Package\Exception\PackageStatesUnavailableException
Definition: PackageStatesUnavailableException.php:23
‪TYPO3\CMS\Core\Package\FailsafePackageManager\saveToPackageCache
‪saveToPackageCache()
Definition: FailsafePackageManager.php:49
‪TYPO3\CMS\Core\Package\FailsafePackageManager\loadPackageStates
‪loadPackageStates()
Definition: FailsafePackageManager.php:36
‪TYPO3\CMS\Core\Package\FailsafePackageManager\recreatePackageStatesFileIfMissing
‪recreatePackageStatesFileIfMissing(bool $useFactoryDefault=false)
Definition: FailsafePackageManager.php:86
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Core\Package\FailsafePackageManager\$inFailsafeMode
‪bool $inFailsafeMode
Definition: FailsafePackageManager.php:30
‪TYPO3\CMS\Core\Package\FailsafePackageManager\savePackageStates
‪savePackageStates()
Definition: FailsafePackageManager.php:60
‪TYPO3\CMS\Core\Package
Definition: AbstractServiceProvider.php:18