TYPO3 CMS  TYPO3_7-6
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 (Bootstrap $bootstrap)
 
 scanAvailablePackages ()
 
 registerPackage (PackageInterface $package, $sortAndSave=true)
 
 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 ()
 
 initializeCompatibilityLoadedExtArray ()
 
 hasComposerManifestFile ($packagePath)
 
 registerPackagesFromConfiguration ($registerOnlyNewPackages=false)
 
 unregisterPackageByPackageKey ($packageKey)
 
 registerTransientClassLoadingInformationForPackage (PackageInterface $package)
 
 sortAvailablePackagesByDependencies ()
 
 resolvePackageDependencies ()
 
 getSuggestionArrayForPackage ($packageKey)
 
 sortAndSavePackageStates ()
 
 scanPackagesInPath ($startPath, array $collectedPackagePaths)
 
 getExtensionEmConf ($packagePath)
 
 mapExtensionManagerConfigurationToComposerManifest ($packageKey, array $extensionManagerConfiguration, \stdClass $composerManifest)
 
 setComposerManifestValueIfEmpty (\stdClass $manifest, $property, $value)
 
 getDependencyArrayForPackage ($packageKey, array &$dependentPackageKeys=[], array $trace=[])
 
 getPackageKeyFromManifest ($manifest, $packagePath, $packagesBasePath)
 

Protected Attributes

 $dependencyResolver
 
 $bootstrap
 
 $coreCache
 
 $cacheIdentifier
 
 $packagesBasePaths = []
 
 $packageAliasMap = []
 
 $requiredPackageKeys = []
 
 $runtimeActivatedPackages = []
 
 $packagesBasePath = PATH_site
 
 $packages = []
 
 $packageKeys = []
 
 $composerNameToPackageKeyMap = []
 
 $activePackages = []
 
 $packageStatesPathAndFilename
 
 $packageStatesConfiguration = []
 

Detailed Description

The default TYPO3 Package Manager Adapted from FLOW for TYPO3 CMS

Definition at line 30 of file PackageManager.php.

Constructor & Destructor Documentation

◆ __construct()

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

Constructor

Definition at line 116 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 667 of file PackageManager.php.

References $GLOBALS, TYPO3\CMS\Core\Package\PackageManager\getPackage(), 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 732 of file PackageManager.php.

◆ 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 863 of file PackageManager.php.

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

◆ 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 dependant 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 dependant packages
Exceptions
Exception

Definition at line 1074 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 970 of file PackageManager.php.

References $EM_CONF.

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

◆ getPackage()

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

◆ 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 538 of file PackageManager.php.

◆ getPackageKeyFromManifest()

TYPO3\CMS\Core\Package\PackageManager::getPackageKeyFromManifest (   $manifest,
  $packagePath,
  $packagesBasePath 
)
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
string$packagesBasePath
Exceptions
Exception

Definition at line 1112 of file PackageManager.php.

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

Referenced by 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 783 of file PackageManager.php.

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

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

◆ hasComposerManifestFile()

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

Looks for composer.json in the given path and returns TRUE or FALSE if an ext_emconf.php exists or no composer.json is found.

Parameters
string$packagePath
Returns
bool TRUE if a composer.json exists or FALSE if none exists

Definition at line 418 of file PackageManager.php.

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

◆ initialize()

◆ initializeCompatibilityLoadedExtArray()

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

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

Returns
void

Definition at line 303 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 and requiredPackageKeys properties

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

Returns
void

Definition at line 275 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\$activePackages, 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 131 of file PackageManager.php.

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

◆ injectDependencyResolver()

TYPO3\CMS\Core\Package\PackageManager::injectDependencyResolver ( DependencyResolver  $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 601 of file PackageManager.php.

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 586 of file PackageManager.php.

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

◆ 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 851 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().

◆ loadPackageManagerStatesFromCache()

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

Attempts to load the package manager states from cache

Exceptions
Exception

Definition at line 227 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 255 of file PackageManager.php.

References 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 994 of file PackageManager.php.

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

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

◆ registerPackage()

TYPO3\CMS\Core\Package\PackageManager::registerPackage ( PackageInterface  $package,
  $sortAndSave = true 
)

◆ registerPackagesFromConfiguration()

TYPO3\CMS\Core\Package\PackageManager::registerPackagesFromConfiguration (   $registerOnlyNewPackages = false)
protected

◆ registerTransientClassLoadingInformationForPackage()

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

◆ resolvePackageDependencies()

TYPO3\CMS\Core\Package\PackageManager::resolvePackageDependencies ( )
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.

Returns
void

Definition at line 767 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\sortAvailablePackagesByDependencies().

◆ saveToPackageCache()

◆ scanAvailablePackages()

◆ scanPackagesInPath()

TYPO3\CMS\Core\Package\PackageManager::scanPackagesInPath (   $startPath,
array  $collectedPackagePaths 
)
protected

Scans all sub directories of the specified directory and collects the package keys of packages it finds.

The return of the array is to make this method usable in array_merge.

Parameters
string$startPath
array$collectedPackagePaths
Returns
array

Definition at line 916 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageManager\hasComposerManifestFile(), and TYPO3\CMS\Core\Utility\PathUtility\sanitizeTrailingSeparator().

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

◆ setComposerManifestValueIfEmpty()

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

Definition at line 1054 of file PackageManager.php.

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

◆ sortAndSavePackageStates()

◆ sortAvailablePackagesByDependencies()

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

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

Returns
void

Definition at line 744 of file PackageManager.php.

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

Referenced by TYPO3\CMS\Core\Package\PackageManager\deactivatePackage(), and TYPO3\CMS\Core\Package\PackageManager\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
Returns
void
Exceptions
Exception

Definition at line 875 of file PackageManager.php.

References TYPO3\CMS\Core\Package\PackageInterface\getPackageKey(), TYPO3\CMS\Core\Package\PackageManager\isPackageAvailable(), 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
Returns
void

Definition at line 516 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

◆ $bootstrap

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

◆ $cacheIdentifier

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

◆ $composerNameToPackageKeyMap

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

Definition at line 94 of file PackageManager.php.

◆ $coreCache

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

◆ $dependencyResolver

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

◆ $packageAliasMap

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

◆ $packageKeys

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

◆ $packages

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

◆ $packagesBasePath

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

◆ $packagesBasePaths

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

Definition at line 55 of file PackageManager.php.

◆ $packageStatesConfiguration

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

◆ $packageStatesPathAndFilename

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

Definition at line 105 of file PackageManager.php.

◆ $requiredPackageKeys

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

◆ $runtimeActivatedPackages

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

Definition at line 70 of file PackageManager.php.