Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Sync\ValueNormalizer; | |
| use Mautic\IntegrationsBundle\Sync\DAO\Value\NormalizedValueDAO; | |
| final class ValueNormalizer implements ValueNormalizerInterface | |
| { | |
| /** | |
| * @param mixed $value | |
| */ | |
| public function normalizeForMautic(string $type, $value): NormalizedValueDAO | |
| { | |
| switch ($type) { | |
| case NormalizedValueDAO::STRING_TYPE: | |
| case NormalizedValueDAO::TEXT_TYPE: | |
| case NormalizedValueDAO::TEXTAREA_TYPE: | |
| case NormalizedValueDAO::URL_TYPE: | |
| case NormalizedValueDAO::EMAIL_TYPE: | |
| case NormalizedValueDAO::SELECT_TYPE: | |
| case NormalizedValueDAO::MULTISELECT_TYPE: | |
| case NormalizedValueDAO::REGION_TYPE: | |
| case NormalizedValueDAO::LOOKUP_TYPE: | |
| return new NormalizedValueDAO($type, $value, (string) $value); | |
| case NormalizedValueDAO::INT_TYPE: | |
| return new NormalizedValueDAO($type, $value, (int) $value); | |
| case NormalizedValueDAO::FLOAT_TYPE: | |
| case NormalizedValueDAO::DOUBLE_TYPE: | |
| return new NormalizedValueDAO($type, $value, (float) $value); | |
| case NormalizedValueDAO::DATE_TYPE: | |
| case NormalizedValueDAO::DATETIME_TYPE: | |
| // We expect a string value. | |
| if (is_string($value)) { | |
| return new NormalizedValueDAO($type, $value, new \DateTime($value)); | |
| } | |
| // Other value types we normalize to null. | |
| return new NormalizedValueDAO($type, $value, null); | |
| case NormalizedValueDAO::BOOLEAN_TYPE: | |
| $value = 'false' === $value ? false : $value; | |
| $value = 'true' === $value ? true : $value; | |
| return new NormalizedValueDAO($type, $value, (bool) $value); | |
| default: | |
| throw new \InvalidArgumentException('Variable type, '.$type.', not supported'); | |
| } | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function normalizeForIntegration(NormalizedValueDAO $value) | |
| { | |
| return $value->getNormalizedValue(); | |
| } | |
| } | |