You are here

farm_soil_test.install in farmOS 7

Farm soil test install.

File

modules/farm/farm_soil/farm_soil_test/farm_soil_test.install
View source
<?php

/**
 * @file
 * Farm soil test install.
 */

/**
 * Implements hook_update_dependencies().
 */
function farm_soil_test_update_dependencies() {

  // Ensure that this modules 7000 update runs before the 7000 update of
  // farm_soil. We will delete a field instance in our update, and they will
  // delete the field base in theirs.
  $dependencies['farm_soil'][7000] = array(
    'farm_soil_test' => 7000,
  );
  return $dependencies;
}

/**
 * Change "Soil Types" to "Soil Names".
 */
function farm_soil_test_update_7000(&$sandbox) {

  // Start by reverting the field_instance component of this module, and the
  // field_base component of farm_soil so that the new field is available
  $features = array(
    'farm_soil' => array(
      'field_base',
    ),
    'farm_soil_test' => array(
      'field_instance',
    ),
  );
  features_revert($features);

  // Migrate data from old field to new field.
  if (db_table_exists('field_data_field_farm_soil_types') && db_table_exists('field_data_field_farm_soil_names')) {
    db_query('INSERT INTO {field_data_field_farm_soil_names} SELECT * FROM {field_data_field_farm_soil_types}');
  }
  if (db_table_exists('field_revision_field_farm_soil_types') && db_table_exists('field_revision_field_farm_soil_names')) {
    db_query('INSERT INTO {field_revision_field_farm_soil_names} SELECT * FROM {field_revision_field_farm_soil_types}');
  }

  // Delete the old field instance.
  $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);
}

Functions

Namesort descending Description
farm_soil_test_update_7000 Change "Soil Types" to "Soil Names".
farm_soil_test_update_7001 Migrate soil test sample points to field_farm_geofield.
farm_soil_test_update_dependencies Implements hook_update_dependencies().