You are here

function salesforce_api_update_6201 in Salesforce Suite 6.2

Same name and namespace in other branches
  1. 7.2 salesforce_api/salesforce_api.install \salesforce_api_update_6201()

We have fundamentally changed the schema of SF module. Primary identifier is now "name". Although the value of name is not particularly important, it must be set and it must be unique. In this update function, we are doing a few things: 1) Add "name" columns to salesforce_field_map and salesforce_object_map 2) Assign unique values to "name" column in salesforce_field_map 3) Assign "name" values to columns in salesforce_object_map 4) Drop "fieldmap" column from salesforce_object_map

File

salesforce_api/salesforce_api.install, line 227
Installs any global tables needed for Salesforce integration.

Code

function salesforce_api_update_6201() {
  module_enable(array(
    'ctools',
  ));
  if (!module_exists('ctools')) {
    drupal_set_message(t('This version of SalesForce module depends on <a href="@ctools">Chaos Tool Suite</a>, which is not available. Please install Chaos Tool Suite, then run update again.', array(
      '@ctools' => url('http://drupal.org/project/ctools'),
    )), 'error');
    return array(
      array(
        'success' => FALSE,
        'query' => 'Chaos Tool Suite not found.',
      ),
    );
  }
  $ret[] = array(
    'success' => TRUE,
    'query' => 'Chaos Tool Suite enabled.',
  );
  db_add_column($ret, 'salesforce_field_map', 'description', 'varchar(255)');
  db_add_column($ret, 'salesforce_field_map', 'name', 'varchar(255)');
  db_add_column($ret, 'salesforce_object_map', 'name', 'varchar(255)');
  $result = db_query('SELECT fieldmap FROM {salesforce_field_map}');
  while ($fieldmap = db_result($result)) {
    $name = md5($fieldmap);
    $sql = 'UPDATE {salesforce_object_map} SET name = "%s" WHERE fieldmap = %d';
    $update_result = db_query($sql, $name, $fieldmap);
    $ret[] = array(
      'success' => $update_result !== FALSE,
      'query' => check_plain($sql),
    );
    $sql = 'UPDATE {salesforce_field_map} SET name = "%s" WHERE fieldmap = %d';
    $update_result = db_query($sql, $name, $fieldmap);
    $ret[] = array(
      'success' => $update_result !== FALSE,
      'query' => check_plain($sql),
    );
  }
  db_add_index($ret, 'salesforce_object_map', 'name', array(
    'name',
  ));
  db_add_unique_key($ret, 'salesforce_field_map', 'name', array(
    'name',
  ));
  $ret[] = update_sql('ALTER TABLE {salesforce_object_map} DROP COLUMN fieldmap');

  // Set the WSDL directory
  if (!($dir = variable_get('salesforce_api_dir_wsdl', FALSE))) {
    $dir = SALESFORCE_DIR_WSDL;
    $wsdl = $dir . '/enterprise.wsdl';
    if (file_exists($wsdl)) {
      variable_set('salesforce_api_dir_wsdl', $dir);
    }
    else {
      variable_set('salesforce_api_dir_wsdl', SALESFORCE_DIR_SOAPCLIENT);
    }
  }
  return $ret;
}