Bachir Soussi Chiadmi 1bc61b12ad first import
2015-04-08 11:40:19 +02:00

272 lines
7.8 KiB
PHP

<?php
/**
* @file nodequeue.views.inc
* Provides support for the Views module.
*
* This implementation is almost entirely based around a relationship
* which is stapled to the 'node' table via hook_views_data_alter.
*
* The relationship allows you to define 0 or more queues that join the
* queue tables, limiting the join to just the queues selected. Once
* the queues are joined in, the queue fields will show up, and they
* have the usual array of arguments, sorts, fields and filters; since
* the real legwork is done by the relationship, most of these are
* really quite simple.
*/
/**
* Implements hook_views_data().
*/
function nodequeue_views_data() {
$data = array();
// ----------------------------------------------------------------
// nodequeue_nodes table
$data['nodequeue_nodes']['table']['group'] = t('Nodequeue');
// The nodequeue_nodes table is how nodequeue connects to the
// rest of the world, but we will only join it in via relationship.
// position
$data['nodequeue_nodes']['position'] = array(
'title' => t('Position'),
'help' => t('The position of the node within a queue.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_numeric',
),
'argument' => array(
'handler' => 'views_handler_argument_numeric',
),
);
// timestamp
$data['nodequeue_nodes']['timestamp'] = array(
'title' => t('Added date'),
'help' => t('The date the node was added to a queue.'),
'field' => array(
'handler' => 'views_handler_field_date',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort_date',
),
'filter' => array(
'handler' => 'views_handler_filter_date',
),
);
$data['nodequeue_nodes']['qid'] = array(
'title' => t('Queue ID'),
'help' => t('The ID of the queue the node belongs to.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'argument' => array(
'handler' => 'views_handler_argument_numeric',
'name field' => 'title',
'name table' => 'nodequeue_queue',
'empty field name' => t('No queue'),
),
);
$data['nodequeue_nodes']['sqid'] = array(
'title' => t('Subqueue ID'),
'help' => t('The ID of the subqueue the node belongs to.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'argument' => array(
'handler' => 'views_handler_argument_numeric',
'name field' => 'title',
'name table' => 'nodequeue_subqueue',
'empty field name' => t('No queue'),
),
);
// specialized is null/is not null filter
$data['nodequeue_nodes']['in_queue'] = array(
'title' => t('In queue'),
'help' => t('Filter to ensure a node IS or IS NOT in the related queue'),
'filter' => array(
'handler' => 'nodequeue_handler_filter_in_queue',
'label' => t('In queue'),
),
);
$data['nodequeue_queue']['name'] = array(
'title' => t('Queue machine name'),
'help' => t('The machine name of the queue.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
// ----------------------------------------------------------------
// nodequeue_queue table
$data['nodequeue_queue']['table']['group'] = t('Nodequeue');
// For use with the relationship.
$data['nodequeue_queue']['table']['join'] = array(
'nodequeue_nodes' => array(
'left_field' => 'qid',
'field' => 'qid',
),
);
$data['nodequeue_queue']['title'] = array(
'title' => t('Queue title'),
'help' => t('The title of the nodequeue.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
// ----------------------------------------------------------------
// nodequeue_subqueue table
$data['nodequeue_subqueue']['table']['group'] = t('Nodequeue');
// For use with the relationship.
$data['nodequeue_subqueue']['table']['join'] = array(
'nodequeue_nodes' => array(
'left_field' => 'sqid',
'field' => 'sqid',
),
);
$data['nodequeue_subqueue']['title'] = array(
'title' => t('Subqueue title'),
'help' => t('The title of the subqueue.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
$data['nodequeue_subqueue']['reference'] = array(
'title' => t('Subqueue reference'),
'help' => t('The reference that defines a subqueue; what this actually is depends upon the type of subqueue, but is a taxonomy tid for smartqueue taxonomy, or a uid for authorview.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
return $data;
}
/**
* Implements hook_views_data_alter().
*/
function nodequeue_views_data_alter(&$data) {
// queue relationship
$data['node']['nodequeue_rel'] = array(
'group' => t('Nodequeue'),
'title' => t('Queue'),
'help' => t('Create a relationship to a nodequeue.'),
'real field' => 'nid',
'relationship' => array(
'handler' => 'nodequeue_handler_relationship_nodequeue',
'base' => 'nodequeue_nodes',
'field' => 'nid',
'label' => t('queue'),
),
);
// links
$data['node']['nodequeue_links'] = array(
'group' => t('Nodequeue'),
'title' => t('Add/remove links'),
'help' => t('Display add/remove links for all eligible nodequeues. Note that this performs a node_load so could add many extra queries to a view.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_links',
),
);
$data['node']['nodequeue_queue_tab'] = array(
'group' => t('Nodequeue'),
'title' => t('Link to tab'),
'help' => t('Display add/remove links for all eligible nodequeues. Note that this performs a node_load so could add many extra queries to a view.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_queue_tab',
),
);
// all queues
$data['node']['nodequeue_all_queues'] = array(
'group' => t('Nodequeue'),
'title' => t('All queues'),
'help' => t('Display all queues a node is a member of.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_all_queues',
),
);
// all subqueues
$data['node']['nodequeue_all_subqueues'] = array(
'group' => t('Nodequeue'),
'title' => t('All subqueues'),
'help' => t('Display all subqueues a node is a member of.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_all_subqueues',
),
);
}