Spaces:
No application file
No application file
File size: 2,020 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 |
<?php
namespace Mautic\LeadBundle\Segment\Query;
trait LeadBatchLimiterTrait
{
/**
* @param array<string, mixed> $batchLimiters
*/
private function addMinMaxLimiters(QueryBuilder $queryBuilder, array $batchLimiters, string $tableName, string $columnName = 'lead_id'): void
{
$leadsTableAlias = $queryBuilder->getTableAlias(MAUTIC_TABLE_PREFIX.$tableName);
if (!empty($batchLimiters['minId']) && !empty($batchLimiters['maxId'])) {
$queryBuilder->andWhere(
$queryBuilder->expr()->comparison($leadsTableAlias.'.'.$columnName, 'BETWEEN', "{$batchLimiters['minId']} and {$batchLimiters['maxId']}")
);
} elseif (!empty($batchLimiters['maxId'])) {
$queryBuilder->andWhere(
$queryBuilder->expr()->lte($leadsTableAlias.'.'.$columnName, (int) $batchLimiters['maxId'])
);
} elseif (!empty($batchLimiters['minId'])) {
$queryBuilder->andWhere(
$queryBuilder->expr()->gte($leadsTableAlias.'.'.$columnName, (int) $batchLimiters['minId'])
);
}
}
/**
* @param array<string, mixed> $batchLimiters
*/
private function addLeadLimiter(QueryBuilder $queryBuilder, array $batchLimiters, string $tableName, string $columnName = 'lead_id'): void
{
$leadsTableAlias = $queryBuilder->getTableAlias(MAUTIC_TABLE_PREFIX.$tableName);
if (empty($batchLimiters['lead_id'])) {
return;
}
$queryBuilder->andWhere($leadsTableAlias.'.'.$columnName.' = '.$batchLimiters['lead_id']);
}
/**
* @param array<string, mixed> $batchLimiters
*/
private function addLeadAndMinMaxLimiters(QueryBuilder $queryBuilder, array $batchLimiters, string $tableName, string $columnName = 'lead_id'): void
{
$this->addLeadLimiter($queryBuilder, $batchLimiters, $tableName, $columnName);
$this->addMinMaxLimiters($queryBuilder, $batchLimiters, $tableName, $columnName);
}
}
|