mirror of
https://github.com/silverstripe/silverstripe-versionfeed
synced 2024-10-22 09:05:31 +00:00
run the upgrader tool over the codebase to namespace the classes
This commit is contained in:
parent
bfb7422981
commit
9a7651b017
12
.upgrade.yml
Normal file
12
.upgrade.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
mappings:
|
||||||
|
VersionFeed: SilverStripe\VersionFeed\VersionFeed
|
||||||
|
VersionFeed_Controller: SilverStripe\VersionFeed\VersionFeedController
|
||||||
|
VersionFeedSiteConfig: SilverStripe\VersionFeed\VersionFeedSiteConfig
|
||||||
|
CachedContentFilter: SilverStripe\VersionFeed\Filters\CachedContentFilter
|
||||||
|
ContentFilter: SilverStripe\VersionFeed\Filters\ContentFilter
|
||||||
|
RateLimitFilter: SilverStripe\VersionFeed\Filters\RateLimitFilter
|
||||||
|
\VersionFeed\Filters\CachedContentFilter: SilverStripe\VersionFeed\Filters\CachedContentFilter
|
||||||
|
\VersionFeed\Filters\ContentFilter: SilverStripe\VersionFeed\Filters\ContentFilter
|
||||||
|
\VersionFeed\Filters\RateLimitFilter: SilverStripe\VersionFeed\Filters\RateLimitFilter
|
||||||
|
VersionFeedFunctionalTest: SilverStripe\VersionFeed\Tests\VersionFeedFunctionalTest
|
||||||
|
VersionFeedTest: SilverStripe\VersionFeed\Tests\VersionFeedTest
|
@ -1,6 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace VersionFeed\Filters;
|
namespace SilverStripe\VersionFeed\Filters;
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Caches results of a callback
|
* Caches results of a callback
|
||||||
@ -19,7 +25,7 @@ class CachedContentFilter extends ContentFilter {
|
|||||||
$cache = $this->getCache();
|
$cache = $this->getCache();
|
||||||
|
|
||||||
// Return cached value if available
|
// Return cached value if available
|
||||||
$cacheEnabled = \Config::inst()->get(get_class(), 'cache_enabled');
|
$cacheEnabled = Config::inst()->get(get_class(), 'cache_enabled');
|
||||||
$result = (isset($_GET['flush']) || !$cacheEnabled)
|
$result = (isset($_GET['flush']) || !$cacheEnabled)
|
||||||
? null
|
? null
|
||||||
: $cache->load($key);
|
: $cache->load($key);
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace VersionFeed\Filters;
|
namespace SilverStripe\VersionFeed\Filters;
|
||||||
|
|
||||||
|
use SS_Cache;
|
||||||
|
|
||||||
|
use SilverStripe\VersionFeed\VersionFeedController;
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Conditionally executes a given callback, attempting to return the desired results
|
* Conditionally executes a given callback, attempting to return the desired results
|
||||||
@ -33,11 +41,11 @@ abstract class ContentFilter {
|
|||||||
* @return Zend_Cache_Frontend
|
* @return Zend_Cache_Frontend
|
||||||
*/
|
*/
|
||||||
protected function getCache() {
|
protected function getCache() {
|
||||||
$cache = \SS_Cache::factory('VersionFeed_Controller');
|
$cache = \SS_Cache::factory(VersionFeedController::class);
|
||||||
$cache->setOption('automatic_serialization', true);
|
$cache->setOption('automatic_serialization', true);
|
||||||
|
|
||||||
// Map 0 to null for unlimited lifetime
|
// Map 0 to null for unlimited lifetime
|
||||||
$lifetime = \Config::inst()->get(get_class($this), 'cache_lifetime') ?: null;
|
$lifetime = Config::inst()->get(get_class($this), 'cache_lifetime') ?: null;
|
||||||
$cache->setLifetime($lifetime);
|
$cache->setLifetime($lifetime);
|
||||||
return $cache;
|
return $cache;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace VersionFeed\Filters;
|
namespace SilverStripe\VersionFeed\Filters;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
use SilverStripe\Control\Controller;
|
||||||
|
use SilverStripe\Control\HTTPResponse_Exception;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides rate limiting of execution of a callback
|
* Provides rate limiting of execution of a callback
|
||||||
@ -60,13 +70,13 @@ class RateLimitFilter extends ContentFilter {
|
|||||||
$key = self::CACHE_PREFIX;
|
$key = self::CACHE_PREFIX;
|
||||||
|
|
||||||
// Add global identifier
|
// Add global identifier
|
||||||
if(\Config::inst()->get(get_class(), 'lock_bypage')) {
|
if(Config::inst()->get(get_class(), 'lock_bypage')) {
|
||||||
$key .= '_' . md5($itemkey);
|
$key .= '_' . md5($itemkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add user-specific identifier
|
// Add user-specific identifier
|
||||||
if(\Config::inst()->get(get_class(), 'lock_byuserip') && \Controller::has_curr()) {
|
if(Config::inst()->get(get_class(), 'lock_byuserip') && Controller::has_curr()) {
|
||||||
$ip = \Controller::curr()->getRequest()->getIP();
|
$ip = Controller::curr()->getRequest()->getIP();
|
||||||
$key .= '_' . md5($ip);
|
$key .= '_' . md5($ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +86,7 @@ class RateLimitFilter extends ContentFilter {
|
|||||||
|
|
||||||
public function getContent($key, $callback) {
|
public function getContent($key, $callback) {
|
||||||
// Bypass rate limiting if flushing, or timeout isn't set
|
// Bypass rate limiting if flushing, or timeout isn't set
|
||||||
$timeout = \Config::inst()->get(get_class(), 'lock_timeout');
|
$timeout = Config::inst()->get(get_class(), 'lock_timeout');
|
||||||
if(isset($_GET['flush']) || !$timeout) {
|
if(isset($_GET['flush']) || !$timeout) {
|
||||||
return parent::getContent($key, $callback);
|
return parent::getContent($key, $callback);
|
||||||
}
|
}
|
||||||
@ -87,7 +97,7 @@ class RateLimitFilter extends ContentFilter {
|
|||||||
if($lockedUntil = $cache->load($limitKey)) {
|
if($lockedUntil = $cache->load($limitKey)) {
|
||||||
if(time() < $lockedUntil) {
|
if(time() < $lockedUntil) {
|
||||||
// Politely inform visitor of limit
|
// Politely inform visitor of limit
|
||||||
$response = new \SS_HTTPResponse_Exception('Too Many Requests.', 429);
|
$response = new HTTPResponse_Exception('Too Many Requests.', 429);
|
||||||
$response->getResponse()->addHeader('Retry-After', 1 + $lockedUntil - time());
|
$response->getResponse()->addHeader('Retry-After', 1 + $lockedUntil - time());
|
||||||
throw $response;
|
throw $response;
|
||||||
}
|
}
|
||||||
@ -100,7 +110,7 @@ class RateLimitFilter extends ContentFilter {
|
|||||||
$result = parent::getContent($key, $callback);
|
$result = parent::getContent($key, $callback);
|
||||||
|
|
||||||
// Reset rate limit with optional cooldown
|
// Reset rate limit with optional cooldown
|
||||||
if($cooldown = \Config::inst()->get(get_class(), 'lock_cooldown')) {
|
if($cooldown = Config::inst()->get(get_class(), 'lock_cooldown')) {
|
||||||
// Set cooldown on successful query execution
|
// Set cooldown on successful query execution
|
||||||
$cache->save(time() + $cooldown, $limitKey);
|
$cache->save(time() + $cooldown, $limitKey);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,5 +1,28 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\VersionFeed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use Diff;
|
||||||
|
use HTMLText;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\ORM\ArrayList;
|
||||||
|
use SilverStripe\Forms\FieldList;
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
use SilverStripe\Forms\CheckboxField;
|
||||||
|
use SilverStripe\Forms\FieldGroup;
|
||||||
|
use SilverStripe\Forms\LiteralField;
|
||||||
|
use SilverStripe\SiteConfig\SiteConfig;
|
||||||
|
use SilverStripe\CMS\Model\SiteTreeExtension;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VersionFeed extends SiteTreeExtension {
|
class VersionFeed extends SiteTreeExtension {
|
||||||
|
|
||||||
private static $db = array(
|
private static $db = array(
|
||||||
|
@ -1,5 +1,33 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\VersionFeed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
use SilverStripe\VersionFeed\VersionFeed;
|
||||||
|
use SilverStripe\Control\RSS\RSSFeed;
|
||||||
|
use SilverStripe\SiteConfig\SiteConfig;
|
||||||
|
use SilverStripe\ORM\DB;
|
||||||
|
use SilverStripe\Security\Member;
|
||||||
|
use SilverStripe\ORM\ArrayList;
|
||||||
|
use SilverStripe\CMS\Model\SiteTree;
|
||||||
|
use SilverStripe\Versioned\Versioned_Version;
|
||||||
|
use SilverStripe\Core\Convert;
|
||||||
|
use SilverStripe\View\Requirements;
|
||||||
|
use SilverStripe\Core\Extension;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VersionFeed_Controller extends Extension {
|
class VersionFeed_Controller extends Extension {
|
||||||
|
|
||||||
private static $allowed_actions = array(
|
private static $allowed_actions = array(
|
||||||
@ -48,7 +76,7 @@ class VersionFeed_Controller extends Extension {
|
|||||||
*/
|
*/
|
||||||
public function changes() {
|
public function changes() {
|
||||||
// Check viewability of changes
|
// Check viewability of changes
|
||||||
if(!Config::inst()->get('VersionFeed', 'changes_enabled')
|
if(!Config::inst()->get(VersionFeed::class, 'changes_enabled')
|
||||||
|| !$this->owner->PublicHistory
|
|| !$this->owner->PublicHistory
|
||||||
|| $this->owner->Version == ''
|
|| $this->owner->Version == ''
|
||||||
) {
|
) {
|
||||||
@ -59,7 +87,7 @@ class VersionFeed_Controller extends Extension {
|
|||||||
$target = $this->owner;
|
$target = $this->owner;
|
||||||
$key = implode('_', array('changes', $this->owner->ID, $this->owner->Version));
|
$key = implode('_', array('changes', $this->owner->ID, $this->owner->Version));
|
||||||
$entries = $this->filterContent($key, function() use ($target) {
|
$entries = $this->filterContent($key, function() use ($target) {
|
||||||
return $target->getDiffList(null, Config::inst()->get('VersionFeed', 'changes_limit'));
|
return $target->getDiffList(null, Config::inst()->get(VersionFeed::class, 'changes_limit'));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Generate the output.
|
// Generate the output.
|
||||||
@ -74,13 +102,13 @@ class VersionFeed_Controller extends Extension {
|
|||||||
*/
|
*/
|
||||||
public function allchanges() {
|
public function allchanges() {
|
||||||
// Check viewability of allchanges
|
// Check viewability of allchanges
|
||||||
if(!Config::inst()->get('VersionFeed', 'allchanges_enabled')
|
if(!Config::inst()->get(VersionFeed::class, 'allchanges_enabled')
|
||||||
|| !SiteConfig::current_site_config()->AllChangesEnabled
|
|| !SiteConfig::current_site_config()->AllChangesEnabled
|
||||||
) {
|
) {
|
||||||
return $this->owner->httpError(404, 'Global history not viewable');
|
return $this->owner->httpError(404, 'Global history not viewable');
|
||||||
}
|
}
|
||||||
|
|
||||||
$limit = (int)Config::inst()->get('VersionFeed', 'allchanges_limit');
|
$limit = (int)Config::inst()->get(VersionFeed::class, 'allchanges_limit');
|
||||||
$latestChanges = DB::query('
|
$latestChanges = DB::query('
|
||||||
SELECT * FROM "SiteTree_versions"
|
SELECT * FROM "SiteTree_versions"
|
||||||
WHERE "WasPublished" = \'1\'
|
WHERE "WasPublished" = \'1\'
|
||||||
@ -135,7 +163,7 @@ class VersionFeed_Controller extends Extension {
|
|||||||
* Generates and embeds the RSS header link for the page-specific version rss feed
|
* Generates and embeds the RSS header link for the page-specific version rss feed
|
||||||
*/
|
*/
|
||||||
public function linkToPageRSSFeed() {
|
public function linkToPageRSSFeed() {
|
||||||
if (!Config::inst()->get('VersionFeed', 'changes_enabled') || !$this->owner->PublicHistory) {
|
if (!Config::inst()->get(VersionFeed::class, 'changes_enabled') || !$this->owner->PublicHistory) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,7 +180,7 @@ class VersionFeed_Controller extends Extension {
|
|||||||
* Generates and embeds the RSS header link for the global version rss feed
|
* Generates and embeds the RSS header link for the global version rss feed
|
||||||
*/
|
*/
|
||||||
public function linkToAllSiteRSSFeed() {
|
public function linkToAllSiteRSSFeed() {
|
||||||
if(!Config::inst()->get('VersionFeed', 'allchanges_enabled')
|
if(!Config::inst()->get(VersionFeed::class, 'allchanges_enabled')
|
||||||
|| !SiteConfig::current_site_config()->AllChangesEnabled
|
|| !SiteConfig::current_site_config()->AllChangesEnabled
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
|
@ -1,5 +1,21 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\VersionFeed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Forms\FieldList;
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
use SilverStripe\VersionFeed\VersionFeed;
|
||||||
|
use SilverStripe\Forms\CheckboxField;
|
||||||
|
use SilverStripe\Forms\FieldGroup;
|
||||||
|
use SilverStripe\ORM\DataExtension;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows global configuration of all changes
|
* Allows global configuration of all changes
|
||||||
*/
|
*/
|
||||||
@ -17,8 +33,8 @@ class VersionFeedSiteConfig extends DataExtension {
|
|||||||
$labels['AllChangesEnabled'] = _t('VersionFeedSiteConfig.ALLCHANGESLABEL', 'Make global changes feed public');
|
$labels['AllChangesEnabled'] = _t('VersionFeedSiteConfig.ALLCHANGESLABEL', 'Make global changes feed public');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateCMSFields(\FieldList $fields) {
|
public function updateCMSFields(FieldList $fields) {
|
||||||
if(!Config::inst()->get('VersionFeed', 'allchanges_enabled')) return;
|
if(!Config::inst()->get(VersionFeed::class, 'allchanges_enabled')) return;
|
||||||
|
|
||||||
$fields->addFieldToTab('Root.Access',
|
$fields->addFieldToTab('Root.Access',
|
||||||
FieldGroup::create(new CheckboxField('AllChangesEnabled', $this->owner->fieldLabel('AllChangesEnabled')))
|
FieldGroup::create(new CheckboxField('AllChangesEnabled', $this->owner->fieldLabel('AllChangesEnabled')))
|
||||||
|
@ -1,10 +1,29 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\VersionFeed\Tests;
|
||||||
|
|
||||||
|
|
||||||
|
use SS_Cache;
|
||||||
|
use Zend_Cache;
|
||||||
|
|
||||||
|
|
||||||
|
use Page;
|
||||||
|
|
||||||
|
use SilverStripe\VersionFeed\VersionFeed;
|
||||||
|
use SilverStripe\VersionFeed\VersionFeedController;
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
use SilverStripe\CMS\Model\SiteTree;
|
||||||
|
use SilverStripe\Versioned\Versioned;
|
||||||
|
use SilverStripe\SiteConfig\SiteConfig;
|
||||||
|
use SilverStripe\Dev\FunctionalTest;
|
||||||
|
|
||||||
|
|
||||||
class VersionFeedFunctionalTest extends FunctionalTest {
|
class VersionFeedFunctionalTest extends FunctionalTest {
|
||||||
protected $usesDatabase = true;
|
protected $usesDatabase = true;
|
||||||
|
|
||||||
protected $requiredExtensions = array(
|
protected $requiredExtensions = array(
|
||||||
'Page' => array('VersionFeed'),
|
'Page' => array(VersionFeed::class),
|
||||||
'Page_Controller' => array('VersionFeed_Controller'),
|
'Page_Controller' => array(VersionFeedController::class),
|
||||||
);
|
);
|
||||||
|
|
||||||
protected $userIP;
|
protected $userIP;
|
||||||
@ -12,15 +31,15 @@ class VersionFeedFunctionalTest extends FunctionalTest {
|
|||||||
public function setUp() {
|
public function setUp() {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$cache = SS_Cache::factory('VersionFeed_Controller');
|
$cache = SS_Cache::factory(VersionFeedController::class);
|
||||||
$cache->clean(Zend_Cache::CLEANING_MODE_ALL);
|
$cache->clean(Zend_Cache::CLEANING_MODE_ALL);
|
||||||
|
|
||||||
$this->userIP = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : null;
|
$this->userIP = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : null;
|
||||||
|
|
||||||
Config::nest();
|
Config::nest();
|
||||||
// Enable history by default
|
// Enable history by default
|
||||||
Config::inst()->update('VersionFeed', 'changes_enabled', true);
|
Config::inst()->update(VersionFeed::class, 'changes_enabled', true);
|
||||||
Config::inst()->update('VersionFeed', 'allchanges_enabled', true);
|
Config::inst()->update(VersionFeed::class, 'allchanges_enabled', true);
|
||||||
|
|
||||||
// Disable caching and locking by default
|
// Disable caching and locking by default
|
||||||
Config::inst()->update('VersionFeed\Filters\CachedContentFilter', 'cache_enabled', false);
|
Config::inst()->update('VersionFeed\Filters\CachedContentFilter', 'cache_enabled', false);
|
||||||
@ -72,7 +91,7 @@ class VersionFeedFunctionalTest extends FunctionalTest {
|
|||||||
|
|
||||||
// Artifically set cache lock
|
// Artifically set cache lock
|
||||||
Config::inst()->update('VersionFeed\Filters\RateLimitFilter', 'lock_byuserip', false);
|
Config::inst()->update('VersionFeed\Filters\RateLimitFilter', 'lock_byuserip', false);
|
||||||
$cache = SS_Cache::factory('VersionFeed_Controller');
|
$cache = SS_Cache::factory(VersionFeedController::class);
|
||||||
$cache->setOption('automatic_serialization', true);
|
$cache->setOption('automatic_serialization', true);
|
||||||
$cache->save(time() + 10, \VersionFeed\Filters\RateLimitFilter::CACHE_PREFIX);
|
$cache->save(time() + 10, \VersionFeed\Filters\RateLimitFilter::CACHE_PREFIX);
|
||||||
|
|
||||||
@ -89,7 +108,7 @@ class VersionFeedFunctionalTest extends FunctionalTest {
|
|||||||
$key = implode('_', array(
|
$key = implode('_', array(
|
||||||
'changes',
|
'changes',
|
||||||
$page1->ID,
|
$page1->ID,
|
||||||
Versioned::get_versionnumber_by_stage('SiteTree', 'Live', $page1->ID, false)
|
Versioned::get_versionnumber_by_stage(SiteTree::class, 'Live', $page1->ID, false)
|
||||||
));
|
));
|
||||||
$key = \VersionFeed\Filters\RateLimitFilter::CACHE_PREFIX . '_' . md5($key);
|
$key = \VersionFeed\Filters\RateLimitFilter::CACHE_PREFIX . '_' . md5($key);
|
||||||
$cache->save(time() + 10, $key);
|
$cache->save(time() + 10, $key);
|
||||||
@ -195,7 +214,7 @@ class VersionFeedFunctionalTest extends FunctionalTest {
|
|||||||
|
|
||||||
// Test requests to 'changes' action
|
// Test requests to 'changes' action
|
||||||
foreach(array(true, false) as $publicHistory_Config) {
|
foreach(array(true, false) as $publicHistory_Config) {
|
||||||
Config::inst()->update('VersionFeed', 'changes_enabled', $publicHistory_Config);
|
Config::inst()->update(VersionFeed::class, 'changes_enabled', $publicHistory_Config);
|
||||||
$expectedResponse = $publicHistory_Page && $publicHistory_Config ? 200 : 404;
|
$expectedResponse = $publicHistory_Page && $publicHistory_Config ? 200 : 404;
|
||||||
$response = $this->get($page->RelativeLink('changes'));
|
$response = $this->get($page->RelativeLink('changes'));
|
||||||
$this->assertEquals($expectedResponse, $response->getStatusCode());
|
$this->assertEquals($expectedResponse, $response->getStatusCode());
|
||||||
@ -204,7 +223,7 @@ class VersionFeedFunctionalTest extends FunctionalTest {
|
|||||||
// Test requests to 'allchanges' action on each page
|
// Test requests to 'allchanges' action on each page
|
||||||
foreach(array(true, false) as $allChanges_Config) {
|
foreach(array(true, false) as $allChanges_Config) {
|
||||||
foreach(array(true, false) as $allChanges_SiteConfig) {
|
foreach(array(true, false) as $allChanges_SiteConfig) {
|
||||||
Config::inst()->update('VersionFeed', 'allchanges_enabled', $allChanges_Config);
|
Config::inst()->update(VersionFeed::class, 'allchanges_enabled', $allChanges_Config);
|
||||||
$siteConfig = SiteConfig::current_site_config();
|
$siteConfig = SiteConfig::current_site_config();
|
||||||
$siteConfig->AllChangesEnabled = $allChanges_SiteConfig;
|
$siteConfig->AllChangesEnabled = $allChanges_SiteConfig;
|
||||||
$siteConfig->write();
|
$siteConfig->write();
|
||||||
|
@ -1,11 +1,21 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\VersionFeed\Tests;
|
||||||
|
|
||||||
|
|
||||||
|
use Page;
|
||||||
|
use SilverStripe\VersionFeed\VersionFeed;
|
||||||
|
use SilverStripe\VersionFeed\VersionFeedController;
|
||||||
|
use SilverStripe\Dev\SapphireTest;
|
||||||
|
|
||||||
|
|
||||||
class VersionFeedTest extends SapphireTest {
|
class VersionFeedTest extends SapphireTest {
|
||||||
|
|
||||||
protected $usesDatabase = true;
|
protected $usesDatabase = true;
|
||||||
|
|
||||||
protected $requiredExtensions = array(
|
protected $requiredExtensions = array(
|
||||||
'SiteTree' => array('VersionFeed'),
|
'SiteTree' => array(VersionFeed::class),
|
||||||
'ContentController' => array('VersionFeed_Controller'),
|
'ContentController' => array(VersionFeedController::class),
|
||||||
);
|
);
|
||||||
|
|
||||||
protected $illegalExtensions = array(
|
protected $illegalExtensions = array(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user