You are here

function menu_link_handler_sort_weight::query in Menu Link (Field) 7

Called to add additional OrderBy statements to the query.

Overrides views_handler_sort::query

File

views/menu_link_handler_sort_weight.inc, line 56

Class

menu_link_handler_sort_weight
Handler for menu weight field of menu_link module

Code

function query() {
  $this
    ->ensure_my_table();
  $params = array(
    'function' => $this->options['group_type'],
  );
  $highest = $this->options['highest'];
  $join = new views_join();
  $join->definition = array(
    'left_field' => 'menu_link_mlid',
    'field' => 'mlid',
    'table' => 'menu_links',
    'left_table' => 'field_data_menu_link',
  );
  $join->table = 'menu_links';
  $join->left_table = 'field_data_menu_link';
  $join->left_field = 'menu_link_mlid';
  $join->field = 'mlid';
  $join->type = 'LEFT';
  $this->query
    ->add_relationship('menu_links', $join, 'menu_links');
  $this->query
    ->add_table('menu_links', 'menu_links', $join);
  $from = 1;
  if (isset($this->options['lowest']) && $this->options['lowest'] > 0) {
    $from = $this->options['lowest'];
  }
  for ($i = $from; $i <= $highest; $i++) {
    $index = $i;
    $addjoin = new views_join();
    $addjoin->definition = array(
      'left_field' => 'p' . $index,
      'field' => 'mlid',
      'table' => 'menu_links',
      'left_table' => 'menu_links',
    );
    $addjoin->table = 'menu_links';
    $addjoin->left_table = 'menu_links';
    $addjoin->left_field = 'p' . $index;
    $addjoin->field = 'mlid';
    $addjoin->type = 'LEFT';
    $alias = 'nml_p' . $index;
    $this->query
      ->add_relationship('nml_p' . $index, $addjoin, 'nml_p' . $index);
    $this->query
      ->add_table('menu_links', $alias, $addjoin);
    $this->query
      ->add_orderby(NULL, $alias . '.weight', $this->options['order'], NULL, $params);
  }
}