function _crm_core_user_sync_batch_processing in CRM Core 7
Same name and namespace in other branches
- 8.2 modules/crm_core_user_sync/crm_core_user_sync.admin.inc \_crm_core_user_sync_batch_processing()
Helper function for batch processing of users synchronization.
Parameters
$uid: User id for which contact should be created.
1 string reference to '_crm_core_user_sync_batch_processing'
- crm_core_user_sync_admin_form_user_sync_submit in modules/
crm_core_user_sync/ crm_core_user_sync.admin.inc - Submit callback. Handles user synchronization.
File
- modules/
crm_core_user_sync/ crm_core_user_sync.admin.inc, line 566
Code
function _crm_core_user_sync_batch_processing(&$context) {
$query = db_select('users', 'users');
$query
->leftJoin('field_data_endpoints', 'endpoints', "endpoints.endpoints_entity_id = users.uid AND endpoints.endpoints_entity_type = 'user'");
$query
->addField('users', 'uid');
$query
->addField('endpoints', 'entity_id', 'rid');
$query
->condition('users.status', "'0'", '<>');
$query
->isNull('endpoints.entity_id');
if (empty($context['sandbox'])) {
$context['sandbox'] = array();
$count_query = $query
->countQuery();
$context['sandbox']['max'] = $count_query
->execute()
->fetchField();
$context['sandbox']['progress'] = 0;
}
// Limit users quantity to process per request.
$limit = 20;
$uids = $query
->range(0, $limit)
->execute()
->fetchCol();
$users = user_load_multiple($uids);
foreach ($users as $user) {
crm_core_user_sync_sync($user);
$context['sandbox']['progress']++;
}
if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
else {
$context['results']['synced'] = $context['sandbox']['max'];
}
}