views_sort_expression.module in Views Sort Expression 8
Same filename and directory in other branches
File
views_sort_expression.moduleView source
<?php
use Drupal\views\ViewExecutable;
use Drupal\views_sort_expression\Plugin\views\sort\ExpressionSort;
/**
 *
 * Implements hook_views_data_alter().
 *
 * Alter the table and field information from hook_views_data().
 *
 * @param array $data
 *   An array of all information about Views tables and fields, collected from
 *   hook_views_data(), passed by reference.
 *
 * @see hook_views_data()
 */
function views_sort_expression_views_data_alter(array &$data) {
  $data['views']['views_sort_expression'] = [
    'title' => t('Expression'),
    'help' => t('Allow you to use an SQL expression.'),
    'sort' => [
      'id' => 'views_sort_expression',
    ],
  ];
}
/**
 * Implements hook_views_post_build().
 *
 * Remove views_sort_expression from group by if it was configured as a group by
 * manually
 *
 * @param \Drupal\views\ViewExecutable $view
 *   The view object about to be processed.
 *
 * @see \Drupal\views\ViewExecutable
 */
function views_sort_expression_views_post_build(ViewExecutable $view) {
  foreach ($view->sort as $handler) {
    if ($handler instanceof ExpressionSort) {
      if ($handler->options['aggregate']) {
        $alias = $handler->realField . '_' . $handler->position;
        $group_by =& $view->build_info['query']
          ->getGroupBy();
        unset($group_by[$alias]);
      }
    }
  }
}Functions
| Name   | Description | 
|---|---|
| views_sort_expression_views_data_alter | Implements hook_views_data_alter(). | 
| views_sort_expression_views_post_build | Implements hook_views_post_build(). | 
