From d0aafae7c5bf73d14abf9331f7c00afc3c7b7c1c Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 26 Nov 2008 04:03:14 +0000 Subject: [PATCH] BUGFIX SiteTreeSubsites->canEdit() returns true if no subsites are defined (meaning it won't prevent editing, but the permission might still be denied by SiteTree->canEdit()) --- code/SiteTreeSubsites.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/code/SiteTreeSubsites.php b/code/SiteTreeSubsites.php index 83acbcf..b927498 100644 --- a/code/SiteTreeSubsites.php +++ b/code/SiteTreeSubsites.php @@ -104,8 +104,14 @@ class SiteTreeSubsites extends DataObjectDecorator { * @return boolean */ function canEdit($member = null) { - if(!$member) $member = Member::currentUser(); + if(!$member && $member !== FALSE) $member = Member::currentUser(); + // if no subsites exist, member can edit from a subsites perspective + $allSubsites = DataObject::get('Subsite'); + if(!$allSubsites) return true; + + // otherwise get all allowed subsites, and check if the subsite + // this page belongs to is in the list $allowedSubsites = Subsite::getSubsitesForMember($member); if( !$allowedSubsites @@ -121,7 +127,7 @@ class SiteTreeSubsites extends DataObjectDecorator { * @return boolean */ function canDelete($member = null) { - if(!$member) $member = Member::currentUser(); + if(!$member && $member !== FALSE) $member = Member::currentUser(); return $this->canEdit($member); } @@ -130,7 +136,7 @@ class SiteTreeSubsites extends DataObjectDecorator { * @return boolean */ function canAddChildren($member = null) { - if(!$member) $member = Member::currentUser(); + if(!$member && $member !== FALSE) $member = Member::currentUser(); return $this->canEdit($member); } @@ -139,8 +145,8 @@ class SiteTreeSubsites extends DataObjectDecorator { * @return boolean */ function canPublish($member = null) { - if(!$member) $member = Member::currentUser(); - + if(!$member && $member !== FALSE) $member = Member::currentUser(); + return $this->canEdit($member); }