Spaces:
No application file
No application file
File size: 2,322 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 |
<?php
declare(strict_types=1);
namespace Mautic\FormBundle\Helper;
use Mautic\FormBundle\Model\FormModel;
class PropertiesAccessor
{
public function __construct(
private FormModel $formModel
) {
}
/**
* @param mixed[] $field
*
* @return mixed[]
*/
public function getProperties(array $field)
{
$hasContactFieldMapped = !empty($field['mappedField']) && !empty($field['mappedObject']) && 'contact' === $field['mappedObject'];
if ('country' === $field['type'] || ($hasContactFieldMapped && !empty($field['properties']['syncList']))) {
return $this->formModel->getContactFieldPropertiesList((string) $field['mappedField']);
} elseif (!empty($field['properties'])) {
return $this->getOptionsListFromProperties($field['properties']);
}
return [];
}
/**
* @param string|mixed[] $options
*
* @return string[]
*/
public function getChoices($options): array
{
$choices = [];
if (is_array($options) && !isset($options[0]['value'])) {
return array_flip($options);
}
if (!is_array($options)) {
$options = explode('|', (string) $options);
}
foreach ($options as $option) {
if (is_array($option)) {
if (isset($option['label']) && isset($option['alias'])) {
$choices[$option['label']] = $option['alias'];
} elseif (isset($option['label']) && isset($option['value'])) {
$choices[$option['label']] = $option['value'];
} else {
foreach ($option as $opt) {
$choices[$opt] = $opt;
}
}
} else {
$choices[$option] = $option;
}
}
return $choices;
}
/**
* @param array<string,mixed> $properties
*
* @return mixed[]
*/
private function getOptionsListFromProperties(array $properties)
{
if (!empty($properties['list']['list'])) {
return $properties['list']['list'];
} elseif (!empty($properties['optionlist']['list'])) {
return $properties['optionlist']['list'];
}
return [];
}
}
|