field)) { $title = array ( 'vid' => $view->vid, 'tablename' => 'node', 'field' => 'title', 'label' => NULL, 'handler' => 'views_handler_field_nodelink', 'sortable' => 0, 'defaultsort' => 0, 'options' => 'link', 'position' => 0, 'fullname' => 'node.title', 'id' => 'node.title', 'queryname' => 'node_title', ); $view->field[] = $title; } } function _viewselector_filters_form($view) { $filters = _views_get_filters(); foreach ($view->exposed_filter as $count => $expose) { //dprint_r($count); //dprint_r($expose); $id = $expose['id']; $filterinfo = $filters[$id]; foreach ($view->filter as $filter) { if ($filter['id'] == $id) { break; } } // set up the operator widget. if (!$expose['operator']) { // 'operator' is either an array or a handler $operator = $filterinfo['operator']; if (!is_array($operator) && function_exists($filterinfo['operator'])) { $operator = $filterinfo['operator']('operator', $filterinfo); } $form["op$count"] = array( '#type' => 'select', '#default_value' => $filter['operator'], '#options' => $operator, '#title' => $expose['label'], ); } // set up the filter widget. $item = $filterinfo['value']; if (!is_array($item['#options']) && function_exists($item['#options'])) { $item['#options'] = $item['#options']('value', $filterinfo); } if (!$expose['optional'] || $expose['is_default']) { $item['#default_value'] = $filter['value']; } if ($expose['single']) { unset($item['#multiple']); } if ($expose['optional'] && is_array($item['#options'])) { $item['#options'] = array('**ALL**' => t('')) + $item['#options']; } if ($item['#multiple'] && is_array($item['#options'])) { $item['#size'] = min(count($item['#options']), 8); } $form["filter$count"] = $item; } return $form; } function _viewselector_edit_filters(&$view, $form_values) { //dprint_r("In edit filters"); //dprint_r($view); //dprint_r($form_values); foreach($form_values as $key => $value) { if (strpos($key, 'op') === 0) { // key starts with op $op_num = substr($key, 2); $view->filter[$op_num]['operator'] = $value; } else if (strpos($key, 'filter') === 0) { // key starts with filter $filter_num = substr($key, 6); if ($value == '**ALL**' || (is_array($value) && in_array('**ALL**', $value))) { unset($view->filter[$filter_num]); // this filter is not used if "all" is selected } $view->filter[$filter_num]['value'] = $value; } } } function _viewselector_add_selection_column(&$view, $extras = NULL) { $select_field = array ( 'vid' => $view->vid, 'tablename' => 'selector', 'field' => 'select', 'label' => t('Select'), 'handler' => '', 'sortable' => 0, 'defaultsort' => 0, 'options' => '', 'position' => 0, 'fullname' => 'selector.select', 'id' => 'selector.select', 'queryname' => 'selector_select', ); if (!is_array($extras)) { $extras = array(); } foreach($extras as $property => $value) { $select_field[$property] = $value; } array_unshift($view->field, $select_field); } function _viewselector_build_view_from_element($element, $mode = 'embed', $view = NULL) { if (is_null($view)) { $view = $element['#view']; } return views_build_view( $mode, $view, $element['#arguments'], FALSE, // we do not want the built in pager $view->nodes_per_page, // use the default paging setting $element['#page']); } function _viewselector_get_page_data($view, $args = NULL) { $queries = views_build_view('queries', $view, $args); if (empty($queries)) { return array ('count' => 0, 'pages' => 0); } // rewrite the query appropriately $cquery = db_rewrite_sql($queries['countquery'], 'node', 'nid'); $count = db_result(db_query($cquery, $queries['args'])); if ($view->nodes_per_page) { $pages = ceil($count / $view->nodes_per_page); } else { $pages = 1; } return array ( 'count' => $count, 'pages' => $pages, ); }