You are here

function _location_views_expand_map in Location 5.3

File

contrib/location_views/location_views.module, line 1015
Views-enables the location module.

Code

function _location_views_expand_map($element) {

  // Views 1.x has serious issues with persisting #tree.
  // Repair stuff that views screwed up.
  if (isset($element['#default_value']) && is_string($element['#default_value'])) {
    $val = explode(',', $element['#default_value']);
    $element['#default_value'] = array(
      'latitude' => $val[0],
      'longitude' => $val[1],
    );
  }
  if (isset($element['#value']) && is_string($element['#value'])) {
    $val = explode(',', $element['#value']);
    $element['#value'] = array(
      'latitude' => $val[0],
      'longitude' => $val[1],
    );
  }

  // @@@ I'm undecided as to whether this is a good idea to have.
  // It seems to break the principle of least surprise...
  if (!isset($element['#default_value']['latitude']) || empty($element['#default_value']['latitude'])) {

    // Default value not set. Attempt to come up with a default value based on the user's location.
    global $user;
    $result = db_query('SELECT l.latitude, l.longitude FROM {location} l INNER JOIN {location_instance} i ON l.lid = i.lid WHERE i.uid = %d', $user->uid);
    if ($row = db_fetch_array($result)) {
      $element['#default_value'] = $row;
    }
  }
  if (!isset($element['#default_value']['latitude']) || empty($element['#default_value']['latitude'])) {

    // Default value not set, tidy up things a bit to prevent warnings.
    $element['#default_value'] = array(
      'latitude' => '',
      'longitude' => '',
    );
  }

  // The rest of this used to be location_latlon_form(), before it got removed.
  $usegmap = function_exists('gmap_set_location') && variable_get('location_usegmap', FALSE);
  if ($usegmap) {
    $element['map'] = array();

    //reserve spot at top of form for map
  }
  $element['latitude'] = array(
    '#type' => 'textfield',
    '#title' => t('Latitude'),
    '#default_value' => isset($element['#default_value']['latitude']) ? $element['#default_value']['latitude'] : '',
    '#size' => 64,
    '#maxlength' => 64,
  );
  $element['longitude'] = array(
    '#type' => 'textfield',
    '#title' => t('Longitude'),
    '#default_value' => isset($element['#default_value']['longitude']) ? $element['#default_value']['longitude'] : '',
    '#size' => 64,
    '#maxlength' => 64,
    '#description' => t('Click on the map to mark the center point for your search, then submit the values.'),
  );
  if ($usegmap) {
    $map_macro = variable_get('gmap_user_map', '[gmap|id=usermap|center=0,30|zoom=16|width=100%|height=400px]');
    $element['map']['gmap']['#value'] = gmap_set_location($map_macro, $element, array(
      'latitude' => 'latitude',
      'longitude' => 'longitude',
    ));
  }
  return $element;
}