first commit
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
if (! defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Class MC4WP_Ninja_Forms_Action
|
||||
*/
|
||||
final class MC4WP_Ninja_Forms_Action extends NF_Abstracts_ActionNewsletter
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $_name = 'mc4wp_subscribe';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->_nicename = __('Mailchimp', 'mailchimp-for-wp');
|
||||
$prefix = $this->get_name();
|
||||
|
||||
unset($this->_settings[ $prefix . 'newsletter_list_groups' ]);
|
||||
|
||||
$this->_settings['double_optin'] = array(
|
||||
'name' => 'double_optin',
|
||||
'type' => 'select',
|
||||
'label' => __('Use double opt-in?', 'mailchimp-for-wp'),
|
||||
'width' => 'full',
|
||||
'group' => 'primary',
|
||||
'value' => 1,
|
||||
'options' => array(
|
||||
array(
|
||||
'value' => 1,
|
||||
'label' => 'Yes',
|
||||
),
|
||||
array(
|
||||
'value' => 0,
|
||||
'label' => 'No',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
$this->_settings['update_existing'] = array(
|
||||
'name' => 'update_existing',
|
||||
'type' => 'select',
|
||||
'label' => __('Update existing subscribers?', 'mailchimp-for-wp'),
|
||||
'width' => 'full',
|
||||
'group' => 'primary',
|
||||
'value' => 0,
|
||||
'options' => array(
|
||||
array(
|
||||
'value' => 1,
|
||||
'label' => 'Yes',
|
||||
),
|
||||
array(
|
||||
'value' => 0,
|
||||
'label' => 'No',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// $this->_settings[ 'replace_interests' ] = array(
|
||||
// 'name' => 'replace_interests',
|
||||
// 'type' => 'select',
|
||||
// 'label' => __( 'Replace existing interest groups?', 'mailchimp-for-wp'),
|
||||
// 'width' => 'full',
|
||||
// 'group' => 'primary',
|
||||
// 'value' => 0,
|
||||
// 'options' => array(
|
||||
// array(
|
||||
// 'value' => 1,
|
||||
// 'label' => 'Yes',
|
||||
// ),
|
||||
// array(
|
||||
// 'value' => 0,
|
||||
// 'label' => 'No',
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
}
|
||||
|
||||
/*
|
||||
* PUBLIC METHODS
|
||||
*/
|
||||
|
||||
public function save($action_settings)
|
||||
{
|
||||
}
|
||||
|
||||
public function process($action_settings, $form_id, $data)
|
||||
{
|
||||
if (empty($action_settings['newsletter_list']) || empty($action_settings['EMAIL'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
// find "mc4wp_optin" type field, bail if not checked.
|
||||
foreach ($data['fields'] as $field_data) {
|
||||
if ($field_data['type'] === 'mc4wp_optin' && empty($field_data['value'])) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$list_id = $action_settings['newsletter_list'];
|
||||
$email_address = $action_settings['EMAIL'];
|
||||
$mailchimp = new MC4WP_MailChimp();
|
||||
|
||||
$merge_fields = $mailchimp->get_list_merge_fields($list_id);
|
||||
foreach ($merge_fields as $merge_field) {
|
||||
if (! empty($action_settings[ $merge_field->tag ])) {
|
||||
$merge_fields[ $merge_field->tag ] = $action_settings[ $merge_field->tag ];
|
||||
}
|
||||
}
|
||||
|
||||
$double_optin = (int) $action_settings['double_optin'] !== 0;
|
||||
$update_existing = (int) $action_settings['update_existing'] === 1;
|
||||
$replace_interests = isset($action_settings['replace_interests']) && (int) $action_settings['replace_interests'] === 1;
|
||||
|
||||
do_action('mc4wp_integration_ninja_forms_subscribe', $email_address, $merge_fields, $list_id, $double_optin, $update_existing, $replace_interests, $form_id);
|
||||
}
|
||||
|
||||
protected function get_lists()
|
||||
{
|
||||
$mailchimp = new MC4WP_MailChimp();
|
||||
|
||||
/** @var array $lists */
|
||||
$lists = $mailchimp->get_lists();
|
||||
$return = array();
|
||||
|
||||
foreach ($lists as $list) {
|
||||
$list_fields = array();
|
||||
|
||||
foreach ($mailchimp->get_list_merge_fields($list->id) as $merge_field) {
|
||||
$list_fields[] = array(
|
||||
'value' => $merge_field->tag,
|
||||
'label' => $merge_field->name,
|
||||
);
|
||||
}
|
||||
|
||||
// TODO: Add support for groups once base class supports this.
|
||||
|
||||
$return[] = array(
|
||||
'value' => $list->id,
|
||||
'label' => $list->name,
|
||||
'fields' => $list_fields,
|
||||
);
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user