Projet

Général

Profil

Paste
Télécharger (2,07 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / ctools / page_manager / plugins / cache / page_manager_context.inc @ c304a780

1
<?php
2

    
3
/**
4
 * @file
5
 * A page_manager cache indirection mechanism that just attaches context
6
 * caching to the larger page cache.
7
 */
8

    
9
$plugin = array(
10
  // Cache plugins are the rare plugin types that have no real UI but
11
  // we're providing a title just in case.
12
  'title' => t('Page manager context'),
13
  'cache get' => 'page_manager_cache_page_manager_context_cache_get',
14
  'cache set' => 'page_manager_cache_page_manager_context_cache_set',
15
  'cache finalize' => 'page_manager_cache_page_manager_context_cache_finalize',
16

    
17
  // We don't support a clear because the general uses of clear have no effect
18
  // on us.
19
);
20

    
21
function page_manager_cache_page_manager_context_cache_get($data, $key) {
22
  $page = page_manager_get_page_cache($data);
23
  if ($page) {
24
    if (!empty($page->context_cache[$key])) {
25
      return $page->context_cache[$key];
26
    }
27
    else {
28
      ctools_include('context-task-handler');
29
      if ($key == 'temp') {
30
        $handler = $page->new_handler;
31
      }
32
      else {
33
        $handler = $page->handlers[$key];
34
      }
35
      return ctools_context_handler_get_task_object($page->task, $page->subtask, $handler);
36
    }
37
  }
38
}
39

    
40
function page_manager_cache_page_manager_context_cache_set($data, $key, $object) {
41
  $page = page_manager_get_page_cache($data);
42
  if ($page) {
43
    $page->context_cache[$key] = $object;
44
    return page_manager_set_page_cache($page);
45
  }
46
}
47

    
48
/**
49
 * Copy temporary data from the page manager cache.
50
 */
51
function page_manager_cache_page_manager_context_cache_finalize($data, $key, $object) {
52
  // Statically cached so there shouldn't be any worries. It's an object so
53
  // referencing ensures that we'll get the right one.
54
  $page = page_manager_get_page_cache($data);
55
  if ($page) {
56
    if ($key == 'temp') {
57
      $handler = $page->new_handler;
58
    }
59
    else {
60
      $handler = $page->handlers[$key];
61
    }
62
    $handler->conf['contexts'] = $object->contexts;
63
    $handler->conf['relationships'] = $object->relationships;
64

    
65
    if (isset($page->context_cache[$key])) {
66
      unset($page->context_cache[$key]);
67
    }
68
    return page_manager_set_page_cache($page);
69
  }
70
}