2014-04-17 07:44:38 +02:00
|
|
|
<?php
|
|
|
|
|
2017-12-11 00:10:56 +01:00
|
|
|
namespace SilverStripe\VersionFeed\Filters;
|
|
|
|
|
|
|
|
use SilverStripe\VersionFeed\VersionFeedController;
|
2017-12-11 05:20:00 +01:00
|
|
|
use SilverStripe\Core\Config\Configurable;
|
2017-12-11 00:50:45 +01:00
|
|
|
use Psr\SimpleCache\CacheInterface;
|
|
|
|
use SilverStripe\Core\Injector\Injector;
|
2017-12-11 00:10:56 +01:00
|
|
|
|
2014-04-17 07:44:38 +02:00
|
|
|
/**
|
|
|
|
* Conditionally executes a given callback, attempting to return the desired results
|
|
|
|
* of its execution.
|
|
|
|
*/
|
2017-12-11 21:47:35 +01:00
|
|
|
abstract class ContentFilter
|
|
|
|
{
|
2017-12-11 05:20:00 +01:00
|
|
|
|
2017-12-11 21:47:35 +01:00
|
|
|
use Configurable;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Nested content filter
|
|
|
|
*
|
|
|
|
* @var ContentFilter
|
|
|
|
*/
|
|
|
|
protected $nestedContentFilter;
|
2015-10-30 06:08:00 +01:00
|
|
|
|
2017-12-11 21:47:35 +01:00
|
|
|
/**
|
|
|
|
* Cache lifetime
|
|
|
|
*
|
|
|
|
* @config
|
|
|
|
* @var int
|
|
|
|
*/
|
|
|
|
private static $cache_lifetime = 300;
|
|
|
|
|
|
|
|
public function __construct($nestedContentFilter = null)
|
|
|
|
{
|
|
|
|
$this->nestedContentFilter = $nestedContentFilter;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the cache to use
|
|
|
|
*
|
2018-02-13 00:11:27 +01:00
|
|
|
* @return CacheInterface
|
2017-12-11 21:47:35 +01:00
|
|
|
*/
|
|
|
|
protected function getCache()
|
|
|
|
{
|
|
|
|
return Injector::inst()->get(
|
|
|
|
CacheInterface::class . '.VersionFeedController'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Evaluates the result of the given callback
|
|
|
|
*
|
|
|
|
* @param string $key Unique key for this
|
|
|
|
* @param callable $callback Callback for evaluating the content
|
|
|
|
* @return mixed Result of $callback()
|
|
|
|
*/
|
|
|
|
public function getContent($key, $callback)
|
|
|
|
{
|
|
|
|
if ($this->nestedContentFilter) {
|
|
|
|
return $this->nestedContentFilter->getContent($key, $callback);
|
|
|
|
} else {
|
|
|
|
return call_user_func($callback);
|
|
|
|
}
|
|
|
|
}
|
2014-04-17 07:44:38 +02:00
|
|
|
}
|