Spaces:
No application file
No application file
namespace Mautic\CoreBundle\Helper; | |
class BundleHelper | |
{ | |
/** | |
* @var mixed[] | |
*/ | |
private array $allBundles; | |
/** | |
* @param mixed[] $coreBundles | |
* @param mixed[] $pluginBundles | |
*/ | |
public function __construct( | |
private array $coreBundles, | |
private array $pluginBundles | |
) { | |
$this->allBundles = array_merge($coreBundles, $pluginBundles); | |
} | |
/** | |
* @param bool $includePlugins | |
* | |
* @return mixed[] | |
*/ | |
public function getMauticBundles($includePlugins = true): array | |
{ | |
return $includePlugins ? $this->allBundles : $this->coreBundles; | |
} | |
/** | |
* Get's an array of details for enabled Mautic plugins. | |
* | |
* @return array | |
*/ | |
public function getPluginBundles() | |
{ | |
return $this->pluginBundles; | |
} | |
/** | |
* Gets an array of a specific bundle's config settings. | |
* | |
* @param string $configKey | |
* @param bool $includePlugins | |
* | |
* @return mixed | |
* | |
* @throws \Exception | |
*/ | |
public function getBundleConfig($bundleName, $configKey = '', $includePlugins = false) | |
{ | |
// get the configs | |
$configFiles = $this->getMauticBundles($includePlugins); | |
// if no bundle name specified we throw | |
if (!$bundleName) { | |
throw new \Exception('Bundle name not supplied'); | |
} | |
// check for the bundle config requested actually exists | |
if (!array_key_exists($bundleName, $configFiles)) { | |
throw new \Exception('Bundle '.$bundleName.' does not exist'); | |
} | |
// get the specific bundle's configurations | |
$bundleConfig = $configFiles[$bundleName]['config']; | |
// no config key supplied so just return the bundle's config | |
if (!$configKey) { | |
return $bundleConfig; | |
} | |
// check that the key exists | |
if (!array_key_exists($configKey, $bundleConfig)) { | |
throw new \Exception('Key '.$configKey.' does not exist in bundle '.$bundleName); | |
} | |
// we didn't throw so we can send the key value | |
return $bundleConfig[$configKey]; | |
} | |
} | |