public function RenderCacheBackendAdapter::getMultiple in Render cache 7.2
Gets multiple cache entries based on the cache info map.
Parameters
array $cache_info_map: The cache information map, keyed by ID, consisting of cache info structs.
Return value
array The builded render array, keyed by ID for each cache entry found.
Overrides RenderCacheBackendAdapterInterface::getMultiple
1 call to RenderCacheBackendAdapter::getMultiple()
- RenderCacheBackendAdapter::get in src/
Cache/ RenderCacheBackendAdapter.php - Gets a cache entry based on the given cache info.
File
- src/
Cache/ RenderCacheBackendAdapter.php, line 65 - Contains \Drupal\render_cache\Cache\RenderCacheBackendAdapter
Class
- RenderCacheBackendAdapter
- Defines the render_cache.cache service.
Namespace
Drupal\render_cache\CacheCode
public function getMultiple(array $cache_info_map) {
$build = array();
$cid_map_per_bin = array();
foreach ($cache_info_map as $id => $cache_info) {
$bin = isset($cache_info['bin']) ? $cache_info['bin'] : 'cache';
$cid = $this
->getCacheId($cache_info);
$cid_map_per_bin[$bin][$cid] = $id;
}
foreach ($cid_map_per_bin as $bin => $cid_map) {
// Retrieve data from the cache.
$cids = array_filter(array_keys($cid_map));
if (!empty($cids)) {
$cached = $this
->cache($bin)
->getMultiple($cids);
foreach ($cached as $cid => $cache) {
if (!$cache) {
continue;
}
$id = $cid_map[$cid];
$render = $this->renderStack
->convertRenderArrayFromD7($cache->data);
// @codeCoverageIgnoreStart
if (!$this
->validate($render)) {
$cache_strategy = $cache_info_map[$id]['render_cache_cache_strategy'];
// We need to clear the cache for the late rendering strategy, else
// drupal_render_cache_get() will retrieve the item again from the
// cache.
if ($cache_strategy == RenderCache::RENDER_CACHE_STRATEGY_LATE_RENDER) {
$this
->cache($bin)
->clear($cid);
}
continue;
}
// @codeCoverageIgnoreEnd
$build[$id] = $render;
}
}
}
return $build;
}