From 47da7c272c517f08fd234c5703a9f7f492229cff Mon Sep 17 00:00:00 2001
From: Matt Bond <matt@giantgoat.com>
Date: Tue, 20 Aug 2013 14:26:12 -0400
Subject: [PATCH] #1748412 add API key parameter to mapquest plugin

---
 geocoder.admin.inc                              |   28 ++++++++++++++++------
 plugins/geocoder_handler/mapquest_nominatim.inc |    9 +++++++
 2 files changed, 29 insertions(+), 8 deletions(-)
 mode change 100644 => 100755 geocoder.admin.inc
 mode change 100644 => 100755 plugins/geocoder_handler/mapquest_nominatim.inc

diff --git a/geocoder.admin.inc b/geocoder.admin.inc
old mode 100644
new mode 100755
index c4ca49b..03e28eb
--- a/geocoder.admin.inc
+++ b/geocoder.admin.inc
@@ -10,6 +10,23 @@
  */
 function geocoder_admin_settings($form, &$form_state) {
   $geocoder_settings= variable_get("geocoder_settings", array());
+
+  $form['geocoder_apikey_bing'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Bing API Key'),
+    '#description' => t('You can obtain a Bing API Key at ') . 'http://msdn.microsoft.com/en-us/library/ff428642.aspx',
+    '#default_value' => empty($geocoder_settings['geocoder_apikey_bing']) ? '' : $geocoder_settings['geocoder_apikey_bing'],
+    '#required' => FALSE,
+  );
+
+  $form['geocoder_apikey_mapquest'] = array(
+    '#type' => 'textfield',
+    '#title' => t('MapQuest API Key'),
+    '#description' => t('You can obtain a MapQuest API Key at ') . 'http://developer.mapquest.com/web/products/open',
+    '#default_value' => empty($geocoder_settings['geocoder_apikey_mapquest']) ? '' : $geocoder_settings['geocoder_apikey_mapquest'],
+    '#required' => FALSE,
+  );
+
   $form['geocoder_apikey_yahoo'] = array(
     '#type' => 'textfield',
     '#title' => t('Yahoo PlaceFinder API Key'),
@@ -26,13 +43,7 @@ function geocoder_admin_settings($form, &$form_state) {
     '#required' => FALSE,
   );
 
-  $form['geocoder_apikey_bing'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Bing API Key'),
-    '#description' => t('You can obtain a Bing API Key at ') . 'http://msdn.microsoft.com/en-us/library/ff428642.aspx',
-    '#default_value' => empty($geocoder_settings['geocoder_apikey_bing']) ? '' : $geocoder_settings['geocoder_apikey_bing'],
-    '#required' => FALSE,
-  );
+
 
   $form['geocoder_google_delay'] = array(
     '#type' => 'textfield',
@@ -54,8 +65,9 @@ function geocoder_admin_settings_validate($form_id, $form_values) {
 
 function geocoder_admin_settings_submit($form, &$form_state) {
   $geocoder_settings= variable_get("geocoder_settings", array());
+  $geocoder_settings['geocoder_apikey_bing'] = trim($form_state['values']['geocoder_apikey_bing']);
+  $geocoder_settings['geocoder_apikey_mapquest'] = trim($form_state['values']['geocoder_apikey_mapquest']);
   $geocoder_settings['geocoder_apikey_yahoo'] = trim($form_state['values']['geocoder_apikey_yahoo']);
   $geocoder_settings['geocoder_apikey_yandex'] = trim($form_state['values']['geocoder_apikey_yandex']);
-  $geocoder_settings['geocoder_apikey_bing'] = trim($form_state['values']['geocoder_apikey_bing']);
   variable_set("geocoder_settings", $geocoder_settings);
 }
diff --git a/plugins/geocoder_handler/mapquest_nominatim.inc b/plugins/geocoder_handler/mapquest_nominatim.inc
old mode 100644
new mode 100755
index 8c9fb89..659426e
--- a/plugins/geocoder_handler/mapquest_nominatim.inc
+++ b/plugins/geocoder_handler/mapquest_nominatim.inc
@@ -23,8 +23,16 @@ $plugin = array(
  */
 function geocoder_mapquest_nominatim($address, $options = array()) {
   $geocoder_settings = variable_get("geocoder_settings", array());
+  if (!empty($geocoder_settings['geocoder_apikey_mapquest'])){
+    $api_key = $geocoder_settings['geocoder_apikey_mapquest'];
+  } else {
+    drupal_set_message(t('Unable to perform geocoding'), 'error');
+    watchdog('geocoder', 'A MapQuest API key must be set before it can be used', array(), WATCHDOG_ERROR);
+    return;
+  }
   $api_url = "http://open.mapquestapi.com/nominatim/v1/search";
   $params = array(
+    'key' => $api_key,
     'q' => str_replace(' ', '+', $address),
     'format' => 'json',
     'addressdetails' => 0,
@@ -32,6 +40,7 @@ function geocoder_mapquest_nominatim($address, $options = array()) {
     'osm_type' => 'N',
   );
   $request = drupal_http_request($api_url . '?' . drupal_http_build_query($params));
+  dpm($request);
   $data = json_decode($request->data);
   return _geocoder_mapquest_nominatim_geometry($data);
 }
-- 
1.7.2.5

