function crm_core_user_sync_views_pre_execute in CRM Core 7
Same name and namespace in other branches
- 8.2 modules/crm_core_user_sync/crm_core_user_sync.module \crm_core_user_sync_views_pre_execute()
Implemets hook_views_pre_execute().
File
- modules/
crm_core_user_sync/ crm_core_user_sync.module, line 561
Code
function crm_core_user_sync_views_pre_execute(&$view) {
return;
// TODO: update this
if ($view->name == 'crm_core_contact_to_user_management') {
// Implementing "FULL OUTER JOIN" by union of queries.
// Reciept from http://drupal.org/node/748844#comment-7070234
$left_query = db_select('crm_core_contact');
$left_query
->leftJoin('field_data_endpoints', 'field_data_endpoints', "crm_core_contact.contact_id = field_data_endpoints.endpoints_entity_id AND field_data_endpoints.bundle = 'crm_core_user_sync' AND field_data_endpoints.endpoints_entity_type = 'crm_core_contact'");
$left_query
->leftJoin('field_data_endpoints', 'field_data_endpoints2', "field_data_endpoints.entity_id = field_data_endpoints2.entity_id AND field_data_endpoints2.endpoints_entity_type = 'user'");
$left_query
->leftJoin('users', 'users_crm_core_contact', "field_data_endpoints2.endpoints_entity_id = users_crm_core_contact.uid AND field_data_endpoints2.endpoints_entity_type = 'user'");
$left_query
->addField('crm_core_contact', 'contact_id', 'contact_id');
$left_query
->addField('users_crm_core_contact', 'uid', 'users_crm_core_contact_uid');
$left_query
->addField('users_crm_core_contact', 'name', 'users_crm_core_contact_name');
$left_query
->addExpression("'crm_core_contact'", 'field_data_contact_name_crm_core_contact_entity_type');
$right_query = db_select('crm_core_contact');
$right_query
->leftJoin('field_data_endpoints', 'field_data_endpoints', "crm_core_contact.contact_id = field_data_endpoints.endpoints_entity_id AND field_data_endpoints.bundle = 'crm_core_user_sync' AND field_data_endpoints.endpoints_entity_type = 'crm_core_contact'");
$right_query
->leftJoin('field_data_endpoints', 'field_data_endpoints2', "field_data_endpoints.entity_id = field_data_endpoints2.entity_id AND field_data_endpoints2.endpoints_entity_type = 'user'");
$right_query
->rightJoin('users', 'users_crm_core_contact', "field_data_endpoints2.endpoints_entity_id = users_crm_core_contact.uid AND field_data_endpoints2.endpoints_entity_type = 'user'");
$right_query
->addField('crm_core_contact', 'contact_id', 'contact_id');
$right_query
->addField('users_crm_core_contact', 'uid', 'users_crm_core_contact_uid');
$right_query
->addField('users_crm_core_contact', 'name', 'users_crm_core_contact_name');
$right_query
->addExpression("'crm_core_contact'", 'field_data_contact_name_crm_core_contact_entity_type');
$left_query
->union($right_query);
$total_query = db_select($left_query, 'total')
->fields('total');
$view->build_info['count_query'] = $view->build_info['query'] = $total_query;
}
}