View source
<?php
namespace Drupal\Core\Composer;
use Composer\Script\Event;
use Composer\Semver\Constraint\Constraint;
class Composer {
public static function preAutoloadDump(Event $event) {
$vendor_dir = $event
->getComposer()
->getConfig()
->get('vendor-dir');
$package = $event
->getComposer()
->getPackage();
$repository = $event
->getComposer()
->getRepositoryManager()
->getLocalRepository();
$constraint = new Constraint('>', '');
$autoload = $package
->getAutoload();
if (!isset($autoload['classmap'])) {
$autoload['classmap'] = [];
}
if ($repository
->findPackage('symfony/http-foundation', $constraint)) {
$autoload['classmap'] = array_merge($autoload['classmap'], [
$vendor_dir . '/symfony/http-foundation/Request.php',
$vendor_dir . '/symfony/http-foundation/RequestStack.php',
$vendor_dir . '/symfony/http-foundation/ParameterBag.php',
$vendor_dir . '/symfony/http-foundation/FileBag.php',
$vendor_dir . '/symfony/http-foundation/ServerBag.php',
$vendor_dir . '/symfony/http-foundation/HeaderBag.php',
$vendor_dir . '/symfony/http-foundation/HeaderUtils.php',
]);
}
if ($repository
->findPackage('symfony/http-kernel', $constraint)) {
$autoload['classmap'] = array_merge($autoload['classmap'], [
$vendor_dir . '/symfony/http-kernel/HttpKernel.php',
$vendor_dir . '/symfony/http-kernel/HttpKernelInterface.php',
$vendor_dir . '/symfony/http-kernel/TerminableInterface.php',
]);
}
if ($repository
->findPackage('symfony/dependency-injection', $constraint)) {
$autoload['classmap'] = array_merge($autoload['classmap'], [
$vendor_dir . '/symfony/dependency-injection/ContainerAwareInterface.php',
$vendor_dir . '/symfony/dependency-injection/ContainerInterface.php',
]);
}
if ($repository
->findPackage('psr/container', $constraint)) {
$autoload['classmap'] = array_merge($autoload['classmap'], [
$vendor_dir . '/psr/container/src/ContainerInterface.php',
]);
}
if ($repository
->findPackage('laminas/laminas-zendframework-bridge', $constraint)) {
$autoload['classmap'] = array_merge($autoload['classmap'], [
$vendor_dir . '/laminas/laminas-zendframework-bridge/src/Autoloader.php',
$vendor_dir . '/laminas/laminas-zendframework-bridge/src/RewriteRules.php',
]);
}
$package
->setAutoload($autoload);
}
public static function upgradePHPUnit(Event $event) {
$repository = $event
->getComposer()
->getRepositoryManager()
->getLocalRepository();
$constraint = new Constraint('>', '');
$phpunit_package = $repository
->findPackage('phpunit/phpunit', $constraint);
if (!$phpunit_package) {
return;
}
if (!static::upgradePHPUnitCheck($phpunit_package
->getVersion())) {
$event
->getComposer()
->getEventDispatcher()
->dispatchScript('drupal-phpunit-upgrade');
}
}
public static function upgradePHPUnitCheck($phpunit_version) {
return !(version_compare(PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION, '7.4') >= 0 && version_compare($phpunit_version, '9.0') < 0);
}
}