Skip to content
Snippets Groups Projects

Resolve #3249822 - Langcode should be used for checking duplicates - 1.x

5 files
+ 122
40
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -62,7 +62,6 @@ class ReportController extends ControllerBase {
$this->t('Entities'),
];
$rows = [];
$checksum_results = $this->checksumStatistics->checksumsWithDuplicates();
if (empty($checksum_results)) {
@@ -71,39 +70,51 @@ class ReportController extends ControllerBase {
];
}
$media_results = $this->database
->select('media_field_data', 'mfd')
->fields('mfd', ['mid', 'name', 'duplicates_checksum'])
->condition('duplicates_checksum', array_keys($checksum_results), 'IN')
->execute();
foreach ($media_results as $media_record) {
$checksum = $media_record->duplicates_checksum;
if (!is_array($checksum_results[$checksum])) {
$checksum_results[$checksum] = [
'number' => $checksum_results[$checksum],
'entities' => [],
];
foreach ($checksum_results as &$checksum_result) {
foreach ($checksum_result as $langcode => &$result) {
// Retrieve additional information about the media entities.
$result['entities'] = $this->database
->select('media_field_data', 'mfd')
->fields('mfd', ['mid', 'langcode', 'name', 'duplicates_checksum'])
->condition('mid', $result['ids'], 'IN')
->condition('langcode', $langcode)
->execute()
->fetchAll();
}
$checksum_results[$checksum]['entities'][] = $media_record;
}
foreach ($checksum_results as $checksum => $record) {
// Build the rows based on media data.
foreach ($checksum_results as $checksum => $records) {
$row = [
'checksum' => $checksum,
'count' => $record['number'],
'count' => 0,
'entities' => [
'data' => [
'#theme' => 'links',
'#links' => [],
],
'data' => [],
],
];
foreach ($record['entities'] as $mfd_record) {
$row['entities']['data']['#links'][] = [
'title' => $mfd_record->name,
'url' => Url::fromRoute('entity.media.canonical', ['media' => $mfd_record->mid]),
foreach ($records as $langcode => $record) {
$language = $this->languageManager()->getLanguage($langcode);
$row['count'] += $record['total'];
// Subheading of the language group.
$row['entities']['data'][$langcode]['title'] = [
'#markup' => '<p>' . $language->getName() . '</p>',
];
$row['entities']['data'][$langcode]['links'] = [
'#theme' => 'links',
'#links' => [],
];
foreach ($record['entities'] as $mfd_record) {
$row['entities']['data'][$langcode]['links']['#links'][] = [
'title' => $mfd_record->name,
'url' => Url::fromRoute('entity.media.canonical', [
'media' => $mfd_record->mid,
], [
'language' => $language,
]),
];
}
}
$rows[] = $row;
Loading