You are here

function services_client_error_sc_process_data in Services Client 7

Same name in this branch
  1. 7 services_client.api.php \services_client_error_sc_process_data()
  2. 7 services_client_error/services_client_error.module \services_client_error_sc_process_data()

Implements hook_sc_process_data().

File

services_client_error/services_client_error.module, line 167
Services Client error handling, re-try and reporting.

Code

function services_client_error_sc_process_data($entity_type, $entity, $task) {

  // Load entity_id
  list($id) = entity_extract_ids($entity_type, $entity);

  // Get list of unprocessed errors, that are related to entity. Mark them as
  // overwritten and store new data.
  $result = db_query("SELECT eid FROM {services_client_error} WHERE entity_type = :type AND entity_id = :id AND status = :status AND hook = :hook AND task = :task", array(
    ':type' => $entity_type,
    ':id' => $id,
    ':status' => SC_ERROR_UNPROCESSED,
    ':hook' => $task->hook,
    ':task' => $task->name,
  ))
    ->fetchAllKeyed(0, 0);

  // No errors are unprocessed.
  if (empty($result)) {
    return;
  }

  // Mar all as overwritten.
  db_update('services_client_error')
    ->fields(array(
    'status' => SC_ERROR_OVERWRITTEN,
  ))
    ->condition('eid', $result, 'IN')
    ->execute();
  foreach ($result as $eid) {
    $log = array(
      'eid' => $eid,
      'message' => 'Overwritten by data update.',
      'status_change' => SC_ERROR_OVERWRITTEN,
      'data' => $entity,
    );
    services_client_error_log_save($log);
  }
}