location.inc in Node import 6
Support file for contrib Location module.
File
supported/location/location.incView source
<?php
/**
* @file
* Support file for contrib Location module.
*/
/**
* Implementation of hook_node_import_fields().
*/
function location_node_import_fields($type) {
$fields = array();
if (($node_type = node_import_type_is_node($type)) !== FALSE) {
$settings = variable_get('location_settings_node_' . $node_type, array());
if (isset($settings['multiple']['max']) && $settings['multiple']['max'] > 0) {
$fields['location:latitude'] = array(
'title' => t('Latitude'),
'group' => t('Location'),
'has_multiple' => $settings['multiple']['max'] > 1,
);
$fields['location:longitude'] = array(
'title' => t('Longitude'),
'group' => t('Location'),
'has_multiple' => $settings['multiple']['max'] > 1,
);
foreach (location_field_names() as $fieldname => $fieldtitle) {
if ($settings['form']['fields'][$fieldname]['collect']) {
$fields['location:' . $fieldname] = array(
'title' => $fieldtitle,
'group' => t('Location'),
'has_multiple' => $settings['multiple']['max'] > 1,
'map_required' => $settings['multiple']['min'] > 0,
'default_value' => $settings['form']['fields'][$fieldname]['default'],
'weight' => $settings['form']['fields'][$fieldname]['weight'],
);
switch ($fieldname) {
case 'name':
case 'street':
case 'additional':
case 'city':
case 'province':
case 'postal_code':
break;
case 'country':
$fields['location:' . $fieldname]['allowed_values'] = array_merge(array(
'xx' => 'NOT LISTED',
), location_get_iso3166_list());
break;
}
}
}
}
}
return $fields;
}
/**
* Implementation of hook_node_import_defaults().
*/
function location_node_import_defaults($type, $defaults, $fields, $map) {
$form = array();
if (($node_type = node_import_type_is_node($type)) !== FALSE) {
$settings = variable_get('location_settings_node_' . $node_type, array());
if (isset($settings['multiple']['max']) && $settings['multiple']['max'] > 0) {
foreach (location_field_names() as $fieldname => $fieldtitle) {
if ($settings['form']['fields'][$fieldname]['collect']) {
$defaults['location:' . $fieldname] = isset($defaults['location:' . $fieldname]) ? $defaults['location:' . $fieldname] : '';
$form['location:' . $fieldname] = location_invoke_locationapi($defaults['location:' . $fieldname], 'field_expand', $fieldname, $settings['form']['fields'][$fieldname]['collect'], array());
}
}
}
}
return $form;
}
/**
* Implementation of hook_node_import_values_alter().
*/
function location_node_import_values_alter(&$values, $type, $defaults, $options, $fields, $preview) {
if (($node_type = node_import_type_is_node($type)) !== FALSE) {
$settings = variable_get('location_settings_node_' . $node_type, array());
if (isset($settings['multiple']['max']) && $settings['multiple']['max'] > 0) {
$values['locations'] = array();
$all_location_field_names = array();
foreach (array_keys(location_field_names()) as $fieldname) {
if (isset($settings['form']['fields'][$fieldname]) && $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['location:' . $fieldname])) {
$values['location:' . $fieldname] = array(
0 => $values['location:' . $fieldname],
);
}
$num_values = max(count($values['location:' . $fieldname]), $num_values);
}
$i = 0;
while ($i < $num_values && $i <= $settings['multiple']['max']) {
$value = array();
foreach ($all_location_field_names as $fieldname) {
if (array_key_exists($i, $values['location:' . $fieldname])) {
$value[$fieldname] = $values['location:' . $fieldname][$i];
}
else {
$value[$fieldname] = $defaults['location:' . $fieldname];
}
}
$value['locpick'] = array(
'user_latitude' => isset($value['latitude']) ? $value['latitude'] : '',
'user_longitude' => isset($value['longitude']) ? $value['longitude'] : '',
);
$value['location_settings'] = $settings;
$values['locations'][] = $value;
$i++;
}
foreach ($all_location_field_names as $fieldname) {
if (isset($values['location:' . $fieldname])) {
unset($values['location:' . $fieldname]);
}
}
}
}
}
Functions
Name | Description |
---|---|
location_node_import_defaults | Implementation of hook_node_import_defaults(). |
location_node_import_fields | Implementation of hook_node_import_fields(). |
location_node_import_values_alter | Implementation of hook_node_import_values_alter(). |