You are here

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(),
      );
    }
  }
}