You are here

function _ip_geoloc_plugin_style_get_differentiator_value in IP Geolocation Views & Maps 7

1 call to _ip_geoloc_plugin_style_get_differentiator_value()
_ip_geoloc_plugin_style_set_marker_color in views/ip_geoloc_plugin_style.inc
Set the marker color based on the differentiator, if any.

File

views/ip_geoloc_plugin_style.inc, line 1128
ip_geoloc_plugin_style.inc

Code

function _ip_geoloc_plugin_style_get_differentiator_value($row, $differentiator, $view_args) {
  if (preg_match('/^!([0-9])/', $differentiator, $matches)) {

    // Check if an argument was appended to the URL. Internal count is from 0.
    $position = $matches[1] - 1;
    if (isset($view_args[$position])) {
      $differentiator_value = $view_args[$position];
    }
  }
  elseif (isset($row->{$differentiator})) {
    $differentiator_value = $row->{$differentiator};
  }
  elseif (!empty($row->{'field_' . $differentiator})) {
    $differentiator_values = $row->{'field_' . $differentiator};
    if (is_array($differentiator_values)) {

      // Count > 1 for taxonomy term with lineage.
      $num_values = count($differentiator_values);
      if (isset($differentiator_values[0]['raw'])) {
        $differentiator_value = $differentiator_values[$num_values - 1]['raw'];
      }
      elseif (isset($differentiator_values[0]['rendered']['#markup'])) {
        $differentiator_value = $differentiator_values[$num_values - 1]['rendered']['#markup'];
      }
    }
  }
  elseif (!empty($row->_field_data[$differentiator]['entity'])) {
    $differentiator_value = '';

    // Retrieve first value, regardless of language.
    $v = reset($row->_field_data[$differentiator]['entity']->{$differentiator});
    if (is_array($v)) {
      $v = reset($v);
      if (is_array($v)) {
        $differentiator_value = isset($v['value']) ? $v['value'] : reset($v);
      }
    }
  }
  elseif (!empty($row->_entity_properties)) {

    // Search API
    $differentiator_value = _ip_geoloc_plugin_style_get_search_api_value($row, $differentiator);
  }
  else {
    $differentiator_value = '';
    if (!isset($row->{'field_' . $differentiator})) {
      drupal_set_message(t('IPGV&M: no differentiator values found for %diff. Cannot assign marker images.', array(
        '%diff' => $differentiator,
      )), 'warning', FALSE);
    }
  }
  return $differentiator_value;
}