Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Helper; | |
| use Mautic\IntegrationsBundle\Exception\IntegrationNotFoundException; | |
| use Mautic\IntegrationsBundle\Integration\Interfaces\ConfigFormInterface; | |
| use Mautic\PluginBundle\Entity\Integration; | |
| class ConfigIntegrationsHelper | |
| { | |
| /** | |
| * @var ConfigFormInterface[] | |
| */ | |
| private array $integrations = []; | |
| public function __construct( | |
| private IntegrationsHelper $integrationsHelper | |
| ) { | |
| } | |
| public function addIntegration(ConfigFormInterface $integration): void | |
| { | |
| $this->integrations[$integration->getName()] = $integration; | |
| } | |
| /** | |
| * @return ConfigFormInterface | |
| * | |
| * @throws IntegrationNotFoundException | |
| */ | |
| public function getIntegration(string $integration) | |
| { | |
| if (!isset($this->integrations[$integration])) { | |
| throw new IntegrationNotFoundException("$integration either doesn't exist or has not been tagged with mautic.config_integration"); | |
| } | |
| // Ensure the configuration is hydrated | |
| $this->integrationsHelper->getIntegrationConfiguration($this->integrations[$integration]); | |
| return $this->integrations[$integration]; | |
| } | |
| public function saveIntegrationConfiguration(Integration $integrationConfiguration): void | |
| { | |
| $this->integrationsHelper->saveIntegrationConfiguration($integrationConfiguration); | |
| } | |
| } | |