You are here

function salesforce_push_entity_crud in Salesforce Suite 7.3

Same name and namespace in other branches
  1. 8.4 modules/salesforce_push/salesforce_push.module \salesforce_push_entity_crud()
  2. 8.3 modules/salesforce_push/salesforce_push.module \salesforce_push_entity_crud()
  3. 5.0.x modules/salesforce_push/salesforce_push.module \salesforce_push_entity_crud()

Push entities to Salesforce.

Parameters

string $entity_type: Type of Drupal entity.

object $entity: The entity object.

int $sf_sync_trigger: The trigger being responded to.

6 calls to salesforce_push_entity_crud()
salesforce_mapping_object_table_form_submit in modules/salesforce_mapping/includes/salesforce_mapping_object.admin.inc
Submit handle for the bulk operations form.
salesforce_push_action in modules/salesforce_push/salesforce_push.module
Push entity to Salesforce.
salesforce_push_entity_delete in modules/salesforce_push/salesforce_push.module
Implements hook_entity_delete().
salesforce_push_entity_insert in modules/salesforce_push/salesforce_push.module
Implements hook_entity_insert().
salesforce_push_entity_update in modules/salesforce_push/salesforce_push.module
Implements hook_entity_update().

... See full list

File

modules/salesforce_push/salesforce_push.module, line 41
Push updates to Salesforce when a Drupal entity is updated.

Code

function salesforce_push_entity_crud($entity_type, $entity, $sf_sync_trigger) {

  // Avoid duplicate processing if this entity has just been updated by
  // Salesforce pull.
  if (isset($entity->salesforce_pull) && $entity->salesforce_pull) {
    return FALSE;
  }
  list($entity_id, , $bundle) = entity_extract_ids($entity_type, $entity);
  $mappings = salesforce_mapping_load_multiple(array(
    'drupal_entity_type' => $entity_type,
    'drupal_bundle' => $bundle,
  ));
  foreach ($mappings as $mapping) {
    if ($mapping->sync_triggers & $sf_sync_trigger) {

      // Allow other modules to prevent a sync per-mapping.
      foreach (module_implements('salesforce_push_entity_allowed') as $module) {
        if (module_invoke($module, 'salesforce_push_entity_allowed', $entity_type, $entity, $sf_sync_trigger, $mapping) === FALSE) {
          continue 2;
        }
      }
      if (isset($mapping->push_async) && $mapping->push_async) {
        $queue = DrupalQueue::get(SALESFORCE_PUSH_QUEUE);
        $queue
          ->createItem(array(
          'entity_type' => $entity_type,
          'entity_id' => $entity_id,
          'mapping' => $mapping,
          'trigger' => $sf_sync_trigger,
        ));
        continue;
      }
      salesforce_push_sync_rest($entity_type, $entity, $mapping, $sf_sync_trigger);
    }
  }
}