function services_client_error_services_client_before_request in Services Client 7.2
Implements hook_sc_process_data().
File
- services_client_error/
services_client_error.module, line 185 - Services Client error handling, re-try and reporting.
Code
function services_client_error_services_client_before_request($handler, $object) {
// Don't react on syncs triggred by services client error handling.
if ($handler
->hasTag('sc_error')) {
return;
}
// Load entity_id
$event = $handler
->getEvent();
list($id) = entity_extract_ids($event->entity_type, $handler
->getEntity());
// 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 event = :event", array(
':type' => $event->entity_type,
':id' => $id,
':status' => SC_ERROR_UNPROCESSED,
':event' => $event->name,
))
->fetchAllKeyed(0, 0);
// No errors are unprocessed.
if (empty($result)) {
return;
}
// Mark 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,
'entity' => $handler
->getEntity(),
);
services_client_error_log_save($log);
}
}