<?php
-// $Id$
// ---------------------------------------------------------------------------
// Drupal Hooks
function views_views_tabs($op) {
switch ($op) {
case 'names':
- return array('edit', 'view', 'clone', 'export');
+ return array('edit', 'view', 'clone', 'export', 'add');
break;
}
}
if ($cache == 0) {
$views = array();
$used = array();
- $result = db_query("SELECT name, url FROM {view_view} WHERE page = 1");
+ // avoid creating empty path items by requiring an URL to be set
+ $result = db_query("SELECT name, url FROM {view_view} WHERE page = 1 AND LENGTH(url) > 0");
while ($view = db_fetch_object($result)) {
$used[$view->name] = TRUE;
foreach ($default_views as $name => $view) {
if ($view->page && !$used[$name] && ($views_status[$name] == 'enabled' || (!$view->disabled && $views_status[$name] != 'disabled'))) {
- if ($view->url{0} == '$' || strpos($view->url, '/$') !== FALSE) {
$views[$view->name] = $view->url;
- }
}
}
cache_set("views_urls", 'cache_views', serialize($views));
}
// All views with an empty access setting are available to all roles.
- if (!$view->access) {
+ if (!$view->access) {
return TRUE;
}
if ($args == NULL) {
$args = array();
}
-
+
// if no filter values are passed in, get them from the $_GET array
if ($filters == NULL) {
$filters = views_get_filter_values();
return $info;
}
- $query = db_rewrite_sql($info['query'], 'node');
-
$items = array();
- if ($query) {
+ if ($info['query']) {
+ $query = db_rewrite_sql($info['query'], 'node');
+
if ($view->use_pager) {
$cquery = db_rewrite_sql($info['countquery'], 'node', 'nid', $info['rewrite_args']);
$result = pager_query($query, $view->pager_limit, $view->use_pager - 1, $cquery, $info['args']);
*/
function _views_view_fields() {
return array(
- 'vid' => '%d',
- 'name' => "'%s'",
- 'description' => "'%s'",
- 'access' => "'%s'",
- 'page' => '%d',
- 'page_title' => "'%s'",
- 'page_header' => "'%s'",
- 'page_header_format' => '%d',
- 'page_footer' => "'%s'",
- 'page_footer_format' => '%d',
- 'page_empty' => "'%s'",
- 'page_empty_format' => '%d',
- 'page_type' => "'%s'",
- 'use_pager' => '%d',
- 'nodes_per_page' => '%d',
- 'url' => "'%s'",
- 'menu' => '%d',
- 'menu_tab' => '%d',
- 'menu_tab_default' => '%d',
- 'menu_tab_weight' => '%d',
- 'menu_title' => "'%s'",
+ 'vid' => '%d',
+ 'name' => "'%s'",
+ 'description' => "'%s'",
+ 'access' => "'%s'",
+ 'page' => '%d',
+ 'page_title' => "'%s'",
+ 'page_header' => "'%s'",
+ 'page_header_format' => '%d',
+ 'page_footer' => "'%s'",
+ 'page_footer_format' => '%d',
+ 'page_empty' => "'%s'",
+ 'page_empty_format' => '%d',
+ 'page_type' => "'%s'",
+ 'use_pager' => '%d',
+ 'nodes_per_page' => '%d',
+ 'url' => "'%s'",
+ 'menu' => '%d',
+ 'menu_tab' => '%d',
+ 'menu_tab_default' => '%d',
+ 'menu_tab_weight' => '%d',
+ 'menu_title' => "'%s'",
'menu_tab_default_parent_type' => "'%s'",
- 'menu_parent_title' => "'%s'",
- 'menu_parent_tab_weight' => '%d',
- 'block' => '%d',
- 'block_title' => "'%s'",
- 'block_use_page_header' => '%d',
- 'block_header' => "'%s'",
- 'block_header_format' => '%d',
- 'block_use_page_footer' => '%d',
- 'block_footer' => "'%s'",
- 'block_footer_format' => '%d',
- 'block_use_page_empty' => '%d',
- 'block_empty' => "'%s'",
- 'block_empty_format' => '%d',
- 'block_type' => "'%s'",
- 'nodes_per_block' => '%d',
- 'block_more' => '%d',
- 'breadcrumb_no_home' => '%d',
- 'changed' => '%d',
- 'view_args_php' => "'%s'",
+ 'menu_parent_title' => "'%s'",
+ 'menu_parent_tab_weight' => '%d',
+ 'block' => '%d',
+ 'block_title' => "'%s'",
+ 'block_use_page_header' => '%d',
+ 'block_header' => "'%s'",
+ 'block_header_format' => '%d',
+ 'block_use_page_footer' => '%d',
+ 'block_footer' => "'%s'",
+ 'block_footer_format' => '%d',
+ 'block_use_page_empty' => '%d',
+ 'block_empty' => "'%s'",
+ 'block_empty_format' => '%d',
+ 'block_type' => "'%s'",
+ 'nodes_per_block' => '%d',
+ 'block_more' => '%d',
+ 'breadcrumb_no_home' => '%d',
+ 'changed' => '%d',
+ 'view_args_php' => "'%s'",
'is_cacheable' => '%d',
);
}
$form['#action'] = url($view->real_url ? $view->real_url : $view->url, NULL, NULL, true);
$form['view'] = array('#type' => 'value', '#value' => $view);
$form['submit'] = array('#type' => 'button', '#name' => '', '#value' => t('Submit'));
-
+
// clean URL get forms breaks if we don't give it a 'q'.
if (!(bool)variable_get('clean_url', '0')) {
$form['q'] = array(
}
function _views_build_filters_form($view) {
+ // When the form is retrieved through an AJAX callback, the cache hasn't
+ // been loaded yet. The cache is necesssary for _views_get_filters().
+ views_load_cache();
+
$filters = _views_get_filters();
foreach ($view->exposed_filter as $count => $expose) {
$id = $expose['id'];
}
$form["filter$count"] = $item;
}
-
+
return $form;
}
}
function views_handler_sort_date($op, &$query, $sortinfo, $sort) {
+ $timezone = _views_get_timezone();
switch($sort['options']) {
case 'normal':
default:
$field = $sortinfo['field'];
break;
case 'minute':
- $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]), '%Y%m%%d%H%m')";
+ $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]), '%Y%m%%d%H%i')";
break;
case 'hour':
$field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]), '%Y%m%%d%H')";
break;
case 'day':
- $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]), '%Y%m%%d')";
+ $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]+$timezone), '%Y%m%%d')";
break;
case 'month':
- $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]), '%Y%m%)";
+ $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]+$timezone), '%Y%m')";
break;
case 'year':
- $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]), '%Y%')";
+ $field = "DATE_FORMAT(FROM_UNIXTIME($sortinfo[table].$sortinfo[field]+$timezone), '%Y')";
break;
}
$alias = $as = $sortinfo['table'] . '_' . $sortinfo['field'];
}
/**
+ * Custom filter for IS NULL and IS NOT NULL operations
+ * Operator must be 'IS' or 'IS NOT'
+ */
+function views_handler_filter_null($op, $filter, $filterinfo, &$query) {
+ switch($op) {
+ case 'handler':
+ $table = $filterinfo['table'];
+ $column = $filterinfo['field'];
+ $field = "$table.$column";
+ $query->ensure_table($table);
+ $operator = $filter['operator'];
+ $query->add_where("$field $operator NULL");
+ break;
+ }
+}
+
+/**
* Format a field as file size.
*/
function views_handler_field_filesize($fieldinfo, $fielddata, $value, $data) {
views_invalidate_cache();
}
}
+
+// An implementation of hook_devel_caches() from devel.module. Must be in views.module so it always is included.
+function views_devel_caches() {
+ return array('cache_views');
+}
\ No newline at end of file