From 365062a6c09dd2b477678bf3232b030de63686e4 Mon Sep 17 00:00:00 2001 From: Michael Stenta Date: Thu, 14 Sep 2017 08:34:39 -0400 Subject: [PATCH] Migrate field_farm_soil_sample_points to field_farm_geofield. --- .../farm_soil.features.field_base.inc | 50 ------- modules/farm/farm_soil/farm_soil.info | 1 - ...farm_soil_test.features.field_instance.inc | 130 +++++++++--------- .../farm_soil_test.field_group.inc | 2 +- .../farm_soil_test/farm_soil_test.info | 2 +- .../farm_soil_test/farm_soil_test.install | 32 ++++- 6 files changed, 100 insertions(+), 117 deletions(-) diff --git a/modules/farm/farm_soil/farm_soil.features.field_base.inc b/modules/farm/farm_soil/farm_soil.features.field_base.inc index ff126ef0c..5465f30ed 100644 --- a/modules/farm/farm_soil/farm_soil.features.field_base.inc +++ b/modules/farm/farm_soil/farm_soil.features.field_base.inc @@ -36,55 +36,5 @@ function farm_soil_field_default_field_bases() { 'type' => 'taxonomy_term_reference', ); - // Exported field_base: 'field_farm_soil_sample_points'. - $field_bases['field_farm_soil_sample_points'] = array( - 'active' => 1, - 'cardinality' => -1, - 'deleted' => 0, - 'entity_types' => array(), - 'field_name' => 'field_farm_soil_sample_points', - 'indexes' => array( - 'bbox' => array( - 0 => 'top', - 1 => 'bottom', - 2 => 'left', - 3 => 'right', - ), - 'bottom' => array( - 0 => 'bottom', - ), - 'centroid' => array( - 0 => 'lat', - 1 => 'lon', - ), - 'geohash' => array( - 0 => 'geohash', - ), - 'lat' => array( - 0 => 'lat', - ), - 'left' => array( - 0 => 'left', - ), - 'lon' => array( - 0 => 'lon', - ), - 'right' => array( - 0 => 'right', - ), - 'top' => array( - 0 => 'top', - ), - ), - 'locked' => 0, - 'module' => 'geofield', - 'settings' => array( - 'backend' => 'default', - 'srid' => 4326, - ), - 'translatable' => 0, - 'type' => 'geofield', - ); - return $field_bases; } diff --git a/modules/farm/farm_soil/farm_soil.info b/modules/farm/farm_soil/farm_soil.info index 75807f1d2..59a8288aa 100644 --- a/modules/farm/farm_soil/farm_soil.info +++ b/modules/farm/farm_soil/farm_soil.info @@ -10,6 +10,5 @@ dependencies[] = taxonomy features[ctools][] = strongarm:strongarm:1 features[features_api][] = api:2 features[field_base][] = field_farm_soil_names -features[field_base][] = field_farm_soil_sample_points features[taxonomy][] = farm_soil_names features[variable][] = pathauto_taxonomy_term_farm_soil_names_pattern diff --git a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.features.field_instance.inc b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.features.field_instance.inc index 918822f04..4b948d21e 100644 --- a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.features.field_instance.inc +++ b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.features.field_instance.inc @@ -78,6 +78,71 @@ function farm_soil_test_field_default_field_instances() { ), ); + // Exported field_instance: 'log-farm_soil_test-field_farm_geofield'. + $field_instances['log-farm_soil_test-field_farm_geofield'] = array( + 'bundle' => 'farm_soil_test', + 'default_value' => NULL, + 'deleted' => 0, + 'description' => 'Use the map to pinpoint the location(s) from which this sample is taken. If you are preparing a soil test, you may be sampling multiple points within a given area. All the points that comprise this sample should be included.', + 'display' => array( + 'default' => array( + 'label' => 'above', + 'module' => 'openlayers_geofield', + 'settings' => array( + 'data' => 'full', + 'map_layer_preset' => 'farm_map_geofield_formatter:openlayers_geofield_layer_formatter', + ), + 'type' => 'openlayers_geofield', + 'weight' => 1, + ), + ), + 'entity_type' => 'log', + 'field_name' => 'field_farm_geofield', + 'label' => 'Sample points', + 'required' => 0, + 'settings' => array( + 'user_register_form' => FALSE, + ), + 'widget' => array( + 'active' => 1, + 'module' => 'openlayers_geofield', + 'settings' => array( + 'allow_edit' => 1, + 'data_storage' => 'collection', + 'delta_handling' => 'default', + 'feature_types' => array( + 'path' => 0, + 'point' => 'point', + 'polygon' => 0, + ), + 'geocoder_field' => 'field_farm_files', + 'geocoder_handler' => 'kml', + 'handler_settings' => array( + 'google' => array( + 'all_results' => 0, + 'biasing' => array( + 'bounds' => '', + 'components' => '', + 'region' => '', + ), + 'geometry_type' => 'point', + 'reject_results' => array( + 'APPROXIMATE' => 0, + 'GEOMETRIC_CENTER' => 0, + 'RANGE_INTERPOLATED' => 0, + 'ROOFTOP' => 0, + ), + ), + ), + 'openlayers_map' => 'farm_map_geofield', + 'showInputField' => 1, + 'use_geocoder' => 1, + ), + 'type' => 'openlayers_geofield', + 'weight' => 3, + ), + ); + // Exported field_instance: 'log-farm_soil_test-field_farm_images'. $field_instances['log-farm_soil_test-field_farm_images'] = array( 'bundle' => 'farm_soil_test', @@ -292,68 +357,7 @@ function farm_soil_test_field_default_field_instances() { 'size' => 60, ), 'type' => 'taxonomy_autocomplete', - 'weight' => 4, - ), - ); - - // Exported field_instance: - // 'log-farm_soil_test-field_farm_soil_sample_points'. - $field_instances['log-farm_soil_test-field_farm_soil_sample_points'] = array( - 'bundle' => 'farm_soil_test', - 'default_value' => NULL, - 'deleted' => 0, - 'description' => 'Use the map to pinpoint the location(s) from which this sample is taken. If you are preparing a soil test, you may be sampling multiple points within a given area. All the points that comprise this sample should be included.', - 'display' => array( - 'default' => array( - 'label' => 'above', - 'module' => 'openlayers_geofield', - 'settings' => array( - 'data' => 'full', - 'map_layer_preset' => 'farm_map_geofield_formatter:openlayers_geofield_layer_formatter', - ), - 'type' => 'openlayers_geofield', - 'weight' => 1, - ), - ), - 'entity_type' => 'log', - 'field_name' => 'field_farm_soil_sample_points', - 'label' => 'Sample Points', - 'required' => 0, - 'settings' => array( - 'user_register_form' => FALSE, - ), - 'widget' => array( - 'active' => 1, - 'module' => 'openlayers_geofield', - 'settings' => array( - 'allow_edit' => 1, - 'data_storage' => 'collection', - 'delta_handling' => 'default', - 'feature_types' => array( - 'path' => 0, - 'point' => 'point', - 'polygon' => 0, - ), - 'geocoder_field' => 'field_farm_files', - 'geocoder_handler' => 'kml', - 'handler_settings' => array( - 'google' => array( - 'all_results' => 0, - 'geometry_type' => 'point', - 'reject_results' => array( - 'APPROXIMATE' => 0, - 'GEOMETRIC_CENTER' => 0, - 'RANGE_INTERPOLATED' => 0, - 'ROOFTOP' => 0, - ), - ), - ), - 'openlayers_map' => 'farm_map_geofield', - 'showInputField' => 1, - 'use_geocoder' => 1, - ), - 'type' => 'openlayers_geofield', - 'weight' => 3, + 'weight' => 5, ), ); @@ -368,7 +372,7 @@ function farm_soil_test_field_default_field_instances() { t('Notes'); t('Optionally assign this task to one or more people.'); t('Photos'); - t('Sample Points'); + t('Sample points'); t('Soil Names'); t('Use the map to pinpoint the location(s) from which this sample is taken. If you are preparing a soil test, you may be sampling multiple points within a given area. All the points that comprise this sample should be included.'); t('Use this to organize your logs into categories for easier searching and filtering later.'); diff --git a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.field_group.inc b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.field_group.inc index bbcc3ce34..3dea2a8c3 100644 --- a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.field_group.inc +++ b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.field_group.inc @@ -172,7 +172,7 @@ function farm_soil_test_field_group_info() { 'children' => array( 0 => 'field_farm_area', 1 => 'field_farm_soil_names', - 2 => 'field_farm_soil_sample_points', + 2 => 'field_farm_geofield', ), 'format_type' => 'fieldset', 'format_settings' => array( diff --git a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.info b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.info index a18aac561..7f73a2d8e 100644 --- a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.info +++ b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.info @@ -37,12 +37,12 @@ features[field_group][] = group_farm_notes|log|farm_soil_test|form features[field_group][] = group_farm_soil|log|farm_soil_test|form features[field_instance][] = log-farm_soil_test-field_farm_area features[field_instance][] = log-farm_soil_test-field_farm_files +features[field_instance][] = log-farm_soil_test-field_farm_geofield features[field_instance][] = log-farm_soil_test-field_farm_images features[field_instance][] = log-farm_soil_test-field_farm_log_category features[field_instance][] = log-farm_soil_test-field_farm_log_owner features[field_instance][] = log-farm_soil_test-field_farm_notes features[field_instance][] = log-farm_soil_test-field_farm_soil_lab features[field_instance][] = log-farm_soil_test-field_farm_soil_names -features[field_instance][] = log-farm_soil_test-field_farm_soil_sample_points features[log_type][] = farm_soil_test features[views_view][] = farm_log_soil_tests diff --git a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.install b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.install index 9c3b6f0ad..5ebbf4f1a 100644 --- a/modules/farm/farm_soil/farm_soil_test/farm_soil_test.install +++ b/modules/farm/farm_soil/farm_soil_test/farm_soil_test.install @@ -19,7 +19,6 @@ function farm_soil_test_update_dependencies() { return $dependencies; } - /** * Change "Soil Types" to "Soil Names". */ @@ -45,3 +44,34 @@ function farm_soil_test_update_7000(&$sandbox) { $field = field_info_instance('log', 'field_farm_soil_types', 'farm_soil_test'); field_delete_instance($field); } + +/** + * Migrate soil test sample points to field_farm_geofield. + */ +function farm_soil_test_update_7001(&$sandbox) { + + // Define table mappings. + $table_mappings = array( + 'field_data_field_farm_soil_sample_points' => 'field_data_field_farm_geofield', + 'field_revision_field_farm_soil_sample_points' => 'field_revision_field_farm_geofield', + ); + + // Check to be sure that the tables exist. If not, bail. + foreach ($table_mappings as $old => $new) { + $tables = array($old, $new); + foreach ($tables as $table) { + if (!db_table_exists($table)) { + throw new DrupalUpdateException('Database table not found: ' . $table . '. Aborting update.'); + } + } + } + + // Migrate data. + foreach ($table_mappings as $old => $new) { + db_query('INSERT INTO {' . $new . '} SELECT * FROM {' . $old . '}'); + } + + // Delete the old field instance. + $field = field_info_instance('log', 'field_farm_soil_sample_points', 'farm_soil_test'); + field_delete_instance($field); +}