You are here

function salesforce_api_settings_form_validate in Salesforce Suite 7.2

Same name and namespace in other branches
  1. 6.2 salesforce_api/salesforce_api.admin.inc \salesforce_api_settings_form_validate()
  2. 7 salesforce_api/salesforce_api.admin.inc \salesforce_api_settings_form_validate()

Settings form validate handler to verify new salesforce credentials before saving them.

1 string reference to 'salesforce_api_settings_form_validate'
salesforce_api_settings_form in salesforce_api/salesforce_api.admin.inc
The settings form at admin/settings/salesforce.

File

salesforce_api/salesforce_api.admin.inc, line 210
Contains the admin page callbacks for the Salesforce module, including forms for general settings and fieldmap administration.

Code

function salesforce_api_settings_form_validate($form, &$form_state) {
  $values = $form_state['values'];
  if (isset($values['salesforce_api_dir_wsdl']) && !file_exists($values['salesforce_api_dir_wsdl'])) {
    form_set_error('salesforce_api_dir_wsdl', 'The specified WSDL directory does not exist. Please make sure the directory exists, check your input, and try again.');
  }

  // If we are clearing values, no need to continue validation.
  if (isset($values['salesforce_api_reset_credentials']) && $values['salesforce_api_reset_credentials']) {
    return;
  }
  $errors = array();
  foreach (array(
    'salesforce_api_username',
    'salesforce_api_password',
    'salesforce_api_token',
  ) as $value) {
    if (empty($values[$value])) {
      $errors[$value] = ucwords(str_replace('salesforce_api_', ' ', $value)) . ' is required';
    }
  }
  if (count($errors) == 3) {

    // If all 3 fields are empty, the user has not tried to change credentials.
    // Unset the form values in order to preserve existing credentials.
    unset($form_state['values']['salesforce_api_username'], $form_state['values']['salesforce_api_password'], $form_state['values']['salesforce_api_token']);
    return;
  }
  elseif (count($errors)) {
    drupal_set_message(t('Unable to reset Salesforce API credentials.'), 'error');
    foreach ($errors as $field => $error) {
      form_set_error($field, $error);
    }

    // If we got errors already no need to continue with validation.
    return;
  }

  // If we are setting or resetting values, test the connection.
  $connection = salesforce_api_connect($values['salesforce_api_username'], $values['salesforce_api_password'], $values['salesforce_api_token'], TRUE);
  if (is_object($connection)) {
    drupal_set_message(t('Connection established. Salesforce credentials updated.'));
  }
  else {
    drupal_set_message(t('Resetting Salesforce API credentials failed.'), 'error');
    form_set_error('salesforce_api_username', t('Unable to connect to Salesforce. Please check your credentials.'));
    form_set_error('salesforce_api_password');
    form_set_error('salesforce_api_token');
  }
}