![]() 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 Mautic\LeadBundle\Segment\OperatorOptions; trait OperatorListTrait { /** * @var array<string, array<string, array<int, string>>> */ protected $typeOperators = [ 'text' => [ 'include' => [ OperatorOptions::EQUAL_TO, OperatorOptions::NOT_EQUAL_TO, OperatorOptions::EMPTY, OperatorOptions::NOT_EMPTY, OperatorOptions::LIKE, OperatorOptions::NOT_LIKE, OperatorOptions::REGEXP, OperatorOptions::NOT_REGEXP, OperatorOptions::STARTS_WITH, OperatorOptions::ENDS_WITH, OperatorOptions::CONTAINS, ], ], 'select' => [ 'include' => [ OperatorOptions::EQUAL_TO, OperatorOptions::NOT_EQUAL_TO, OperatorOptions::EMPTY, OperatorOptions::NOT_EMPTY, OperatorOptions::REGEXP, OperatorOptions::NOT_REGEXP, OperatorOptions::IN, OperatorOptions::NOT_IN, ], ], 'bool' => [ 'include' => [ OperatorOptions::EQUAL_TO, OperatorOptions::NOT_EQUAL_TO, ], ], 'default' => [ 'include' => [ OperatorOptions::EQUAL_TO, OperatorOptions::NOT_EQUAL_TO, OperatorOptions::GREATER_THAN, OperatorOptions::GREATER_THAN_OR_EQUAL, OperatorOptions::LESS_THAN, OperatorOptions::LESS_THAN_OR_EQUAL, OperatorOptions::EMPTY, OperatorOptions::NOT_EMPTY, OperatorOptions::LIKE, OperatorOptions::NOT_LIKE, OperatorOptions::BETWEEN, OperatorOptions::NOT_BETWEEN, OperatorOptions::REGEXP, OperatorOptions::NOT_REGEXP, OperatorOptions::STARTS_WITH, OperatorOptions::ENDS_WITH, OperatorOptions::CONTAINS, ], ], 'multiselect' => [ 'include' => [ OperatorOptions::IN, OperatorOptions::NOT_IN, OperatorOptions::EMPTY, OperatorOptions::NOT_EMPTY, ], ], 'date' => [ 'include' => [ OperatorOptions::EQUAL_TO, OperatorOptions::NOT_EQUAL_TO, OperatorOptions::GREATER_THAN, OperatorOptions::GREATER_THAN_OR_EQUAL, OperatorOptions::LESS_THAN, OperatorOptions::LESS_THAN_OR_EQUAL, OperatorOptions::EMPTY, OperatorOptions::NOT_EMPTY, OperatorOptions::LIKE, OperatorOptions::NOT_LIKE, OperatorOptions::BETWEEN, OperatorOptions::NOT_BETWEEN, OperatorOptions::REGEXP, OperatorOptions::NOT_REGEXP, OperatorOptions::DATE, OperatorOptions::STARTS_WITH, OperatorOptions::ENDS_WITH, OperatorOptions::CONTAINS, ], ], 'lookup_id' => [ 'include' => [ OperatorOptions::EQUAL_TO, OperatorOptions::NOT_EQUAL_TO, OperatorOptions::EMPTY, OperatorOptions::NOT_EMPTY, ], ], 'number' => [ 'include' => [ OperatorOptions::EQUAL_TO, OperatorOptions::NOT_EQUAL_TO, OperatorOptions::GREATER_THAN, OperatorOptions::GREATER_THAN_OR_EQUAL, OperatorOptions::LESS_THAN, OperatorOptions::LESS_THAN_OR_EQUAL, OperatorOptions::EMPTY, OperatorOptions::NOT_EMPTY, OperatorOptions::LIKE, OperatorOptions::NOT_LIKE, OperatorOptions::REGEXP, OperatorOptions::NOT_REGEXP, OperatorOptions::STARTS_WITH, OperatorOptions::ENDS_WITH, OperatorOptions::CONTAINS, ], ], ]; /** * @deprecated to be removed in Mautic 3. Use FilterOperatorProvider::getAllOperators() instead. * * @param string|null $operator * * @return array<string,array<string,string>>|array<string,string> */ public function getFilterExpressionFunctions($operator = null) { $operatorOption = OperatorOptions::getFilterExpressionFunctions(); return (null === $operator) ? $operatorOption : $operatorOption[$operator]; } /** * @param string|mixed[]|null $type * @param mixed[] $overrideHiddenTypes * * @return mixed[] */ public function getOperatorsForFieldType($type = null, $overrideHiddenTypes = []) { static $processedTypes = []; if (is_array($type)) { return $this->getOperatorChoiceList($type, $overrideHiddenTypes); } elseif (array_key_exists($type, $processedTypes)) { return $processedTypes[$type]; } $type = $this->normalizeType($type); if (null === $type) { foreach ($this->typeOperators as $type => $def) { if (!array_key_exists($type, $processedTypes)) { $processedTypes[$type] = $this->getOperatorChoiceList($def, $overrideHiddenTypes); } } return $processedTypes; } $processedTypes[$type] = $this->getOperatorChoiceList($this->typeOperators[$type], $overrideHiddenTypes); return $processedTypes[$type]; } /** * @param mixed[] $definition * @param mixed[] $overrideHiddenOperators * * @return mixed[] */ public function getOperatorChoiceList($definition, $overrideHiddenOperators = []): array { static $operatorChoices = []; if (empty($operatorChoices)) { $operatorList = $this->getFilterExpressionFunctions(); $operatorChoices = []; foreach ($operatorList as $operator => $def) { if (empty($def['hide']) || in_array($operator, $overrideHiddenOperators)) { $operatorChoices[$operator] = $def['label']; } } } $choices = $operatorChoices; if (isset($definition['include'])) { // Inclusive operators $choices = array_intersect_key($choices, array_flip($definition['include'])); } elseif (isset($definition['exclude'])) { // Exclusive operators $choices = array_diff_key($choices, array_flip($definition['exclude'])); } if (property_exists($this, 'translator')) { foreach ($choices as $value => $label) { $choices[$value] = $this->translator->trans($label); } } return array_flip($choices); } /** * @deprecated These aliases are subscribed in the TypeOperatorSubscriber now so this is not necessary. To be removed in next Mautic version. */ protected function normalizeType(mixed $type): mixed { if (null === $type) { return $type; } if ('boolean' === $type) { return 'bool'; } if (in_array($type, ['country', 'timezone', 'region', 'locale'])) { return 'select'; } if (in_array($type, ['lookup', 'text', 'email', 'url', 'email', 'tel'])) { return 'text'; } if ('datetime' === $type) { return 'date'; } if (!array_key_exists($type, $this->typeOperators)) { return 'default'; } return $type; } }