Add repository for DynamicSegmentFilters

[MAILPOET-3427]
This commit is contained in:
Jan Lysý
2021-10-19 11:09:31 +02:00
committed by Veljko V
parent c4037776f7
commit 02ad7c9c8e
2 changed files with 38 additions and 0 deletions

View File

@@ -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);

View File

@@ -0,0 +1,37 @@
<?php declare(strict_types = 1);
namespace MailPoet\Segments\DynamicSegments;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoetVendor\Doctrine\ORM\EntityManager;
/**
* @extends Repository<DynamicSegmentFilterEntity>
*/
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();
}
}