function sf_queue_handle_responses in Salesforce Suite 7.2
Same name and namespace in other branches
- 6.2 sf_queue/sf_queue.module \sf_queue_handle_responses()
@todo Please document this function.
See also
2 calls to sf_queue_handle_responses()
- sf_queue_handle_deletes in sf_queue/
sf_queue.module - Helper function to process queue deletes. Since we can delete across object types by SFID alone, plow through 200 deletes at a time, oldest first.
- sf_queue_handle_upserts in sf_queue/
sf_queue.module - Helper function to process queue updates and inserts (creates). The logic proceeds basically like this:
File
- sf_queue/
sf_queue.module, line 403 - sf_queue.module Implements export queue and administrativa for Salesforce API
Code
function sf_queue_handle_responses($responses, $dataset) {
$wins = $fails = array();
if (!is_array($responses)) {
$responses = array(
$responses,
);
}
foreach ($responses as $key => $response) {
$item = $dataset[$key];
if (!empty($response->success)) {
$wins[$response->id] = $item['oid'];
}
else {
$error_str = t("Error from Salesforce:<br>Message - !message<br>Fields - !fields<br>Status code - !code", array(
'!message' => $response->errors->message,
'!fields' => $response->errors->fields,
'!code' => $response->errors->statusCode,
));
$fails[$response->id] = $item['oid'];
}
}
if (count($wins) > 0) {
$q_str = 'DELETE FROM {salesforce_export_queue} WHERE oid IN (' . db_placeholders($wins) . ')';
// TODO Please convert this statement to the D7 database API syntax.
db_query($q_str, $wins);
}
if (count($fails) > 0) {
$q_str = 'UPDATE {salesforce_export_queue} SET attempts = attempts + 1 WHERE oid IN (' . db_placeholders($fails) . ')';
// TODO Please convert this statement to the D7 database API syntax.
db_query($q_str, $fails);
}
return array(
$wins,
$fails,
);
}