You are here

function salesforce_pull_webhook in Salesforce Suite 7.3

Webhook callback for salesforce pull. Returns status of 200 for successful attempt or 403 for a failed pull attempt (SF not authorized, threshhold reached, etc.

1 string reference to 'salesforce_pull_webhook'
salesforce_pull_menu in modules/salesforce_pull/salesforce_pull.module
Implements hook_menu().

File

modules/salesforce_pull/salesforce_pull.module, line 46
Pull updates from Salesforce when a Salesforce object is updated.

Code

function salesforce_pull_webhook() {
  if (salesforce_pull()) {
    $code = '200';

    // Queue is populated, but not processed yet so we manually do some of what
    // drupal_cron_run() does to trigger processing of our pull queue.
    $queues = salesforce_pull_cron_queue_info();
    $info = $queues[SALESFORCE_PULL_QUEUE];
    $callback = $info['worker callback'];
    $end = time() + (isset($info['time']) ? $info['time'] : 15);
    $queue = DrupalQueue::get(SALESFORCE_PULL_QUEUE);
    while (time() < $end && ($item = $queue
      ->claimItem())) {
      try {
        call_user_func($callback, $item->data);
        $queue
          ->deleteItem($item);
      } catch (Exception $e) {

        // In case of exception log it and leave the item in the queue
        // to be processed again later.
        watchdog_exception('salesforce_pull', $e);
      }
    }
  }
  else {
    $code = '403';
  }
  http_response_code($code);
  drupal_exit();
}