function salesforce_pull_check_merged_records in Salesforce Suite 7.3
Get all the merged records since the last delete.
Parameters
string $merge_record_type: The Salesforce record type containing the merge history.
1 call to salesforce_pull_check_merged_records()
- salesforce_pull_get_deleted_records in modules/
salesforce_pull/ salesforce_pull.module - Get deleted records from salesforce.
File
- modules/
salesforce_pull/ salesforce_pull.module, line 801 - Pull updates from Salesforce when a Salesforce object is updated.
Code
function salesforce_pull_check_merged_records($merge_record_type) {
$sfapi = salesforce_get_api();
$merge_fields = array(
'type' => $merge_record_type,
'merged_contact_key' => 'Contact__c',
'old_contact_key' => 'Old_Contact__c',
'modified_date' => 'LastModifiedDate',
);
drupal_alter('salesforce_pull_entity_merge_fields', $merge_fields);
$objInfo = $sfapi
->objects(array(
'name' => $merge_fields['type'],
));
if (empty($objInfo)) {
return array(
'records' => array(),
);
}
$last_delete_sync = variable_get('salesforce_pull_delete_last_' . $merge_fields['type'], REQUEST_TIME);
$soql = new SalesforceSelectQuery($merge_fields['type']);
// Convert field mappings to SOQL.
$soql->fields = array(
'Id' => 'Id',
$merge_fields['merged_contact_key'] => $merge_fields['merged_contact_key'],
$merge_fields['old_contact_key'] => $merge_fields['old_contact_key'],
$merge_fields['modified_date'] => $merge_fields['modified_date'],
);
// If no lastupdate, get all records, else get records since last pull.
$sf_last_sync = variable_get('salesforce_pull_last_sync_' . $merge_fields['type'], NULL);
if ($sf_last_sync) {
$last_sync = gmdate('Y-m-d\\TH:i:s\\Z', $sf_last_sync);
$soql
->addCondition($last_delete_sync, $last_sync, '>');
}
// Execute query.
$results = $sfapi
->query($soql);
$version_path = parse_url($sfapi
->getApiEndPoint(), PHP_URL_PATH);
if (!isset($results['errorCode'])) {
$merged_records = $results;
// Handle requests larger than the batch limit (usually 2000).
$next_records_url = isset($results['nextRecordsUrl']) ? str_replace($version_path, '', $results['nextRecordsUrl']) : FALSE;
while ($next_records_url) {
$new_result = $sfapi
->apiCall($next_records_url);
if (!isset($new_result['errorCode'])) {
// Write items to the queue.
foreach ($new_result['records'] as $result) {
$merged_records[] = $result;
}
}
$next_records_url = isset($new_result['nextRecordsUrl']) ? str_replace($version_path, '', $new_result['nextRecordsUrl']) : FALSE;
}
return $merged_records;
}
else {
// Return a properly structure null result:
return array(
'records' => array(),
);
}
}