![]() 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/plugins/MauticCrmBundle/Api/Zoho/ |
<?php namespace MauticPlugin\MauticCrmBundle\Api\Zoho; use MauticPlugin\MauticCrmBundle\Api\Zoho\Exception\MatchingKeyNotFoundException; class Mapper { private array $contact = []; private array $mappedFields = []; private $object; /** * @var array[] */ private array $objectMappedValues = []; /** * Used to keep track of the key used to map contact ID with the response Zoho returns. */ private int $objectCounter = 0; /** * Used to map contact ID with the response Zoho returns. */ private array $contactMapper = []; public function __construct( private array $fields ) { } /** * @return $this */ public function setObject($object) { $this->object = $object; return $this; } /** * @return $this */ public function setContact(array $contact) { $this->contact = $contact; return $this; } /** * @return $this */ public function setMappedFields(array $fields) { $this->mappedFields = $fields; return $this; } /** * @param int $mauticContactId Mautic Contact ID * @param int|null $zohoId Zoho ID if known * * @return int If any single field is mapped, return 1 to count as one contact to be updated */ public function map($mauticContactId, $zohoId = null): int { $mapped = 0; $objectMappedValues = []; foreach ($this->mappedFields as $zohoField => $mauticField) { $field = $this->getField($zohoField); if ($field && isset($this->contact[$mauticField]) && $this->contact[$mauticField]) { $mapped = 1; $apiField = $field['api_name']; $apiValue = $this->contact[$mauticField]; $objectMappedValues[$apiField] = $apiValue; } if ($zohoId) { $objectMappedValues['id'] = $zohoId; } } $this->objectMappedValues[$this->objectCounter] = $objectMappedValues; $this->contactMapper[$this->objectCounter] = $mauticContactId; ++$this->objectCounter; return $mapped; } /** * @return array */ public function getArray() { return $this->objectMappedValues; } /** * @param int $key * * @return int * * @throws MatchingKeyNotFoundException */ public function getContactIdByKey($key) { if (isset($this->contactMapper[$key])) { return $this->contactMapper[$key]; } throw new MatchingKeyNotFoundException(); } /** * @return mixed */ private function getField($fieldName) { return $this->fields[$this->object][$fieldName] ?? null; } }