Loading core/lib/Drupal/Core/Extension/module.api.php +23 −0 Original line number Diff line number Diff line Loading @@ -1022,6 +1022,29 @@ function hook_requirements($phase) { return $requirements; } /** * Alters requirements data. * * Implementations are able to alter the title, value, description or the * severity of certain requirements defined by hook_requirements() * implementations or even remove such entries. * * @param array $requirements * The requirements data to be altered. * * @see hook_requirements() */ function hook_requirements_alter(array &$requirements): void { // Change the title from 'PHP' to 'PHP version'. $requirements['php']['title'] = t('PHP version'); // Decrease the 'update status' requirement severity from warning to warning. $requirements['update status']['severity'] = REQUIREMENT_INFO; // Remove a requirements entry. unset($requirements['foo']); } /** * @} End of "addtogroup hooks". */ core/modules/system/src/SystemManager.php +1 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ public function listRequirements() { // Check run-time requirements and status information. $requirements = $this->moduleHandler->invokeAll('requirements', ['runtime']); $this->moduleHandler->alter('requirements', $requirements); uasort($requirements, function ($a, $b) { if (!isset($a['weight'])) { if (!isset($b['weight'])) { Loading core/modules/system/tests/modules/requirements1_test/requirements1_test.install +12 −0 Original line number Diff line number Diff line Loading @@ -20,5 +20,17 @@ function requirements1_test_requirements($phase) { ]; } $requirements['requirements1_test_alterable'] = [ 'title' => t('Requirements 1 Test Alterable'), 'severity' => REQUIREMENT_ERROR, 'description' => t('A requirement that will be altered.'), ]; $requirements['requirements1_test_deletable'] = [ 'title' => t('Requirements 1 Test Deletable'), 'severity' => REQUIREMENT_INFO, 'description' => t('A requirement that will be deleted.'), ]; return $requirements; } core/modules/system/tests/modules/requirements1_test/requirements1_test.module 0 → 100644 +18 −0 Original line number Diff line number Diff line <?php /** * @file * Hook implementations for requirements1_test module. */ /** * Implements hook_requirements_alter(). */ function requirements1_test_requirements_alter(array &$requirements): void { // Change the title. $requirements['requirements1_test_alterable']['title'] = t('Requirements 1 Test - Changed'); // Decrease the severity. $requirements['requirements1_test_alterable']['severity'] = REQUIREMENT_WARNING; // Delete 'requirements1_test_deletable', unset($requirements['requirements1_test_deletable']); } core/modules/system/tests/src/Kernel/Module/RequirementsTest.php 0 → 100644 +33 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\system\Kernel\Module; use Drupal\KernelTests\KernelTestBase; /** * @covers \hook_requirements * @covers \hook_requirements_alter * @group Module */ class RequirementsTest extends KernelTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'requirements1_test', 'system', ]; /** * Tests requirements data altering. */ public function testRequirementsAlter(): void { $requirements = $this->container->get('system.manager')->listRequirements(); // @see requirements1_test_requirements_alter() $this->assertEquals('Requirements 1 Test - Changed', $requirements['requirements1_test_alterable']['title']); $this->assertEquals(REQUIREMENT_WARNING, $requirements['requirements1_test_alterable']['severity']); $this->assertArrayNotHasKey('requirements1_test_deletable', $requirements); } } Loading
core/lib/Drupal/Core/Extension/module.api.php +23 −0 Original line number Diff line number Diff line Loading @@ -1022,6 +1022,29 @@ function hook_requirements($phase) { return $requirements; } /** * Alters requirements data. * * Implementations are able to alter the title, value, description or the * severity of certain requirements defined by hook_requirements() * implementations or even remove such entries. * * @param array $requirements * The requirements data to be altered. * * @see hook_requirements() */ function hook_requirements_alter(array &$requirements): void { // Change the title from 'PHP' to 'PHP version'. $requirements['php']['title'] = t('PHP version'); // Decrease the 'update status' requirement severity from warning to warning. $requirements['update status']['severity'] = REQUIREMENT_INFO; // Remove a requirements entry. unset($requirements['foo']); } /** * @} End of "addtogroup hooks". */
core/modules/system/src/SystemManager.php +1 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ public function listRequirements() { // Check run-time requirements and status information. $requirements = $this->moduleHandler->invokeAll('requirements', ['runtime']); $this->moduleHandler->alter('requirements', $requirements); uasort($requirements, function ($a, $b) { if (!isset($a['weight'])) { if (!isset($b['weight'])) { Loading
core/modules/system/tests/modules/requirements1_test/requirements1_test.install +12 −0 Original line number Diff line number Diff line Loading @@ -20,5 +20,17 @@ function requirements1_test_requirements($phase) { ]; } $requirements['requirements1_test_alterable'] = [ 'title' => t('Requirements 1 Test Alterable'), 'severity' => REQUIREMENT_ERROR, 'description' => t('A requirement that will be altered.'), ]; $requirements['requirements1_test_deletable'] = [ 'title' => t('Requirements 1 Test Deletable'), 'severity' => REQUIREMENT_INFO, 'description' => t('A requirement that will be deleted.'), ]; return $requirements; }
core/modules/system/tests/modules/requirements1_test/requirements1_test.module 0 → 100644 +18 −0 Original line number Diff line number Diff line <?php /** * @file * Hook implementations for requirements1_test module. */ /** * Implements hook_requirements_alter(). */ function requirements1_test_requirements_alter(array &$requirements): void { // Change the title. $requirements['requirements1_test_alterable']['title'] = t('Requirements 1 Test - Changed'); // Decrease the severity. $requirements['requirements1_test_alterable']['severity'] = REQUIREMENT_WARNING; // Delete 'requirements1_test_deletable', unset($requirements['requirements1_test_deletable']); }
core/modules/system/tests/src/Kernel/Module/RequirementsTest.php 0 → 100644 +33 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\system\Kernel\Module; use Drupal\KernelTests\KernelTestBase; /** * @covers \hook_requirements * @covers \hook_requirements_alter * @group Module */ class RequirementsTest extends KernelTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'requirements1_test', 'system', ]; /** * Tests requirements data altering. */ public function testRequirementsAlter(): void { $requirements = $this->container->get('system.manager')->listRequirements(); // @see requirements1_test_requirements_alter() $this->assertEquals('Requirements 1 Test - Changed', $requirements['requirements1_test_alterable']['title']); $this->assertEquals(REQUIREMENT_WARNING, $requirements['requirements1_test_alterable']['severity']); $this->assertArrayNotHasKey('requirements1_test_deletable', $requirements); } }