Skip to content

Commit

Permalink
Merge pull request #8139 from anton-vlasenko/refactor-mautic-email-ma…
Browse files Browse the repository at this point in the history
…rketing-bundle

Refactor deprecations in MauticEmailMarketing bundle (M3 migration)
  • Loading branch information
escopecz committed Nov 26, 2019
2 parents a5bddcc + 8277c03 commit ac59369
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 66 deletions.
9 changes: 3 additions & 6 deletions plugins/MauticEmailMarketingBundle/Config/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,15 @@
'forms' => [
'mautic.form.type.emailmarketing.mailchimp' => [
'class' => 'MauticPlugin\MauticEmailMarketingBundle\Form\Type\MailchimpType',
'arguments' => ['mautic.factory', 'session', 'mautic.helper.core_parameters'],
'alias' => 'emailmarketing_mailchimp',
'arguments' => ['mautic.helper.integration', 'mautic.plugin.model.plugin', 'session', 'mautic.helper.core_parameters'],
],
'mautic.form.type.emailmarketing.constantcontact' => [
'class' => 'MauticPlugin\MauticEmailMarketingBundle\Form\Type\ConstantContactType',
'arguments' => ['mautic.factory', 'session', 'mautic.helper.core_parameters'],
'alias' => 'emailmarketing_constantcontact',
'arguments' => ['mautic.helper.integration', 'mautic.plugin.model.plugin', 'session', 'mautic.helper.core_parameters'],
],
'mautic.form.type.emailmarketing.icontact' => [
'class' => 'MauticPlugin\MauticEmailMarketingBundle\Form\Type\IcontactType',
'arguments' => ['mautic.factory', 'session', 'mautic.helper.core_parameters'],
'alias' => 'emailmarketing_icontact',
'arguments' => ['mautic.helper.integration', 'mautic.plugin.model.plugin', 'session', 'mautic.helper.core_parameters'],
],
],
'integrations' => [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,31 @@

namespace MauticPlugin\MauticEmailMarketingBundle\Form\Type;

use Mautic\CoreBundle\Factory\MauticFactory;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Mautic\PluginBundle\Helper\IntegrationHelper;
use Mautic\PluginBundle\Model\PluginModel;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

/**
* Class ConstantContactType.
*/
class ConstantContactType extends AbstractType
{
/**
* @var MauticFactory
* @var IntegrationHelper
*/
private $factory;
private $integrationHelper;

/** @var PluginModel */
private $pluginModel;

/**
* @var Session
*/
Expand All @@ -40,9 +46,10 @@ class ConstantContactType extends AbstractType
*/
protected $coreParametersHelper;

public function __construct(MauticFactory $factory, Session $session, CoreParametersHelper $coreParametersHelper)
public function __construct(IntegrationHelper $integrationHelper, PluginModel $pluginModel, Session $session, CoreParametersHelper $coreParametersHelper)
{
$this->factory = $factory;
$this->integrationHelper = $integrationHelper;
$this->pluginModel = $pluginModel;
$this->session = $session;
$this->coreParametersHelper = $coreParametersHelper;
}
Expand All @@ -53,11 +60,8 @@ public function __construct(MauticFactory $factory, Session $session, CoreParame
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
/** @var \Mautic\PluginBundle\Helper\IntegrationHelper $helper */
$helper = $this->factory->getHelper('integration');

/** @var \MauticPlugin\MauticEmailMarketingBundle\Integration\ConstantContactIntegration $object */
$object = $helper->getIntegrationObject('ConstantContact');
$object = $this->integrationHelper->getIntegrationObject('ConstantContact');
$integrationName = $object->getName();
$session = $this->session;
$limit = $session->get(
Expand All @@ -84,11 +88,12 @@ public function buildForm(FormBuilderInterface $builder, array $options)
$page = 1;
}

$builder->add('list', 'choice', [
'choices' => $choices,
'label' => 'mautic.emailmarketing.list',
'required' => false,
'attr' => [
$builder->add('list', ChoiceType::class, [
'choices' => array_flip($choices), // Choice type expects labels as keys
'choices_as_values' => true,
'label' => 'mautic.emailmarketing.list',
'required' => false,
'attr' => [
'tooltip' => 'mautic.emailmarketing.list.tooltip',
],
]);
Expand All @@ -109,7 +114,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
}

if (isset($options['form_area']) && $options['form_area'] == 'integration') {
$leadFields = $this->factory->getModel('plugin')->getLeadFields();
$leadFields = $this->pluginModel->getLeadFields();

$fields = $object->getFormLeadFields();

Expand All @@ -134,15 +139,15 @@ public function buildForm(FormBuilderInterface $builder, array $options)
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setOptional(['form_area']);
$resolver->setDefined(['form_area']);
}

/**
* @return string
*/
public function getName()
public function getBlockPrefix()
{
return 'emailmarketing_constantcontact';
}
Expand Down
42 changes: 23 additions & 19 deletions plugins/MauticEmailMarketingBundle/Form/Type/IcontactType.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,30 @@

namespace MauticPlugin\MauticEmailMarketingBundle\Form\Type;

use Mautic\CoreBundle\Factory\MauticFactory;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Mautic\PluginBundle\Helper\IntegrationHelper;
use Mautic\PluginBundle\Model\PluginModel;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

/**
* Class ConstantContactType.
*/
class IcontactType extends AbstractType
{
/**
* @var MauticFactory
* @var IntegrationHelper
*/
private $factory;
private $integrationHelper;

/** @var PluginModel */
private $pluginModel;

/**
* @var Session
Expand All @@ -41,9 +46,10 @@ class IcontactType extends AbstractType
*/
protected $coreParametersHelper;

public function __construct(MauticFactory $factory, Session $session, CoreParametersHelper $coreParametersHelper)
public function __construct(IntegrationHelper $integrationHelper, PluginModel $pluginModel, Session $session, CoreParametersHelper $coreParametersHelper)
{
$this->factory = $factory;
$this->integrationHelper = $integrationHelper;
$this->pluginModel = $pluginModel;
$this->session = $session;
$this->coreParametersHelper = $coreParametersHelper;
}
Expand All @@ -54,11 +60,8 @@ public function __construct(MauticFactory $factory, Session $session, CoreParame
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
/** @var \Mautic\PluginBundle\Helper\IntegrationHelper $helper */
$helper = $this->factory->getHelper('integration');

/** @var \MauticPlugin\MauticEmailMarketingBundle\Integration\IcontactIntegration $object */
$object = $helper->getIntegrationObject('Icontact');
$object = $this->integrationHelper->getIntegrationObject('Icontact');
$integrationName = $object->getName();
$session = $this->session;
$limit = $session->get(
Expand All @@ -85,11 +88,12 @@ public function buildForm(FormBuilderInterface $builder, array $options)
$page = 1;
}

$builder->add('list', 'choice', [
'choices' => $choices,
'label' => 'mautic.emailmarketing.list',
'required' => false,
'attr' => [
$builder->add('list', ChoiceType::class, [
'choices' => array_flip($choices), // Choice type expects labels as keys
'choices_as_values' => true,
'label' => 'mautic.emailmarketing.list',
'required' => false,
'attr' => [
'tooltip' => 'mautic.emailmarketing.list.tooltip',
],
]);
Expand All @@ -105,7 +109,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
}

if (isset($options['form_area']) && $options['form_area'] == 'integration') {
$leadFields = $this->factory->getModel('plugin')->getLeadFields();
$leadFields = $this->pluginModel->getLeadFields();

$fields = $object->getFormLeadFields();

Expand All @@ -130,15 +134,15 @@ public function buildForm(FormBuilderInterface $builder, array $options)
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setOptional(['form_area']);
$resolver->setDefined(['form_area']);
}

/**
* @return string
*/
public function getName()
public function getBlockPrefix()
{
return 'emailmarketing_icontact';
}
Expand Down
43 changes: 24 additions & 19 deletions plugins/MauticEmailMarketingBundle/Form/Type/MailchimpType.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,32 @@

namespace MauticPlugin\MauticEmailMarketingBundle\Form\Type;

use Mautic\CoreBundle\Factory\MauticFactory;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Mautic\PluginBundle\Helper\IntegrationHelper;
use Mautic\PluginBundle\Model\PluginModel;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

/**
* Class MailchimpType.
*/
class MailchimpType extends AbstractType
{
/**
* @var MauticFactory
* @var IntegrationHelper
*/
private $factory;
private $integrationHelper;

/** @var PluginModel */
private $pluginModel;

/**
* @var Session
*/
Expand All @@ -41,9 +47,10 @@ class MailchimpType extends AbstractType
*/
protected $coreParametersHelper;

public function __construct(MauticFactory $factory, Session $session, CoreParametersHelper $coreParametersHelper)
public function __construct(IntegrationHelper $integrationHelper, PluginModel $pluginModel, Session $session, CoreParametersHelper $coreParametersHelper)
{
$this->factory = $factory;
$this->integrationHelper = $integrationHelper;
$this->pluginModel = $pluginModel;
$this->session = $session;
$this->coreParametersHelper = $coreParametersHelper;
}
Expand All @@ -54,11 +61,8 @@ public function __construct(MauticFactory $factory, Session $session, CoreParame
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
/** @var \Mautic\PluginBundle\Helper\IntegrationHelper $helper */
$helper = $this->factory->getHelper('integration');

/** @var \MauticPlugin\MauticEmailMarketingBundle\Integration\MailchimpIntegration $mailchimp */
$mailchimp = $helper->getIntegrationObject('Mailchimp');
$mailchimp = $this->integrationHelper->getIntegrationObject('Mailchimp');

$api = $mailchimp->getApiHelper();
try {
Expand All @@ -78,11 +82,12 @@ public function buildForm(FormBuilderInterface $builder, array $options)
$error = $e->getMessage();
}

$builder->add('list', 'choice', [
'choices' => $choices,
'label' => 'mautic.emailmarketing.list',
'required' => false,
'attr' => [
$builder->add('list', ChoiceType::class, [
'choices' => array_flip($choices), // Choice type expects labels as keys
'choices_as_values' => true,
'label' => 'mautic.emailmarketing.list',
'required' => false,
'attr' => [
'tooltip' => 'mautic.emailmarketing.list.tooltip',
'onchange' => 'Mautic.getIntegrationLeadFields(\'Mailchimp\', this, {"list": this.value});',
],
Expand All @@ -109,7 +114,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
}

if (isset($options['form_area']) && $options['form_area'] == 'integration') {
$leadFields = $this->factory->getModel('plugin')->getLeadFields();
$leadFields = $this->pluginModel->getLeadFields();

$formModifier = function (FormInterface $form, $data) use ($mailchimp, $leadFields) {
$integrationName = $mailchimp->getName();
Expand Down Expand Up @@ -185,15 +190,15 @@ function (FormEvent $event) use ($formModifier) {
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setOptional(['form_area']);
$resolver->setDefined(['form_area']);
}

/**
* @return string
*/
public function getName()
public function getBlockPrefix()
{
return 'emailmarketing_mailchimp';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

namespace MauticPlugin\MauticEmailMarketingBundle\Integration;

use MauticPlugin\MauticEmailMarketingBundle\Form\Type\ConstantContactType;

/**
* Class ConstantContactIntegration.
*/
Expand Down Expand Up @@ -189,4 +191,14 @@ public function pushLead($lead, $config = [])

return false;
}

/**
* {@inheritdoc}
*
* @return string|null
*/
public function getFormType()
{
return ConstantContactType::class;
}
}

0 comments on commit ac59369

Please sign in to comment.