Spaces:
No application file
No application file
namespace Mautic\InstallBundle\InstallFixtures\ORM; | |
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; | |
use Doctrine\Common\DataFixtures\AbstractFixture; | |
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; | |
use Doctrine\Persistence\ObjectManager; | |
use Mautic\LeadBundle\Entity\LeadField; | |
use Mautic\LeadBundle\Model\FieldModel; | |
use Symfony\Contracts\Translation\TranslatorInterface; | |
class LeadFieldData extends AbstractFixture implements OrderedFixtureInterface, FixtureGroupInterface | |
{ | |
public function __construct( | |
private TranslatorInterface $translator | |
) { | |
} | |
public static function getGroups(): array | |
{ | |
return ['group_install', 'group_mautic_install_data']; | |
} | |
/** | |
* @throws \Doctrine\DBAL\Schema\SchemaException | |
*/ | |
public function load(ObjectManager $manager): void | |
{ | |
$fieldGroups['lead'] = FieldModel::$coreFields; | |
$fieldGroups['company'] = FieldModel::$coreCompanyFields; | |
foreach ($fieldGroups as $fields) { | |
$order = 1; | |
foreach ($fields as $alias => $field) { | |
$type = $field['type'] ?? 'text'; | |
$entity = new LeadField(); | |
$entity->setLabel($this->translator->trans('mautic.lead.field.'.$alias, [], 'fixtures')); | |
$entity->setGroup($field['group'] ?? 'core'); | |
$entity->setOrder($order); | |
$entity->setAlias($alias); | |
$entity->setIsRequired($field['required'] ?? false); | |
$entity->setType($type); | |
$entity->setObject($field['object']); | |
$entity->setIsUniqueIdentifer(!empty($field['unique'])); | |
$entity->setProperties($field['properties'] ?? []); | |
$entity->setIsFixed(!empty($field['fixed'])); | |
$entity->setIsListable(!empty($field['listable'])); | |
$entity->setIsShortVisible(!empty($field['short'])); | |
if (isset($field['default'])) { | |
$entity->setDefaultValue($field['default']); | |
} | |
$manager->persist($entity); | |
$manager->flush(); | |
if (!$this->hasReference('leadfield-'.$alias)) { | |
$this->addReference('leadfield-'.$alias, $entity); | |
} | |
++$order; | |
} | |
} | |
} | |
public function getOrder() | |
{ | |
return 4; | |
} | |
} | |