diff options
Diffstat (limited to 'sites/all/modules/views/plugins/views_plugin_access_perm.inc')
-rw-r--r-- | sites/all/modules/views/plugins/views_plugin_access_perm.inc | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/sites/all/modules/views/plugins/views_plugin_access_perm.inc b/sites/all/modules/views/plugins/views_plugin_access_perm.inc new file mode 100644 index 000000000..7279d7db7 --- /dev/null +++ b/sites/all/modules/views/plugins/views_plugin_access_perm.inc @@ -0,0 +1,62 @@ +<?php + +/** + * @file + * Definition of views_plugin_access_perm. + */ + +/** + * Access plugin that provides permission-based access control. + * + * @ingroup views_access_plugins + */ +class views_plugin_access_perm extends views_plugin_access { + function access($account) { + return views_check_perm($this->options['perm'], $account); + } + + function get_access_callback() { + return array('views_check_perm', array($this->options['perm'])); + } + + function summary_title() { + $permissions = module_invoke_all('permission'); + if (isset($permissions[$this->options['perm']])) { + return $permissions[$this->options['perm']]['title']; + } + + return t($this->options['perm']); + } + + + function option_definition() { + $options = parent::option_definition(); + $options['perm'] = array('default' => 'access content'); + + return $options; + } + + function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + $perms = array(); + $module_info = system_get_info('module'); + + // Get list of permissions + foreach (module_implements('permission') as $module) { + $permissions = module_invoke($module, 'permission'); + foreach ($permissions as $name => $perm) { + $perms[$module_info[$module]['name']][$name] = strip_tags($perm['title']); + } + } + + ksort($perms); + + $form['perm'] = array( + '#type' => 'select', + '#options' => $perms, + '#title' => t('Permission'), + '#default_value' => $this->options['perm'], + '#description' => t('Only users with the selected permission flag will be able to access this display. Note that users with "access all views" can see any view, regardless of other permissions.'), + ); + } +} |