views_access_callback.module in Views Access Callback 6
File
views_access_callback.module
View source
<?php
function views_access_callback_views_plugins() {
return array(
'access' => array(
'parent' => array(
'no ui' => TRUE,
'handler' => 'views_plugin_access',
'parent' => '',
),
'views_access_callback' => array(
'title' => t('Callback function'),
'help' => t('Access will be granted to users based on result returned by callback function.'),
'handler' => 'views_access_callback_plugin_access_callback',
'uses options' => TRUE,
'path' => drupal_get_path('module', 'views_access_callback'),
),
),
);
}
function views_access_callback_access_callback($view_name, $display_id, $access_callback) {
global $user;
$view = views_get_view($view_name);
$view
->set_display($display_id);
$view
->init_handlers();
$i = 0;
foreach (explode('/', $view->display_handler
->get_option('path')) as $element) {
if ($element == '%') {
$view->args[] = arg($i);
}
$i++;
}
$num_arguments = count($view->argument);
while (count($view->args) < $num_arguments) {
$view->args[] = arg($i);
$i++;
}
$result = FALSE;
if (function_exists($access_callback)) {
$result = call_user_func_array($access_callback, $view->args);
}
return $result;
}