From fa85362f12d9cf572951ad2b3aa89df308cb5b5d Mon Sep 17 00:00:00 2001
From: Kosta Harlan <kostajh@gmail.com>
Date: Tue, 9 Jul 2013 13:32:59 -0400
Subject: Issue #1934790 by Kosta Harlan, epicflux, Haza, rickyoh: Support
 multiple Salesforce environments

---
 includes/salesforce.inc |  2 +-
 salesforce.module       | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/includes/salesforce.inc b/includes/salesforce.inc
index 0622c1c..5cdc9b0 100644
--- a/includes/salesforce.inc
+++ b/includes/salesforce.inc
@@ -22,7 +22,7 @@ class Salesforce {
   public function __construct($consumer_key, $consumer_secret = '') {
     $this->consumer_key = $consumer_key;
     $this->consumer_secret = $consumer_secret;
-    $this->login_url = 'https://login.salesforce.com';
+    $this->login_url = variable_get('salesforce_sandbox_account', 0) ? 'https://test.salesforce.com' : 'https://login.salesforce.com';
 
     // @TODO: Does this need to be configurable?
     $this->rest_api_version = array(
diff --git a/salesforce.module b/salesforce.module
index c46c0bd..418610d 100644
--- a/salesforce.module
+++ b/salesforce.module
@@ -172,6 +172,19 @@ function salesforce_oauth_form() {
     '#required' => TRUE,
     '#default_value' => $consumer_secret,
   );
+  $form['advanced'] = array(
+    '#title' => t('Advanced'),
+    '#type' => 'fieldset',
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+  $form['advanced']['salesforce_sandbox_account'] = array(
+    '#title' => t('Sandbox account'),
+    '#type' => 'checkbox',
+    '#description' => t('Check here if this is a Salesforce sandbox account and you login to the Sandbox at !url. <strong>Proceed with caution:</strong> switching this setting will render any existing links between Salesforce objects and Drupal objects invalid.', array('!url' => l(t('https://test.salesforce.com'), 'https://test.salesforce.com'))),
+    '#return_value' => 1,
+    '#default_value' => variable_get('salesforce_sandbox_account', 0),
+  );
   $form['submit'] = array(
     '#value' => t('Authorize'),
     '#type' => 'submit',
@@ -219,6 +232,7 @@ function salesforce_oauth_form_submit($form, &$form_state) {
   $consumer_secret = $form_state['values']['salesforce_consumer_secret'];
   variable_set('salesforce_consumer_key', $consumer_key);
   variable_set('salesforce_consumer_secret', $consumer_secret);
+  variable_set('salesforce_sandbox_account', $form_state['values']['salesforce_sandbox_account']);
 
   $salesforce = new Salesforce($consumer_key, $consumer_secret);
   $salesforce->getAuthorizationCode();
-- 
1.8.2.3

