function usermerge_usermerge_build_review_form_elements in User Merge 7.2
Implement hook_usermerge_build_review_form_elements().
File
- ./
usermerge.usermerge.inc, line 156 - Implements User merge hooks for core-related user properties.
Code
function usermerge_usermerge_build_review_form_elements($review, $account_properties, $user_to_delete, $user_to_keep) {
// Build form elements
// Set very low weight to keep properties controlled by this file at the top of the table
$i = -10000;
foreach ($account_properties as $property_type => $properties) {
// User properties
if (in_array($property_type, array(
'core',
'fields',
'other',
))) {
$review[$property_type] = array(
'#tree' => TRUE,
'#theme' => 'usermerge_data_review_form_table',
'#title' => $properties['title'],
'#weight' => $i,
);
if (isset($properties['description'])) {
$review[$property_type]['#description'] = $properties['description'];
}
if ($property_type == 'fields') {
$review[$property_type]['#attributes']['property_label'] = t('Field');
}
foreach ($properties['items'] as $property) {
$property_name = $property['name'];
// Properties with default behaviors will not be displayed
if (!array_key_exists('default', $property)) {
$review[$property_type][$property_name]['property_name'] = array(
'#type' => 'markup',
'#markup' => $property_name,
);
// Display property values
$field_user_to_delete = $user_to_delete->{$property_name};
$field_user_to_keep = $user_to_keep->{$property_name};
switch ($property_name) {
// Roles must be dealt with separately
case 'roles':
$field_user_to_delete = implode(', ', $user_to_delete->{$property_name});
$field_user_to_keep = implode(', ', $user_to_keep->{$property_name});
break;
case 'picture':
if ($user_to_delete->{$property_name}) {
$filepath_user_to_delete = image_style_url('thumbnail', $user_to_delete->{$property_name}->uri);
$field_user_to_delete = theme('image', array(
'path' => $filepath_user_to_delete,
));
}
if ($user_to_keep->{$property_name}) {
$filepath_user_to_keep = image_style_url('thumbnail', $user_to_keep->{$property_name}->uri);
$field_user_to_keep = theme('image', array(
'path' => $filepath_user_to_keep,
));
}
break;
}
// Process custom fields for display
if ($property_type == 'fields') {
if (is_array($field_user_to_delete)) {
$field_user_to_delete = field_view_field('user', $user_to_delete, $property_name, array(
'label' => 'hidden',
'settings' => array(),
));
$field_user_to_delete = strip_tags(drupal_render($field_user_to_delete), '<em> <strong> <ul> <li>');
}
if (is_array($field_user_to_keep)) {
$field_user_to_keep = field_view_field('user', $user_to_keep, $property_name, array(
'label' => 'hidden',
'settings' => array(),
));
$field_user_to_keep = strip_tags(drupal_render($field_user_to_keep), '<em> <strong> <ul> <li>');
}
}
$review[$property_type][$property_name]['options'] = array(
'#type' => 'radios',
'#options' => array(
'user_to_delete' => is_string($field_user_to_delete) ? $field_user_to_delete : '',
'user_to_keep' => is_string($field_user_to_keep) ? $field_user_to_keep : '',
),
);
if (isset($property['default_option'])) {
$review[$property_type][$property_name]['options']['#default_value'] = $property['default_option'];
}
else {
$review[$property_type][$property_name]['options']['#default_value'] = 'user_to_keep';
}
switch ($property['criterion']) {
case 'merge':
$review[$property_type][$property_name]['options']['#options']['merge'] = 'merge';
break;
case 'force_select':
// Nothing happens here
$review[$property_type][$property_name]['options']['#options']['merge'] = 'force_select';
break;
case 'no_merge':
$review[$property_type][$property_name]['options']['#options']['merge'] = 'no_merge';
// uid and (if not editable, mail and name) should be visible but disabled.
if (!empty($property['disabled'])) {
$review[$property_type][$property_name]['options']['#disabled'] = TRUE;
}
break;
}
if (isset($property['default_option'])) {
$review[$property_type][$property_name]['options']['#default_value'] = $property['default_option'];
}
}
else {
$account[$property_name] = $property['default'];
}
}
}
elseif ($property_type == 'entities') {
$content_user_to_delete = usermerge_query_authored_entities($properties['items'], $user_to_delete->uid);
$content_user_to_keep = usermerge_query_authored_entities($properties['items'], $user_to_keep->uid);
if (count($content_user_to_delete) || count($content_user_to_keep)) {
$review[$property_type] = array(
'#tree' => TRUE,
'#theme' => 'usermerge_data_review_form_table',
'#title' => $properties['title'],
'#attributes' => array(
'no_merge',
'property_label' => t('Entity'),
),
'#weight' => $i,
);
foreach ($content_user_to_delete as $entity_type => $entities) {
$review[$property_type][$entity_type]['property_name'] = array(
'#type' => 'markup',
'#markup' => $entity_type,
);
$review[$property_type][$entity_type]['options']['user_to_delete'] = array(
'#type' => 'markup',
'#markup' => format_plural(count($entities), '1 %entity entity to be reassigned', '@count %entity entities to be reassigned', array(
'%entity' => $entity_type,
)),
);
}
foreach ($content_user_to_keep as $entity_type => $entities) {
$review[$property_type][$entity_type]['property_name'] = array(
'#type' => 'markup',
'#markup' => $entity_type,
);
$review[$property_type][$entity_type]['options']['user_to_keep'] = array(
'#type' => 'markup',
'#markup' => format_plural(count($entities), '1 %entity entity to be maintained', '@count %entity entities to be maintained', array(
'%entity' => $entity_type,
)),
);
}
ksort($review[$property_type]);
}
}
// Increments weight
$i++;
}
if (isset($account)) {
$review['account'] = array(
'#type' => 'hidden',
'#value' => serialize($account),
);
}
return $review;
}