Skip to content

Commit

Permalink
Merge pull request #2879 from creative-commoners/pulls/4.13/deppage-n…
Browse files Browse the repository at this point in the history
…on-sitetree-items

FIX SiteTree::DependentPages method returns non-SiteTree instance
  • Loading branch information
GuySartorelli authored Aug 31, 2023
2 parents 14037a7 + 269eb5d commit 90e3099
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
6 changes: 4 additions & 2 deletions code/Model/SiteTree.php
Original file line number Diff line number Diff line change
Expand Up @@ -2612,8 +2612,10 @@ public function onAfterRevertToLive()

// Need to update pages linking to this one as no longer broken
foreach ($stageSelf->DependentPages() as $page) {
/** @var SiteTree $page */
$page->writeWithoutVersion();
if ($page->hasExtension(Versioned::class)) {
/** @var Versioned $page */
$page->writeWithoutVersion();
}
}
}

Expand Down
21 changes: 21 additions & 0 deletions tests/php/Model/SiteTreeTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use SilverStripe\CMS\Tests\Controllers\SiteTreeTest_NamespaceMapTestController;
use SilverStripe\CMS\Tests\CMSEditLinkExtensionTest\BelongsToPage;
use SilverStripe\CMS\Tests\CMSEditLinkExtensionTest\PageWithChild;
use SilverStripe\CMS\Tests\Model\SiteTreeBrokenLinksTest\NotPageObject;
use SilverStripe\CMS\Tests\Page\SiteTreeTest_NamespaceMapTest;
use SilverStripe\Control\ContentNegotiator;
use SilverStripe\Control\Controller;
Expand Down Expand Up @@ -69,6 +70,7 @@ class SiteTreeTest extends SapphireTest
SiteTreeTest_DataObject::class,
PageWithChild::class,
BelongsToPage::class,
NotPageObject::class,
];

public function reservedSegmentsProvider()
Expand Down Expand Up @@ -2119,4 +2121,23 @@ public function provideSanatiseInvalidExtraMeta(): array
]
];
}

public function testOnAfterRevertToLive()
{
// Create new page and publish it
$page = SiteTree::create();
$page->Content = 'Test content';
$id = $page->write();
$page->publishRecursive();

// Add link to non-page object
/** @var NotPageObject $obj */
$obj = $this->objFromFixture(NotPageObject::class, 'object1');
$obj->Content = '<a href="[sitetree_link,id='. $id .']">Link to Page</a>';
$obj->write();

//Test that method doesn't throw exception
$this->expectNotToPerformAssertions();
$page->onAfterRevertToLive();
}
}
4 changes: 4 additions & 0 deletions tests/php/Model/SiteTreeTest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,3 +128,7 @@ SilverStripe\CMS\Tests\Model\SiteTreeTest_DataObject:
relations:
Title: 'Linked DataObject'
Pages: =>Page.home,=>Page.about,=>Page.staff

SilverStripe\CMS\Tests\Model\SiteTreeBrokenLinksTest\NotPageObject:
object1:
Content: 'Everything will be ok'

0 comments on commit 90e3099

Please sign in to comment.