Spaces:
No application file
No application file
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; | |
} | |
} | |