From bed078c16dd73bc08536abb69c9312359f1e1d3d Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Mon, 12 Apr 2010 03:12:45 +0000 Subject: [PATCH] API CHANGE: Added canDeleteFromLive permission to SiteTree, separate from canPublish (from r93315) (from r96756) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@102388 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- core/model/SiteTree.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/core/model/SiteTree.php b/core/model/SiteTree.php index 9e1990927..bf728486c 100755 --- a/core/model/SiteTree.php +++ b/core/model/SiteTree.php @@ -919,6 +919,15 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid return $this->canEdit($member); } + public function canDeleteFromLive($member = null) { + // If we have a result, then that means at least one decorator specified canDeleteFromLive + // Allow the permission check only if *all* voting decorators allow it. + $results = $this->extend('canDeleteFromLive', $member); + if($results && is_array($results)) if(!min($results)) return false; + + return $this->canPublish($member); + } + /** * Stub method to get the site config, provided so it's easy to override */ @@ -1943,7 +1952,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid * @uses SiteTreeDecorator->onAfterUnpublish() */ function doUnpublish() { - if (!$this->canPublish()) return false; + if (!$this->canDeleteFromLive()) return false; $this->extend('onBeforeUnpublish'); @@ -2015,6 +2024,8 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid Versioned::reading_stage($origStage); $this->extend('onAfterUnpublish'); + + return true; } /**