TYPO3 CMS  TYPO3_8-7
TYPO3\CMS\Core\Package\PackageManager Class Reference
Inheritance diagram for TYPO3\CMS\Core\Package\PackageManager:
TYPO3\CMS\Core\SingletonInterface TYPO3\CMS\Core\Package\FailsafePackageManager TYPO3\CMS\Core\Package\UnitTestPackageManager

Public Member Functions

 __construct ()
 
 injectCoreCache (\TYPO3\CMS\Core\Cache\Frontend\PhpFrontend $coreCache)
 
 injectDependencyResolver (DependencyResolver $dependencyResolver)
 
 initialize ()
 
 scanAvailablePackages ()
 
 registerPackage (PackageInterface $package)
 
 getPackageKeyFromComposerName ($composerName)
 
 getPackage ($packageKey)
 
 isPackageAvailable ($packageKey)
 
 isPackageActive ($packageKey)
 
 deactivatePackage ($packageKey)
 
 activatePackage ($packageKey)
 
 activatePackageDuringRuntime ($packageKey)
 
 deletePackage ($packageKey)
 
 getActivePackages ()
 
 isPackageKeyValid ($packageKey)
 
 getAvailablePackages ()
 
 unregisterPackage (PackageInterface $package)
 
 getComposerManifest ($manifestPath)
 

Protected Member Functions

 getCacheIdentifier ()
 
 getCacheEntryIdentifier ()
 
 saveToPackageCache ()
 
 loadPackageManagerStatesFromCache ()
 
 loadPackageStates ()
 
 initializePackageObjects ()
 
 registerActivePackage (PackageInterface $package)
 
 initializeCompatibilityLoadedExtArray ()
 
 registerPackageDuringRuntime ($packageKey)
 
 registerPackagesFromConfiguration (array $packages, $registerOnlyNewPackages=false, $packageStatesHasChanged=false)
 
 unregisterPackageByPackageKey ($packageKey)
 
 registerTransientClassLoadingInformationForPackage (PackageInterface $package)
 
 isPackageRegistered ($packageKey)
 
 sortActivePackagesByDependencies ()
 
 resolvePackageDependencies ($packageConfig)
 
 getSuggestionArrayForPackage ($packageKey)
 
 sortAndSavePackageStates ()
 
 getExtensionEmConf ($packagePath)
 
 mapExtensionManagerConfigurationToComposerManifest ($packageKey, array $extensionManagerConfiguration, \stdClass $composerManifest)
 
 setComposerManifestValueIfEmpty (\stdClass $manifest, $property, $value)
 
 getDependencyArrayForPackage ($packageKey, array &$dependentPackageKeys=[], array $trace=[])
 
 getPackageKeyFromManifest ($manifest, $packagePath)
 
 getPackageBasePaths ()
 
 hasSubDirectories (string $path)
 

Protected Attributes

 $dependencyResolver
 
 $coreCache
 
 $cacheIdentifier
 
 $packagesBasePaths = []
 
 $packageAliasMap = []
 
 $runtimeActivatedPackages = []
 
 $packagesBasePath = PATH_site
 
 $packages = []
 
 $availablePackagesScanned = false
 
 $composerNameToPackageKeyMap = []
 
 $activePackages = []
 
 $packageStatesPathAndFilename
 
 $packageStatesConfiguration = []
 

Detailed Description

The default TYPO3 Package Manager Adapted from FLOW for TYPO3 CMS

Definition at line 32 of file PackageManager.php.

Constructor & Destructor Documentation

◆ __construct()

TYPO3\CMS\Core\Package\PackageManager::__construct ( )

Constructor

Definition at line 107 of file PackageManager.php.

Member Function Documentation

◆ activatePackage()

◆ activatePackageDuringRuntime()

TYPO3\CMS\Core\Package\PackageManager::activatePackageDuringRuntime (   $packageKey)

Enables packages during runtime, but no class aliases will be available

Parameters
string$packageKey

Definition at line 599 of file PackageManager.php.

References $GLOBALS, TYPO3\CMS\Core\Package\PackageManager\registerPackageDuringRuntime(), and TYPO3\CMS\Core\Package\PackageManager\registerTransientClassLoadingInformationForPackage().

◆ deactivatePackage()

TYPO3\CMS\Core\Package\PackageManager::deactivatePackage (   $packageKey)

◆ deletePackage()

◆ getActivePackages()

TYPO3\CMS\Core\Package\PackageManager::getActivePackages ( )

Returns an array of objects of all active packages. A package is active, if it is available and has been activated in the package manager settings. This method returns runtime activated packages too

Returns
PackageInterface[]

Definition at line 663 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\getPackage().

◆ getAvailablePackages()

TYPO3\CMS\Core\Package\PackageManager::getAvailablePackages ( )

Returns an array of objects of all available packages. A package is available, if the package directory contains valid meta information.

Returns
PackageInterface[] Array of PackageInterface

Definition at line 809 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\$packages, and TYPO3\CMS\Core\Package\PackageManager\scanAvailablePackages().

◆ getCacheEntryIdentifier()

◆ getCacheIdentifier()

TYPO3\CMS\Core\Package\PackageManager::getCacheIdentifier ( )
protected

◆ getComposerManifest()

TYPO3\CMS\Core\Package\PackageManager::getComposerManifest (   $manifestPath)

◆ getDependencyArrayForPackage()

TYPO3\CMS\Core\Package\PackageManager::getDependencyArrayForPackage (   $packageKey,
array &  $dependentPackageKeys = [],
array  $trace = [] 
)
protected

Returns an array of dependent package keys for the given package. It will do this recursively, so dependencies of dependent packages will also be in the result.

Parameters
string$packageKeyThe package key to fetch the dependencies for
array$dependentPackageKeys
array$traceAn array of already visited package keys, to detect circular dependencies
Returns
array|null An array of direct or indirect dependent packages
Exceptions
Exception

Definition at line 994 of file PackageManager.php.

References TYPO3\CMS\Core\Package\MetaData\CONSTRAINT_TYPE_DEPENDS.

Referenced by TYPO3\CMS\Core\Package\PackageManager\resolvePackageDependencies().

◆ getExtensionEmConf()

TYPO3\CMS\Core\Package\PackageManager::getExtensionEmConf (   $packagePath)
protected

Fetches MetaData information from ext_emconf.php, used for resolving dependencies as well.

Parameters
string$packagePath
Returns
array
Exceptions
Exception

Definition at line 889 of file PackageManager.php.

References $EM_CONF.

Referenced by TYPO3\CMS\Core\Package\PackageManager\getComposerManifest().

◆ getPackage()

TYPO3\CMS\Core\Package\PackageManager::getPackage (   $packageKey)

◆ getPackageBasePaths()

TYPO3\CMS\Core\Package\PackageManager::getPackageBasePaths ( )
protected

The order of paths is crucial for allowing overriding of system extension by local extensions. Pay attention if you change order of the paths here.

Returns
array

Definition at line 1050 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\$packagesBasePaths, and TYPO3\CMS\Core\Package\PackageManager\hasSubDirectories().

Referenced by TYPO3\CMS\Core\Package\PackageManager\registerPackageDuringRuntime().

◆ getPackageKeyFromComposerName()

TYPO3\CMS\Core\Package\PackageManager::getPackageKeyFromComposerName (   $composerName)

Resolves a TYPO3 package key from a composer package name.

Parameters
string$composerName
Returns
string

Definition at line 476 of file PackageManager.php.

Referenced by TYPO3\CMS\Core\Package\PackageManager\isPackageActive(), and TYPO3\CMS\Core\Package\PackageManager\isPackageRegistered().

◆ getPackageKeyFromManifest()

TYPO3\CMS\Core\Package\PackageManager::getPackageKeyFromManifest (   $manifest,
  $packagePath 
)
protected

Resolves package key from Composer manifest

If it is a TYPO3 package the name of the containing directory will be used.

Else if the composer name of the package matches the first part of the lowercased namespace of the package, the mixed case version of the composer name / namespace will be used, with backslashes replaced by dots.

Else the composer name will be used with the slash replaced by a dot

Parameters
object$manifest
string$packagePath
Exceptions
Exception

Definition at line 1031 of file PackageManager.php.

Referenced by TYPO3\CMS\Core\Package\PackageManager\registerPackageDuringRuntime(), and TYPO3\CMS\Core\Package\PackageManager\scanAvailablePackages().

◆ getSuggestionArrayForPackage()

TYPO3\CMS\Core\Package\PackageManager::getSuggestionArrayForPackage (   $packageKey)
protected

Returns an array of suggested package keys for the given package.

Parameters
string$packageKeyThe package key to fetch the suggestions for
Returns
array|null An array of directly suggested packages

Definition at line 735 of file PackageManager.php.

References TYPO3\CMS\Core\Package\MetaData\CONSTRAINT_TYPE_SUGGESTS.

Referenced by TYPO3\CMS\Core\Package\PackageManager\resolvePackageDependencies().

◆ hasSubDirectories()

TYPO3\CMS\Core\Package\PackageManager::hasSubDirectories ( string  $path)
protected

Returns true if the given path has valid subdirectories, false otherwise.

Parameters
string$path
Returns
bool

Definition at line 1071 of file PackageManager.php.

Referenced by TYPO3\CMS\Core\Package\PackageManager\getPackageBasePaths().

◆ initialize()

◆ initializeCompatibilityLoadedExtArray()

TYPO3\CMS\Core\Package\PackageManager::initializeCompatibilityLoadedExtArray ( )
protected

Initializes a backwards compatibility $GLOBALS['TYPO3_LOADED_EXT'] array

Definition at line 292 of file PackageManager.php.

References $GLOBALS.

Referenced by TYPO3\CMS\Core\Package\PackageManager\initialize(), and TYPO3\CMS\Core\Package\PackageManager\sortAndSavePackageStates().

◆ initializePackageObjects()

TYPO3\CMS\Core\Package\PackageManager::initializePackageObjects ( )
protected

Initializes activePackages property

Saves PackageStates.php if list of required extensions has changed.

Definition at line 256 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\$activePackages, TYPO3\CMS\Core\Package\PackageManager\registerActivePackage(), and TYPO3\CMS\Core\Package\PackageManager\sortAndSavePackageStates().

Referenced by TYPO3\CMS\Core\Package\PackageManager\initialize().

◆ injectCoreCache()

TYPO3\CMS\Core\Package\PackageManager::injectCoreCache ( \TYPO3\CMS\Core\Cache\Frontend\PhpFrontend  $coreCache)
Parameters
\TYPO3\CMS\Core\Cache\Frontend\PhpFrontend$coreCache

Definition at line 115 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\$coreCache.

◆ injectDependencyResolver()

TYPO3\CMS\Core\Package\PackageManager::injectDependencyResolver ( DependencyResolver  $dependencyResolver)
Parameters
DependencyResolver$dependencyResolver

Definition at line 123 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\$dependencyResolver.

◆ isPackageActive()

TYPO3\CMS\Core\Package\PackageManager::isPackageActive (   $packageKey)

Returns TRUE if a package is activated or FALSE if it's not.

Parameters
string$packageKeyThe key of the package to check
Returns
bool TRUE if package is active, otherwise FALSE

Definition at line 535 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\getPackageKeyFromComposerName().

Referenced by TYPO3\CMS\Core\Package\PackageManager\activatePackage(), TYPO3\CMS\Core\Package\PackageManager\deactivatePackage(), and TYPO3\CMS\Core\Package\PackageManager\deletePackage().

◆ isPackageAvailable()

TYPO3\CMS\Core\Package\PackageManager::isPackageAvailable (   $packageKey)

Returns TRUE if a package is available (the package's files exist in the packages directory) or FALSE if it's not. If a package is available it doesn't mean necessarily that it's active!

Parameters
string$packageKeyThe key of the package to check
Returns
bool TRUE if the package is available, otherwise FALSE

Definition at line 513 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\isPackageRegistered(), and TYPO3\CMS\Core\Package\PackageManager\scanAvailablePackages().

Referenced by TYPO3\CMS\Core\Package\PackageManager\deletePackage(), and TYPO3\CMS\Core\Package\PackageManager\getPackage().

◆ isPackageKeyValid()

TYPO3\CMS\Core\Package\PackageManager::isPackageKeyValid (   $packageKey)

Check the conformance of the given package key

Parameters
string$packageKeyThe package key to validate
Returns
bool If the package key is valid, returns TRUE otherwise FALSE

Definition at line 797 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageInterface\PATTERN_MATCH_EXTENSIONKEY, and TYPO3\CMS\Core\Package\PackageInterface\PATTERN_MATCH_PACKAGEKEY.

Referenced by TYPO3\CMS\Core\Package\Package\__construct(), and TYPO3\CMS\Core\Package\PackageManager\scanAvailablePackages().

◆ isPackageRegistered()

TYPO3\CMS\Core\Package\PackageManager::isPackageRegistered (   $packageKey)
protected

◆ loadPackageManagerStatesFromCache()

TYPO3\CMS\Core\Package\PackageManager::loadPackageManagerStatesFromCache ( )
protected

Attempts to load the package manager states from cache

Exceptions
Exception

Definition at line 198 of file PackageManager.php.

References $GLOBALS, and TYPO3\CMS\Core\Package\PackageManager\getCacheEntryIdentifier().

Referenced by TYPO3\CMS\Core\Package\PackageManager\initialize().

◆ loadPackageStates()

TYPO3\CMS\Core\Package\PackageManager::loadPackageStates ( )
protected

Loads the states of available packages from the PackageStates.php file. The result is stored in $this->packageStatesConfiguration.

Exceptions
Exception

Definition at line 224 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\$activePackages, and TYPO3\CMS\Core\Package\PackageManager\registerPackagesFromConfiguration().

Referenced by TYPO3\CMS\Core\Package\PackageManager\initialize().

◆ mapExtensionManagerConfigurationToComposerManifest()

TYPO3\CMS\Core\Package\PackageManager::mapExtensionManagerConfigurationToComposerManifest (   $packageKey,
array  $extensionManagerConfiguration,
\stdClass  $composerManifest 
)
protected

Fetches information from ext_emconf.php and maps it so it is treated as it would come from composer.json

Parameters
string$packageKey
array$extensionManagerConfiguration
\stdClass$composerManifest
Returns
Exceptions
Exception

Definition at line 913 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\setComposerManifestValueIfEmpty().

Referenced by TYPO3\CMS\Core\Package\PackageManager\getComposerManifest().

◆ registerActivePackage()

◆ registerPackage()

◆ registerPackageDuringRuntime()

◆ registerPackagesFromConfiguration()

TYPO3\CMS\Core\Package\PackageManager::registerPackagesFromConfiguration ( array  $packages,
  $registerOnlyNewPackages = false,
  $packageStatesHasChanged = false 
)
protected

◆ registerTransientClassLoadingInformationForPackage()

TYPO3\CMS\Core\Package\PackageManager::registerTransientClassLoadingInformationForPackage ( PackageInterface  $package)
protected

◆ resolvePackageDependencies()

TYPO3\CMS\Core\Package\PackageManager::resolvePackageDependencies (   $packageConfig)
protected

Resolves the dependent packages from the meta data of all packages recursively. The resolved direct or indirect dependencies of each package will put into the package states configuration array.

Parameters
$packageConfig
Returns
array

Definition at line 719 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\getDependencyArrayForPackage(), and TYPO3\CMS\Core\Package\PackageManager\getSuggestionArrayForPackage().

Referenced by TYPO3\CMS\Core\Package\PackageManager\sortActivePackagesByDependencies().

◆ saveToPackageCache()

◆ scanAvailablePackages()

◆ setComposerManifestValueIfEmpty()

TYPO3\CMS\Core\Package\PackageManager::setComposerManifestValueIfEmpty ( \stdClass  $manifest,
  $property,
  $value 
)
protected
Parameters
\stdClass$manifest
string$property
mixed$value
Returns

Definition at line 974 of file PackageManager.php.

Referenced by TYPO3\CMS\Core\Package\PackageManager\mapExtensionManagerConfigurationToComposerManifest().

◆ sortActivePackagesByDependencies()

TYPO3\CMS\Core\Package\PackageManager::sortActivePackagesByDependencies ( )
protected

Orders all active packages by comparing their dependencies. By this, the packages and package configurations arrays holds all packages in the correct initialization order.

Returns
array

Definition at line 695 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\registerActivePackage(), and TYPO3\CMS\Core\Package\PackageManager\resolvePackageDependencies().

Referenced by TYPO3\CMS\Core\Package\PackageManager\deactivatePackage(), and TYPO3\CMS\Core\Package\PackageManager\sortAndSavePackageStates().

◆ sortAndSavePackageStates()

◆ unregisterPackage()

TYPO3\CMS\Core\Package\PackageManager::unregisterPackage ( PackageInterface  $package)

Unregisters a package from the list of available packages

Parameters
PackageInterface$packageThe package to be unregistered
Exceptions
Exception

Definition at line 824 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageInterface\getPackageKey(), TYPO3\CMS\Core\Package\PackageManager\isPackageRegistered(), and TYPO3\CMS\Core\Package\PackageManager\unregisterPackageByPackageKey().

Referenced by TYPO3\CMS\Core\Package\PackageManager\deletePackage().

◆ unregisterPackageByPackageKey()

TYPO3\CMS\Core\Package\PackageManager::unregisterPackageByPackageKey (   $packageKey)
protected

Unregisters a package from the list of available packages

Parameters
string$packageKeyPackage Key of the package to be unregistered

Definition at line 455 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\getPackage().

Referenced by TYPO3\CMS\Core\Package\PackageManager\registerPackagesFromConfiguration(), and TYPO3\CMS\Core\Package\PackageManager\unregisterPackage().

Member Data Documentation

◆ $activePackages

TYPO3\CMS\Core\Package\PackageManager::$activePackages = []
protected

◆ $availablePackagesScanned

TYPO3\CMS\Core\Package\PackageManager::$availablePackagesScanned = false
protected

Definition at line 79 of file PackageManager.php.

◆ $cacheIdentifier

TYPO3\CMS\Core\Package\PackageManager::$cacheIdentifier
protected

◆ $composerNameToPackageKeyMap

TYPO3\CMS\Core\Package\PackageManager::$composerNameToPackageKeyMap = []
protected

◆ $coreCache

TYPO3\CMS\Core\Package\PackageManager::$coreCache
protected

◆ $dependencyResolver

TYPO3\CMS\Core\Package\PackageManager::$dependencyResolver
protected

◆ $packageAliasMap

TYPO3\CMS\Core\Package\PackageManager::$packageAliasMap = []
protected

◆ $packages

TYPO3\CMS\Core\Package\PackageManager::$packages = []
protected

◆ $packagesBasePath

TYPO3\CMS\Core\Package\PackageManager::$packagesBasePath = PATH_site
protected

Definition at line 68 of file PackageManager.php.

◆ $packagesBasePaths

TYPO3\CMS\Core\Package\PackageManager::$packagesBasePaths = []
protected

◆ $packageStatesConfiguration

TYPO3\CMS\Core\Package\PackageManager::$packageStatesConfiguration = []
protected

◆ $packageStatesPathAndFilename

TYPO3\CMS\Core\Package\PackageManager::$packageStatesPathAndFilename
protected

Definition at line 96 of file PackageManager.php.

◆ $runtimeActivatedPackages

TYPO3\CMS\Core\Package\PackageManager::$runtimeActivatedPackages = []
protected

Definition at line 62 of file PackageManager.php.