From 9ae647428818910967effb80fbc09193fb911699 Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Mon, 8 Jun 2015 14:29:59 +0100 Subject: [PATCH] =?UTF-8?q?Revert=20"Issue=20#1838242=20by=20jhedstrom,=20?= =?UTF-8?q?pivica,=20tim.plunkett,=20Ga=C3=ABlG,=20dawehner,=20olli,=20Len?= =?UTF-8?q?dude:=20Provide=20Views=20integration=20for=20datetime=20field"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 4a4ee0589d9a48bf94ccdfc16fd9fc9497cf3631. --- core/modules/datetime/datetime.views.inc | 49 ----- .../src/Plugin/views/argument/Date.php | 45 ---- .../src/Plugin/views/argument/DayDate.php | 22 -- .../src/Plugin/views/argument/MonthDate.php | 22 -- .../src/Plugin/views/argument/YearDate.php | 22 -- .../datetime/src/Plugin/views/filter/Date.php | 106 ---------- .../datetime/src/Plugin/views/sort/Date.php | 46 ----- .../src/Tests/Views/ArgumentDateTimeTest.php | 141 ------------- .../Tests/Views/DateTimeHandlerTestBase.php | 78 ------- .../src/Tests/Views/FilterDateTimeTest.php | 195 ------------------ .../src/Tests/Views/SortDateTimeTest.php | 99 --------- .../datetime_test/datetime_test.info.yml | 8 - .../views.view.test_argument_datetime.yml | 99 --------- .../views.view.test_filter_datetime.yml | 56 ----- .../views.view.test_sort_datetime.yml | 57 ----- .../Plugin/views/query/QueryPluginBase.php | 5 +- .../views/src/Plugin/views/query/Sql.php | 12 +- 17 files changed, 4 insertions(+), 1058 deletions(-) delete mode 100644 core/modules/datetime/datetime.views.inc delete mode 100644 core/modules/datetime/src/Plugin/views/argument/Date.php delete mode 100644 core/modules/datetime/src/Plugin/views/argument/DayDate.php delete mode 100644 core/modules/datetime/src/Plugin/views/argument/MonthDate.php delete mode 100644 core/modules/datetime/src/Plugin/views/argument/YearDate.php delete mode 100644 core/modules/datetime/src/Plugin/views/filter/Date.php delete mode 100644 core/modules/datetime/src/Plugin/views/sort/Date.php delete mode 100644 core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php delete mode 100644 core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php delete mode 100644 core/modules/datetime/src/Tests/Views/FilterDateTimeTest.php delete mode 100644 core/modules/datetime/src/Tests/Views/SortDateTimeTest.php delete mode 100644 core/modules/datetime/tests/modules/datetime_test/datetime_test.info.yml delete mode 100644 core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml delete mode 100644 core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_filter_datetime.yml delete mode 100644 core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_sort_datetime.yml diff --git a/core/modules/datetime/datetime.views.inc b/core/modules/datetime/datetime.views.inc deleted file mode 100644 index 8b26bd5714d..00000000000 --- a/core/modules/datetime/datetime.views.inc +++ /dev/null @@ -1,49 +0,0 @@ - $table_data) { - // Set the 'datetime' filter type. - $data[$table_name][$field_storage->getName() . '_value']['filter']['id'] = 'datetime'; - - // Set the 'datetime' argument type. - $data[$table_name][$field_storage->getName() . '_value']['argument']['id'] = 'datetime'; - - // Create year, month, and day arguments. - $group = $data[$table_name][$field_storage->getName() . '_value']['group']; - $arguments = array( - // Argument type => help text. - 'year' => t('Date in the form of YYYY.'), - 'month' => t('Date in the form of MM.'), - 'day' => t('Date in the form of DD.'), - ); - foreach ($arguments as $argument_type => $help_text) { - $data[$table_name][$field_storage->getName() . '_value_' . $argument_type] = array( - 'title' => $field_storage->getLabel() . ' (' . $argument_type . ')', - 'help' => $help_text, - 'argument' => array( - 'field' => $field_storage->getName() . '_value', - 'id' => 'datetime_' . $argument_type, - ), - 'group' => $group, - ); - } - - // Set the 'datetime' sort handler. - $data[$table_name][$field_storage->getName() . '_value']['sort']['id'] = 'datetime'; - } - - return $data; -} diff --git a/core/modules/datetime/src/Plugin/views/argument/Date.php b/core/modules/datetime/src/Plugin/views/argument/Date.php deleted file mode 100644 index 7bd5cdf337d..00000000000 --- a/core/modules/datetime/src/Plugin/views/argument/Date.php +++ /dev/null @@ -1,45 +0,0 @@ -tableAlias.$this->realField"; - } - - /** - * {@inheritdoc} - */ - public function getDateFormat($format) { - // Pass in the string-field option. - return $this->query->getDateFormat($this->getDateField(), $format, TRUE); - } -} diff --git a/core/modules/datetime/src/Plugin/views/argument/DayDate.php b/core/modules/datetime/src/Plugin/views/argument/DayDate.php deleted file mode 100644 index f100db044b8..00000000000 --- a/core/modules/datetime/src/Plugin/views/argument/DayDate.php +++ /dev/null @@ -1,22 +0,0 @@ -dateFormatter = $date_formatter; - } - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { - return new static( - $configuration, - $plugin_id, - $plugin_definition, - $container->get('date.formatter') - ); - } - - /** - * Date format for SQL conversion. - * - * @var string - * - * @see \Drupal\views\Plugin\views\query\Sql::getDateFormat() - */ - protected static $dateFormat = 'Y-m-d H:i:s'; - - /** - * Override parent method, which deals with dates as integers. - */ - protected function opBetween($field) { - $origin = ($this->value['type'] == 'offset') ? REQUEST_TIME : 0; - $a = intval(strtotime($this->value['min'], $origin)); - $b = intval(strtotime($this->value['max'], $origin)); - - // Convert to ISO format and format for query. UTC timezone is used since - // dates are stored in UTC. - $a = $this->query->getDateFormat("'" . $this->dateFormatter->format($a, 'custom', DATETIME_DATETIME_STORAGE_FORMAT, DATETIME_STORAGE_TIMEZONE) . "'", static::$dateFormat, TRUE); - $b = $this->query->getDateFormat("'" . $this->dateFormatter->format($b, 'custom', DATETIME_DATETIME_STORAGE_FORMAT, DATETIME_STORAGE_TIMEZONE) . "'", static::$dateFormat, TRUE); - - // This is safe because we are manually scrubbing the values. - $operator = strtoupper($this->operator); - $field = $this->query->getDateFormat($field, static::$dateFormat, TRUE); - $this->query->addWhereExpression($this->options['group'], "$field $operator $a AND $b"); - } - - /** - * Override parent method, which deals with dates as integers. - */ - protected function opSimple($field) { - $origin = (!empty($this->value['type']) && $this->value['type'] == 'offset') ? REQUEST_TIME : 0; - $value = intval(strtotime($this->value['value'], $origin)); - - // Convert to ISO. UTC is used since dates are stored in UTC. - $value = $this->query->getDateFormat("'" . $this->dateFormatter->format($value, 'custom', DATETIME_DATETIME_STORAGE_FORMAT, DATETIME_STORAGE_TIMEZONE) . "'", static::$dateFormat, TRUE); - - // This is safe because we are manually scrubbing the value. - $field = $this->query->getDateFormat($field, static::$dateFormat, TRUE); - $this->query->addWhereExpression($this->options['group'], "$field $this->operator $value"); - } - -} diff --git a/core/modules/datetime/src/Plugin/views/sort/Date.php b/core/modules/datetime/src/Plugin/views/sort/Date.php deleted file mode 100644 index b86d424f69a..00000000000 --- a/core/modules/datetime/src/Plugin/views/sort/Date.php +++ /dev/null @@ -1,46 +0,0 @@ -tableAlias.$this->realField"; - } - - /** - * Override query to provide 'second' granularity. - */ - public function query() { - $this->ensureMyTable(); - switch ($this->options['granularity']) { - case 'second': - $formula = $this->getDateFormat('YmdHis'); - $this->query->addOrderBy(NULL, $formula, $this->options['order'], $this->tableAlias . '_' . $this->field . '_' . $this->options['granularity']); - return; - } - - // All other granularities are handled by the numeric sort handler. - parent::query(); - } - -} diff --git a/core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php b/core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php deleted file mode 100644 index a7d9e92435f..00000000000 --- a/core/modules/datetime/src/Tests/Views/ArgumentDateTimeTest.php +++ /dev/null @@ -1,141 +0,0 @@ -nodes[] = $this->drupalCreateNode(array( - 'field_date' => array( - 'value' => $date, - ) - )); - } - } - - /** - * Test year argument. - * - * @see \Drupal\datetime\Plugin\views\argument\YearDate - */ - public function testDatetimeArgumentYear() { - $view = Views::getView('test_argument_datetime'); - - // The 'default' display has the 'year' argument. - $view->setDisplay('default'); - $this->executeView($view, array('2000')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[0]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - - $view->setDisplay('default'); - $this->executeView($view, array('2002')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[2]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - } - - /** - * Test month argument. - * - * @see \Drupal\datetime\Plugin\views\argument\MonthDate - */ - public function testDatetimeArgumentMonth() { - $view = Views::getView('test_argument_datetime'); - // The 'embed_1' display has the 'month' argument. - $view->setDisplay('embed_1'); - - $this->executeView($view, array('10')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[0]->id()); - $expected[] = array('nid' => $this->nodes[1]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - - $view->setDisplay('embed_1'); - $this->executeView($view, array('01')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[2]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - } - - /** - * Test day argument. - * - * @see \Drupal\datetime\Plugin\views\argument\DayDate - */ - public function testDatetimeArgumentDay() { - $view = Views::getView('test_argument_datetime'); - - // The 'embed_2' display has the 'day' argument. - $view->setDisplay('embed_2'); - $this->executeView($view, array('10')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[0]->id()); - $expected[] = array('nid' => $this->nodes[1]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - - $view->setDisplay('embed_2'); - $this->executeView($view, array('01')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[2]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - } - - /** - * Test year, month, and day arguments combined. - */ - public function testDatetimeArgumentAll() { - $view = Views::getView('test_argument_datetime'); - // The 'embed_3' display has year, month, and day arguments. - $view->setDisplay('embed_3'); - - $this->executeView($view, array('2000', '10', '10')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[0]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - - $view->setDisplay('embed_3'); - $this->executeView($view, array('2002', '01', '01')); - $expected = array(); - $expected[] = array('nid' => $this->nodes[2]->id()); - $this->assertIdenticalResultset($view, $expected, $this->map); - $view->destroy(); - } - -} diff --git a/core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php b/core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php deleted file mode 100644 index 4678be9ad00..00000000000 --- a/core/modules/datetime/src/Tests/Views/DateTimeHandlerTestBase.php +++ /dev/null @@ -1,78 +0,0 @@ - 'page', - 'name' => 'page' - )); - $node_type->save(); - $fieldStorage = entity_create('field_storage_config', array( - 'field_name' => static::$field_name, - 'entity_type' => 'node', - 'type' => 'datetime', - 'settings' => array('datetime_type' => DateTimeItem::DATETIME_TYPE_DATETIME), - )); - $fieldStorage->save(); - $field = entity_create('field_config', array( - 'field_storage' => $fieldStorage, - 'bundle' => 'page', - 'required' => TRUE, - )); - $field->save(); - - // Views needs to be aware of the new field. - $this->container->get('views.views_data')->clear(); - - // Set column map. - $this->map = array( - 'nid' => 'nid', - ); - - // Load test views. - ViewTestData::createTestViews(get_class($this), array('datetime_test')); - } - -} diff --git a/core/modules/datetime/src/Tests/Views/FilterDateTimeTest.php b/core/modules/datetime/src/Tests/Views/FilterDateTimeTest.php deleted file mode 100644 index 068c88e6db1..00000000000 --- a/core/modules/datetime/src/Tests/Views/FilterDateTimeTest.php +++ /dev/null @@ -1,195 +0,0 @@ -format(static::$date, 'custom', DATETIME_DATETIME_STORAGE_FORMAT, DATETIME_STORAGE_TIMEZONE), - ); - foreach ($dates as $date) { - $this->nodes[] = $this->drupalCreateNode(array( - 'field_date' => array( - 'value' => $date, - ) - )); - } - } - - /** - * Test filter operations. - */ - public function testDatetimeFilter() { - $this->_testOffset(); - $this->_testBetween(); - $this->_testExact(); - } - - /** - * Test offset operations. - */ - protected function _testOffset() { - $view = Views::getView('test_filter_datetime'); - $field = static::$field_name . '_value'; - - // Test simple operations. - $view->initHandlers(); - - $view->filter[$field]->operator = '>'; - $view->filter[$field]->value['type'] = 'offset'; - $view->filter[$field]->value['value'] = '+1 hour'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[3]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - - // Test offset for between operator. - $view->initHandlers(); - $view->filter[$field]->operator = 'between'; - $view->filter[$field]->value['type'] = 'offset'; - $view->filter[$field]->value['max'] = '+2 days'; - $view->filter[$field]->value['min'] = '+1 hour'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[3]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - } - - /** - * Test between operations. - */ - protected function _testBetween() { - $view = Views::getView('test_filter_datetime'); - $field = static::$field_name . '_value'; - - // Test between with min and max. - $view->initHandlers(); - $view->filter[$field]->operator = 'between'; - $view->filter[$field]->value['min'] = '2001-01-01'; - $view->filter[$field]->value['max'] = '2002-01-01'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[1]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - - // Test between with just max. - $view->initHandlers(); - $view->filter[$field]->operator = 'between'; - $view->filter[$field]->value['max'] = '2002-01-01'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[0]->id()), - array('nid' => $this->nodes[1]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - - // Test not between with min and max. - $view->initHandlers(); - $view->filter[$field]->operator = 'not between'; - $view->filter[$field]->value['min'] = '2001-01-01'; - $view->filter[$field]->value['max'] = '2002-01-01'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[0]->id()), - array('nid' => $this->nodes[2]->id()), - array('nid' => $this->nodes[3]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - - // Test not between with just max. - $view->initHandlers(); - $view->filter[$field]->operator = 'not between'; - $view->filter[$field]->value['max'] = '2001-01-01'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[1]->id()), - array('nid' => $this->nodes[2]->id()), - array('nid' => $this->nodes[3]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - } - - /** - * Test exact date matching. - */ - protected function _testExact() { - $view = Views::getView('test_filter_datetime'); - $field = static::$field_name . '_value'; - - // Test between with min and max. - $view->initHandlers(); - $view->filter[$field]->operator = '='; - $view->filter[$field]->value['min'] = ''; - $view->filter[$field]->value['max'] = ''; - // Use the date from node 3. Use the site timezone (mimics a value entered - // through the UI). - $view->filter[$field]->value['value'] = \Drupal::service('date.formatter')->format(static::$date, 'custom', DATETIME_DATETIME_STORAGE_FORMAT, static::$timezone); - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[3]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - - } - -} diff --git a/core/modules/datetime/src/Tests/Views/SortDateTimeTest.php b/core/modules/datetime/src/Tests/Views/SortDateTimeTest.php deleted file mode 100644 index 9c9ddcbec95..00000000000 --- a/core/modules/datetime/src/Tests/Views/SortDateTimeTest.php +++ /dev/null @@ -1,99 +0,0 @@ -nodes[] = $this->drupalCreateNode(array( - 'field_date' => array( - 'value' => $date, - ) - )); - } - } - - /** - * Tests the datetime sort handler. - */ - public function testDateTimeSort() { - $field = static::$field_name . '_value'; - $view = Views::getView('test_sort_datetime'); - - // Sort order is DESC. - $view->initHandlers(); - $view->sort[$field]->options['granularity'] = 'minute'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[0]->id()), - array('nid' => $this->nodes[3]->id()), - array('nid' => $this->nodes[2]->id()), - array('nid' => $this->nodes[1]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - - // Check ASC. - $view->initHandlers(); - $field = static::$field_name . '_value'; - $view->sort[$field]->options['order'] = 'ASC'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[1]->id()), - array('nid' => $this->nodes[2]->id()), - array('nid' => $this->nodes[3]->id()), - array('nid' => $this->nodes[0]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - - // Change granularity to 'year', and the secondary node ID order should - // define the order of nodes with the same year. - $view->initHandlers(); - $view->sort[$field]->options['granularity'] = 'year'; - $view->sort[$field]->options['order'] = 'DESC'; - $view->setDisplay('default'); - $this->executeView($view); - $expected_result = array( - array('nid' => $this->nodes[0]->id()), - array('nid' => $this->nodes[1]->id()), - array('nid' => $this->nodes[2]->id()), - array('nid' => $this->nodes[3]->id()), - ); - $this->assertIdenticalResultset($view, $expected_result, $this->map); - $view->destroy(); - } - -} diff --git a/core/modules/datetime/tests/modules/datetime_test/datetime_test.info.yml b/core/modules/datetime/tests/modules/datetime_test/datetime_test.info.yml deleted file mode 100644 index 84ba9e41d1a..00000000000 --- a/core/modules/datetime/tests/modules/datetime_test/datetime_test.info.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: 'Datetime test' -type: module -description: 'Provides default views for tests.' -package: Testing -version: VERSION -core: 8.x -dependencies: - - views diff --git a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml b/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml deleted file mode 100644 index e22ad30c810..00000000000 --- a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_argument_datetime.yml +++ /dev/null @@ -1,99 +0,0 @@ -langcode: und -status: true -dependencies: { } -id: test_argument_datetime -label: '' -module: views -description: '' -tag: '' -base_table: node_field_data -base_field: nid -core: '8' -display: - default: - display_options: - defaults: - fields: false - pager: false - sorts: false - arguments: - field_date_value_year: - field: field_date_value_year - id: field_date_value - table: node__field_date - plugin_id: datetime_year - fields: - id: - field: nid - id: nid - relationship: none - table: node - plugin_id: numeric - pager: - options: - offset: 0 - type: none - sorts: - id: - field: nid - id: nid - order: ASC - relationship: none - table: node - plugin_id: numeric - display_plugin: default - display_title: Master - id: default - position: 0 - embed_1: - display_options: - defaults: - arguments: false - arguments: - field_date_value_month: - field: field_date_value_month - id: field_date_value - table: node__field_date - plugin_id: datetime_month - display_plugin: embed - id: embed_1 - display_title: '' - position: null - embed_2: - display_options: - defaults: - arguments: false - arguments: - field_date_value_day: - field: field_date_value_day - id: field_date_value - table: node__field_date - plugin_id: datetime_day - display_plugin: embed - id: embed_2 - display_title: '' - position: null - embed_3: - display_options: - defaults: - arguments: false - arguments: - field_date_value_year: - field: field_date_value_year - id: field_date_value - table: node__field_date - plugin_id: datetime_year - field_date_value_month: - field: field_date_value_month - id: field_date_value - table: node__field_date - plugin_id: datetime_month - field_date_value_day: - field: field_date_value_day - id: field_date_value - table: node__field_date - plugin_id: datetime_day - display_plugin: embed - id: embed_2 - display_title: '' - position: null diff --git a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_filter_datetime.yml b/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_filter_datetime.yml deleted file mode 100644 index c9b23ded6fe..00000000000 --- a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_filter_datetime.yml +++ /dev/null @@ -1,56 +0,0 @@ -langcode: und -status: true -dependencies: - module: - - node -id: test_filter_datetime -label: '' -module: views -description: '' -tag: '' -base_table: node_field_data -base_field: nid -core: '8' -display: - default: - display_options: - access: - type: none - cache: - type: none - exposed_form: - type: basic - fields: - nid: - field: nid - id: nid - table: node - plugin_id: node - filters: - field_date_value: - id: field_date_value - table: node__field_date - field: field_date_value - plugin_id: datetime - sorts: - id: - field: nid - id: nid - order: ASC - relationship: none - table: node - plugin_id: numeric - pager: - type: full - query: - options: - query_comment: '' - type: views_query - style: - type: default - row: - type: fields - display_plugin: default - display_title: Master - id: default - position: 0 diff --git a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_sort_datetime.yml b/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_sort_datetime.yml deleted file mode 100644 index 8b8d052ae76..00000000000 --- a/core/modules/datetime/tests/modules/datetime_test/test_views/views.view.test_sort_datetime.yml +++ /dev/null @@ -1,57 +0,0 @@ -langcode: und -status: true -dependencies: - module: - - node -id: test_sort_datetime -label: '' -module: views -description: '' -tag: '' -base_table: node_field_data -base_field: nid -core: '8' -display: - default: - display_options: - access: - type: none - cache: - type: none - exposed_form: - type: basic - fields: - nid: - field: nid - id: nid - table: node - plugin_id: node - sorts: - field_date_value: - field: field_date_value - id: field_date_value - relationship: none - table: node__field_date - order: DESC - plugin_id: datetime - id: - field: nid - id: nid - order: ASC - relationship: none - table: node - plugin_id: numeric - pager: - type: full - query: - options: - query_comment: '' - type: views_query - style: - type: default - row: - type: fields - display_plugin: default - display_title: Master - id: default - position: 0 diff --git a/core/modules/views/src/Plugin/views/query/QueryPluginBase.php b/core/modules/views/src/Plugin/views/query/QueryPluginBase.php index c9650ac3537..857c0c7cb4a 100644 --- a/core/modules/views/src/Plugin/views/query/QueryPluginBase.php +++ b/core/modules/views/src/Plugin/views/query/QueryPluginBase.php @@ -237,15 +237,12 @@ abstract class QueryPluginBase extends PluginBase implements CacheablePluginInte * An appropriate query expression pointing to the date field. * @param string $format * A format string for the result, like 'Y-m-d H:i:s'. - * @param boolean $string_date - * For certain databases, date format functions vary depending on string or - * numeric storage. * * @return string * A string representing the field formatted as a date in the format * specified by $format. */ - public function getDateFormat($field, $format, $string_date = FALSE) { + public function getDateFormat($field, $format) { return $field; } diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php index f03b494afc4..9d48a624081 100644 --- a/core/modules/views/src/Plugin/views/query/Sql.php +++ b/core/modules/views/src/Plugin/views/query/Sql.php @@ -1748,9 +1748,9 @@ class Sql extends QueryPluginBase { } /** - * {@inheritdoc} + * Overrides \Drupal\views\Plugin\views\query\QueryPluginBase::getDateFormat(). */ - public function getDateFormat($field, $format, $string_date = FALSE) { + public function getDateFormat($field, $format) { $db_type = Database::getConnection()->databaseType(); switch ($db_type) { case 'mysql': @@ -1797,13 +1797,7 @@ class Sql extends QueryPluginBase { 'A' => 'AM', ); $format = strtr($format, $replace); - if (!$string_date) { - return "TO_CHAR($field, '$format')"; - } - // In order to allow for partials (eg, only the year), transform to a - // date, back to a string again. - // @todo this is very messy, and EXTRACT should probably be used. - return "TO_CHAR(TO_TIMESTAMP($field, 'YYYY-MM-DD HH24:MI:SS'), '$format')"; + return "TO_CHAR($field, '$format')"; case 'sqlite': $replace = array( 'Y' => '%Y',