function cache_actions_rules_cache_get_id in Cache Actions 7
Same name and namespace in other branches
- 6.2 plugins/cache/rules.inc \cache_actions_rules_cache_get_id()
- 7.2 plugins/cache/rules.inc \cache_actions_rules_cache_get_id()
Figure out an id for our cache based upon input and settings.
2 calls to cache_actions_rules_cache_get_id()
- cache_actions_rules_cache_get_cache in plugins/cache/ rules.inc 
- Get cached content.
- cache_actions_rules_cache_set_cache in plugins/cache/ rules.inc 
- Set cached content.
File
- plugins/cache/ rules.inc, line 79 
- Provides a simple time-based caching option for panel panes.
Code
function cache_actions_rules_cache_get_id($conf, $display, $args, $contexts, $pane) {
  $id = 'rc';
  // Add some text if this is a pane, so that we don't clear all panes when
  // we clear a panel pane.
  if ($pane) {
    $id .= ':p';
  }
  if (is_numeric($display->did) && $display->did) {
    $id .= ':' . $display->did;
  }
  else {
    // Add the cache key if this is an in-code display.
    $id .= ':' . $conf['cache_key'];
  }
  // If this is a mini panel then we have the owner property. Let's
  // use the machine name for those.
  if (isset($display->owner->name)) {
    $id .= ':' . $display->owner->name;
  }
  if ($pane) {
    $id .= ':' . $pane->pid;
  }
  if (user_access('view pane admin links')) {
    $id .= ':adm';
  }
  switch ($conf['granularity']) {
    case 'args':
      foreach ($args as $arg) {
        // Arguments can be many things, but we only consider the ones that are string values.
        if (is_string($arg)) {
          $id .= ':' . $arg;
        }
      }
      break;
    case 'context':
      if (!is_array($contexts)) {
        $contexts = array(
          $contexts,
        );
      }
      foreach ($contexts as $context) {
        if (isset($context->argument)) {
          $id .= ':' . $context->argument;
        }
      }
  }
  // Add cache for individual language.
  if ($conf['language']) {
    global $language;
    $id .= ':' . $language->language;
  }
  $cache->conf = $conf;
  $cache->display = $display;
  $cache->args = $args;
  $cache->contexts = $contexts;
  $cache->pane = $pane;
  $cache->key = $id;
  // Let other modules alter the cache key.
  drupal_alter('cache_actions_panels_cache_key', $cache);
  return $cache->key;
}