API Set extension hook implementation visibility to protected

This commit is contained in:
Steve Boyd 2024-05-21 17:16:07 +12:00
parent 3517ae544a
commit a96000e007
14 changed files with 45 additions and 37 deletions

View File

@ -20,7 +20,7 @@ class BaseElementSubsites extends DataExtension
* @param string|null $action * @param string|null $action
* @return string * @return string
*/ */
public function updatePreviewLink(&$link) protected function updatePreviewLink(&$link)
{ {
// Get subsite ID from the element or from its page. Defaults to 0 automatically. // Get subsite ID from the element or from its page. Defaults to 0 automatically.
$subsiteID = $this->owner->SubsiteID; $subsiteID = $this->owner->SubsiteID;

View File

@ -13,7 +13,7 @@ use SilverStripe\Subsites\State\SubsiteState;
*/ */
class CMSPageAddControllerExtension extends Extension class CMSPageAddControllerExtension extends Extension
{ {
public function updatePageOptions(FieldList $fields) protected function updatePageOptions(FieldList $fields)
{ {
$fields->push(HiddenField::create('SubsiteID', 'SubsiteID', SubsiteState::singleton()->getSubsiteId())); $fields->push(HiddenField::create('SubsiteID', 'SubsiteID', SubsiteState::singleton()->getSubsiteId()));
} }

View File

@ -28,7 +28,7 @@ class ErrorPageSubsite extends DataExtension
* @param string $name * @param string $name
* @param int $statusCode * @param int $statusCode
*/ */
public function updateErrorFilename(&$name, &$statusCode) protected function updateErrorFilename(&$name, &$statusCode)
{ {
$static_filepath = Config::inst()->get($this->owner->ClassName, 'static_filepath'); $static_filepath = Config::inst()->get($this->owner->ClassName, 'static_filepath');
$subdomainPart = ''; $subdomainPart = '';

View File

@ -49,7 +49,7 @@ class FileSubsites extends DataExtension
* @param SQLSelect $query * @param SQLSelect $query
* @param DataQuery|null $dataQuery * @param DataQuery|null $dataQuery
*/ */
public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) protected function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null)
{ {
if (Subsite::$disable_subsite_filter) { if (Subsite::$disable_subsite_filter) {
return; return;
@ -85,7 +85,7 @@ class FileSubsites extends DataExtension
} }
} }
public function onBeforeWrite() protected function onBeforeWrite()
{ {
if (!$this->owner->ID && !$this->owner->SubsiteID) { if (!$this->owner->ID && !$this->owner->SubsiteID) {
if ($this->owner->config()->get('default_root_folders_global')) { if ($this->owner->config()->get('default_root_folders_global')) {
@ -96,7 +96,7 @@ class FileSubsites extends DataExtension
} }
} }
public function onAfterUpload() protected function onAfterUpload()
{ {
// If we have a parent, use it's subsite as our subsite // If we have a parent, use it's subsite as our subsite
if ($this->owner->Parent()) { if ($this->owner->Parent()) {
@ -132,7 +132,7 @@ class FileSubsites extends DataExtension
* *
* @return string * @return string
*/ */
public function cacheKeyComponent() protected function cacheKeyComponent()
{ {
return 'subsite-' . SubsiteState::singleton()->getSubsiteId(); return 'subsite-' . SubsiteState::singleton()->getSubsiteId();
} }

View File

@ -18,7 +18,7 @@ class FolderFormFactoryExtension extends Extension
* Add subsites-specific fields to the folder editor. * Add subsites-specific fields to the folder editor.
* @param FieldList $fields * @param FieldList $fields
*/ */
public function updateFormFields(FieldList $fields) protected function updateFormFields(FieldList $fields)
{ {
$sites = Subsite::accessible_sites('CMS_ACCESS_AssetAdmin'); $sites = Subsite::accessible_sites('CMS_ACCESS_AssetAdmin');
$values = []; $values = [];

View File

@ -78,7 +78,7 @@ class GroupSubsites extends DataExtension implements PermissionProvider
} }
} }
public function updateCMSFields(FieldList $fields) protected function updateCMSFields(FieldList $fields)
{ {
if ($this->owner->canEdit()) { if ($this->owner->canEdit()) {
// i18n tab // i18n tab
@ -132,7 +132,7 @@ class GroupSubsites extends DataExtension implements PermissionProvider
* *
* @param string $title * @param string $title
*/ */
public function updateTreeTitle(&$title) protected function updateTreeTitle(&$title)
{ {
if ($this->owner->AccessAllSubsites) { if ($this->owner->AccessAllSubsites) {
$title = _t(__CLASS__ . '.GlobalGroup', 'global group'); $title = _t(__CLASS__ . '.GlobalGroup', 'global group');
@ -148,7 +148,7 @@ class GroupSubsites extends DataExtension implements PermissionProvider
* @param SQLSelect $query * @param SQLSelect $query
* @param DataQuery|null $dataQuery * @param DataQuery|null $dataQuery
*/ */
public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) protected function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null)
{ {
if (Subsite::$disable_subsite_filter) { if (Subsite::$disable_subsite_filter) {
return; return;
@ -203,7 +203,7 @@ class GroupSubsites extends DataExtension implements PermissionProvider
} }
} }
public function onBeforeWrite() protected function onBeforeWrite()
{ {
// New record test approximated by checking whether the ID has changed. // New record test approximated by checking whether the ID has changed.
// Note also that the after write test is only used when we're *not* on a subsite // Note also that the after write test is only used when we're *not* on a subsite
@ -212,7 +212,7 @@ class GroupSubsites extends DataExtension implements PermissionProvider
} }
} }
public function onAfterWrite() protected function onAfterWrite()
{ {
// New record test approximated by checking whether the ID has changed. // New record test approximated by checking whether the ID has changed.
// Note also that the after write test is only used when we're on a subsite // Note also that the after write test is only used when we're on a subsite

View File

@ -16,7 +16,7 @@ use SilverStripe\Subsites\State\SubsiteState;
*/ */
class HintsCacheKeyExtension extends Extension class HintsCacheKeyExtension extends Extension
{ {
public function updateHintsCacheKey(&$baseKey) protected function updateHintsCacheKey(&$baseKey)
{ {
$baseKey .= '_Subsite:' . SubsiteState::singleton()->getSubsiteId(); $baseKey .= '_Subsite:' . SubsiteState::singleton()->getSubsiteId();
} }

View File

@ -56,7 +56,7 @@ class LeftAndMainSubsites extends LeftAndMainExtension
return $subsite ? Convert::raw2xml($subsite->Title) : _t(__CLASS__.'.SITECONTENTLEFT', 'Site Content'); return $subsite ? Convert::raw2xml($subsite->Title) : _t(__CLASS__.'.SITECONTENTLEFT', 'Site Content');
} }
public function updatePageOptions(&$fields) protected function updatePageOptions(&$fields)
{ {
$fields->push(HiddenField::create('SubsiteID', 'SubsiteID', SubsiteState::singleton()->getSubsiteId())); $fields->push(HiddenField::create('SubsiteID', 'SubsiteID', SubsiteState::singleton()->getSubsiteId()));
} }
@ -266,7 +266,7 @@ class LeftAndMainSubsites extends LeftAndMainExtension
* fully re-synchronised with the internal session. This is better than risking some panels * fully re-synchronised with the internal session. This is better than risking some panels
* showing data from another subsite. * showing data from another subsite.
*/ */
public function onBeforeInit() protected function onBeforeInit()
{ {
$request = Controller::curr()->getRequest(); $request = Controller::curr()->getRequest();
$session = $request->getSession(); $session = $request->getSession();
@ -381,13 +381,13 @@ class LeftAndMainSubsites extends LeftAndMainExtension
return; return;
} }
public function augmentNewSiteTreeItem(&$item) protected function augmentNewSiteTreeItem(&$item)
{ {
$request = Controller::curr()->getRequest(); $request = Controller::curr()->getRequest();
$item->SubsiteID = $request->postVar('SubsiteID') ?: SubsiteState::singleton()->getSubsiteId(); $item->SubsiteID = $request->postVar('SubsiteID') ?: SubsiteState::singleton()->getSubsiteId();
} }
public function onAfterSave($record) protected function onAfterSave($record)
{ {
if ($record->hasMethod('NormalRelated') && ($record->NormalRelated() || $record->ReverseRelated())) { if ($record->hasMethod('NormalRelated') && ($record->NormalRelated() || $record->ReverseRelated())) {
$this->owner->response->addHeader( $this->owner->response->addHeader(

View File

@ -29,7 +29,7 @@ class SiteConfigSubsites extends DataExtension
* @param SQLSelect $query * @param SQLSelect $query
* @param DataQuery|null $dataQuery * @param DataQuery|null $dataQuery
*/ */
public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) protected function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null)
{ {
if (Subsite::$disable_subsite_filter) { if (Subsite::$disable_subsite_filter) {
return; return;
@ -60,7 +60,7 @@ class SiteConfigSubsites extends DataExtension
$query->addWhere("\"$tableName\".\"SubsiteID\" IN ($subsiteID)"); $query->addWhere("\"$tableName\".\"SubsiteID\" IN ($subsiteID)");
} }
public function onBeforeWrite() protected function onBeforeWrite()
{ {
if ((!is_numeric($this->owner->ID) || !$this->owner->ID) && !$this->owner->SubsiteID) { if ((!is_numeric($this->owner->ID) || !$this->owner->ID) && !$this->owner->SubsiteID) {
$this->owner->SubsiteID = SubsiteState::singleton()->getSubsiteId(); $this->owner->SubsiteID = SubsiteState::singleton()->getSubsiteId();
@ -70,12 +70,12 @@ class SiteConfigSubsites extends DataExtension
/** /**
* Return a piece of text to keep DataObject cache keys appropriately specific * Return a piece of text to keep DataObject cache keys appropriately specific
*/ */
public function cacheKeyComponent() protected function cacheKeyComponent()
{ {
return 'subsite-' . SubsiteState::singleton()->getSubsiteId(); return 'subsite-' . SubsiteState::singleton()->getSubsiteId();
} }
public function updateCMSFields(FieldList $fields) protected function updateCMSFields(FieldList $fields)
{ {
$fields->push(HiddenField::create('SubsiteID', 'SubsiteID', SubsiteState::singleton()->getSubsiteId())); $fields->push(HiddenField::create('SubsiteID', 'SubsiteID', SubsiteState::singleton()->getSubsiteId()));
} }

View File

@ -63,7 +63,7 @@ class SiteTreeSubsites extends DataExtension
* @param SQLSelect $query * @param SQLSelect $query
* @param DataQuery $dataQuery * @param DataQuery $dataQuery
*/ */
public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) protected function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null)
{ {
if (Subsite::$disable_subsite_filter) { if (Subsite::$disable_subsite_filter) {
return; return;
@ -98,7 +98,7 @@ class SiteTreeSubsites extends DataExtension
} }
} }
public function onBeforeWrite() protected function onBeforeWrite()
{ {
if (!$this->owner->ID && !$this->owner->SubsiteID) { if (!$this->owner->ID && !$this->owner->SubsiteID) {
$this->owner->SubsiteID = SubsiteState::singleton()->getSubsiteId(); $this->owner->SubsiteID = SubsiteState::singleton()->getSubsiteId();
@ -107,7 +107,7 @@ class SiteTreeSubsites extends DataExtension
parent::onBeforeWrite(); parent::onBeforeWrite();
} }
public function updateCMSFields(FieldList $fields) protected function updateCMSFields(FieldList $fields)
{ {
$subsites = Subsite::accessible_sites('CMS_ACCESS_CMSMain'); $subsites = Subsite::accessible_sites('CMS_ACCESS_CMSMain');
if ($subsites && $subsites->count()) { if ($subsites && $subsites->count()) {
@ -225,7 +225,7 @@ class SiteTreeSubsites extends DataExtension
/** /**
* When duplicating a page, assign the current subsite ID from the state * When duplicating a page, assign the current subsite ID from the state
*/ */
public function onBeforeDuplicate() protected function onBeforeDuplicate()
{ {
$subsiteId = SubsiteState::singleton()->getSubsiteId(); $subsiteId = SubsiteState::singleton()->getSubsiteId();
if ($subsiteId !== null) { if ($subsiteId !== null) {
@ -290,7 +290,7 @@ class SiteTreeSubsites extends DataExtension
/** /**
* @return SiteConfig * @return SiteConfig
*/ */
public function alternateSiteConfig() protected function alternateSiteConfig()
{ {
if (!$this->owner->SubsiteID) { if (!$this->owner->SubsiteID) {
return false; return false;
@ -433,7 +433,7 @@ class SiteTreeSubsites extends DataExtension
* @param string|null $action * @param string|null $action
* @return string * @return string
*/ */
public function updatePreviewLink(&$link, $action = null) protected function updatePreviewLink(&$link, $action = null)
{ {
$url = Director::absoluteURL($this->owner->Link($action)); $url = Director::absoluteURL($this->owner->Link($action));
$link = HTTP::setGetVar('SubsiteID', $this->owner->SubsiteID, $url); $link = HTTP::setGetVar('SubsiteID', $this->owner->SubsiteID, $url);
@ -454,7 +454,7 @@ class SiteTreeSubsites extends DataExtension
return $tags; return $tags;
} }
public function augmentSyncLinkTracking() protected function augmentSyncLinkTracking()
{ {
// Set LinkTracking appropriately // Set LinkTracking appropriately
$links = HTTP::getLinksIn($this->owner->Content); $links = HTTP::getLinksIn($this->owner->Content);
@ -502,7 +502,7 @@ class SiteTreeSubsites extends DataExtension
* *
* @return null|bool Either true or false, or null to not influence result * @return null|bool Either true or false, or null to not influence result
*/ */
public function augmentValidURLSegment() protected function augmentValidURLSegment()
{ {
// If this page is being filtered in the current subsite, then no custom validation query is required. // If this page is being filtered in the current subsite, then no custom validation query is required.
$subsiteID = SubsiteState::singleton()->getSubsiteId(); $subsiteID = SubsiteState::singleton()->getSubsiteId();
@ -518,7 +518,7 @@ class SiteTreeSubsites extends DataExtension
/** /**
* Return a piece of text to keep DataObject cache keys appropriately specific * Return a piece of text to keep DataObject cache keys appropriately specific
*/ */
public function cacheKeyComponent() protected function cacheKeyComponent()
{ {
return 'subsite-' . SubsiteState::singleton()->getSubsiteId(); return 'subsite-' . SubsiteState::singleton()->getSubsiteId();
} }

View File

@ -819,7 +819,7 @@ class Subsite extends DataObject
* *
* @return void * @return void
*/ */
public function onAfterWrite() protected function onAfterWrite()
{ {
Subsite::writeHostMap(); Subsite::writeHostMap();
if ($this->isChanged('ID')) { if ($this->isChanged('ID')) {

View File

@ -95,7 +95,7 @@ class SubsiteDomain extends DataObject
* *
* @return void * @return void
*/ */
public function onAfterWrite() protected function onAfterWrite()
{ {
Subsite::writeHostMap(); Subsite::writeHostMap();
parent::onAfterWrite(); parent::onAfterWrite();

View File

@ -192,7 +192,7 @@ class SubsitesVirtualPage extends VirtualPage
Subsite::$disable_subsite_filter = $oldState; Subsite::$disable_subsite_filter = $oldState;
} }
public function onBeforeWrite() protected function onBeforeWrite()
{ {
parent::onBeforeWrite(); parent::onBeforeWrite();

View File

@ -9,6 +9,7 @@ use SilverStripe\Forms\FieldList;
use SilverStripe\Subsites\Extensions\FileSubsites; use SilverStripe\Subsites\Extensions\FileSubsites;
use SilverStripe\Subsites\Model\Subsite; use SilverStripe\Subsites\Model\Subsite;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use ReflectionMethod;
class FileSubsitesTest extends BaseSubsiteTest class FileSubsitesTest extends BaseSubsiteTest
{ {
@ -25,7 +26,11 @@ class FileSubsitesTest extends BaseSubsiteTest
$this->assertEquals('FileTitle', $file->getTreeTitle()); $this->assertEquals('FileTitle', $file->getTreeTitle());
$this->assertInstanceOf(FieldList::class, singleton(Folder::class)->getCMSFields()); $this->assertInstanceOf(FieldList::class, singleton(Folder::class)->getCMSFields());
Subsite::changeSubsite(1); Subsite::changeSubsite(1);
$this->assertEquals('subsite-1', $file->getExtensionInstance(FileSubsites::class)->cacheKeyComponent()); $ext = $file->getExtensionInstance(FileSubsites::class);
$method = new ReflectionMethod(FileSubsites::class, 'cacheKeyComponent');
$method->setAccessible(true);
$result = $method->invoke($ext);
$this->assertEquals('subsite-1', $result);
} }
public function testWritingSubsiteID() public function testWritingSubsiteID()
@ -35,10 +40,13 @@ class FileSubsitesTest extends BaseSubsiteTest
$subsite = $this->objFromFixture(Subsite::class, 'domaintest1'); $subsite = $this->objFromFixture(Subsite::class, 'domaintest1');
Config::modify()->set(FileSubsites::class, 'default_root_folders_global', true); Config::modify()->set(FileSubsites::class, 'default_root_folders_global', true);
$method = new ReflectionMethod(File::class, 'onAfterUpload');
$method->setAccessible(true);
Subsite::changeSubsite(0); Subsite::changeSubsite(0);
$file = new File(); $file = new File();
$file->write(); $file->write();
$file->onAfterUpload(); $method->invoke($file);
$this->assertEquals((int)$file->SubsiteID, 0); $this->assertEquals((int)$file->SubsiteID, 0);
Subsite::changeSubsite($subsite->ID); Subsite::changeSubsite($subsite->ID);
@ -63,7 +71,7 @@ class FileSubsitesTest extends BaseSubsiteTest
Config::modify()->set(FileSubsites::class, 'default_root_folders_global', true); Config::modify()->set(FileSubsites::class, 'default_root_folders_global', true);
$file = new File(); $file = new File();
$file->ParentID = $folder->ID; $file->ParentID = $folder->ID;
$file->onAfterUpload(); $method->invoke($file);
$this->assertEquals($folder->SubsiteID, $file->SubsiteID); $this->assertEquals($folder->SubsiteID, $file->SubsiteID);
} }