views_extra_handlers.module in Extra Views Handlers 7
Provides a generic but powerful API for web services.
File
views_extra_handlers.moduleView source
<?php
// $Id$
define('EXTRA_VIEWS_PATH', drupal_get_path('module', 'views_extra_handlers') . '/views');
/**
* @file
* Provides a generic but powerful API for web services.
*/
/**
* Implementation of hook_views_api().
*/
function views_extra_handlers_views_api() {
return array(
'api' => 2.0,
'path' => EXTRA_VIEWS_PATH,
);
}
/**
* @see hook_action_info()
*/
function views_extra_handlers_action_info() {
return array(
'views_extra_handlers_node_revision_publish_status_action' => array(
'type' => 'node',
'label' => t('Revision: Publish Revision.'),
'configurable' => FALSE,
'triggers' => array(
'any',
),
),
'views_extra_handlers_node_revision_unpublish_status_action' => array(
'type' => 'node',
'label' => t('Revision: UnPublish Revision.'),
'configurable' => FALSE,
'triggers' => array(
'any',
),
),
);
}
function views_extra_handlers_node_revision_publish_status_action($node, $context) {
$this_vid = $node->vid;
db_update('node_revision')
->fields(array(
'status' => 1,
))
->condition('vid', $this_vid, '=')
->execute();
}
function views_extra_handlers_node_revision_unpublish_status_action($node, $context) {
$this_vid = $node->vid;
db_update('node_revision')
->fields(array(
'status' => 0,
))
->condition('vid', $this_vid, '=')
->execute();
}
function views_extra_handlers_query_alter($query) {
$view = views_get_current_view();
if (isset($view->field) && !empty($view->field)) {
foreach ($view->field as $field_name => $field_obj) {
$handler = $field_obj->definition['handler'];
if ($handler == "views_extra_handlers_handler_field_query_alter") {
$groupby_remove_arr = explode(",", $field_obj->options['veh_groupby']['veh_remove']);
$groupby_add_arr = explode(",", $field_obj->options['veh_groupby']['veh_add']);
if (isset($query->alterMetaData)) {
if (isset($query->alterMetaData['view'])) {
//Get a list of all 'group by' in the query
$fields =& $query
->getGroupBy();
if (!empty($field_obj->options['veh_groupby']['veh_remove'])) {
foreach ($groupby_remove_arr as $groupby_remove) {
unset($fields[trim($groupby_remove)]);
}
}
if (!empty($field_obj->options['veh_groupby']['veh_add'])) {
foreach ($groupby_add_arr as $groupby_add) {
$query
->groupBy($groupby_add);
}
}
if (!empty($field_obj->options['veh_orderby']['veh_orderby_date'])) {
$date_field_alias = $field_obj->options['veh_orderby']['veh_orderby_date'];
$sort_order =& $query
->getOrderBy();
unset($sort_order[$date_field_alias]);
$sort_order["(CASE WHEN {$date_field_alias} < CURRENT_TIMESTAMP\n THEN 1\n ELSE 0\n END)"] = 'ASC';
$sort_order["(CASE WHEN {$date_field_alias} < CURRENT_TIMESTAMP THEN {$date_field_alias} END)"] = 'DESC';
$sort_order["(CASE WHEN {$date_field_alias} >= CURRENT_TIMESTAMP THEN {$date_field_alias} END)"] = 'ASC';
}
if (!empty($field_obj->options['veh_orderby']['veh_orderby_custom'])) {
$custom_orderby = $field_obj->options['veh_orderby']['veh_orderby_custom'];
$custom_orderby_direction = $field_obj->options['veh_orderby']['veh_orderby_direction'];
$sort_order_custom =& $query
->getOrderBy();
$sort_order_custom[$custom_orderby] = $custom_orderby_direction;
}
}
}
}
}
}
}
/**
* Implements hook_views_pre_execute().
*/
function views_extra_handlers_views_pre_execute(view &$view) {
if (isset($view->field) && !empty($view->field)) {
foreach ($view->field as $field_name => $field_obj) {
$handler = $field_obj->definition['handler'];
if ($handler == "views_extra_handlers_handler_field_query_alter") {
if (!empty($field_obj->options['veh_union']['veh_union_view_name'])) {
$query1 =& $view->build_info['query'];
$union_view_id = $field_obj->options['veh_union']['veh_union_view_name'];
$union_view_display_id = $field_obj->options['veh_union']['veh_union_view_display'];
$view2 = views_get_view($union_view_id);
$view2->veh_union_query = TRUE;
$view2
->set_display($union_view_display_id);
if (!empty($field_obj->options['veh_union']['veh_union_use_args'])) {
// Set the same arguments.
$view2
->set_arguments($view->args);
}
// Remove any pager.
$pager = array(
'type' => 'none',
'options' => array(),
);
$view2->display_handler
->set_option('pager', $pager);
$view2
->pre_execute();
$view2
->execute();
if ($query2 = $view2->build_info['query']) {
// Remove any order by.
$order_by =& $query2
->getOrderBy();
$order_by = array();
// Matrimony.
$union_type = isset($field_obj->options['veh_union']['veh_union_type']) ? $field_obj->options['veh_union']['veh_union_type'] : 'UNION ALL';
$query1 = $query2
->union($query1, $union_type);
}
}
}
}
}
}
function veh_startsWith($haystack, $needle) {
return $needle === "" || strpos($haystack, $needle) === 0;
}
function veh_endsWith($haystack, $needle) {
return $needle === "" || substr($haystack, -strlen($needle)) === $needle;
}
Functions
Constants
Name![]() |
Description |
---|---|
EXTRA_VIEWS_PATH |