diff --git a/integrations/bootstrap.php b/integrations/bootstrap.php index 70338c48..1116b578 100755 --- a/integrations/bootstrap.php +++ b/integrations/bootstrap.php @@ -44,9 +44,9 @@ function mc4wp_admin_after_integration_settings(MC4WP_Integration $integration, mc4wp_register_integration('affiliatewp', 'MC4WP_AffiliateWP_Integration'); mc4wp_register_integration('give', 'MC4WP_Give_Integration'); mc4wp_register_integration('custom', 'MC4WP_Custom_Integration', true); +mc4wp_register_integration('woocommerce', 'MC4WP_WooCommerce_Integration'); -require __DIR__ . '/woocommerce/woocommerce.php'; require __DIR__ . '/prosopo-procaptcha/bootstrap.php'; -require __DIR__ . '/ninja-forms/bootstrap.php'; require __DIR__ . '/wpforms/bootstrap.php'; require __DIR__ . '/gravity-forms/bootstrap.php'; +require __DIR__ . '/ninja-forms/bootstrap.php'; diff --git a/integrations/gravity-forms/bootstrap.php b/integrations/gravity-forms/bootstrap.php index 912b1f48..57c2e795 100755 --- a/integrations/gravity-forms/bootstrap.php +++ b/integrations/gravity-forms/bootstrap.php @@ -4,6 +4,8 @@ mc4wp_register_integration('gravity-forms', 'MC4WP_Gravity_Forms_Integration', true); -if (class_exists('GF_Fields')) { - GF_Fields::register(new MC4WP_Gravity_Forms_Field()); -} +add_action('plugins_loaded', function() { + if (class_exists('GF_Fields')) { + GF_Fields::register(new MC4WP_Gravity_Forms_Field()); + } +}); diff --git a/integrations/ninja-forms/bootstrap.php b/integrations/ninja-forms/bootstrap.php index dd1b7102..b6f32156 100755 --- a/integrations/ninja-forms/bootstrap.php +++ b/integrations/ninja-forms/bootstrap.php @@ -7,7 +7,7 @@ return $fields; }); -add_action('ninja_forms_register_actions', function($actions) { +add_filter('ninja_forms_register_actions', function($actions) { $actions['mc4wp_subscribe'] = new MC4WP_Ninja_Forms_Action(); return $actions; }); diff --git a/integrations/ninja-forms/class-action.php b/integrations/ninja-forms/class-action.php index d7ad99df..e271b527 100755 --- a/integrations/ninja-forms/class-action.php +++ b/integrations/ninja-forms/class-action.php @@ -1,155 +1,155 @@ _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; - } + /** + * @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; + } } diff --git a/integrations/woocommerce/woocommerce.php b/integrations/woocommerce/woocommerce.php deleted file mode 100644 index 18c8139b..00000000 --- a/integrations/woocommerce/woocommerce.php +++ /dev/null @@ -1,3 +0,0 @@ -add_hooks(); } } + + // bootstrap integrations + require __DIR__ . '/integrations/bootstrap.php'; } function _mc4wp_on_plugin_activation() @@ -104,12 +107,8 @@ function _mc4wp_on_plugin_activation() wp_schedule_event(strtotime($time_string), 'daily', 'mc4wp_refresh_mailchimp_lists'); } -// bootstrap custom integrations -function _mc4wp_bootstrap_integrations() -{ - require MC4WP_PLUGIN_DIR . '/integrations/bootstrap.php'; -} +// bootstrap main plugin add_action('plugins_loaded', '_mc4wp_load_plugin', 8); -add_action('plugins_loaded', '_mc4wp_bootstrap_integrations', 90); + register_activation_hook(__FILE__, '_mc4wp_on_plugin_activation');