/** * Starts the output cache. Returns NCachingHelper object if buffering was started. * @param ICacheStorage * @param string * @param NCachingHelper[] * @param array * @return NCachingHelper */ public static function createCache(ICacheStorage $cacheStorage, $key, & $parents, array $args = NULL) { if ($args) { if (array_key_exists('if', $args) && !$args['if']) { return $parents[] = new stdClass; } $key = array_merge(array($key), array_intersect_key($args, range(0, count($args)))); } if ($parents) { end($parents)->dependencies[NCache::ITEMS][] = $key; } $cache = new NCache($cacheStorage, 'Nette.Templating.Cache'); if ($helper = $cache->start($key)) { if (isset($args['expire'])) { $args['expiration'] = $args['expire']; // back compatibility } $helper->dependencies = array( NCache::TAGS => isset($args['tags']) ? $args['tags'] : NULL, NCache::EXPIRATION => isset($args['expiration']) ? $args['expiration'] : '+ 7 days', ); $parents[] = $helper; } return $helper; }