You are here

function campaignmonitor_registration_form_user_register_submit in Campaign Monitor 8

Same name and namespace in other branches
  1. 8.2 modules/campaignmonitor_registration/campaignmonitor_registration.module \campaignmonitor_registration_form_user_register_submit()
  2. 7 modules/campaignmonitor_registration/campaignmonitor_registration.module \campaignmonitor_registration_form_user_register_submit()

Submission form handler. Information about the selected list will be submitted to Campaign Monitor.

1 string reference to 'campaignmonitor_registration_form_user_register_submit'
campaignmonitor_registration_form_user_register_form_alter in modules/campaignmonitor_registration/campaignmonitor_registration.module
Implements hook_form_BASE_FORM_ID_alter().

File

modules/campaignmonitor_registration/campaignmonitor_registration.module, line 84

Code

function campaignmonitor_registration_form_user_register_submit(&$form, FormStateInterface &$form_state) {
  $values = $form_state
    ->getValues();
  if (isset($values['lists'])) {

    // Get connected to the API and get lists.
    $lists_info = campaignmonitor_get_lists();
    $name = SafeMarkup::checkPlain($values['name']);

    // Find the selected lists, if any.
    foreach ($values['lists'] as $list_id => $selected) {
      if ($selected) {
        $settings = campaignmonitor_get_list_settings($list_id);
        if (isset($settings['display']['name_field']) && is_string($settings['display']['name_field']) && $settings['display']['name_field'] != '') {
          if (isset($values[$settings['display']['name_field']][0]['value']) && $values[$settings['display']['name_field']][0]['value'] != '') {
            $name = $values[$settings['display']['name_field']][0]['value'];
          }
        }
        $subscribe_now = TRUE;

        // Provide opportunity for modules to override the subscription process
        $result = Drupal::moduleHandler()
          ->invokeAll('campaignmonitor_registration_submit', [
          $list_id,
          $values['mail'],
        ]);

        // Modules can prevent immediate subscription
        if (isset($result['subscribe']) && $result['subscribe'] === 0) {
          $subscribe_now = FALSE;
        }
        if ($subscribe_now) {

          // Try to subscribe to the list.
          if (!campaignmonitor_subscribe($list_id, SafeMarkup::checkPlain($values['mail']), SafeMarkup::checkPlain($name))) {
            $form_state
              ->setErrorByName('', t('You were not subscribed to the list. Please try again later.'));
          }
          drupal_set_message(t('You are now subscribed to the "@list" list.', [
            '@list' => html_entity_decode($lists_info[$list_id]['name']),
          ]), 'status');
        }
      }
    }
  }
}