From 488a04c670e42602754dc1ecff596bf2e31629a4 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Sun, 22 Nov 2009 18:16:38 +1300 Subject: [PATCH] BUGFIX: Updated models to suit minor changes in the new ORM. --- code/model/SiteTree.php | 16 ++++++++++------ tests/model/SiteTreePermissionsTest.php | 2 -- tests/model/SiteTreeTest.php | 11 +++++++++-- tests/model/VirtualPageTest.php | 4 ++-- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index d22c65ad..c3bf5cc2 100755 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -269,8 +269,8 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid ); /// Fall back on a unique URLSegment for b/c. - if(!$sitetree && self::nested_urls() && $pages = DataObject::get('SiteTree', "\"URLSegment\" = '$URLSegment'")) { - return ($pages->Count() == 1) ? $pages->First() : null; + if(!$sitetree && self::nested_urls() && $page = DataObject::get('SiteTree', "\"URLSegment\" = '$URLSegment'")->First()) { + return $page; } // Attempt to grab an alternative page from extensions. @@ -1612,9 +1612,13 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid if(is_callable('Subsite::disable_subsite_filter')) Subsite::disable_subsite_filter(true); // Content links - $items = $this->BackLinkTracking(); - if(!$items) $items = new DataObjectSet(); - else foreach($items as $item) $item->DependentLinkType = 'Content link'; + $items = new DataObjectSet(); + + // We merge all into a regular DataObjectSet, because DataList doesn't support merge + if($contentLinks = $this->BackLinkTracking()) { + foreach($contentLinks as $item) $item->DependentLinkType = 'Content link'; + $items->merge($contentLinks); + } // Virtual pages if($includeVirtuals) { @@ -1696,7 +1700,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid $parentPageLinks = array(); - if(isset($linkedPages)) { + if($linkedPages->Count() > 0) { foreach($linkedPages as $linkedPage) { $parentPage = $linkedPage->Parent; if($parentPage) { diff --git a/tests/model/SiteTreePermissionsTest.php b/tests/model/SiteTreePermissionsTest.php index 72e2222f..d32afcc0 100755 --- a/tests/model/SiteTreePermissionsTest.php +++ b/tests/model/SiteTreePermissionsTest.php @@ -410,7 +410,6 @@ class SiteTreePermissionsTest extends FunctionalTest { $siteconfig->CanViewType = 'OnlyTheseUsers'; $siteconfig->ViewerGroups()->add($editorGroup); - $siteconfig->ViewerGroups()->write(); $siteconfig->write(); $this->assertTrue($page->canView($editor), 'Editors can view a page when set to inherit from the SiteConfig, and SiteConfig has canView set to OnlyTheseUsers'); $this->assertFalse($page->canView(FALSE), 'Anonymous can\'t view a page when set to inherit from the SiteConfig, and SiteConfig has canView set to OnlyTheseUsers'); @@ -432,7 +431,6 @@ class SiteTreePermissionsTest extends FunctionalTest { $siteconfig->CanEditType = 'OnlyTheseUsers'; $siteconfig->EditorGroups()->add($editorGroup); - $siteconfig->EditorGroups()->write(); $siteconfig->write(); $this->assertTrue($page->canEdit($editor), 'Editors can edit a page when set to inherit from the SiteConfig, and SiteConfig has canEdit set to OnlyTheseUsers'); $this->session()->inst_set('loggedInAs', null); diff --git a/tests/model/SiteTreeTest.php b/tests/model/SiteTreeTest.php index 26db712a..e0264c25 100755 --- a/tests/model/SiteTreeTest.php +++ b/tests/model/SiteTreeTest.php @@ -296,8 +296,8 @@ class SiteTreeTest extends SapphireTest { Versioned::reading_stage('Live'); $deletedPage = Versioned::get_latest_version('SiteTree', $page2ID); $deletedPage->doRestoreToStage(); - $this->assertTrue(!Versioned::get_one_by_stage("Page", "Live", "\"SiteTree\".\"ID\" = " . $page2ID)); - + $this->assertFalse((bool)Versioned::get_one_by_stage("Page", "Live", "\"SiteTree\".\"ID\" = " . $page2ID)); + Versioned::reading_stage('Stage'); $requeriedPage = DataObject::get_by_id("Page", $page2ID); $this->assertEquals('Products', $requeriedPage->Title); @@ -385,9 +385,16 @@ class SiteTreeTest extends SapphireTest { $pageStaffDuplicate->doPublish(); $parentPage = $this->objFromFixture('Page', 'about'); + $parentPage->doDeleteFromLive(); Versioned::reading_stage('Live'); + + // Confirm that none of the given pages exist + $this->assertEquals(array(), DataObject::get("Page") + ->byIDs(array($pageAbout->ID, $pageStaff->ID, $pageStaffDuplicate->ID)) + ->column('URLSegment')); + $this->assertFalse(DataObject::get_by_id('Page', $pageAbout->ID)); $this->assertTrue(DataObject::get_by_id('Page', $pageStaff->ID) instanceof Page); $this->assertTrue(DataObject::get_by_id('Page', $pageStaffDuplicate->ID) instanceof Page); diff --git a/tests/model/VirtualPageTest.php b/tests/model/VirtualPageTest.php index 91d8b747..5f3591ab 100644 --- a/tests/model/VirtualPageTest.php +++ b/tests/model/VirtualPageTest.php @@ -273,7 +273,7 @@ class VirtualPageTest extends SapphireTest { // Unpublish the source page, confirm that the virtual page has also been unpublished $p->doUnpublish(); $vpLive = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $vp->ID); - $this->assertFalse($vpLive); + $this->assertNull($vpLive); // Delete from draft, confirm that the virtual page has a broken link on the draft site $p->delete(); @@ -307,7 +307,7 @@ class VirtualPageTest extends SapphireTest { $pLive = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $pID); $this->assertTrue($pLive->doDeleteFromLive()); $vpLive = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $vp->ID); - $this->assertFalse($vpLive); + $this->assertNull($vpLive); // Delete from draft, confirm that the virtual page has a broken link on the draft site $pLive->delete();