function salesforce_api_fieldmap_field_delete in Salesforce Suite 6.2
Same name and namespace in other branches
- 7 salesforce_api/salesforce_api.module \salesforce_api_fieldmap_field_delete()
- 7.2 salesforce_api/salesforce_api.module \salesforce_api_fieldmap_field_delete()
Remove a field from all fieldmaps. This is particularly useful for implementations of hook_content_fieldapi('delete instance'). May be use to delete an occurence in a single fieldmap (by supplying drupal_type and/or salesforce_type), or every occurence in all fieldmaps (by supplying only fieldname).
@todo I'm sure this can be done more elegantly, but I can't spend anymore braincells on it right now.
Parameters
$fieldname: The name of the field to be deleted. Either a CCK field, or a Salesforce field
$drupal_type (optional): If given, limit deleting of the field to this Drupal content type
$salesforce_type (optional): If given, limit
See also
sf_node/sf_node.module:sf_node_content_fieldapi
1 call to salesforce_api_fieldmap_field_delete()
- sf_node_content_fieldapi in sf_node/
sf_node.module - Implementation of hook_content_fieldapi() Delete a field from a Salesforce fieldmap when the field instance is deleted.
File
- salesforce_api/
salesforce_api.module, line 638 - Defines an API that enables modules to interact with the Salesforce server.
Code
function salesforce_api_fieldmap_field_delete($fieldname, $drupal_type = NULL, $salesforce_type = NULL) {
if ($drupal_type && $salesforce_type) {
$result = db_query('SELECT fieldmap, name FROM {salesforce_field_map} WHERE drupal = "%s" AND salesforce = "%s"', $drupal_type, $salesforce_type);
}
elseif ($drupal_type) {
$result = db_query('SELECT fieldmap, name FROM {salesforce_field_map} WHERE drupal = "%s"', $drupal_type);
}
elseif ($salesforce_type) {
$result = db_query('SELECT fieldmap, name FROM {salesforce_field_map} WHERE salesforce = "%s"', $salesforce_type);
}
else {
$result = db_query('SELECT fieldmap, name FROM {salesforce_field_map}');
}
while ($row = db_fetch_array($result)) {
$map = salesforce_api_fieldmap_load($row['name']);
// In the extremely unlikely event that a Salesforce field and a Drupal
// field share the same name, this function handles both.
if ($drupal_type) {
$key1 = array_search($fieldname, $map->fields);
if ($key1) {
unset($map->fields[$key1]);
if (user_access('administer salesforce')) {
drupal_set_message(t('Removed Drupal field from salesforce_api !link', array(
'!link' => l('fieldmap ' . $fieldmap_id, SALESFORCE_PATH_OBJECT . '/' . $fieldmap_id),
)));
}
salesforce_api_fieldmap_save($map);
}
}
if ($salesforce_type) {
if (!empty($map->fields[$key2])) {
unset($map->fields[$key2]);
if (user_access('administer salesforce')) {
drupal_set_message(t('Removed Salesforce field from salesforce_api !link', array(
'@link' => l('fieldmap ' . $fieldmap_id, SALESFORCE_PATH_OBJECT . '/' . $fieldmap_id),
)));
}
salesforce_api_fieldmap_save($map);
}
}
}
}