TYPO3  7.6
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PackageManager Class Reference
Inheritance diagram for PackageManager:
SingletonInterface FailsafePackageManager 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(), array $trace=array())
 
 getPackageKeyFromManifest ($manifest, $packagePath, $packagesBasePath)
 

Protected Attributes

 $dependencyResolver
 
 $bootstrap
 
 $coreCache
 
 $cacheIdentifier
 
 $packagesBasePaths = array()
 
 $packageAliasMap = array()
 
 $requiredPackageKeys = array()
 
 $runtimeActivatedPackages = array()
 
 $packagesBasePath = PATH_site
 
 $packages = array()
 
 $packageKeys = array()
 
 $composerNameToPackageKeyMap = array()
 
 $activePackages = array()
 
 $packageStatesPathAndFilename
 
 $packageStatesConfiguration = array()
 

Detailed Description

The default TYPO3 Package Manager Adapted from FLOW for TYPO3 CMS

Definition at line 29 of file PackageManager.php.

Constructor & Destructor Documentation

__construct ( )

Constructor

Definition at line 115 of file PackageManager.php.

Member Function Documentation

activatePackage (   $packageKey)
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, PackageManager\getPackage(), and PackageManager\registerTransientClassLoadingInformationForPackage().

deactivatePackage (   $packageKey)

Deactivates a package and updates the packagestates configuration

Parameters
string$packageKey
Exceptions
Exception\PackageStatesFileNotWritableException
Exception\ProtectedPackageKeyException
Exception\UnknownPackageException

Definition at line 614 of file PackageManager.php.

References PackageManager\getPackage(), PackageManager\isPackageActive(), PackageManager\sortAndSavePackageStates(), and PackageManager\sortAvailablePackagesByDependencies().

Referenced by PackageManager\deletePackage().

deletePackage (   $packageKey)

Removes a package from the file system.

Parameters
string$packageKey
Exceptions
Exception
Exception\InvalidPackageStateException
Exception\ProtectedPackageKeyException
Exception\UnknownPackageException

Definition at line 699 of file PackageManager.php.

References PackageManager\deactivatePackage(), PackageManager\getPackage(), PackageManager\isPackageActive(), PackageManager\isPackageAvailable(), GeneralUtility\rmdir(), PackageManager\sortAndSavePackageStates(), and PackageManager\unregisterPackage().

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

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

References PackageManager\$packages.

getCacheEntryIdentifier ( )
protected
getCacheIdentifier ( )
protected
Returns
string

Definition at line 172 of file PackageManager.php.

References PackageManager\$cacheIdentifier.

Referenced by PackageManager\getCacheEntryIdentifier().

getComposerManifest (   $manifestPath)

Returns contents of Composer manifest as a stdObject

Parameters
string$manifestPath
Returns
Exceptions
Exception\MissingPackageManifestException
Exception\InvalidPackageManifestException

Definition at line 943 of file PackageManager.php.

References PackageManager\getExtensionEmConf(), and PackageManager\mapExtensionManagerConfigurationToComposerManifest().

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

getDependencyArrayForPackage (   $packageKey,
array &  $dependentPackageKeys = array(),
array  $trace = array() 
)
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\InvalidPackageKeyException

Definition at line 1082 of file PackageManager.php.

Referenced by PackageManager\resolvePackageDependencies().

getExtensionEmConf (   $packagePath)
protected

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

Parameters
string$packagePath
Returns
array
Exceptions
Exception\InvalidPackageManifestException

Definition at line 978 of file PackageManager.php.

References $EM_CONF.

Referenced by PackageManager\getComposerManifest().

getPackage (   $packageKey)

Returns a PackageInterface object for the specified package. A package is available, if the package directory contains valid MetaData information.

Parameters
string$packageKey
Returns
PackageInterface The requested package object
Exceptions
Exception\UnknownPackageExceptionif the specified package is not known

Definition at line 567 of file PackageManager.php.

References PackageManager\isPackageAvailable().

Referenced by PackageManager\activatePackage(), PackageManager\activatePackageDuringRuntime(), PackageManager\deactivatePackage(), PackageManager\deletePackage(), and PackageManager\unregisterPackageByPackageKey().

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 (   $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\InvalidPackageManifestException
Returns
string

Definition at line 1121 of file PackageManager.php.

Referenced by PackageManager\scanAvailablePackages().

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

References MetaData\CONSTRAINT_TYPE_SUGGESTS.

Referenced by PackageManager\resolvePackageDependencies().

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 PackageManager\scanPackagesInPath().

initialize ( Bootstrap  $bootstrap)
initializeCompatibilityLoadedExtArray ( )
protected

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

Returns
void

Definition at line 302 of file PackageManager.php.

References $GLOBALS.

Referenced by PackageManager\initialize(), and PackageManager\sortAndSavePackageStates().

initializePackageObjects ( )
protected

Initializes activePackages and requiredPackageKeys properties

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

Returns
void

Definition at line 274 of file PackageManager.php.

References PackageManager\$activePackages, and PackageManager\sortAndSavePackageStates().

Referenced by PackageManager\initialize().

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

Definition at line 130 of file PackageManager.php.

References PackageManager\$coreCache.

injectDependencyResolver ( DependencyResolver  $dependencyResolver)
Parameters
DependencyResolver

Definition at line 138 of file PackageManager.php.

References PackageManager\$dependencyResolver.

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 PackageManager\activatePackage(), PackageManager\deactivatePackage(), and PackageManager\deletePackage().

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 PackageManager\deletePackage(), PackageManager\getPackage(), PackageManager\registerPackage(), PackageManager\registerPackagesFromConfiguration(), and PackageManager\unregisterPackage().

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

References PackageInterface\PATTERN_MATCH_EXTENSIONKEY, and PackageInterface\PATTERN_MATCH_PACKAGEKEY.

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

loadPackageManagerStatesFromCache ( )
protected

Attempts to load the package manager states from cache

Exceptions
Exception\PackageManagerCacheUnavailableException

Definition at line 226 of file PackageManager.php.

References $GLOBALS, and PackageManager\getCacheEntryIdentifier().

Referenced by PackageManager\initialize().

loadPackageStates ( )
protected

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

Exceptions
Exception\PackageStatesUnavailableException
Returns
void

Definition at line 254 of file PackageManager.php.

References PackageManager\registerPackagesFromConfiguration().

Referenced by PackageManager\initialize().

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\InvalidPackageManifestException

Definition at line 1002 of file PackageManager.php.

References elseif, and PackageManager\setComposerManifestValueIfEmpty().

Referenced by PackageManager\getComposerManifest().

registerPackage ( PackageInterface  $package,
  $sortAndSave = true 
)

Register a native TYPO3 package

Parameters
PackageInterface$packageThe Package to be registered
bool$sortAndSaveallows for not saving packagestates when used in loops etc.
Returns
PackageInterface
Exceptions
Exception\InvalidPackageStateException
Exception\PackageStatesFileNotWritableException

Definition at line 488 of file PackageManager.php.

References PackageInterface\getPackageKey(), PackageInterface\getPackagePath(), PackageInterface\getPackageReplacementKeys(), PackageManager\isPackageAvailable(), and PackageManager\sortAndSavePackageStates().

Referenced by PackageManager\registerPackagesFromConfiguration().

registerPackagesFromConfiguration (   $registerOnlyNewPackages = false)
protected

Requires and registers all packages which were defined in packageStatesConfiguration

Parameters
bool$registerOnlyNewPackages
Returns
void

Definition at line 436 of file PackageManager.php.

References PackageManager\isPackageAvailable(), PackageManager\registerPackage(), PathUtility\sanitizeTrailingSeparator(), PackageManager\sortAndSavePackageStates(), and PackageManager\unregisterPackageByPackageKey().

Referenced by PackageManager\loadPackageStates(), and PackageManager\scanAvailablePackages().

registerTransientClassLoadingInformationForPackage ( PackageInterface  $package)
protected
Parameters
PackageInterface$package
Exceptions
\TYPO3\CMS\Core\Exception

Definition at line 682 of file PackageManager.php.

References Bootstrap\usesComposerClassLoading().

Referenced by PackageManager\activatePackage(), and PackageManager\activatePackageDuringRuntime().

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

References PackageManager\getDependencyArrayForPackage(), and PackageManager\getSuggestionArrayForPackage().

Referenced by PackageManager\sortAvailablePackagesByDependencies().

saveToPackageCache ( )
protected

Saves the current state of all relevant information to the TYPO3 Core Cache

Definition at line 197 of file PackageManager.php.

References $GLOBALS, PackageManager\getCacheEntryIdentifier(), and StringUtility\getUniqueId().

Referenced by PackageManager\initialize().

scanAvailablePackages ( )
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 917 of file PackageManager.php.

References $filename, PackageManager\hasComposerManifestFile(), and PathUtility\sanitizeTrailingSeparator().

Referenced by PackageManager\scanAvailablePackages().

setComposerManifestValueIfEmpty ( \stdClass  $manifest,
  $property,
  $value 
)
protected
Parameters
\stdClass$manifest
string$property
mixed$value
Returns

Definition at line 1062 of file PackageManager.php.

Referenced by PackageManager\mapExtensionManagerConfigurationToComposerManifest().

sortAndSavePackageStates ( )
protected
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 745 of file PackageManager.php.

References PackageManager\resolvePackageDependencies().

Referenced by PackageManager\deactivatePackage(), and PackageManager\sortAndSavePackageStates().

unregisterPackage ( PackageInterface  $package)

Unregisters a package from the list of available packages

Parameters
PackageInterface$packageThe package to be unregistered
Returns
void
Exceptions
Exception\InvalidPackageStateException

Definition at line 876 of file PackageManager.php.

References PackageInterface\getPackageKey(), PackageManager\isPackageAvailable(), and PackageManager\unregisterPackageByPackageKey().

Referenced by PackageManager\deletePackage().

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 PackageManager\getPackage().

Referenced by PackageManager\registerPackagesFromConfiguration(), and PackageManager\unregisterPackage().

Member Data Documentation

$activePackages = array()
protected

Definition at line 99 of file PackageManager.php.

Referenced by PackageManager\initializePackageObjects().

$bootstrap
protected
$cacheIdentifier
protected
$composerNameToPackageKeyMap = array()
protected

Definition at line 93 of file PackageManager.php.

$coreCache
protected

Definition at line 44 of file PackageManager.php.

Referenced by PackageManager\injectCoreCache().

$dependencyResolver
protected

Definition at line 34 of file PackageManager.php.

Referenced by PackageManager\injectDependencyResolver().

$packageAliasMap = array()
protected

Definition at line 59 of file PackageManager.php.

$packageKeys = array()
protected

Definition at line 87 of file PackageManager.php.

$packages = array()
protected
$packagesBasePath = PATH_site
protected

Definition at line 75 of file PackageManager.php.

Referenced by PackageManager\scanAvailablePackages().

$packagesBasePaths = array()
protected

Definition at line 54 of file PackageManager.php.

$packageStatesConfiguration = array()
protected

Definition at line 110 of file PackageManager.php.

Referenced by PackageManager\scanAvailablePackages().

$packageStatesPathAndFilename
protected

Definition at line 104 of file PackageManager.php.

$requiredPackageKeys = array()
protected

Definition at line 64 of file PackageManager.php.

$runtimeActivatedPackages = array()
protected

Definition at line 69 of file PackageManager.php.