You are here

function eloqua_webform_form_alter in Eloqua 7

Same name and namespace in other branches
  1. 7.2 eloqua_webform/eloqua_webform.module \eloqua_webform_form_alter()

Implements hook_form_alter().

File

eloqua_webform/eloqua_webform.module, line 237

Code

function eloqua_webform_form_alter(&$form, $form_state, $form_id) {

  // Add setting to allow for immediate posting.
  if ($form_id == 'eloqua_admin_form') {
    $form['webform'] = array(
      '#type' => 'fieldset',
      '#title' => t('Webform Settings'),
      '#description' => t('Webform / Eloqua integration.'),
      'eloqua_webform_process_submit' => array(
        '#type' => 'checkbox',
        '#title' => 'Immediately process submissions?',
        '#default_value' => variable_get('eloqua_webform_process_submit', ''),
      ),
    );
  }

  // We only want to edit client versions of the webform. If it's anything else
  // simply return.
  if (strpos($form_id, 'webform_client_form') !== 0) {
    return;
  }
  if (!array_key_exists('#node', $form) || !is_object($form['#node']) || empty($form['#node']->nid)) {
    return;
  }
  $nid = $form['#node']->nid;
  $form_settings = (array) eloqua_webform_load($nid);

  // Check to see if the form exists.
  if (empty($form_settings) || !$form_settings['is_active']) {
    return;
  }

  // Check for QUERY parameter mappings to assign default values.
  _eloqua_form_url_map($form, $form['#node']->webform['components']);

  // Just shove everything into a container.
  $form['#submit'][] = 'eloqua_webform_submit';
  $form['eloqua'] = array();
  $process_every_page = is_object($form_settings['data']) && isset($form_settings['data']->process_every_page) ? $form_settings['data']->process_every_page : FALSE;
  $form['eloqua']['process_every_page'] = array(
    '#type' => 'value',
    '#value' => $process_every_page,
  );
  $form['eloqua']['elqFormName'] = array(
    '#type' => 'hidden',
    '#default_value' => (string) $form_settings['form_name'],
  );
  $form['eloqua']['elqSiteId'] = array(
    '#type' => 'hidden',
    '#default_value' => variable_get('eloqua_site_id', 0),
  );
  $form['eloqua']['elqDefaultTargetURL'] = array(
    '#type' => 'hidden',
    '#default_value' => '',
  );
  $form['eloqua']['elqPost'] = array(
    '#type' => 'hidden',
    '#default_value' => '',
  );
  $form['eloqua']['elqCustomerGUID'] = array(
    '#type' => 'hidden',
    '#default_value' => '',
  );

  // Drupal 7 doesn't automatically give hidden elements an #id.
  $form['eloqua']['elqCustomerGUID']['#attributes']['id'] = 'edit-elqCustomerGUID';
  $form['eloqua']['elqCookieWrite'] = array(
    '#type' => 'hidden',
    '#default_value' => 0,
  );

  // Add GUID tracking
  $form['#attached']['js'][] = drupal_get_path('module', 'eloqua_webform') . '/eloqua_webform.js';
  $user_headers = _eloqua_webform_get_user_headers();
  $form['eloqua']['user_headers'] = array(
    '#type' => 'hidden',
    '#default_value' => serialize($user_headers),
  );

  // Hooks that don't need to load up all the checks to see if said form is
  // eloqua_enabled.
  foreach (module_implements('eloqua_form_alter') as $module_name) {
    $method = $module_name . '_eloqua_form_alter';
    $method($form, $form_state, $form_id);
  }
}