Example #1
0
/**
 * Alter the query before it is executed.
 *
 * @param \Drupal\views\ViewExecutable $view
 *   The view object about to be processed.
 * @param QueryPluginBase $query
 *   The query plugin object for the query.
 *
 * @see hook_views_query_substitutions()
 * @see \Drupal\views\Plugin\views\query\Sql
 */
function hook_views_query_alter(ViewExecutable $view, QueryPluginBase $query)
{
    // (Example assuming a view with an exposed filter on node title.)
    // If the input for the title filter is a positive integer, filter against
    // node ID instead of node title.
    if ($view->id() == 'my_view' && is_numeric($view->exposed_raw_input['title']) && $view->exposed_raw_input['title'] > 0) {
        // Traverse through the 'where' part of the query.
        foreach ($query->where as &$condition_group) {
            foreach ($condition_group['conditions'] as &$condition) {
                // If this is the part of the query filtering on title, chang the
                // condition to filter on node ID.
                if ($condition['field'] == 'node.title') {
                    $condition = array('field' => 'node.nid', 'value' => $view->exposed_raw_input['title'], 'operator' => '=');
                }
            }
        }
    }
}
Example #2
0
 /**
  * Gets all the views plugin definitions.
  *
  * @return array
  *   An array of plugin definitions for all types.
  */
 public static function getPluginDefinitions()
 {
     $plugins = array();
     foreach (ViewExecutable::getPluginTypes() as $plugin_type) {
         $plugins[$plugin_type] = static::pluginManager($plugin_type)->getDefinitions();
     }
     return $plugins;
 }