You are here

function fboauth_field_convert_location in Facebook OAuth (FBOAuth) 7

Same name and namespace in other branches
  1. 7.2 includes/fboauth.field.inc \fboauth_field_convert_location()

Facebook data conversion function.

Converts an incoming Facebook location (which is an object) into a string, and then searches location array for the US or Canadian province

1 string reference to 'fboauth_field_convert_location'
fboauth_field_convert_info in includes/fboauth.field.inc
Provide a callback map for converting Facebook data to fields.

File

includes/fboauth.field.inc, line 189
Facebook to Field module mapping.

Code

function fboauth_field_convert_location($facebook_property_name, $fbuser, $field, $instance) {
  if (!module_exists('location')) {
    return NULL;
  }
  $value = NULL;
  if (isset($fbuser->{$facebook_property_name})) {

    // Most Facebook properties are simple strings.
    if (is_string($fbuser->{$facebook_property_name})) {
      $value = $fbuser->{$facebook_property_name};
    }
    elseif (is_object($fbuser->{$facebook_property_name})) {
      $object = $fbuser->{$facebook_property_name};

      // Locations, Signficant Other, Hometown, and other properties use "name"
      // as the human-readable value in the object.
      if (isset($object->name)) {
        $value = $object->name;
      }
    }
  }
  $loc = explode(',', $value);
  $city = trim($loc[0]);
  $prov_name = trim($loc[1]);
  $us_prov = location_get_provinces();
  $us_prov_abbr = array_search($prov_name, $us_prov);
  if ($us_prov_abbr) {
    $prov_abbr = $us_prov_abbr;
    $country = 'us';
  }
  else {

    // Lets check Canada!
    $ca_prov = location_get_provinces('ca');
    $ca_prov_abbr = array_search($prov_name, $ca_prov);
    if ($ca_prov_abbr) {
      $prov_abbr = $ca_prov_abbr;
      $country = 'ca';
    }
    else {

      // not us or canadian
      $prov_name = '';
      $prov_abbr = '';
      $country = '';
    }
  }
  return $value ? array(
    'city' => $city,
    'province_name' => $prov_name,
    'province' => $prov_abbr,
    'country' => $country,
  ) : NULL;
}