You are here

function views_handler_argument_draggableviews_book::query in DraggableViews 7.2

Same name and namespace in other branches
  1. 6.3 modules/draggableviews_book/views_handler_argument_draggableviews_book.inc \views_handler_argument_draggableviews_book::query()

Add condition to select only part of the tree that is under argument's id.

Overrides views_handler_argument::query

File

draggableviews_book/draggableviews_book_views_handler_argument.inc, line 16
Draggableviews book views handler argument.

Class

views_handler_argument_draggableviews_book
Argument that refers to a certain book page.

Code

function query($group_by = FALSE) {
  $this
    ->ensure_my_table();
  $mlid = db_query("SELECT mlid FROM {book} WHERE nid = :nid", array(
    ':nid' => $this->argument,
  ))
    ->fetchField();

  // Do not show argument menu item.
  $this->query
    ->add_where(0, $this->table . '.mlid', $mlid, '<>');

  // Select all items that have argument in one of parents.
  $group = $this->query
    ->set_where_group('OR');
  for ($i = 1; $i < 10; $i++) {
    $this->query
      ->add_where($group, $this->table . '.p' . $i, $mlid);
  }

  // We sort items in hook_views_post_execute().
  $tbl = $this->table;

  // Add weight, depth and parent fields.
  $this->query
    ->add_field($tbl, 'weight', 'draggableviews_book_weight');
  $this->query
    ->add_field($tbl, 'depth', 'draggableviews_book_depth');
  $this->query
    ->add_field($tbl, 'plid', 'draggableviews_book_plid');
  $this->query
    ->add_field($tbl, 'mlid', 'draggableviews_book_mlid');
}