function _remove_duplicates_get_duplicate_node_groups in Remove Duplicates 7
Get all duplicate node grouped according to selected field.
Parameters
string $node_type_machine_name: The node type to fetch.
string $node_field_machine_name: The {field} used to group nodes and therefore create sets of duplicate nodes.
bool $case_sensitive: If TRUE, duplicates detection is case sensitive Otherwise, duplicates detection is case insensitive.
Return value
array An array of duplicate nodes groups
4 calls to _remove_duplicates_get_duplicate_node_groups()
- _remove_duplicates_get_list_output in ./
remove_duplicates.module - Get a list themed output (Legacy output).
- _remove_duplicates_get_nodes_ids_to_remove in ./
remove_duplicates.module - Get all duplicate nodes ids to remove.
- _remove_duplicates_get_tableselect_output in ./
remove_duplicates.module - Get a tableselect data output.
- _remove_duplicates_get_table_output in ./
remove_duplicates.module - Get a table themed output (Legacy output).
File
- ./
remove_duplicates.module, line 678 - Remove duplicate nodes according to node fields or Custom fields.
Code
function _remove_duplicates_get_duplicate_node_groups($node_type_machine_name, $node_field_machine_name, $case_sensitive) {
$field = _remove_duplicates_get_field_common_name($node_field_machine_name);
if (empty($field)) {
return array();
}
else {
$records = _remove_duplicates_get_nodes($node_type_machine_name, $node_field_machine_name, $case_sensitive);
if (is_array($records) && count($records)) {
// Creating node groups.
$node_groups = array();
foreach ($records as $record) {
if (is_object($record) && isset($record->{$field})) {
// MD5 unicity magic to group nodes according to field content.
if ($case_sensitive) {
$node_groups[md5($record->{$field})][] = $record;
}
else {
$node_groups[md5(strtolower($record->{$field}))][] = $record;
}
}
}
// Keeping only node groups with duplicates.
$duplicate_node_groups = array();
$node_groups_count = $nodes_count = 0;
foreach ($node_groups as $md5key => $node_group) {
if (is_array($node_group) && ($node_group_count = count($node_group)) > 1) {
$nodes_count += $node_group_count;
$duplicate_node_groups[$md5key] = $node_group;
}
}
$node_groups_count = count($duplicate_node_groups);
return array(
'count' => array(
'nodes' => $nodes_count,
'node_groups' => $node_groups_count,
),
'data' => $duplicate_node_groups,
);
}
else {
return array(
'count' => array(
'nodes' => 0,
'node_groups' => 0,
),
'data' => array(),
);
}
}
}