You are here

function eloqua_webform_form_alter in Eloqua 7.2

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

Implements hook_form_alter().

File

eloqua_webform/eloqua_webform.module, line 234

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', ''),
      ),
    );
  }
  elseif (strstr($form_id, 'webform_client_form')) {
    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';

    // 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);
    }
  }
}