public function views_php_plugin_cache::cache_get in Views PHP 7
Same name and namespace in other branches
- 6 plugins/views/views_php_plugin_cache.inc \views_php_plugin_cache::cache_get()
- 7.2 plugins/views/views_php_plugin_cache.inc \views_php_plugin_cache::cache_get()
Implements views_plugin_cache#cache_get()
Overrides views_plugin_cache::cache_get
File
- plugins/
views/ views_php_plugin_cache.inc, line 56
Class
- views_php_plugin_cache
- Caching plugin that provides cache control based on custom PHP code.
Code
public function cache_get($type) {
// $cutoff = $this->cache_expire($type);
switch ($type) {
case 'query':
// Not supported currently, but this is certainly where we'd put it.
return FALSE;
case 'results':
$cache = cache_get($this
->get_results_key(), $this->table);
$fresh = !empty($cache);
if ($fresh && !empty($this->options['php_cache_results'])) {
$code = $this->options['php_cache_results'] . ';';
$function = function ($view, $plugin, $cache) use ($code) {
eval($code);
};
ob_start();
$fresh = $function($this->view, $this, $cache);
ob_end_clean();
}
// Values to set: $view->result, $view->total_rows, $view->execute_time,
// $view->current_page.
if ($fresh) {
// @code
// if (!$cutoff || $cache->created > $cutoff) {
// @endcode
$this->view->result = $cache->data['result'];
$this->view->total_rows = $cache->data['total_rows'];
$this->view->set_current_page = $cache->data['current_page'];
$this->view->execute_time = 0;
return TRUE;
// }
}
return FALSE;
case 'output':
$cache = cache_get($this
->get_output_key(), $this->table);
$fresh = !empty($cache);
if ($fresh && !empty($this->options['php_cache_output'])) {
$code = $this->options['php_cache_output'] . ';';
$function = function ($view, $plugin, $cache) use ($code) {
eval($code);
};
ob_start();
$fresh = $function($this->view, $this, $cache);
ob_end_clean();
}
if ($fresh) {
// @code
// if (!$cutoff || $cache->created > $cutoff) {
// @endcode
$this->storage = $cache->data;
$this->view->display_handler->output = $cache->data['output'];
$this
->restore_headers();
return TRUE;
// }
}
return FALSE;
}
}