? salesforce_api/toolkit 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.6 diff -u -p -r1.2.2.6 salesforce_api.admin.inc --- salesforce_api/salesforce_api.admin.inc 27 May 2009 00:04:38 -0000 1.2.2.6 +++ salesforce_api/salesforce_api.admin.inc 31 Jul 2009 07:26:13 -0000 @@ -32,12 +32,14 @@ function salesforce_api_settings_form() $form['api']['salesforce_api_password'] = array( '#type' => 'password', '#title' => t('Password'), + '#description' => t('Enter the password used when logging into Salesforce.'), '#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.'), + '#required' => TRUE, '#default_value' => variable_get('salesforce_api_token', ''), ); @@ -70,10 +72,23 @@ function salesforce_api_settings_form() ); // Validate handler makes sure that the salesforce_api_password doesn't get set to null on accident + $form['#validate'][] = 'salesforce_api_settings_form_validate'; $form['#submit'][] = 'salesforce_api_settings_form_submit'; return system_settings_form($form); } +// Settings form validate handler to verify new salesforce credentials before saving them. +function salesforce_api_settings_form_validate(&$form, &$form_state) { + $values = $form_state['values']; + if (!salesforce_api_connect($values['salesforce_api_username'], $values['salesforce_api_password'], $values['salesforce_api_token'], TRUE)) { + // If not, prevent the user from overwriting the current configuration. + form_set_error('salesforce_api_username', t('Unable to connect to Salesforce. Please check your credentials.')); + } + else { + drupal_set_message('Salesforce connection established.'); + } +} + // Settings form submit handler so that password doesn't get deleted. function salesforce_api_settings_form_submit($form, &$form_state) { // If the user hit "Save Configuration" and the required field 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.6 diff -u -p -r1.2.2.6 salesforce_api.install --- salesforce_api/salesforce_api.install 31 Jul 2009 03:45:53 -0000 1.2.2.6 +++ salesforce_api/salesforce_api.install 31 Jul 2009 07:26:13 -0000 @@ -22,6 +22,13 @@ function salesforce_api_uninstall() { } /** + * Implementation of hook_enable(). + */ +function salesforce_api_enable() { + drupal_set_message(t('Salesforce API: Before making any Salesforce connections, please enter your Salesforce API credentials', array('!url' => url(SALESFORCE_PATH_ADMIN))), 'warning'); +} + +/** * Implementation of hook_schema(). */ function salesforce_api_schema() { @@ -111,3 +118,42 @@ function salesforce_api_schema() { return $schema; } + +/** + * Implementation of hook_requirements(). + * + * 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': + $username = variable_get('salesforce_api_username', FALSE); + if (!$username) { + $description = l(t('Enter your Salesforce credentials.'), SALESFORCE_PATH_ADMIN); + $severity = REQUIREMENT_ERROR; + } + elseif (!salesforce_api_connect()) { + $description = t('Unable to connect to Salesforce using current configuration.', array('!url' => url(SALESFORCE_PATH_ADMIN))); + $severity = REQUIREMENT_ERROR; + } + else { + $description = ''; + $severity = REQUIREMENT_OK; + } + $req[] = array( + 'title' => t('Salesforce Configuration'), + 'value' => l('Salesforce Admin', SALESFORCE_PATH_ADMIN), + 'description' => $description, + 'severity' => $severity + ); + break; + } + + if(!empty($req)) { + return $req; + } +}