You are here

function search_api_location_page_form_search_api_page_search_form_alter in Search API Location 7.2

Implements hook_form_FORM_ID_alter().

File

search_api_location_page/search_api_location_page.module, line 320

Code

function search_api_location_page_form_search_api_page_search_form_alter(&$form, &$form_state) {

  // Handle both compact and complete form.
  $compact = TRUE;
  $orig_form =& $form;
  if (isset($form['form'])) {
    $form =& $form['form'];
    $compact = FALSE;
  }
  $page = search_api_page_load($form['id']['#value']);
  $index = search_api_index_load($page->index_id);
  $fields = search_api_location_get_location_fields($index);
  if ($fields && !empty($page->options['search_api_location'])) {
    $orig_form['#submit'][] = 'search_api_location_page_search_form_submit';
    $units = search_api_location_get_units();
    $form['submit_' . $page->id]['#weight'] = 5;
    foreach ($page->options['search_api_location'] as $field => $options) {
      if (empty($fields[$field]) || empty($options['enabled']) || $compact && empty($options['compact'])) {
        continue;
      }
      $name = $fields[$field]['name'];
      $name_parts = explode(' » ', $name);
      if (count($name_parts) > 1) {
        $name = $name_parts[count($name_parts) - 2];
      }
      $form[$field] = array(
        '#type' => 'fieldset',
        '#title' => check_plain($name),
        '#attributes' => array(
          'class' => array(
            'container-inline',
          ),
        ),
      );
      $default = !empty($_GET['location']) ? $_GET['location'] : (!empty($_GET["{$field}-location"]) ? $_GET["{$field}-location"] : '');
      $form[$field]["{$field}-location"] = array(
        '#type' => 'textfield',
        '#size' => $compact ? 10 : 20,
        '#default_value' => $default,
      );
      switch ($options['radius_type']) {
        case 'textfield':
          $form[$field]["{$field}-radius"] = array(
            '#type' => 'textfield',
            '#title' => $compact ? t('within') : t('Maximum distance'),
            '#size' => $compact ? 3 : 5,
            '#element_validate' => array(
              'search_api_location_validate_distance',
            ),
          );
          if (isset($units[$options['radius_unit']])) {
            $form[$field]["{$field}-radius"]['#suffix'] = '<div>' . $units[$options['radius_unit']] . '</div>';
          }
          break;
        case 'select':
          $form[$field]["{$field}-radius"] = array(
            '#type' => 'select',
            '#title' => $compact ? t('within') : t('Maximum distance'),
            '#options' => $options['radius_options'],
          );
          break;
      }
      $default = !empty($_GET['radius']) ? $_GET['radius'] : (!empty($_GET["{$field}-radius"]) ? $_GET["{$field}-radius"] : '');
      if ($default) {
        $form[$field]["{$field}-radius"]['#default_value'] = $default;
      }
    }
  }
}