ConfigModuleOverridesEvent.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace Drupal\Core\Config;
  3. use Drupal\Component\Utility\NestedArray;
  4. use Drupal\Core\Language\LanguageInterface;
  5. use Symfony\Component\EventDispatcher\Event;
  6. /**
  7. * Event object to allow configuration to be overridden by modules.
  8. */
  9. class ConfigModuleOverridesEvent extends Event {
  10. /**
  11. * Configuration names.
  12. *
  13. * @var array
  14. */
  15. protected $names;
  16. /**
  17. * Configuration overrides.
  18. *
  19. * @var array
  20. */
  21. protected $overrides;
  22. /**
  23. * The Language object used to override configuration data.
  24. *
  25. * @var \Drupal\Core\Language\LanguageInterface
  26. */
  27. protected $language;
  28. /**
  29. * Constructs a configuration overrides event object.
  30. *
  31. * @param array $names
  32. * A list of configuration names.
  33. * @param \Drupal\Core\Language\LanguageInterface $language
  34. * (optional) The language for this configuration.
  35. */
  36. public function __construct(array $names, LanguageInterface $language = NULL) {
  37. $this->names = $names;
  38. $this->language = $language;
  39. $this->overrides = [];
  40. }
  41. /**
  42. * Gets configuration names.
  43. *
  44. * @return array
  45. * The list of configuration names that can be overridden.
  46. */
  47. public function getNames() {
  48. return $this->names;
  49. }
  50. /**
  51. * Gets configuration language.
  52. *
  53. * @return \Drupal\Core\Language\LanguageInterface
  54. * The configuration language object.
  55. */
  56. public function getLanguage() {
  57. return $this->language;
  58. }
  59. /**
  60. * Get configuration overrides.
  61. *
  62. * @return array
  63. * The array of configuration overrides.
  64. */
  65. public function getOverrides() {
  66. return $this->overrides;
  67. }
  68. /**
  69. * Sets a configuration override for the given name.
  70. *
  71. * @param string $name
  72. * The configuration object name to override.
  73. * @param array $values
  74. * The values in the configuration object to override.
  75. *
  76. * @return $this
  77. */
  78. public function setOverride($name, array $values) {
  79. if (in_array($name, $this->names)) {
  80. if (isset($this->overrides[$name])) {
  81. // Existing overrides take precedence since these will have been added
  82. // by events with a higher priority.
  83. $this->overrides[$name] = NestedArray::mergeDeepArray([$values, $this->overrides[$name]], TRUE);
  84. }
  85. else {
  86. $this->overrides[$name] = $values;
  87. }
  88. }
  89. return $this;
  90. }
  91. }