function media_library_post_update_add_langcode_filters
Add langcode filters to media library view displays.
File
-
core/
modules/ media_library/ media_library.post_update.php, line 621
Code
function media_library_post_update_add_langcode_filters() {
$view = Views::getView('media_library');
if (!$view) {
return;
}
// Fetch the filters from the default display and add the new 'langcode'
// filter if it does not yet exist.
$default_display = $view->getDisplay();
$filters = $default_display->getOption('filters');
$added_langcode = FALSE;
if (!isset($filters['langcode'])) {
$filters['langcode'] = [
'id' => 'langcode',
'table' => 'media_field_data',
'field' => 'langcode',
'relationship' => 'none',
'group_type' => 'group',
'admin_label' => '',
'operator' => 'in',
'value' => [],
'group' => 1,
'exposed' => TRUE,
'expose' => [
'use_operator' => FALSE,
'remember' => FALSE,
'operator_id' => 'langcode_op',
'multiple' => FALSE,
'description' => '',
'required' => FALSE,
'reduce' => FALSE,
'label' => 'Language',
'operator_limit_selection' => FALSE,
'operator' => 'langcode_op',
'identifier' => 'langcode',
'operator_list' => [],
'remember_roles' => [
'administrator' => '0',
'authenticated' => 'authenticated',
'anonymous' => '0',
],
],
'is_grouped' => FALSE,
'group_info' => [
'widget' => 'select',
'group_items' => [],
'multiple' => FALSE,
'description' => '',
'default_group_multiple' => [],
'default_group' => 'All',
'label' => '',
'identifier' => '',
'optional' => TRUE,
'remember' => FALSE,
],
'entity_type' => 'media',
'entity_field' => 'langcode',
'plugin_id' => 'language',
];
$default_display->setOption('filters', $filters);
$added_langcode = TRUE;
}
$added_default_langcode_displays = [];
foreach ([
'widget',
'widget_table',
] as $display_id) {
// Check if the display still exists, or else skip it.
if (!$view->displayHandlers
->has($display_id)) {
continue;
}
$view->setDisplay($display_id);
$display = $view->getDisplay();
// Fetch the filters from the display and add the 'default_langcode' filter
// if it does not yet exist.
$filters = $display->getOption('filters');
if (!isset($filters['default_langcode'])) {
$filters['default_langcode'] = [
'id' => 'default_langcode',
'table' => 'media_field_data',
'field' => 'default_langcode',
'relationship' => 'none',
'group_type' => 'group',
'admin_label' => '',
'operator' => '=',
'value' => '1',
'group' => 1,
'exposed' => FALSE,
'expose' => [
'use_operator' => FALSE,
'remember' => FALSE,
'operator_id' => '',
'multiple' => FALSE,
'description' => '',
'required' => FALSE,
'label' => '',
'operator_limit_selection' => FALSE,
'operator' => '',
'identifier' => '',
'operator_list' => [],
'remember_roles' => [
RoleInterface::AUTHENTICATED_ID => RoleInterface::AUTHENTICATED_ID,
],
],
'is_grouped' => FALSE,
'group_info' => [
'widget' => 'select',
'group_items' => [],
'multiple' => FALSE,
'description' => '',
'default_group_multiple' => [],
'default_group' => 'All',
'label' => '',
'identifier' => '',
'optional' => TRUE,
'remember' => FALSE,
],
'entity_type' => 'media',
'entity_field' => 'default_langcode',
'plugin_id' => 'boolean',
];
$display->setOption('filters', $filters);
// Change the rendering language of the rows to the interface language.
$display->setOption('rendering_language', '***LANGUAGE_language_interface***');
$added_default_langcode_displays[] = $view->storage
->get('display')[$display_id]['display_title'];
}
}
if ($added_langcode && $added_default_langcode_displays) {
$view->save();
return t("The 'Language' filter was added to the default display of the %label view and the 'Default translation' filter was added to the following displays: %displays", [
'%label' => $view->storage
->label(),
'%displays' => implode(', ', $added_default_langcode_displays),
]);
}
if ($added_langcode) {
$view->save();
return t("The 'Language' filter was added to the default display of the %label view.", [
'%label' => $view->storage
->label(),
'%displays' => implode(', ', $added_default_langcode_displays),
]);
}
if ($added_default_langcode_displays) {
$view->save();
return t("The 'Default translation' filter was added to the following %label view displays: %displays", [
'%label' => $view->storage
->label(),
'%displays' => implode(', ', $added_default_langcode_displays),
]);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.