diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index a87c7de9a2..387884c1a7 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -285,6 +285,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Segments\DynamicSegments\DynamicSegmentsListingRepository::class)->setPublic(true); $container->autowire(\MailPoet\Segments\DynamicSegments\FilterFactory::class)->setPublic(true); $container->autowire(\MailPoet\Segments\DynamicSegments\FilterHandler::class)->setPublic(true); + $container->autowire(\MailPoet\Segments\DynamicSegments\DynamicSegmentFilterRepository::class)->setPublic(true); $container->autowire(\MailPoet\Segments\DynamicSegments\Filters\EmailAction::class)->setPublic(true); $container->autowire(\MailPoet\Segments\DynamicSegments\Filters\EmailOpensAbsoluteCountAction::class)->setPublic(true); $container->autowire(\MailPoet\Segments\DynamicSegments\Filters\MailPoetCustomFields::class)->setPublic(true); diff --git a/lib/Segments/DynamicSegments/DynamicSegmentFilterRepository.php b/lib/Segments/DynamicSegments/DynamicSegmentFilterRepository.php new file mode 100644 index 0000000000..628d81c6b8 --- /dev/null +++ b/lib/Segments/DynamicSegments/DynamicSegmentFilterRepository.php @@ -0,0 +1,37 @@ + + */ +class DynamicSegmentFilterRepository extends Repository { + public function __construct( + EntityManager $entityManager + ) { + parent::__construct($entityManager); + } + + protected function getEntityClassName() { + return DynamicSegmentFilterEntity::class; + } + + public function findOnyBySegmentTypeAndAction(string $segmentType, string $action): ?DynamicSegmentFilterEntity { + $segmentTypeLength = strlen($segmentType); + $actionLength = strlen($action); + return $this->entityManager->createQueryBuilder() + ->select('dsf') + ->from(DynamicSegmentFilterEntity::class, 'dsf') + ->where('dsf.filterData.filterData LIKE :segmentType') + ->andWhere('dsf.filterData.filterData LIKE :action') + ->setParameter('segmentType', "%s:11:\"segmentType\";s:{$segmentTypeLength}:\"{$segmentType}\"%") + ->setParameter('action', "%s:6:\"action\";s:{$actionLength}:\"{$action}\"%") + ->setMaxResults(1) + ->getQuery() + ->getOneOrNullResult(); + } +}