You are here

function location_cck_node_import_values_alter in Node import 6

Implementation of hook_node_import_values_alter().

File

supported/location/location_cck.inc, line 77
Support file for contrib Location CCK Field module.

Code

function location_cck_node_import_values_alter(&$values, $type, $defaults, $options, $fields, $preview) {

  // Get location_cck fields for this node type
  foreach (node_import_cck_fields($type, 'location_cck') as $field => $settings) {

    //dsm($values);

    //$settings = content_fields('field_location', $node_type);

    //    $values['locations_cck'] = array();
    $cck_field = 'location_cck:' . $field;
    $all_location_field_names = array();
    foreach (array_keys(location_field_names()) as $fieldname) {
      if (isset($settings['location_settings']['form']['fields'][$fieldname]) && $settings['location_settings']['form']['fields'][$fieldname]['collect']) {
        $all_location_field_names[] = $fieldname;
      }
    }
    $all_location_field_names[] = 'latitude';
    $all_location_field_names[] = 'longitude';
    $num_values = 0;
    foreach ($all_location_field_names as $fieldname) {
      if (!is_array($values[$cck_field . ':' . $fieldname])) {
        $values[$cck_field . ':' . $fieldname] = array(
          0 => $values[$cck_field . ':' . $fieldname],
        );
      }
      $num_values = max(count($values[$cck_field . ':' . $fieldname]), $num_values);
    }
    $i = 0;
    while ($i < $num_values && $i <= $settings['multiple']) {
      $value = array();
      foreach ($all_location_field_names as $fieldname) {
        if (array_key_exists($i, $values[$cck_field . ':' . $fieldname])) {
          $value[$fieldname] = $values[$cck_field . ':' . $fieldname][$i];
        }
        else {
          $value[$fieldname] = $defaults[$cck_field . ':' . $fieldname];
        }
      }
      $value['locpick'] = array(
        'user_latitude' => isset($value['latitude']) ? $value['latitude'] : '',
        'user_longitude' => isset($value['longitude']) ? $value['longitude'] : '',
      );
      $value['location_settings'] = $settings;
      $values[$field][] = $value;
      $i++;
    }
    foreach ($all_location_field_names as $fieldname) {
      if (isset($values[$cck_field . ':' . $fieldname])) {
        unset($values[$cck_field . ':' . $fieldname]);
      }
    }
  }
}