Spaces:
No application file
No application file
File size: 2,762 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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
<?php
namespace MauticPlugin\MauticEmailMarketingBundle\Integration;
use Mautic\PluginBundle\Integration\AbstractIntegration;
use Symfony\Component\Form\Form;
use Symfony\Component\Form\FormBuilder;
abstract class EmailAbstractIntegration extends AbstractIntegration
{
protected $pushContactLink = false;
/**
* @return array
*/
public function getSupportedFeatures()
{
return ['push_lead'];
}
/**
* @param FormBuilder|Form $builder
*/
public function appendToForm(&$builder, $data, $formArea): void
{
if ('features' == $formArea || 'integration' == $formArea) {
if ($this->isAuthorized()) {
$formType = $this->getFormType();
if ($formType) {
if ('integration' == $formArea && isset($data['leadFields']) && empty($data['list_settings']['leadFields'])) {
$data['list_settings']['leadFields'] = $data['leadFields'];
}
$builder->add('list_settings', $formType, [
'label' => false,
'form_area' => $formArea,
'data' => $data['list_settings'] ?? [],
]);
}
}
}
}
/**
* @return string
*/
public function getFormTheme()
{
return '@MauticEmailMarketing/FormTheme/EmailMarketing/layout.html.twig';
}
/**
* Returns form type.
*
* @return string|null
*/
abstract public function getFormType();
/**
* Get the API helper.
*
* @return object
*/
public function getApiHelper()
{
static $helper;
if (empty($helper)) {
$class = '\\MauticPlugin\\MauticEmailMarketingBundle\\Api\\'.$this->getName().'Api';
$helper = new $class($this);
}
return $helper;
}
/**
* Merges a config from integration_list with feature settings.
*
* @param array $config
*
* @return array|mixed
*/
public function mergeConfigToFeatureSettings($config = [])
{
$featureSettings = $this->settings->getFeatureSettings();
if (isset($config['config']['list_settings']['leadFields'])) {
$config['config']['leadFields'] = $this->formatMatchedFields($config['config']['list_settings']['leadFields']);
unset($config['config']['list_settings']['leadFields']);
}
if (empty($config['integration']) || (!empty($config['integration']) && $config['integration'] == $this->getName())) {
$featureSettings = array_merge($featureSettings, $config['config']);
}
return $featureSettings;
}
}
|