Merge pull request #23332 from darrick/dupeQuery
[civicrm-core.git] / mixin / setting-php@1 / mixin.php
1 <?php
2
3 /**
4 * Auto-register "settings/*.setting.php" files.
5 *
6 * @mixinName setting-php
7 * @mixinVersion 1.0.0
8 * @since 5.45
9 *
10 * @param CRM_Extension_MixInfo $mixInfo
11 * On newer deployments, this will be an instance of MixInfo. On older deployments, Civix may polyfill with a work-a-like.
12 * @param \CRM_Extension_BootCache $bootCache
13 * On newer deployments, this will be an instance of MixInfo. On older deployments, Civix may polyfill with a work-a-like.
14 */
15 return function ($mixInfo, $bootCache) {
16
17 /**
18 * @param \Civi\Core\Event\GenericHookEvent $e
19 * @see CRM_Utils_Hook::alterSettingsFolders()
20 */
21 Civi::dispatcher()->addListener('hook_civicrm_alterSettingsFolders', function ($e) use ($mixInfo) {
22 // When deactivating on a polyfill/pre-mixin system, listeners may not cleanup automatically.
23 if (!$mixInfo->isActive()) {
24 return;
25 }
26
27 $settingsDir = $mixInfo->getPath('settings');
28 if (!in_array($settingsDir, $e->settingsFolders) && is_dir($settingsDir)) {
29 $e->settingsFolders[] = $settingsDir;
30 }
31 });
32
33 };