annotate sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Plugin to provide access control based on user rulesetission strings.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Plugins are described by creating a $plugin array which will be used
danielebarchiesi@0 10 * by the system that includes this file.
danielebarchiesi@0 11 */
danielebarchiesi@0 12 $plugin = array(
danielebarchiesi@0 13 'title' => '',
danielebarchiesi@0 14 'description' => '',
danielebarchiesi@0 15 'callback' => 'ctools_ruleset_ctools_access_check',
danielebarchiesi@0 16 'settings form' => 'ctools_ruleset_ctools_access_settings',
danielebarchiesi@0 17 'summary' => 'ctools_ruleset_ctools_access_summary',
danielebarchiesi@0 18
danielebarchiesi@0 19 // This access plugin actually just contains child plugins that are
danielebarchiesi@0 20 // exportable, UI configured rulesets.
danielebarchiesi@0 21 'get child' => 'ctools_ruleset_ctools_access_get_child',
danielebarchiesi@0 22 'get children' => 'ctools_ruleset_ctools_access_get_children',
danielebarchiesi@0 23 );
danielebarchiesi@0 24
danielebarchiesi@0 25 /**
danielebarchiesi@0 26 * Merge the main access plugin with a loaded ruleset to form a child plugin.
danielebarchiesi@0 27 */
danielebarchiesi@0 28 function ctools_ruleset_ctools_access_merge_plugin($plugin, $parent, $item) {
danielebarchiesi@0 29 $plugin['name'] = $parent . ':' . $item->name;
danielebarchiesi@0 30 $plugin['title'] = check_plain($item->admin_title);
danielebarchiesi@0 31 $plugin['description'] = check_plain($item->admin_description);
danielebarchiesi@0 32
danielebarchiesi@0 33 // TODO: Generalize this in CTools.
danielebarchiesi@0 34 if (!empty($item->requiredcontexts)) {
danielebarchiesi@0 35 $plugin['required context'] = array();
danielebarchiesi@0 36 foreach ($item->requiredcontexts as $context) {
danielebarchiesi@0 37 $info = ctools_get_context($context['name']);
danielebarchiesi@0 38 // TODO: allow an optional setting
danielebarchiesi@0 39 $plugin['required context'][] = new ctools_context_required($context['identifier'], $info['context name']);
danielebarchiesi@0 40 }
danielebarchiesi@0 41 }
danielebarchiesi@0 42
danielebarchiesi@0 43 // Store the loaded ruleset in the plugin.
danielebarchiesi@0 44 $plugin['ruleset'] = $item;
danielebarchiesi@0 45 return $plugin;
danielebarchiesi@0 46 }
danielebarchiesi@0 47
danielebarchiesi@0 48 /**
danielebarchiesi@0 49 * Get a single child access plugin.
danielebarchiesi@0 50 */
danielebarchiesi@0 51 function ctools_ruleset_ctools_access_get_child($plugin, $parent, $child) {
danielebarchiesi@0 52 ctools_include('export');
danielebarchiesi@0 53 $item = ctools_export_crud_load('ctools_access_ruleset', $child);
danielebarchiesi@0 54 if ($item) {
danielebarchiesi@0 55 return ctools_ruleset_ctools_access_merge_plugin($plugin, $parent, $item);
danielebarchiesi@0 56 }
danielebarchiesi@0 57 }
danielebarchiesi@0 58
danielebarchiesi@0 59 /**
danielebarchiesi@0 60 * Get all child access plugins.
danielebarchiesi@0 61 */
danielebarchiesi@0 62 function ctools_ruleset_ctools_access_get_children($plugin, $parent) {
danielebarchiesi@0 63 $plugins = array();
danielebarchiesi@0 64 ctools_include('export');
danielebarchiesi@0 65 $items = ctools_export_crud_load_all('ctools_access_ruleset');
danielebarchiesi@0 66 foreach ($items as $name => $item) {
danielebarchiesi@0 67 $child = ctools_ruleset_ctools_access_merge_plugin($plugin, $parent, $item);
danielebarchiesi@0 68 $plugins[$child['name']] = $child;
danielebarchiesi@0 69 }
danielebarchiesi@0 70
danielebarchiesi@0 71 return $plugins;
danielebarchiesi@0 72 }
danielebarchiesi@0 73
danielebarchiesi@0 74 /**
danielebarchiesi@0 75 * Settings form for the 'by ruleset' access plugin
danielebarchiesi@0 76 */
danielebarchiesi@0 77 function ctools_ruleset_ctools_access_settings(&$form, &$form_state, $conf) {
danielebarchiesi@0 78 if (!empty($form_state['plugin']['ruleset']->admin_description)) {
danielebarchiesi@0 79 $form['markup'] = array(
danielebarchiesi@0 80 '#markup' => '<div class="description">' . check_plain($form_state['plugin']['ruleset']->admin_description) . '</div>',
danielebarchiesi@0 81 );
danielebarchiesi@0 82 }
danielebarchiesi@0 83
danielebarchiesi@0 84 return $form;
danielebarchiesi@0 85 }
danielebarchiesi@0 86
danielebarchiesi@0 87 /**
danielebarchiesi@0 88 * Check for access.
danielebarchiesi@0 89 */
danielebarchiesi@0 90 function ctools_ruleset_ctools_access_check($conf, $context, $plugin) {
danielebarchiesi@0 91 // Load up any contexts we might be using.
danielebarchiesi@0 92 $contexts = ctools_context_match_required_contexts($plugin['ruleset']->requiredcontexts, $context);
danielebarchiesi@0 93 $contexts = ctools_context_load_contexts($plugin['ruleset'], FALSE, $contexts);
danielebarchiesi@0 94
danielebarchiesi@0 95 return ctools_access($plugin['ruleset']->access, $contexts);
danielebarchiesi@0 96 }
danielebarchiesi@0 97
danielebarchiesi@0 98 /**
danielebarchiesi@0 99 * Provide a summary description based upon the checked roles.
danielebarchiesi@0 100 */
danielebarchiesi@0 101 function ctools_ruleset_ctools_access_summary($conf, $context, $plugin) {
danielebarchiesi@0 102 if (!empty($plugin['ruleset']->admin_description)) {
danielebarchiesi@0 103 return check_plain($plugin['ruleset']->admin_description);
danielebarchiesi@0 104 }
danielebarchiesi@0 105 else {
danielebarchiesi@0 106 return check_plain($plugin['ruleset']->admin_title);
danielebarchiesi@0 107 }
danielebarchiesi@0 108 }
danielebarchiesi@0 109