Index: salesforce_api/salesforce_api.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.admin.inc,v retrieving revision 1.2.2.3 diff -u -p -r1.2.2.3 salesforce_api.admin.inc --- salesforce_api/salesforce_api.admin.inc 25 Feb 2009 23:46:02 -0000 1.2.2.3 +++ salesforce_api/salesforce_api.admin.inc 23 Apr 2009 20:13:34 -0000 @@ -7,6 +7,106 @@ * for general settings and fieldmap administration. */ +// Displays the basic API settings form at admin/settings/salesforce. +function salesforce_api_settings_form(&$form_state) { + $form = array(); + + // Use the username field to collapse the API settings fieldset. + $username = variable_get('salesforce_api_username', ''); + $form['api'] = array( + '#type' => 'fieldset', + '#title' => t('Salesforce API settings'), + '#description' => t('Use your Salesforce.com login information for these username and password fields.'), + '#collapsible' => !empty($username), + '#collapsed' => !empty($username) && empty($form_state['post']), + '#weight' => -10, + ); + $form['api']['salesforce_api_username'] = array( + '#type' => 'textfield', + '#title' => t('Username'), + '#description' => t('Should be in the form of an e-mail address.'), + '#default_value' => $username, + '#required' => TRUE, + ); + $form['api']['salesforce_api_password'] = array( + '#type' => 'textfield', + '#title' => t('Password'), + '#default_value' => variable_get('salesforce_api_password', ''), + '#description' => t('Set your SalesForce password -- this is the same password you use to login through the salesforce.com website.'), + '#required' => TRUE, + ); + $form['api']['salesforce_api_token'] = array( + '#type' => 'textfield', + '#title' => t('Security token'), + '#description' => t('Set your security token by logging into Salesforce and navigating to Setup > My Personal Information > Reset My Security Token.'), + '#default_value' => variable_get('salesforce_api_token', ''), + '#required' => TRUE, + ); + + $form['log'] = array( + '#type' => 'fieldset', + '#title' => t('Log settings'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#weight' => -9, + ); + $form['log']['salesforce_api_activity_log'] = array( + '#type' => 'radios', + '#title' => t('Activity log level'), + '#options' => array( + SALESFORCE_LOG_NONE => t('Do not log any Salesforce activities.'), + SALESFORCE_LOG_SOME => t('Log important Salesforce activities.'), + SALESFORCE_LOG_ALL => t('Log all Salesforce activitiies.'), + ), + '#default_value' => variable_get('salesforce_api_activitiy_log', SALESFORCE_LOG_SOME), + ); + $form['log']['salesforce_api_error_log'] = array( + '#type' => 'radios', + '#title' => t('Error log level'), + '#options' => array( + SALESFORCE_LOG_NONE => t('Do not log any Salesforce errors.'), + SALESFORCE_LOG_SOME => t('Log important Salesforce errors.'), + SALESFORCE_LOG_ALL => t('Log all Salesforce errors.'), + ), + '#default_value' => variable_get('salesforce_api_error_log', SALESFORCE_LOG_ALL), + ); + $form['#validate'][] = 'salesforce_api_settings_form_validate'; + return system_settings_form($form); +} + +function salesforce_api_settings_form_validate($form, &$form_state) { + $values = $form_state['values']; + if(empty($values['salesforce_api_username']) + || empty($values['salesforce_api_password']) + || empty($values['salesforce_api_token'])) { + // Don't bother checking if any of these required fields is empty. + return; + } + + // System variables won't get set until the _submit function fires, so we cache + // them, set them, then restore, regardless of error -- there could be errors + // further down the chain. This is probably overkill for most use cases, but we + // don't want to screw up a working configuration just because of, e.g. a typo. + $username = variable_get('salesforce_api_username', ''); + $pass = variable_get('salesforce_api_password', ''); + $token = variable_get('salesforce_api_token', ''); + + variable_set('salesforce_api_username', $values['salesforce_api_username']); + variable_set('salesforce_api_password', $values['salesforce_api_password']); + variable_set('salesforce_api_token', $values['salesforce_api_token']); + + if(!salesforce_api_connect(TRUE)) { + form_set_error('api', 'Unable to connect to SalesForce. Please check your credentials and try again.
If you receive this error message repeatedly, please refer to the README for the SalesForce module.'); + } else { + drupal_set_message('SalesForce connection established.'); + } + + variable_set('salesforce_api_username', $username); + variable_set('salesforce_api_password', $pass); + variable_set('salesforce_api_token', $token); + +} + // Displays an admin table for fieldmaps. function salesforce_api_fieldmap_admin() { Index: salesforce_api/salesforce_api.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.info,v retrieving revision 1.2.2.1 diff -u -p -r1.2.2.1 salesforce_api.info --- salesforce_api/salesforce_api.info 21 Dec 2008 22:20:22 -0000 1.2.2.1 +++ salesforce_api/salesforce_api.info 23 Apr 2009 20:13:34 -0000 @@ -2,4 +2,10 @@ name = Salesforce API description = Defines an API that enables modules to interact with the SalesForce server. package = Salesforce -core = 6.x \ No newline at end of file +core = 6.x +; Information added by drupal.org packaging script on 2009-02-26 +version = "6.x-2.x-dev" +core = "6.x" +project = "salesforce" +datestamp = "1235650715" + Index: salesforce_api/salesforce_api.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.install,v retrieving revision 1.2.2.1 diff -u -p -r1.2.2.1 salesforce_api.install --- salesforce_api/salesforce_api.install 21 Dec 2008 22:20:22 -0000 1.2.2.1 +++ salesforce_api/salesforce_api.install 23 Apr 2009 20:13:34 -0000 @@ -14,6 +14,12 @@ function salesforce_api_install() { drupal_install_schema('salesforce_api'); } +function salesforce_api_enable() { + $msg = 'SalesForce module enabled: Before making any SalesForce connections, !link'; + $link = l('click here to enter enter your SalesForce API credentials.', SALESFORCE_PATH_ADMIN); + drupal_set_message(t($msg, array('!link' => $link)), 'warning'); +} + /** * Implementation of hook_schema(). */ @@ -51,4 +57,38 @@ function salesforce_api_schema() { ); return $schema; -} \ No newline at end of file +} + +/** + * Check the SalesForce API configuration to see if we have valid credentials. +**/ +function salesforce_api_requirements($phase) { + $req = array(); + switch($phase) { + case 'install': { + break; + } + case 'runtime': { + $title = 'SalesForce Configuration'; + $value = l('SalesForce Admin', SALESFORCE_PATH_ADMIN); + $username = variable_get('salesforce_api_username', FALSE); + if(empty($username)) { + $description = 'SalesForce configuration incomplete.'; + $severity = REQUIREMENT_ERROR; + } elseif(!salesforce_api_connect()) { + $description = 'Unable to connect to SalesForce using current configuration.'; + $severity = REQUIREMENT_ERROR; + } else { + $severity = REQUIREMENT_OK; + } + $req[] = compact('title', 'value', 'description', 'severity'); + break; + } + } + + if(!empty($req)) { + return $req; + } +} + + Index: salesforce_api/salesforce_api.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.module,v retrieving revision 1.2.2.3 diff -u -p -r1.2.2.3 salesforce_api.module --- salesforce_api/salesforce_api.module 25 Feb 2009 23:46:02 -0000 1.2.2.3 +++ salesforce_api/salesforce_api.module 23 Apr 2009 20:13:35 -0000 @@ -122,71 +122,6 @@ function salesforce_api_perm() { return array('administer salesforce'); } -// Displays the basic API settings form at admin/settings/salesforce. -function salesforce_api_settings_form() { - $form = array(); - - // Use the username field to collapse the API settings fieldset. - $username = variable_get('salesforce_api_username', ''); - - $form['api'] = array( - '#type' => 'fieldset', - '#title' => t('Salesforce API settings'), - '#description' => t('Use your Salesforce.com login information for these username and password fields.'), - '#collapsible' => !empty($username), - '#collapsed' => !empty($username), - '#weight' => -10, - ); - $form['api']['salesforce_api_username'] = array( - '#type' => 'textfield', - '#title' => t('Username'), - '#description' => t('Should be in the form of an e-mail address.'), - '#default_value' => variable_get('salesforce_api_username', ''), - '#required' => TRUE, - ); - $form['api']['salesforce_api_password'] = array( - '#type' => 'password', - '#title' => t('Password'), - '#default_value' => variable_get('salesforce_api_password', ''), - ); - $form['api']['salesforce_api_token'] = array( - '#type' => 'textfield', - '#title' => t('Security token'), - '#description' => t('Set your security token by logging into Salesforce and navigating to Setup > My Personal Information > Reset My Security Token.'), - '#default_value' => variable_get('salesforce_api_token', ''), - ); - - $form['log'] = array( - '#type' => 'fieldset', - '#title' => t('Log settings'), - '#collapsible' => TRUE, - '#collapsed' => TRUE, - '#weight' => -9, - ); - $form['log']['salesforce_api_activity_log'] = array( - '#type' => 'radios', - '#title' => t('Activity log level'), - '#options' => array( - SALESFORCE_LOG_NONE => t('Do not log any Salesforce activities.'), - SALESFORCE_LOG_SOME => t('Log important Salesforce activities.'), - SALESFORCE_LOG_ALL => t('Log all Salesforce activitiies.'), - ), - '#default_value' => variable_get('salesforce_api_activitiy_log', SALESFORCE_LOG_SOME), - ); - $form['log']['salesforce_api_error_log'] = array( - '#type' => 'radios', - '#title' => t('Error log level'), - '#options' => array( - SALESFORCE_LOG_NONE => t('Do not log any Salesforce errors.'), - SALESFORCE_LOG_SOME => t('Log important Salesforce errors.'), - SALESFORCE_LOG_ALL => t('Log all Salesforce errors.'), - ), - '#default_value' => variable_get('salesforce_api_error_log', SALESFORCE_LOG_ALL), - ); - - return system_settings_form($form); -} - /** * Creates an object used for communicating with the Salesforce server and * performs a login to verify the API credentials.