You are here

function panelizer_context_cache_get in Panelizer 7.3

Same name and namespace in other branches
  1. 6 panelizer.module \panelizer_context_cache_get()
  2. 7 panelizer.module \panelizer_context_cache_get()
  3. 7.2 panelizer.module \panelizer_context_cache_get()

Fetch the panelizer object from the object cache.

CTools clumsy context editing system requires caching. This lets us do it reasonably.

Parameters

$entity_type: Can be something like 'node' or 'user' or 'default'.

$key: Depends on the $entity_type. Can be a nid, a uid or a default key.

2 calls to panelizer_context_cache_get()
PanelizerEntityDefault::page_context in plugins/entity/PanelizerEntityDefault.class.php
panelizer_default_context_page in includes/admin.inc
Page to configure what content is available for a given node type.
1 string reference to 'panelizer_context_cache_get'
panelizer_context.inc in plugins/cache/panelizer_context.inc

File

./panelizer.module, line 1201
The Panelizer module attaches panels to entities, providing default panels and allowing each panel to be configured independently by privileged users.

Code

function panelizer_context_cache_get($entity_type, $key) {
  ctools_include('object-cache');
  $cache = ctools_object_cache_get('panelizer_context_cache', $entity_type . ':' . $key);
  if (!empty($cache)) {
    $cache->cached = TRUE;
    return $cache;
  }
  if ($entity_type == 'default') {
    list($entity_type, $bundle, $name) = @explode(':', $key, 3);
    $get_default = TRUE;
  }
  if ($handler = panelizer_entity_plugin_get_handler($entity_type)) {
    if (!empty($get_default)) {
      $panelizer = $handler
        ->get_default_panelizer_object($bundle, $name);
      $panelizer->base_contexts = $handler
        ->get_base_contexts();
      return $panelizer;
    }
    else {
      list($entity_id, $view_mode) = explode('.', $key);
      $entities = entity_load($entity_type, array(
        $entity_id,
      ));
      if (!empty($entities[$entity_id]) && !empty($entities[$entity_id]->panelizer[$view_mode])) {
        $panelizer = $entities[$entity_id]->panelizer[$view_mode];
        $panelizer->base_contexts = $handler
          ->get_base_contexts($entities[$entity_id]);
        return $panelizer;
      }
    }
  }
}