Spaces:
No application file
No application file
File size: 2,061 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
<?php
declare(strict_types=1);
namespace Mautic\LeadBundle\Event;
use Doctrine\DBAL\Query\Expression\CompositeExpression;
use Mautic\LeadBundle\Segment\ContactSegmentFilter;
use Mautic\LeadBundle\Segment\Query\QueryBuilder;
use Symfony\Contracts\EventDispatcher\Event;
final class SegmentOperatorQueryBuilderEvent extends Event
{
private bool $operatorHandled = false;
private string $leadsTableAlias;
/**
* @param string|string[] $parameterHolder
*/
public function __construct(
private QueryBuilder $queryBuilder,
private ContactSegmentFilter $filter,
private $parameterHolder
) {
$this->leadsTableAlias = $queryBuilder->getTableAlias(MAUTIC_TABLE_PREFIX.'leads');
}
public function getQueryBuilder(): QueryBuilder
{
return $this->queryBuilder;
}
public function getFilter(): ContactSegmentFilter
{
return $this->filter;
}
/**
* @return string|string[]
*/
public function getParameterHolder()
{
return $this->parameterHolder;
}
public function operatorIsOneOf(string ...$operators): bool
{
return in_array($this->filter->getOperator(), $operators, true);
}
/**
* @param CompositeExpression|string $expression
*/
public function addExpression($expression): void
{
$this->queryBuilder->addLogic($expression, $this->filter->getGlue());
$this->setOperatorHandled(true);
}
/**
* The subscriber must tell the event that the operator was successfully handled.
* Otherwise an exception will be thrown as an unknown operator was sent.
* Or use the addExpression() method that will set it automatically.
*/
public function setOperatorHandled(bool $wasHandled): void
{
$this->operatorHandled = $wasHandled;
}
public function wasOperatorHandled(): bool
{
return $this->operatorHandled;
}
public function getLeadsTableAlias(): string
{
return $this->leadsTableAlias;
}
}
|