diff --git a/core/model/Versioned.php b/core/model/Versioned.php index 53dab3d55..0f3faf341 100755 --- a/core/model/Versioned.php +++ b/core/model/Versioned.php @@ -410,9 +410,13 @@ class Versioned extends DataObjectDecorator { * @return boolean Returns false if the field isn't in the table, true otherwise */ function hasVersionField($table) { - - $tableParts = explode('_',$table); - return ('DataObject' == get_parent_class($tableParts[0])); + $rPos = strrpos($table,'_'); + if(($rPos !== false) && in_array(substr($table,$rPos), $this->stages)) { + $tableWithoutStage = substr($table,0,$rPos); + } else { + $tableWithoutStage = $table; + } + return ('DataObject' == get_parent_class($tableWithoutStage)); } function extendWithSuffix($table) { foreach (Versioned::$versionableExtensions as $versionableExtension => $suffixes) { diff --git a/tests/model/VersionedTest.php b/tests/model/VersionedTest.php index 8eabf6a23..3b27384ca 100644 --- a/tests/model/VersionedTest.php +++ b/tests/model/VersionedTest.php @@ -8,13 +8,16 @@ class VersionedTest extends SapphireTest { ); function testForceChangeUpdatesVersion() { - $page = $this->objFromFixture('Page', 'page3'); - $oldVersion = $page->Version; - $page->forceChange(); - $page->write(); + $obj = new VersionedTest_DataObject(); + $obj->Name = "test"; + $obj->write(); + + $oldVersion = $obj->Version; + $obj->forceChange(); + $obj->write(); $this->assertTrue( - ($page->Version > $oldVersion), + ($obj->Version > $oldVersion), "A object Version is increased when just calling forceChange() without any other changes" ); }