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
|
}
|