diff --git a/core/modules/datetime_range/datetime_range.module b/core/modules/datetime_range/datetime_range.module index 426cbbd..2cc7a68 100644 --- a/core/modules/datetime_range/datetime_range.module +++ b/core/modules/datetime_range/datetime_range.module @@ -33,6 +33,10 @@ function datetime_range_help($route_name, RouteMatchInterface $route_match) { * Implements hook_view_presave(). * * Provides BC layer for modules using datetime_range filter/sort plugins. + * + * @deprecated in Drupal 8.4.x and will be removed before 9.0.0. + * + * @see https://www.drupal.org/node/2857691 */ function datetime_range_view_presave(ViewEntityInterface $view) { $config_factory = \Drupal::configFactory(); @@ -44,7 +48,7 @@ function datetime_range_view_presave(ViewEntityInterface $view) { // Update datetime_range filters. if (isset($display['display_options']['filters'])) { foreach ($display['display_options']['filters'] as $field_name => &$filter) { - if ($filter['plugin_id'] == 'string') { + if ($filter['plugin_id'] === 'string') { // Get field config. $filter_views_data = Views::viewsData()->get($filter['table'])[$filter['field']]['filter']; @@ -54,7 +58,7 @@ function datetime_range_view_presave(ViewEntityInterface $view) { $field_storage_name = 'field.storage.' . $filter_views_data['entity_type'] . '.' . $filter_views_data['field_name']; $field_configuration = $config_factory->get($field_storage_name); - if ($field_configuration->get('type') == 'daterange') { + if ($field_configuration->get('type') === 'daterange') { // Set entity_type and field_name if missing. if (!isset($filter['entity_type'])) { @@ -75,7 +79,9 @@ function datetime_range_view_presave(ViewEntityInterface $view) { // Map string operator/value to numeric equivalent. switch ($filter['operator']) { case '=': - $operator = '='; + case 'empty': + case 'not empty': + $operator = $filter['operator']; break; case '!=': @@ -85,20 +91,12 @@ function datetime_range_view_presave(ViewEntityInterface $view) { case 'starts': $operator = 'regular_expression'; - $datetime_value['value'] = '^' . $datetime_value['value']; + $datetime_value['value'] = '^' . preg_quote($datetime_value['value']); break; case 'ends': $operator = 'regular_expression'; - $datetime_value['value'] = $datetime_value['value'] . '$'; - break; - - case 'empty': - $operator = 'empty'; - break; - - case 'not empty': - $operator = 'not empty'; + $datetime_value['value'] = preg_quote($datetime_value['value']) . '$'; break; default: @@ -107,12 +105,16 @@ function datetime_range_view_presave(ViewEntityInterface $view) { if (empty($datetime_value['value'])) { $datetime_value['value'] = '.*'; } + else { + $datetime_value['value'] = preg_quote($datetime_value['value']); + } } // Set value and operator. $filter['value'] = $datetime_value; $filter['operator'] = $operator; $changed = TRUE; + @trigger_error('Use of string filters for datetime_range fields is deprecated. Use the datetime filters instead.', E_USER_DEPRECATED); } } } @@ -121,7 +123,7 @@ function datetime_range_view_presave(ViewEntityInterface $view) { // Update datetime_range sort handlers. if (isset($display['display_options']['sorts'])) { foreach ($display['display_options']['sorts'] as $field_name => &$sort) { - if ($sort['plugin_id'] == 'standard') { + if ($sort['plugin_id'] === 'standard') { // Get field config. $sort_views_data = Views::viewsData()->get($sort['table'])[$sort['field']]['sort']; @@ -131,7 +133,7 @@ function datetime_range_view_presave(ViewEntityInterface $view) { $field_storage_name = 'field.storage.' . $sort_views_data['entity_type'] . '.' . $sort_views_data['field_name']; $field_configuration = $config_factory->get($field_storage_name); - if ($field_configuration->get('type') == 'daterange') { + if ($field_configuration->get('type') === 'daterange') { // Set entity_type and field_name if missing. if (!isset($sort['entity_type'])) { @@ -141,6 +143,7 @@ function datetime_range_view_presave(ViewEntityInterface $view) { // Set datetime plugin_id. $sort['plugin_id'] = 'datetime'; $changed = TRUE; + @trigger_error('Use of daterange sort handlers for datetime_range fields is deprecated. Use the datetime sort handlers instead.', E_USER_DEPRECATED); } } }