function node_build_filter_query

7.x node.admin.inc node_build_filter_query(SelectQueryInterface $query)
6.x node.admin.inc node_build_filter_query()

Build query for node administration filters based on session.

1 call to node_build_filter_query()
node_admin_nodes in drupal-6.x/modules/node/node.admin.inc
Form builder: Builds the node administration overview.

File

drupal-6.x/modules/node/node.admin.inc, line 167
Content administration and module settings UI.

Code

function node_build_filter_query() {
  $filters = node_filters();

  // Build query
  $where = $args = array();
  $join = '';
  foreach ($_SESSION['node_overview_filter'] as $index => $filter) {
    list($key, $value) = $filter;
    switch ($key) {
      case 'status':
        // Note: no exploitable hole as $key/$value have already been checked when submitted
        list($key, $value) = explode('-', $value, 2);
        $where[] = 'n.' . $key . ' = %d';
        break;
      case 'category':
        $table = "tn$index";
        $where[] = "$table.tid = %d";
        $join .= "INNER JOIN {term_node} $table ON n.vid = $table.vid ";
        break;
      case 'type':
        $where[] = "n.type = '%s'";
        break;
      case 'language':
        $where[] = "n.language = '%s'";
        break;
    }
    $args[] = $value;
  }
  $where = count($where) ? 'WHERE ' . implode(' AND ', $where) : '';

  return array('where' => $where, 'join' => $join, 'args' => $args);
}