--- ../../orig.modules/salesforce_account/salesforce_sync_api.inc 2007-11-20 12:51:57.000000000 -0800 +++ salesforce_sync_api.inc 2008-03-18 12:56:17.000000000 -0700 @@ -83,11 +103,14 @@ function _salesforce_sync_make_field ( $ } // For select fields - if ( $field_info['type'] == 'picklist') { + if ( $field_info['type'] == 'picklist' || $field_info['type'] == 'multipicklist') { $opts = array(); foreach($field_info['picklistValues'] as $opt) { $opts[] = $opt['value']."|".$opt['label']; } + if ($field_info['type'] == 'multipicklist') { + $values2['multiple'] = 1; + } $values2['allowed_values'] = implode("\n", $opts); } @@ -188,6 +211,9 @@ function _salesforce_sync_import_object_ 'picklist' => array('field_widget_type' => 'text-options_select', 'widget_type' => 'options_select'), + + 'multipicklist' => array('field_widget_type' => 'text-options_select', + 'widget_type' => 'options_select'), 'reference' => false, // not really sure how to deal with these, or if we even really need to. @@ -381,6 +419,19 @@ function _salesforce_sync_put_object_dat $values[$sf_field] = $node->{$dp_field}[0]['value']; break; } + + /** + * Multi-Select Picklists are classified as a text CCK field so we have to find the field to + * format a different away. Check to see if there is more than one element in the array and + * concatenate the values in one value separated by a semi-colon + **/ + if (count($node->{$dp_field}) > '1') { + $textvalue = array(); + foreach ($node->{$dp_field} as $value) { + $textvalue[] = $value['value']; + } + $values[$sf_field] = join(';', $textvalue); + } } if ($id) {