You are here

function workbench_access_get_active_tree in Workbench Access 7

Load the active tree.

33 calls to workbench_access_get_active_tree()
WorkbenchAccessMenuTestCase::testWorkbenchAccessMenu in tests/workbench_access.test
WorkbenchAccessRoleTestCase::testWorkbenchAccessRoles in tests/workbench_access.test
WorkbenchAccessTaxonomyTestCase::testWorkbenchAccessTaxonomy in tests/workbench_access.test
WorkbenchAccessTestCase::assertWorkbenchScheme in tests/workbench_access.test
Any tests that can be abstracted should go here in a new method.
workbench_access_active_options in ./workbench_access.module
Build an array of form options for the currently active workbench access tree.

... See full list

1 string reference to 'workbench_access_get_active_tree'
workbench_access_reset_tree in ./workbench_access.module
Reset tree data stored in statics.

File

./workbench_access.module, line 550
Workbench Access module file.

Code

function workbench_access_get_active_tree() {
  $scheme = variable_get('workbench_access');
  if (!$scheme) {
    return FALSE;
  }
  workbench_access_load_include($scheme);
  $access_tree =& drupal_static(__FUNCTION__);
  if (!isset($access_tree)) {

    // Now check the cache.
    $cache = cache_get('workbench_access_tree', 'cache_bootstrap');
    if (isset($cache->data)) {
      $access_tree = $cache->data;
    }
    if (isset($access_tree['access_scheme'])) {
      return $access_tree;
    }

    // Retrieve and cache data.
    $func = $scheme . '_workbench_access_info';
    $info = $func();
    $data = $info[$scheme];
    $stored = workbench_access_get_ids_by_scheme($data);
    $tree = workbench_access_tree($data);
    workbench_access_build_tree($tree);

    // Ensure that we have no orphaned ids.
    $active = array();
    foreach ($stored as $access_id => $access_scheme) {
      if (isset($tree[$access_id])) {
        $active[$access_id] = $access_scheme;
      }
    }
    $access_tree = array(
      'access_scheme' => $data,
      'tree' => $tree,
      'active' => $active,
    );
    cache_set('workbench_access_tree', $access_tree, 'cache_bootstrap');
  }
  return $access_tree;
}