You are here

function janrain_capture_mapping_janrain_capture_profile_sync in Janrain Registration 7.3

Same name and namespace in other branches
  1. 7.4 janrain_capture_mapping/janrain_capture_mapping.module \janrain_capture_mapping_janrain_capture_profile_sync()
  2. 7 janrain_capture_mapping/janrain_capture_mapping.module \janrain_capture_mapping_janrain_capture_profile_sync()
  3. 7.2 janrain_capture_mapping/janrain_capture_mapping.module \janrain_capture_mapping_janrain_capture_profile_sync()

Implements hook_janrain_capture_profile_sync().

File

janrain_capture_mapping/janrain_capture_mapping.module, line 75
This module implements a data mapping UI for Janrain Capture

Code

function janrain_capture_mapping_janrain_capture_profile_sync($account, $profile) {
  $map = variable_get('janrain_capture_mapping_map', array());
  $wrapper = entity_metadata_wrapper('user', $account);
  $capture_fields = db_query("SELECT fid, path FROM {janrain_capture_mapping_field}")
    ->fetchAllKeyed();
  foreach ($map as $mapping) {
    try {

      // support for plurals up to a depth of 3: plural.plural.plural.value
      $fid = explode('.', $capture_fields[$mapping['fid']]);
      $value = $profile[$fid[0]];
      if (count($fid) > 1) {
        $value = $value[$fid[1]];
      }
      if (count($fid) > 2) {
        $value = $value[$fid[2]];
      }
      if (count($fid) > 3) {
        $value = $value[$fid[3]];
      }
      if (count($fid) > 4) {
        $value = $value[$fid[4]];
      }
      if (isset($mapping['column']) && $mapping['column'] != 'value') {
        $value = array(
          $mapping['column'] => $profile[$capture_fields[$mapping['fid']]],
        );
      }

      // Date fields must be properly formatted as a timestamp
      if ($wrapper->{$mapping['field']}
        ->type() == 'date') {
        $value = strtotime($value);
      }
      $wrapper->{$mapping['field']} = $value;
    } catch (EntityMetadataWrapperException $e) {
      watchdog('Capture Mapping', 'Attempt to map attr @attr to field @field failed', array(
        '@attr' => $profile[$capture_fields[$mapping['fid']]],
        '@field' => $mapping['field'],
      ));
    }
  }
}