/** * Returns class alias map for given package * * @param PackageInterface $package The package to generate the class alias info for * @throws \TYPO3\CMS\Core\Error\Exception * @return array */ public function buildClassAliasMapForPackage(PackageInterface $package) { $aliasToClassNameMapping = []; $classNameToAliasMapping = []; $possibleClassAliasFiles = []; $manifest = $package->getValueFromComposerManifest(); if (!empty($manifest->extra->{'typo3/class-alias-loader'}->{'class-alias-maps'})) { $possibleClassAliasFiles = $manifest->extra->{'typo3/class-alias-loader'}->{'class-alias-maps'}; if (!is_array($possibleClassAliasFiles)) { throw new \TYPO3\CMS\Core\Error\Exception('"typo3/class-alias-loader"/"class-alias-maps" must return an array!', 1444142481); } } else { $possibleClassAliasFiles[] = 'Migrations/Code/ClassAliasMap.php'; } $packagePath = $package->getPackagePath(); foreach ($possibleClassAliasFiles as $possibleClassAliasFile) { $possiblePathToClassAliasFile = $packagePath . $possibleClassAliasFile; if (file_exists($possiblePathToClassAliasFile)) { $packageAliasMap = (require $possiblePathToClassAliasFile); if (!is_array($packageAliasMap)) { throw new \TYPO3\CMS\Core\Error\Exception('"class alias maps" must return an array', 1422625075); } foreach ($packageAliasMap as $aliasClassName => $className) { $lowerCasedAliasClassName = strtolower($aliasClassName); $aliasToClassNameMapping[$lowerCasedAliasClassName] = $className; $classNameToAliasMapping[$className][$lowerCasedAliasClassName] = $lowerCasedAliasClassName; } } } return array('aliasToClassNameMapping' => $aliasToClassNameMapping, 'classNameToAliasMapping' => $classNameToAliasMapping); }
/** * Check if the package is a framework package (located in typo3/sysext) * * @param PackageInterface $package * @return bool */ protected static function isFrameworkPackage(PackageInterface $package) { return $package->getValueFromComposerManifest('type') === 'typo3-cms-framework'; }