Spaces:
No application file
No application file
| namespace MauticPlugin\MauticEmailMarketingBundle\Integration; | |
| use MauticPlugin\MauticEmailMarketingBundle\Form\Type\ConstantContactType; | |
| class ConstantContactIntegration extends EmailAbstractIntegration | |
| { | |
| public function getName(): string | |
| { | |
| return 'ConstantContact'; | |
| } | |
| public function getDisplayName(): string | |
| { | |
| return 'Constant Contact'; | |
| } | |
| public function getAuthenticationType(): string | |
| { | |
| return 'oauth2'; | |
| } | |
| /** | |
| * Get the URL required to obtain an oauth2 access token. | |
| */ | |
| public function getAccessTokenUrl(): string | |
| { | |
| return 'https://oauth2.constantcontact.com/oauth2/oauth/token'; | |
| } | |
| /** | |
| * Get the authentication/login URL for oauth2 access. | |
| */ | |
| public function getAuthenticationUrl(): string | |
| { | |
| return 'https://oauth2.constantcontact.com/oauth2/oauth/siteowner/authorize'; | |
| } | |
| /** | |
| * Retrieves and stores tokens returned from oAuthLogin. | |
| * | |
| * @param array $settings | |
| * @param array $parameters | |
| * | |
| * @return bool|string false if no error; otherwise the error string | |
| */ | |
| public function authCallback($settings = [], $parameters = []) | |
| { | |
| // Constanct Contact doesn't like POST | |
| $settings['method'] = 'GET'; | |
| return parent::authCallback($settings, $parameters); | |
| } | |
| /** | |
| * @return mixed[] | |
| */ | |
| public function getAvailableLeadFields($settings = []): array | |
| { | |
| if (!$this->isAuthorized()) { | |
| return []; | |
| } | |
| $fields = [ | |
| 'email', | |
| 'prefix_name', | |
| 'first_name', | |
| 'last_name', | |
| 'company_name', | |
| 'job_title', | |
| 'address_line1', | |
| 'address_line2', | |
| 'address_city', | |
| 'address_state', | |
| 'address_country_code', | |
| 'address_postal_code', | |
| 'cell_phone', | |
| 'fax', | |
| 'work_phone', | |
| 'home_phone', | |
| ]; | |
| $leadFields = []; | |
| foreach ($fields as $f) { | |
| $leadFields[$f] = [ | |
| 'label' => $this->translator->trans('mautic.constantcontact.field.'.$f), | |
| 'type' => 'string', | |
| 'required' => ('email' == $f) ? true : false, | |
| ]; | |
| } | |
| $c = 1; | |
| while ($c <= 15) { | |
| $leadFields['customfield_'.$c] = [ | |
| 'label' => $this->translator->trans('mautic.constantcontact.customfield.'.$f), | |
| 'type' => 'string', | |
| 'required' => false, | |
| ]; | |
| ++$c; | |
| } | |
| return $leadFields; | |
| } | |
| public function pushLead($lead, $config = []): bool | |
| { | |
| $config = $this->mergeConfigToFeatureSettings($config); | |
| $mappedData = $this->populateLeadData($lead, $config); | |
| if (empty($mappedData)) { | |
| return false; | |
| } elseif (empty($mappedData['email'])) { | |
| return false; | |
| } elseif (!isset($config['list_settings'])) { | |
| return false; | |
| } | |
| try { | |
| if ($this->isAuthorized()) { | |
| $email = $mappedData['email']; | |
| unset($mappedData['email']); | |
| $addresses = []; | |
| $customfields = []; | |
| foreach ($mappedData as $k => $v) { | |
| if (str_starts_with($v, 'address_')) { | |
| $addresses[str_replace('address_', '', $k)] = $v; | |
| unset($mappedData[$k]); | |
| } elseif (str_starts_with($v, 'customfield_')) { | |
| $key = str_replace('customfield_', 'CustomField', $k); | |
| $customfields[] = [ | |
| 'name' => $key, | |
| 'value' => $v, | |
| ]; | |
| unset($mappedData[$k]); | |
| } | |
| } | |
| if (!empty($addresses)) { | |
| $addresses['address_type'] = 'PERSONAL'; | |
| $mappedData['addresses'] = $addresses; | |
| } | |
| if (!empty($customfields)) { | |
| $mappedData['custom_fields'] = $customfields; | |
| } | |
| $options = []; | |
| $options['action_by'] = (!empty($config['list_settings']['sendWelcome'])) ? 'ACTION_BY_VISITOR' : 'ACTION_BY_OWNER'; | |
| $listId = $config['list_settings']['list']; | |
| $this->getApiHelper()->subscribeLead($email, $listId, $mappedData, $options); | |
| return true; | |
| } | |
| } catch (\Exception $e) { | |
| $this->logIntegrationError($e); | |
| } | |
| return false; | |
| } | |
| public function getFormType(): string | |
| { | |
| return ConstantContactType::class; | |
| } | |
| } | |