FIX Ensure orphaned pages don't result in exceptions

This commit is contained in:
Guy Sartorelli 2023-12-20 15:42:11 +13:00
parent e1da194f2c
commit af67ed3382
No known key found for this signature in database
GPG Key ID: F313E3B9504D496A
1 changed files with 5 additions and 5 deletions

View File

@ -683,7 +683,7 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
*/
public function RelativeLink($action = null)
{
if ($this->ParentID && self::config()->get('nested_urls')) {
if (self::config()->get('nested_urls') && $this->ParentID && $this->getParent()?->exists()) {
$parent = $this->getParent();
// If page is removed select parent from version history (for archive page view)
if ((!$parent || !$parent->exists()) && !$this->isOnDraft()) {
@ -1175,7 +1175,7 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
// check for inherit
if ($this->CanViewType === InheritedPermissions::INHERIT) {
if ($this->ParentID) {
if ($this->ParentID && $this->getParent()?->exists()) {
return $this->getParent()->canView($member);
} else {
return $this->getSiteConfig()->canViewPages($member);
@ -1870,7 +1870,7 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
public function validURLSegment()
{
// Check known urlsegment blacklists
if (self::config()->get('nested_urls') && $this->ParentID) {
if (self::config()->get('nested_urls') && $this->ParentID && $this->getParent()?->exists()) {
// Guard against url segments for sub-pages
$parent = $this->getParent();
if ($controller = ModelAsController::controller_for($parent)) {
@ -2132,7 +2132,7 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
$baseLink = Controller::join_links(
Director::absoluteBaseURL(),
(self::config()->get('nested_urls') && $this->ParentID ? $this->getParent()->RelativeLink(true) : null)
(self::config()->get('nested_urls') && $this->ParentID ? $this->getParent()?->RelativeLink(true) : null)
);
$urlsegment = SiteTreeURLSegmentField::create("URLSegment", $this->fieldLabel('URLSegment'))
@ -3048,7 +3048,7 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
public function getPageLevel()
{
if ($this->ParentID) {
return 1 + $this->getParent()->getPageLevel();
return 1 + $this->getParent()?->getPageLevel();
}
return 1;
}