You are here

function authcache_views_authcache_p13n_fragment in Authenticated User Page Caching (Authcache) 7.2

Implements hook_authcache_p13n_fragment().

File

modules/authcache_views/authcache_views.module, line 10
Authcache support for views module.

Code

function authcache_views_authcache_p13n_fragment() {
  $views = views_get_all_views();
  $fragments = array();
  foreach ($views as $view_name => $view) {
    foreach ($view->display as $display_id => $display) {
      $config = _authcache_views_view_get_options($view, $display_id);
      if (!empty($config['status'])) {
        $config += authcache_p13n_config_defaults();
        $fragment_id = "views/{$view->name}/{$display_id}";
        $granularity = authcache_p13n_config_cache_granularity($config);
        $fragments[$fragment_id] = array(
          'fragment' => array(
            '#class' => 'AuthcacheViewsFragment',
            '#arguments' => array(
              $view->name,
              $display_id,
            ),
          ),
          'bootstrap phase' => DRUPAL_BOOTSTRAP_FULL,
          'cache maxage' => authcache_p13n_config_cache_maxage($config),
          'cache granularity' => $granularity,
          'admin entry object' => array(
            '#class' => 'AuthcacheViewsAdminEntry',
            '#arguments' => array(
              $view_name,
              $display_id,
              $config,
              '@admin entry',
            ),
          ),
        );

        // If this is a page-display and cache-granularity is set to per-page,
        // add a context provider for deriving views arguments from request
        // parameters.
        if ($display->display_plugin === 'page' && $granularity & AuthcacheP13nCacheGranularity::PER_PAGE) {
          $fragments[$fragment_id]['views arguments'] = array(
            '#class' => 'AuthcacheViewsDisplayPageContextProvider',
            '#member_of' => 'context providers',
          );
        }
      }
    }
  }
  return $fragments;
}