// 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)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.