Spaces:
No application file
No application file
File size: 2,234 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 83 84 85 86 87 88 89 90 91 92 |
<?php
declare(strict_types=1);
namespace Mautic\LeadBundle\Field;
use Mautic\LeadBundle\Entity\Company;
use Mautic\LeadBundle\Entity\IdentifierFieldEntityInterface;
use Mautic\LeadBundle\Entity\Lead;
class IdentifierFields
{
public function __construct(
private FieldsWithUniqueIdentifier $fieldsWithUniqueIdentifier,
private FieldList $fieldList
) {
}
/**
* @return string[]
*/
public function getFieldList(string $object, ?object $entityClass = null): array
{
return array_merge(
$this->getDefaultFields($object, $entityClass),
$this->getUniqueIdentifierFields($object),
$this->getSocialFields($object)
);
}
/**
* @return string[]
*/
private function getDefaultFields(string $object, ?object $entityClass): array
{
if (null === $entityClass) {
switch ($object) {
case 'lead':
$entityClass = Lead::class;
break;
case 'company':
$entityClass = Company::class;
break;
default:
return [];
}
}
if (is_subclass_of($entityClass, IdentifierFieldEntityInterface::class)) {
return $entityClass::getDefaultIdentifierFields();
}
// The class wasn't recognized or doesn't implement the interface
return [];
}
/**
* @return string[]
*/
private function getUniqueIdentifierFields(string $object): array
{
$fields = $this->fieldsWithUniqueIdentifier->getFieldsWithUniqueIdentifier(
[
'object' => $object,
]
);
return array_keys($fields);
}
/**
* @return string[]
*/
private function getSocialFields(string $object): array
{
$fields = $this->fieldList->getFieldList(
true,
false,
[
'isPublished' => true,
'object' => $object,
]
);
if (!isset($fields['Social'])) {
return [];
}
return array_keys($fields['Social']);
}
}
|