Issues (21)

src/Filters/CachedContentFilter.php (1 issue)

Severity
1
<?php
2
3
namespace SilverStripe\VersionFeed\Filters;
4
5
use SilverStripe\Core\Config\Config;
6
7
/**
8
 * Caches results of a callback
9
 */
10
class CachedContentFilter extends ContentFilter
11
{
12
    
13
    /**
14
     * Enable caching
15
     *
16
     * @config
17
     * @var boolean
18
     */
19
    private static $cache_enabled = true;
0 ignored issues
show
The private property $cache_enabled is not used, and could be removed.
Loading history...
20
    
21
    public function getContent($key, $callback)
22
    {
23
        $cache = $this->getCache();
24
        
25
        // Return cached value if available
26
        $cacheEnabled = Config::inst()->get(get_class(), 'cache_enabled');
27
        $result = (isset($_GET['flush']) || !$cacheEnabled)
28
            ? null
29
            : $cache->get($key);
30
        if ($result) {
31
            return $result;
32
        }
33
        
34
        // Fallback to generate result
35
        $result = parent::getContent($key, $callback);
36
        $lifetime = Config::inst()->get(ContentFilter::class, 'cache_lifetime') ?: null;
37
        $cache->set($key, $result, $lifetime);
38
        return $result;
39
    }
40
}
41