You are here

function views_php_plugin_cache::cache_get in Views PHP 7.2

Same name and namespace in other branches
  1. 6 plugins/views/views_php_plugin_cache.inc \views_php_plugin_cache::cache_get()
  2. 7 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

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) {

        //if (!$cutoff || $cache->created > $cutoff) {
        $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) {

        //if (!$cutoff || $cache->created > $cutoff) {
        $this->storage = $cache->data;
        $this->view->display_handler->output = $cache->data['output'];
        $this
          ->restore_headers();
        return TRUE;

        //}
      }
      return FALSE;
  }
}