Snippets

Metadrop Comparativa de paragraphs

Created by Omar
// Código improvisado para poder comparar paragraphs. No es ideal ni limpio pero hace su cometido :D

// Permite comparar los campos en comun entre 2 paragraphs. Necesita que añadas los nombres máquina.
// Devuelve 1 o 0 si son o no iguales.
// Muestra mensajes diciendo si uno es igual a otro, y si no dice las diferencias.
function paragraphs_compare($paragraph_type_a, $paragraph_type_b) {
  $paragraph_fields_a = array_keys(field_info_instances('paragraphs_item', $paragraph_type_a));
  $paragraph_fields_b = array_keys(field_info_instances('paragraphs_item', $paragraph_type_b));
$diff_ab = array_diff($paragraph_fields_a, $paragraph_fields_b);
$diff_ba = array_diff($paragraph_fields_b, $paragraph_fields_a);
$diff = array_merge($diff_ab, $diff_ba);
if (empty($diff)) {
  dpm("$paragraph_type_a es igual a $paragraph_type_b");
}
else {
  dpm("(" . count($diff) . ") Diferencias entre $paragraph_type_a y $paragraph_type_b: " . implode($diff, ', '));
}
  return empty($diff) ? 1 : 0;
}

// Devuelve un array con los paragraphs que comparten los mismos campos.
// @NOTA: va mostrando mensajes con las diferencias entre campos. 
function paragraphs_groups() {
  $paragraphs = array_keys(paragraphs_bundle_load());
  $paragraphs_groups = array();
  $paragraphs_grouped = array();
  foreach ($paragraphs as $paragraph_a) {
    if (!empty($paragraphs_grouped[$paragraph_a])) {
      continue;
    }
    foreach ($paragraphs as $paragraph_b) {
      if ($paragraph_a != $paragraph_b && paragraphs_compare($paragraph_a, $paragraph_b)) {
//        $paragraphs_grouped[] = $paragraph_a;
//        $paragraphs_grouped[] = $paragraph_b;
        if (!empty($paragraphs_grouped[$paragraph_a])) {
          $key = $paragraphs_grouped[$paragraph_a];
        }
        elseif (!empty($paragraphs_grouped[$paragraph_b ])) {
          $key = $paragraphs_grouped[$paragraph_b];
        }
        else {
          $key = NULL;
        }
        if (!empty($key)) {
          $paragraphs_groups[$key][$paragraph_a] = $paragraph_a;
          $paragraphs_groups[$key][$paragraph_b] = $paragraph_b;
        }
        else {
          $key = count($paragraphs_groups);
          $paragraphs_groups[] = array($paragraph_a => $paragraph_a, $paragraph_b => $paragraph_b);
        }
        $paragraphs_grouped[$paragraph_a] = $key;
        $paragraphs_grouped[$paragraph_b] = $key;
      }
    }
  }
  dpm($paragraphs_groups);
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.