1 |
85ad3d82
|
Assos Assos
|
<?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 |
|
|
} |