function _sf_import_get_soql_records in Salesforce Suite 6.2
Same name and namespace in other branches
- 7.2 sf_import/sf_import.module \_sf_import_get_soql_records()
For the fieldmap provided, attempt to pull updated Salesforce IDs using the SOQL query defined for the map.
Parameters
object $map: A Salesforce fieldmap object, @see salesforce_api_fieldmap_load().
Return value
FALSE if failed, or an object containing an array of Ids and the latest date covered. $response->ids = array of SFIDS $response->latestDateCovered = timestamp of latest updated Salesforce object
2 string references to '_sf_import_get_soql_records'
- sf_import_import_records in sf_import/
sf_import.module - This function is called on cron run. It is responsible for calling functions to import records using the getUpdated() method or a custom SOQL query, depending on what the user selected in admin settings for sf_import.
- sf_import_settings_form in sf_import/
sf_import.admin.inc - Import Settings form.
File
- sf_import/
sf_import.module, line 92
Code
function _sf_import_get_soql_records($map, $start, $end) {
if (!$map->salesforce) {
return FALSE;
}
$date_time = gmdate(DATE_ATOM, $start);
$default_soql = 'SELECT Id, LastModifiedDate FROM ' . $map->salesforce . ' WHERE LastModifiedDate > ' . $date_time;
$soql_where = variable_get('sf_import_' . $map->name . '_soql', NULL);
$soql = NULL;
$order_by = ' ORDER BY LastModifiedDate DESC';
is_null($soql_where) ? $soql = $default_soql . $order_by : ($soql = $default_soql . ' AND ' . $soql_where . $order_by);
if ($soql) {
// Run the query
$results = salesforce_api_query($soql, array(
'queryAll' => FALSE,
'queryMore' => TRUE,
'limit' => 2000,
));
salesforce_api_log(SALESFORCE_LOG_ALL, 'Query to retreive updated records: %soql. !count result(s) returned: <pre>%ret</pre>', array(
'%soql' => print_r($soql, TRUE),
'!count' => count($results),
'%ret' => print_r($results, TRUE),
));
if (empty($results)) {
return FALSE;
}
}
$response = new stdClass();
$records = array();
foreach ($results as $key => $object) {
// Check to see that the last_import field in {salesforce_object_map} is older than
// the LastModifiedDate on this object
$last_import = db_result(db_query("SELECT last_import FROM {salesforce_object_map} WHERE sfid = '%s'", $object->Id));
if ($last_import < strtotime($object->LastModifiedDate)) {
$records[] = $object->Id;
}
}
$response->ids = $records;
$response->latestDateCovered = $results[0]->LastModifiedDate;
return $response;
}