Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Sync\Notification\Helper; | |
| use Mautic\IntegrationsBundle\Event\InternalObjectOwnerEvent; | |
| use Mautic\IntegrationsBundle\IntegrationEvents; | |
| use Mautic\IntegrationsBundle\Sync\Exception\ObjectNotFoundException; | |
| use Mautic\IntegrationsBundle\Sync\Exception\ObjectNotSupportedException; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\ObjectProvider; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\MauticSyncDataExchange; | |
| use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
| class OwnerProvider | |
| { | |
| public function __construct( | |
| private EventDispatcherInterface $dispatcher, | |
| private ObjectProvider $objectProvider | |
| ) { | |
| } | |
| /** | |
| * @param int[] $objectIds | |
| * | |
| * @return ObjectInterface | |
| * | |
| * @throws ObjectNotSupportedException | |
| */ | |
| public function getOwnersForObjectIds(string $objectName, array $objectIds): array | |
| { | |
| if (empty($objectIds)) { | |
| return []; | |
| } | |
| try { | |
| $object = $this->objectProvider->getObjectByName($objectName); | |
| } catch (ObjectNotFoundException) { | |
| // Throw this exception for BC. | |
| throw new ObjectNotSupportedException(MauticSyncDataExchange::NAME, $objectName); | |
| } | |
| $event = new InternalObjectOwnerEvent($object, $objectIds); | |
| $this->dispatcher->dispatch($event, IntegrationEvents::INTEGRATION_FIND_OWNER_IDS); | |
| return $event->getOwners(); | |
| } | |
| } | |