Spaces:
No application file
No application file
File size: 1,585 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 |
<?php
declare(strict_types=1);
namespace Mautic\LeadBundle\Field;
class FieldsWithUniqueIdentifier
{
/**
* @var array<mixed>
*/
private array $uniqueIdentifierFields = [];
public function __construct(
private FieldList $fieldList
) {
}
/**
* Retrieves a list of cached published fields that are unique identifiers.
*
* @param array<mixed> $filters
*
* @return array<mixed>
*/
public function getFieldsWithUniqueIdentifier(array $filters = []): array
{
$filters = $this->prepareFilters($filters);
$key = base64_encode(json_encode($filters));
if (!isset($this->uniqueIdentifierFields[$key])) {
$this->uniqueIdentifierFields[$key] = $this->fieldList->getFieldList(false, true, $filters);
}
return $this->uniqueIdentifierFields[$key];
}
/**
* Retrieves a list of published fields that are unique identifiers fresh from the DB each time.
*
* @param array<mixed> $filters
*
* @return array<mixed>
*/
public function getLiveFields(array $filters = []): array
{
$filters = $this->prepareFilters($filters);
return $this->fieldList->getFieldList(false, true, $filters);
}
/**
* @param array<mixed> $filters
*
* @return array<mixed>
*/
private function prepareFilters(array $filters): array
{
$filters['isPublished'] ??= true;
$filters['isUniqueIdentifer'] ??= true;
$filters['object'] ??= 'lead';
return $filters;
}
}
|