class panels_cache_object in Panels 6.3
Same name and namespace in other branches
- 5.2 includes/plugins.inc \panels_cache_object
- 6.2 includes/plugins.inc \panels_cache_object
- 7.3 includes/plugins.inc \panels_cache_object
An object to hold caching information while it is happening.
Hierarchy
- class \panels_cache_object
Expanded class hierarchy of panels_cache_object
File
- includes/
plugins.inc, line 115 - Contains helper code for plugins and contexts.
View source
class panels_cache_object {
var $content = '';
var $head = NULL;
var $css = NULL;
var $js = NULL;
var $tokens = NULL;
var $ready = FALSE;
/**
* When constructed, take a snapshot of our existing out of band data.
*/
function panels_cache_object() {
$this->head = drupal_set_html_head();
$this->css = drupal_add_css();
$this->tokens = ctools_set_page_token();
foreach (array(
'header',
'footer',
) as $scope) {
$this->js[$scope] = drupal_add_js(NULL, NULL, $scope);
}
}
/**
* Add content to the cache. This assumes a pure stream;
* use set_content() if it's something else.
*/
function add_content($content) {
$this->content .= $content;
}
function set_content($content) {
$this->content = $content;
}
/**
* Set the object for storing. This overwrites.
*/
function cache() {
if ($this->ready) {
return;
}
$this->ready = TRUE;
// Simple replacement for head
$this->head = str_replace($this->head, '', drupal_set_html_head());
// Slightly less simple for CSS:
$css = drupal_add_css();
$start = $this->css;
$this->css = array();
foreach ($css as $media => $medias) {
foreach ($medias as $type => $types) {
foreach ($types as $path => $preprocess) {
if (!isset($start[$media][$type][$path])) {
$this->css[] = array(
$path,
$type,
$media,
$preprocess,
);
}
}
}
}
$js = array();
// A little less simple for js
foreach (array(
'header',
'footer',
) as $scope) {
$js[$scope] = drupal_add_js(NULL, NULL, $scope);
}
$start = $this->js;
$this->js = array();
foreach ($js as $scope => $scopes) {
foreach ($scopes as $type => $types) {
foreach ($types as $id => $info) {
if (!isset($start[$scope][$type][$id])) {
switch ($type) {
case 'setting':
$this->js[] = array(
$info,
$type,
$scope,
);
break;
case 'inline':
$this->js[] = array(
$info['code'],
$type,
$scope,
$info['defer'],
);
break;
default:
$this->js[] = array(
$id,
$type,
$scope,
$info['defer'],
$info['cache'],
);
}
}
}
}
}
// And for tokens:
$tokens = ctools_set_page_token();
foreach ($this->tokens as $token => $argument) {
if (isset($tokens[$token])) {
unset($tokens);
}
}
$this->tokens = $tokens;
}
/**
* Restore out of band data saved to cache.
*/
function restore() {
if (!empty($this->head)) {
drupal_set_html_head($this->head);
}
if (!empty($this->css)) {
foreach ($this->css as $args) {
call_user_func_array('drupal_add_css', $args);
}
}
if (!empty($this->js)) {
foreach ($this->js as $args) {
call_user_func_array('drupal_add_js', $args);
}
}
if (!empty($this->tokens)) {
foreach ($this->tokens as $token => $key) {
list($type, $argument) = $key;
ctools_set_page_token($token, $type, $argument);
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
panels_cache_object:: |
property | |||
panels_cache_object:: |
property | |||
panels_cache_object:: |
property | |||
panels_cache_object:: |
property | |||
panels_cache_object:: |
property | |||
panels_cache_object:: |
property | |||
panels_cache_object:: |
function | Add content to the cache. This assumes a pure stream; use set_content() if it's something else. | ||
panels_cache_object:: |
function | Set the object for storing. This overwrites. | ||
panels_cache_object:: |
function | When constructed, take a snapshot of our existing out of band data. | ||
panels_cache_object:: |
function | Restore out of band data saved to cache. | ||
panels_cache_object:: |
function |