get_email_type() public method

Get "email_type" setting for new MailChimp subscribers added by this form.
public get_email_type ( ) : string
return string
 /**
  * Process a subscribe form.
  *
  * @param MC4WP_Form $form
  */
 public function process_subscribe_form(MC4WP_Form $form)
 {
     $api = $this->get_api();
     $result = false;
     $email_type = $form->get_email_type();
     $map = new MC4WP_Field_Map($form->data, $form->get_lists());
     // loop through selected lists
     foreach ($map->list_fields as $list_id => $list_field_data) {
         // allow plugins to alter merge vars for each individual list
         $merge_vars = $list_field_data;
         /**
          * Filters merge vars which are sent to MailChimp, only fires for form requests.
          *
          * @param array $merge_vars
          * @param MC4WP_Form $form
          */
         $merge_vars = (array) apply_filters('mc4wp_form_merge_vars', $merge_vars, $form);
         // send a subscribe request to MailChimp for each list
         $result = $api->subscribe($list_id, $form->data['EMAIL'], $merge_vars, $email_type, $form->settings['double_optin'], $form->settings['update_existing'], $form->settings['replace_interests'], $form->settings['send_welcome']);
     }
     if (!$result) {
         // add error code to form object
         $form->errors[] = $api->get_error_code() === 214 ? 'already_subscribed' : 'error';
         return;
     }
     /**
      * Fires right after a form was used to subscribe.
      *
      * @since 3.0
      *
      * @param MC4WP_Form $form Instance of the submitted form
      */
     do_action('mc4wp_form_subscribed', $form);
 }
Exemplo n.º 2
0
 /**
  * Process a subscribe form.
  *
  * @param MC4WP_Form $form
  */
 public function process_subscribe_form(MC4WP_Form $form)
 {
     $api = $this->get_api();
     $result = false;
     $email = $form->data['EMAIL'];
     $email_type = $form->get_email_type();
     $merge_vars = $form->data;
     /**
      * Filters merge vars which are sent to MailChimp, only fires for form requests.
      *
      * @param array $merge_vars
      * @param MC4WP_Form $form
      */
     $merge_vars = (array) apply_filters('mc4wp_form_merge_vars', $merge_vars, $form);
     // create a map of all lists with list-specific merge vars
     $map = new MC4WP_Field_Map($merge_vars, $form->get_lists());
     // loop through lists
     foreach ($map->list_fields as $list_id => $merge_vars) {
         // send a subscribe request to MailChimp for each list
         $result = $api->subscribe($list_id, $email, $merge_vars, $email_type, $form->settings['double_optin'], $form->settings['update_existing'], $form->settings['replace_interests'], $form->settings['send_welcome']);
     }
     // do stuff on failure
     if (!$result) {
         if ($api->get_error_code() == 212) {
             $form->errors[] = 'previously_unsubscribed';
             $this->get_log()->warning(sprintf('Form %d > %s has unsubscribed before and cannot be resubscribed by the plugin.', $form->ID, $form->data['EMAIL']));
         } elseif ($api->get_error_code() == 214) {
             // handle "already_subscribed" as a soft-error
             $form->errors[] = 'already_subscribed';
             $this->get_log()->warning(sprintf("Form %d > %s is already subscribed to the selected list(s)", $form->ID, mc4wp_obfuscate_string($form->data['EMAIL'])));
         } else {
             // log error
             $this->get_log()->error(sprintf('Form %d > MailChimp API error: %s', $form->ID, $api->get_error_message()));
             // add error code to form object
             $form->errors[] = 'error';
         }
         // bail
         return;
     }
     $this->get_log()->info(sprintf("Form %d > Successfully subscribed %s", $form->ID, $form->data['EMAIL']));
     /**
      * Fires right after a form was used to subscribe.
      *
      * @since 3.0
      *
      * @param MC4WP_Form $form Instance of the submitted form
      * @param string $email
      * @param array $merge_vars
      * @param array $pretty_data
      */
     do_action('mc4wp_form_subscribed', $form, $email, $merge_vars, $map->pretty_data);
 }
Exemplo n.º 3
0
 /**
  * Process a subscribe form.
  *
  * @param MC4WP_Form $form
  */
 public function process_subscribe_form(MC4WP_Form $form)
 {
     $api = $this->get_api();
     $result = false;
     $email_type = $form->get_email_type();
     $merge_vars = $form->data;
     /**
      * Filters merge vars which are sent to MailChimp, only fires for form requests.
      *
      * @param array $merge_vars
      * @param MC4WP_Form $form
      */
     $merge_vars = (array) apply_filters('mc4wp_form_merge_vars', $merge_vars, $form);
     // create a map of all lists with list-specific merge vars
     $map = new MC4WP_Field_Map($merge_vars, $form->get_lists());
     // loop through lists
     foreach ($map->list_fields as $list_id => $merge_vars) {
         // send a subscribe request to MailChimp for each list
         $result = $api->subscribe($list_id, $form->data['EMAIL'], $merge_vars, $email_type, $form->settings['double_optin'], $form->settings['update_existing'], $form->settings['replace_interests'], $form->settings['send_welcome']);
     }
     // do stuff on failure
     if (!$result) {
         if ($api->get_error_code() == 214) {
             // handle "already_subscribed" as a soft-error
             $form->errors[] = 'already_subscribed';
         } else {
             // log other errors
             @error_log(sprintf('MailChimp for WordPress (form %d): %s', $form->ID, $api->get_error_message()));
             // add error code to form object
             $form->errors[] = 'error';
         }
         return;
     }
     /**
      * Fires right after a form was used to subscribe.
      *
      * @since 3.0
      *
      * @param MC4WP_Form $form Instance of the submitted form
      */
     do_action('mc4wp_form_subscribed', $form, $map->formatted_data, $map->pretty_data);
 }
Exemplo n.º 4
0
 /**
  * Process a subscribe form.
  *
  * @param MC4WP_Form $form
  * @param MC4WP_Request $request
  */
 public function process_subscribe_form(MC4WP_Form $form, MC4WP_Request $request)
 {
     $result = false;
     $mailchimp = new MC4WP_MailChimp();
     $email_type = $form->get_email_type();
     $data = $form->get_data();
     $client_ip = $request->get_client_ip();
     /** @var MC4WP_MailChimp_Subscriber $subscriber */
     $subscriber = null;
     /**
      * @ignore
      * @deprecated 4.0
      */
     $data = apply_filters('mc4wp_merge_vars', $data);
     /**
      * @ignore
      * @deprecated 4.0
      */
     $data = (array) apply_filters('mc4wp_form_merge_vars', $data, $form);
     // create a map of all lists with list-specific data
     $mapper = new MC4WP_List_Data_Mapper($data, $form->get_lists());
     /** @var MC4WP_MailChimp_Subscriber[] $map */
     $map = $mapper->map();
     // loop through lists
     foreach ($map as $list_id => $subscriber) {
         $subscriber->status = $form->settings['double_optin'] ? 'pending' : 'subscribed';
         $subscriber->email_type = $email_type;
         $subscriber->ip_signup = $client_ip;
         /**
          * Filters subscriber data before it is sent to MailChimp. Fires for both form & integration requests.
          *
          * @param MC4WP_MailChimp_Subscriber $subscriber
          */
         $subscriber = apply_filters('mc4wp_subscriber_data', $subscriber);
         /**
          * Filters subscriber data before it is sent to MailChimp. Only fires for form requests.
          *
          * @param MC4WP_MailChimp_Subscriber $subscriber
          */
         $subscriber = apply_filters('mc4wp_form_subscriber_data', $subscriber);
         // send a subscribe request to MailChimp for each list
         $result = $mailchimp->list_subscribe($list_id, $subscriber->email_address, $subscriber->to_array(), $form->settings['update_existing'], $form->settings['replace_interests']);
     }
     $log = $this->get_log();
     // do stuff on failure
     if (!is_object($result) || empty($result->id)) {
         $error_code = $mailchimp->get_error_code();
         $error_message = $mailchimp->get_error_message();
         if ($mailchimp->get_error_code() == 214) {
             $form->add_error('already_subscribed');
             $log->warning(sprintf("Form %d > %s is already subscribed to the selected list(s)", $form->ID, $data['EMAIL']));
         } else {
             $form->add_error('error');
             $log->error(sprintf('Form %d > MailChimp API error: %s %s', $form->ID, $error_code, $error_message));
             /**
              * Fire action hook so API errors can be hooked into.
              *
              * @param MC4WP_Form $form
              * @param string $error_message
              */
             do_action('mc4wp_form_api_error', $form, $error_message);
         }
         // bail
         return;
     }
     // Success! Did we update or newly subscribe?
     if ($result->status === 'subscribed' && $result->was_already_on_list) {
         $form->add_message('updated');
     } else {
         $form->add_message('subscribed');
     }
     $log->info(sprintf("Form %d > Successfully subscribed %s", $form->ID, $data['EMAIL']));
     /**
      * Fires right after a form was used to subscribe.
      *
      * @since 3.0
      *
      * @param MC4WP_Form $form Instance of the submitted form
      * @param string $email
      * @param array $data
      * @param MC4WP_MailChimp_Subscriber[] $subscriber
      */
     do_action('mc4wp_form_subscribed', $form, $subscriber->email_address, $data, $map);
 }