? example.patch
Index: plugins/emf_mailchimp/emf_mailchimp.api.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/emf/plugins/emf_mailchimp/emf_mailchimp.api.inc,v
retrieving revision 1.3
diff -u -p -r1.3 emf_mailchimp.api.inc
--- plugins/emf_mailchimp/emf_mailchimp.api.inc	10 Feb 2010 07:00:25 -0000	1.3
+++ plugins/emf_mailchimp/emf_mailchimp.api.inc	5 Sep 2010 18:59:18 -0000
@@ -128,9 +128,21 @@ function emf_mailchimp_api_get_custom_fi
     'type' => 'field_type',
     'options' => 'choices',
   );
+  $values = array(
+    'type' => array(
+      'number' => 'text',
+      'dropdown' => 'select_one',
+      'radio' => 'select_one',  // We map radio to select_one, as emf does not have a 'radio' type.
+      'date' => 'text',
+      'address' => 'text',
+      'phone' => 'text',
+      'url' => 'text',
+      'image_url' => 'text',
+    ),
+  );
 
   // do call
-  $result = _emf_mailchimp_api_get_array_call('listMergeVars', array($lid), $fields, 'key');
+  $result = _emf_mailchimp_api_get_array_call('listMergeVars', array($lid), $fields, 'key', $values);
 
   unset($result['EMAIL']);
 
@@ -181,10 +193,12 @@ function _emf_mailchimp_api_call($method
  *   Array; Indexed array for field mapping. Keys are local fields. Values are API fields.
  * @param $key
  *   String; Local field which value will be used to index the result array.
+ * @param $value_map
+ *   Array; Keys are local fields, values are arrays mapping API values to local values.
  * @return
  *   Array; Result array.
  */
-function _emf_mailchimp_api_get_array_call($method, $params, $fields, $key = NULL) {
+function _emf_mailchimp_api_get_array_call($method, $params, $fields, $key = NULL, $value_map=array()) {
   $items = array();
 
   // do api call
@@ -196,7 +210,13 @@ function _emf_mailchimp_api_get_array_ca
   foreach ($results as $result) {
     $object = new stdClass();
     foreach ($fields as $local_field => $api_field) {
-      $object->{$local_field} = $result[$api_field];
+      if ($value_map[$local_field] && $value_map[$local_field][$result[$api_field]]){
+        $object->{$local_field} = $value_map[$local_field][$result[$api_field]];
+      }
+      else {
+        $object->{$local_field} = $result[$api_field];
+      }
+      
     }
     if ($key) {
       $items[$object->{$key}] = $object;
@@ -217,10 +237,12 @@ function _emf_mailchimp_api_get_array_ca
  *   Array; API type used as index under $result['anyType'].
  * @param $field
  *   String; Field.
+ * @param $value_map
+ *   Array; Keys are API values, values their local equivalents.
  * @return
  *   Array; Result array.
  */
-function _emf_mailchimp_api_get_scalar_array_call($method, $params, $field) {
+function _emf_mailchimp_api_get_scalar_array_call($method, $params, $field, $value_map) {
   $items = array();
 
   // do api call
@@ -230,7 +252,7 @@ function _emf_mailchimp_api_get_scalar_a
 
   // converting api result to array
   foreach ($results as $result) {
-    $items[] = $result[$field];
+    $items[] = $value_map[$result[$field]] ? $value_map[$result[$field]] : $result[$field];
   }
 
   return $items;
