![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/LeadBundle/Entity/ |
<?php namespace Mautic\LeadBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver; use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; use Mautic\CoreBundle\Entity\CacheInvalidateInterface; use Mautic\CoreBundle\Entity\FormEntity; use Mautic\LeadBundle\Field\DTO\CustomFieldObject; use Mautic\LeadBundle\Form\Validator\Constraints\FieldAliasKeyword; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Mapping\ClassMetadata; class LeadField extends FormEntity implements CacheInvalidateInterface { public const CACHE_NAMESPACE = 'LeadField'; /** * @var int */ private $id; /** * @var string */ private $label; /** * @var string */ private $alias; /** * @var string */ private $type = 'text'; /** * @var string|null */ private $group = 'core'; /** * @var string|null */ private $defaultValue; /** * @var bool */ private $isRequired = false; /** * @var bool */ private $isFixed = false; /** * @var bool */ private $isVisible = true; /** * @var bool */ private $isShortVisible = true; /** * @var bool */ private $isListable = true; /** * @var bool */ private $isPubliclyUpdatable = false; /** * @var bool|null */ private $isUniqueIdentifer = false; /** * Workaround for incorrectly spelled $isUniqueIdentifer. * * @var bool */ private $isUniqueIdentifier = false; private ?int $charLengthLimit = 64; /** * @var int|null */ private $order = 1; /** * @var string|null */ private $object = 'lead'; /** * @var array */ private $properties = []; private ?bool $isIndex = false; /** * The column in lead_fields table was not created yet if this property is true. * Entity cannot be published and we cannot work with it until column is created. * * @var bool */ private $columnIsNotCreated = false; /** * This property contains an original value for $isPublished. * $isPublished is always set on false if $columnIsNotCreated is true. * * @var bool */ private $originalIsPublishedValue = false; /** * @var CustomFieldObject */ private $customFieldObject; public function __clone() { $this->id = null; parent::__clone(); } public static function loadMetadata(ORM\ClassMetadata $metadata): void { $builder = new ClassMetadataBuilder($metadata); $builder->addLifecycleEvent('identifierWorkaround', 'postLoad'); $builder->setTable('lead_fields') ->setCustomRepositoryClass(LeadFieldRepository::class) ->addIndex(['object', 'field_order', 'is_published'], 'idx_object_field_order_is_published'); $builder->addId(); $builder->addField('label', 'string'); $builder->addField('alias', 'string'); $builder->createField('type', 'string') ->length(50) ->build(); $builder->createField('group', 'string') ->columnName('field_group') ->nullable() ->build(); $builder->createField('defaultValue', 'string') ->columnName('default_value') ->nullable() ->build(); $builder->createField('isRequired', 'boolean') ->columnName('is_required') ->build(); $builder->createField('isFixed', 'boolean') ->columnName('is_fixed') ->build(); $builder->createField('isVisible', 'boolean') ->columnName('is_visible') ->build(); $builder->createField('isShortVisible', 'boolean') ->columnName('is_short_visible') ->build(); $builder->createField('isListable', 'boolean') ->columnName('is_listable') ->build(); $builder->createField('isPubliclyUpdatable', 'boolean') ->columnName('is_publicly_updatable') ->build(); $builder->addNullableField('isUniqueIdentifer', 'boolean', 'is_unique_identifer'); $builder->addNullableField('isIndex', 'boolean', 'is_index'); $builder->createField('charLengthLimit', 'integer') ->columnName('char_length_limit') ->nullable() ->build(); $builder->createField('order', 'integer') ->columnName('field_order') ->nullable() ->build(); $builder->createField('object', 'string') ->nullable() ->build(); $builder->createField('properties', 'array') ->nullable() ->build(); $builder->createField('columnIsNotCreated', 'boolean') ->columnName('column_is_not_created') ->option('default', false) ->build(); $builder->createField('originalIsPublishedValue', 'boolean') ->columnName('original_is_published_value') ->option('default', false) ->build(); } public static function loadValidatorMetadata(ClassMetadata $metadata): void { $metadata->addPropertyConstraint('label', new Assert\NotBlank( ['message' => 'mautic.lead.field.label.notblank'] )); $metadata->addPropertyConstraint('label', new Assert\Length([ 'max' => 191, 'maxMessage' => 'mautic.lead.field.label.maxlength', ])); $metadata->addConstraint(new UniqueEntity([ 'fields' => ['alias'], 'message' => 'mautic.lead.field.alias.unique', ])); $metadata->addConstraint(new Assert\Callback([ 'callback' => function (LeadField $field, ExecutionContextInterface $context): void { $violations = $context->getValidator()->validate($field, [new FieldAliasKeyword()]); if ($violations->count() > 0) { $context->buildViolation($violations->get(0)->getMessage()) ->atPath('alias') ->addViolation(); } }, ])); } /** * Prepares the metadata for API usage. */ public static function loadApiMetadata(ApiMetadataDriver $metadata): void { $metadata->setGroupPrefix('leadField') ->addListProperties( [ 'id', 'label', 'alias', 'type', 'group', 'order', 'object', ] ) ->addProperties( [ 'defaultValue', 'isRequired', 'isFixed', 'isListable', 'isVisible', 'isVisible', 'isShortVisible', 'isUniqueIdentifier', 'isPubliclyUpdatable', 'properties', ] ) ->build(); } public function setId(?int $id = null): void { $this->id = $id; } /** * Get id. * * @return int */ public function getId() { return $this->id; } /** * Set label. * * @param string $label * * @return LeadField */ public function setLabel($label) { $this->isChanged('label', $label); $this->label = $label; return $this; } /** * Get label. * * @return string */ public function getLabel() { return $this->label; } /** * Proxy function to setLabel(). * * @param string $label * * @return LeadField */ public function setName($label) { $this->isChanged('label', $label); return $this->setLabel($label); } /** * Proxy function for getLabel(). * * @return string */ public function getName() { return $this->getLabel(); } /** * Set type. * * @param string $type * * @return LeadField */ public function setType($type) { $this->isChanged('type', $type); $this->type = $type; return $this; } /** * Get type. * * @return string */ public function getType() { return $this->type; } /** * Set defaultValue. * * @param string|array<string> $defaultValue * * @return LeadField */ public function setDefaultValue($defaultValue) { $defaultValue = is_array($defaultValue) ? implode('|', $defaultValue) : $defaultValue; $this->isChanged('defaultValue', $defaultValue); $this->defaultValue = $defaultValue; return $this; } /** * Get defaultValue. * * @return string */ public function getDefaultValue() { return $this->defaultValue; } /** * Set isRequired. * * @param bool $isRequired * * @return LeadField */ public function setIsRequired($isRequired) { $this->isChanged('isRequired', $isRequired); $this->isRequired = $isRequired; return $this; } /** * Get isRequired. * * @return bool */ public function getIsRequired() { return $this->isRequired; } /** * Proxy to getIsRequired(). * * @return bool */ public function isRequired() { return $this->getIsRequired(); } /** * Set isFixed. * * @param bool $isFixed * * @return LeadField */ public function setIsFixed($isFixed) { $this->isFixed = $isFixed; return $this; } /** * Get isFixed. * * @return bool */ public function getIsFixed() { return $this->isFixed; } /** * Proxy to getIsFixed(). * * @return bool */ public function isFixed() { return $this->getIsFixed(); } /** * @param mixed[] $properties * * @return LeadField */ public function setProperties($properties) { $this->isChanged('properties', $properties); $this->properties = $properties; return $this; } /** * @return mixed[] */ public function getProperties() { return $this->properties; } /** * Set order. * * @param int $order * * @return LeadField */ public function setOrder($order) { $this->isChanged('order', $order); $this->order = $order; return $this; } /** * Get object. * * @return string */ public function getObject() { return $this->object; } public function setCharLengthLimit(?int $charLengthLimit): LeadField { $this->isChanged('charLengthLimit', $charLengthLimit); $this->charLengthLimit = $charLengthLimit; return $this; } public function getCharLengthLimit(): ?int { return $this->charLengthLimit; } public function getCustomFieldObject(): string { if (!$this->customFieldObject) { $this->customFieldObject = new CustomFieldObject($this); } return $this->customFieldObject->getObject(); } /** * Set object. * * @param string $object * * @return LeadField */ public function setObject($object) { $this->isChanged('object', $object); $this->object = $object; return $this; } /** * Get order. * * @return int */ public function getOrder() { return $this->order; } /** * Set isVisible. * * @param bool $isVisible * * @return LeadField */ public function setIsVisible($isVisible) { $this->isChanged('isVisible', $isVisible); $this->isVisible = $isVisible; return $this; } /** * Get isVisible. * * @return bool */ public function getIsVisible() { return $this->isVisible; } /** * Proxy to getIsVisible(). * * @return bool */ public function isVisible() { return $this->getIsVisible(); } /** * Set isShortVisible. * * @param bool $isShortVisible * * @return LeadField */ public function setIsShortVisible($isShortVisible) { $this->isChanged('isShortVisible', $isShortVisible); $this->isShortVisible = $isShortVisible; return $this; } /** * Get isShortVisible. * * @return bool */ public function getIsShortVisible() { return $this->isShortVisible; } /** * Proxy to getIsShortVisible(). * * @return bool */ public function isShortVisible() { return $this->getIsShortVisible(); } /** * Get the unique identifer state of the field. * * @return bool */ public function getIsUniqueIdentifer() { return $this->isUniqueIdentifer; } /** * Set the unique identifer state of the field. * * @param mixed $isUniqueIdentifer * * @return LeadField */ public function setIsUniqueIdentifer($isUniqueIdentifer) { if ($isUniqueIdentifer) { $this->isIndex = true; } $this->isUniqueIdentifer = $this->isUniqueIdentifier = $isUniqueIdentifer; return $this; } /** * Wrapper for incorrectly spelled setIsUniqueIdentifer. * * @return bool */ public function getIsUniqueIdentifier() { return $this->getIsUniqueIdentifer(); } /** * Wrapper for incorrectly spelled setIsUniqueIdentifer. * * @param mixed $isUniqueIdentifier * * @return LeadField */ public function setIsUniqueIdentifier($isUniqueIdentifier) { return $this->setIsUniqueIdentifer($isUniqueIdentifier); } /** * Set alias. * * @param string $alias * * @return LeadField */ public function setAlias($alias) { $this->isChanged('alias', $alias); $this->alias = $alias; return $this; } /** * Get alias. * * @return string */ public function getAlias() { return $this->alias; } /** * Set isListable. * * @param bool $isListable * * @return LeadField */ public function setIsListable($isListable) { $this->isChanged('isListable', $isListable); $this->isListable = $isListable; return $this; } /** * Get isListable. * * @return bool */ public function getIsListable() { return $this->isListable; } /** * Proxy to getIsListable(). * * @return bool */ public function isListable() { return $this->getIsListable(); } /** * @return mixed */ public function getGroup() { return $this->group; } /** * @param mixed $group */ public function setGroup($group): void { $this->group = $group; } /** * @return mixed */ public function getIsPubliclyUpdatable() { return $this->isPubliclyUpdatable; } /** * @param mixed $isPubliclyUpdatable */ public function setIsPubliclyUpdatable($isPubliclyUpdatable): void { $this->isPubliclyUpdatable = (bool) $isPubliclyUpdatable; } /** * Workaround for mispelled isUniqueIdentifer. */ public function identifierWorkaround(): void { $this->isUniqueIdentifier = $this->isUniqueIdentifer; } public function isNew(): bool { return $this->getId() ? false : true; } /** * @return bool */ public function getColumnIsNotCreated() { return $this->columnIsNotCreated; } public function setColumnIsNotCreated(): void { $this->columnIsNotCreated = true; $this->originalIsPublishedValue = $this->getIsPublished(); $this->setIsPublished(false); } public function setColumnWasCreated(): void { $this->columnIsNotCreated = false; $this->setIsPublished($this->getOriginalIsPublishedValue()); } public function disablePublishChange(): bool { return 'email' === $this->getAlias() || $this->getColumnIsNotCreated(); } public function getOriginalIsPublishedValue(): bool { return (bool) $this->originalIsPublishedValue; } public function getCacheNamespacesToDelete(): array { return [self::CACHE_NAMESPACE]; } public function isIsIndex(): bool { return $this->isIndex; } public function setIsIndex(bool $indexable): void { $this->isIndex = $indexable; } }