From 2aed7be053c2cf9765a5482c98ad193c65c69e58 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 15 Oct 2010 02:56:05 +0000 Subject: [PATCH] BUGFIX: Fixed SiteTree::IsModifiedOnStage() for an edge-case that was identified when deleteFromStage() stopped manipulating the current record. (from r106082) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@112516 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- core/model/SiteTree.php | 2 +- core/model/Versioned.php | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/model/SiteTree.php b/core/model/SiteTree.php index 87f7f426f..3cac882e7 100755 --- a/core/model/SiteTree.php +++ b/core/model/SiteTree.php @@ -2482,7 +2482,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid $stageVersion = Versioned::get_versionnumber_by_stage('SiteTree', 'Stage', $this->ID); $liveVersion = Versioned::get_versionnumber_by_stage('SiteTree', 'Live', $this->ID); - return ($stageVersion != $liveVersion); + return ($stageVersion && $stageVersion != $liveVersion); } /** diff --git a/core/model/Versioned.php b/core/model/Versioned.php index b812586a4..93b990a13 100755 --- a/core/model/Versioned.php +++ b/core/model/Versioned.php @@ -801,6 +801,11 @@ class Versioned extends DataObjectDecorator { $clone = clone $this->owner; $result = $clone->delete(); Versioned::set_reading_mode($oldMode); + + // Fix the version number cache (in case you go delete from stage and then check ExistsOnLive) + $baseClass = ClassInfo::baseDataClass($this->owner->class); + self::$cache_versionnumber[$baseClass][$stage][$this->owner->ID] = null; + return $result; }