> $settings */ final class IntegrationSettings { /** * @var array> */ private array $settings = []; /** * IntegrationSettings constructor. * @param array>|null $settings */ public function __construct($settings = null) { if (!is_array($settings) || empty($settings)) { $settings = TemplateDefaults::getDefaultIntegrationSettings(); } $this->settings = $settings; } /** * Get settings for a specific integration. * @param string $integration * @return array|null */ public function get(string $integration): ?array { return $this->settings[$integration] ?? null; } /** * Set settings for a specific integration. * @param string $integration * @param array $settings */ public function set(string $integration, array $settings): void { $this->settings[$integration] = $settings; } /** * Get all integration settings. * @return array> */ public function getAll(): array { if (empty($this->settings)) { return TemplateDefaults::getDefaultIntegrationSettings(); } return $this->settings; } /** * Get enabled status for any integration. * @param string $integration * @return bool */ public function isIntegrationEnabled(string $integration): bool { return !empty($this->settings[$integration]['enabled']); } /** * Set enabled status for any integration. * @param string $integration * @param bool $enabled */ public function setIntegrationEnabled(string $integration, bool $enabled): void { if (!isset($this->settings[$integration])) { $this->settings[$integration] = []; } $this->settings[$integration]['enabled'] = $enabled; } /** * Export settings as array. * @return array> */ public function toArray(): array { return [ 'integrationSettings' => $this->settings ]; } }