diff --git a/docroot/modules/custom/acquia_disable_package_manager/acquia_disable_package_manager.info.yml b/docroot/modules/custom/acquia_disable_package_manager/acquia_disable_package_manager.info.yml new file mode 100644 index 000000000..bc1164d95 --- /dev/null +++ b/docroot/modules/custom/acquia_disable_package_manager/acquia_disable_package_manager.info.yml @@ -0,0 +1,5 @@ +name: 'Disable Package Manager' +type: module +description: 'Disables Package Manager operations on Acquia hosting.' +hidden: true +core_version_requirement: ^11 diff --git a/docroot/modules/custom/acquia_disable_package_manager/acquia_disable_package_manager.services.yml b/docroot/modules/custom/acquia_disable_package_manager/acquia_disable_package_manager.services.yml new file mode 100644 index 000000000..fac246e12 --- /dev/null +++ b/docroot/modules/custom/acquia_disable_package_manager/acquia_disable_package_manager.services.yml @@ -0,0 +1,5 @@ +services: + Drupal\acquia_disable_package_manager\AhPackageManagerDisabler: + tags: + - { name: event_subscriber } + - { name: config.factory.override } diff --git a/docroot/modules/custom/acquia_disable_package_manager/composer.json b/docroot/modules/custom/acquia_disable_package_manager/composer.json new file mode 100644 index 000000000..2c6056df1 --- /dev/null +++ b/docroot/modules/custom/acquia_disable_package_manager/composer.json @@ -0,0 +1,8 @@ +{ + "name": "acquia/acquia_disable_package_manager", + "description": "A hidden Drupal module to disable Package Manager operations on Acquia hosting.", + "type": "drupal-module", + "require": { + "acquia/drupal-environment-detector": "^1.8" + } +} diff --git a/docroot/modules/custom/acquia_disable_package_manager/src/AhPackageManagerDisabler.php b/docroot/modules/custom/acquia_disable_package_manager/src/AhPackageManagerDisabler.php new file mode 100644 index 000000000..e7c38a515 --- /dev/null +++ b/docroot/modules/custom/acquia_disable_package_manager/src/AhPackageManagerDisabler.php @@ -0,0 +1,94 @@ +addError([ + $this->t('Package Manager is disabled on Acquia hosting.'), + ]); + // Stop all further validation. + $event->stopPropagation(); + } + } + + /** + * {@inheritdoc} + */ + public function loadOverrides($names): array { + $overrides = []; + + if (AcquiaDrupalEnvironmentDetector::isAhEnv()) { + if (in_array('project_browser.admin_settings', $names, TRUE)) { + $overrides['project_browser.admin_settings']['allow_ui_install'] = FALSE; + } + if (in_array('automatic_updates.settings', $names, TRUE)) { + $overrides['automatic_updates.settings']['unattended']['level'] = 'disable'; + $overrides['automatic_updates.settings']['allow_core_minor_updates'] = FALSE; + } + } + return $overrides; + } + + /** + * {@inheritdoc} + */ + public function getCacheSuffix(): string { + return 'acquia'; + } + + /** + * {@inheritdoc} + */ + public function createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION): null { + return NULL; + } + + /** + * {@inheritdoc} + */ + public function getCacheableMetadata($name): CacheableMetadata { + return new CacheableMetadata(); + } + +} diff --git a/recipes/custom/acquia_trials/recipe.yml b/recipes/custom/acquia_trials/recipe.yml index 84a7b1e1c..ddc6bb927 100644 --- a/recipes/custom/acquia_trials/recipe.yml +++ b/recipes/custom/acquia_trials/recipe.yml @@ -2,8 +2,9 @@ name: Acquia Trials type: Acquia description: 'Enables Acquia Trials extensions: countdown banner, getting-started checklist, and Cloud Platform promotion block.' install: - - acquia_trials_countdown + - acquia_disable_package_manager - acquia_trials_checklist + - acquia_trials_countdown - acquia_trials_cloud_platform - acquia_trials_id config: