From 488a04c670e42602754dc1ecff596bf2e31629a4 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Sun, 22 Nov 2009 18:16:38 +1300 Subject: [PATCH 01/11] 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(); From afcacde5df72cf63d219e24ef6d12ee450d60cbb Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Mon, 21 Mar 2011 19:58:01 +1300 Subject: [PATCH 02/11] API CHANGE: Removed context object - it's a hack. --- code/model/SiteTree.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index c3bf5cc2..88fd8086 100755 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -1378,16 +1378,12 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid $this->URLSegment = $segment; } - DataObject::set_context_obj($this); - // Ensure that this object has a non-conflicting URLSegment value. $count = 2; while(!$this->validURLSegment()) { $this->URLSegment = preg_replace('/-[0-9]+$/', null, $this->URLSegment) . '-' . $count; $count++; } - - DataObject::set_context_obj(null); $this->syncLinkTracking(); From cd02c5502a52e6b37ace38e016fb9d9a021fa150 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Wed, 30 Mar 2011 18:00:46 +1300 Subject: [PATCH 03/11] BUGFIX: Fixed minor bug w/ SilverStripeNavigatorItem query. --- code/controller/SilverStripeNavigatorItem.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controller/SilverStripeNavigatorItem.php b/code/controller/SilverStripeNavigatorItem.php index 762e3988..0d11ce45 100644 --- a/code/controller/SilverStripeNavigatorItem.php +++ b/code/controller/SilverStripeNavigatorItem.php @@ -159,7 +159,7 @@ class SilverStripeNavigatorItem_ArchiveLink extends SilverStripeNavigatorItem { return "". _t('ContentController.ARCHIVEDSITE', 'Archived Site') .""; } else { // Display the archive link if the page currently displayed in the CMS is other version than live and draft - $currentDraft = Versioned::get_one_by_stage('SiteTree', 'Draft', '"SiteTree"."ID" = ' . $page->ID); + $currentDraft = Versioned::get_one_by_stage('SiteTree', 'Stage', '"SiteTree"."ID" = ' . $page->ID); $currentLive = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $page->ID); if( (!$currentDraft || ($currentDraft && $page->Version != $currentDraft->Version)) From 7cdbbd487f20941ca022f190053259e4f98bf867 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Wed, 30 Mar 2011 18:00:55 +1300 Subject: [PATCH 04/11] BUGFIX: Removed obsolete test. --- tests/model/SiteTreeTest.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/model/SiteTreeTest.php b/tests/model/SiteTreeTest.php index e0264c25..a06d8be2 100755 --- a/tests/model/SiteTreeTest.php +++ b/tests/model/SiteTreeTest.php @@ -389,11 +389,6 @@ class SiteTreeTest extends SapphireTest { $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); From a04ac5ebbe7b7e88534cc953af058ca37a6b9dde Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Wed, 30 Mar 2011 18:05:51 +1300 Subject: [PATCH 05/11] MINOR: Added more explicit test to aid w/ debugging. --- tests/model/VirtualPageTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/model/VirtualPageTest.php b/tests/model/VirtualPageTest.php index 5f3591ab..5b96bf5b 100644 --- a/tests/model/VirtualPageTest.php +++ b/tests/model/VirtualPageTest.php @@ -272,6 +272,12 @@ class VirtualPageTest extends SapphireTest { // Unpublish the source page, confirm that the virtual page has also been unpublished $p->doUnpublish(); + + // The draft VP still has the CopyContentFromID link + $vp->flushCache(); + $vp = DataObject::get_by_id('SiteTree', $vp->ID); + $this->assertEquals($p->ID, $vp->CopyContentFromID); + $vpLive = Versioned::get_one_by_stage('SiteTree', 'Live', '"SiteTree"."ID" = ' . $vp->ID); $this->assertNull($vpLive); From 509d32e58f2e7f85d89a1499b2e95fbcf810f640 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Wed, 30 Mar 2011 18:57:50 +1300 Subject: [PATCH 06/11] BUGFIX: Fix SiteTree broken link correction to handle the fact that relations aren't cached. --- code/model/SiteTreeFileExtension.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/model/SiteTreeFileExtension.php b/code/model/SiteTreeFileExtension.php index 337c95bc..d794f28d 100644 --- a/code/model/SiteTreeFileExtension.php +++ b/code/model/SiteTreeFileExtension.php @@ -31,17 +31,23 @@ class SiteTreeFileExtension extends DataExtension { * Updates link tracking. */ function onAfterDelete() { - $brokenPages = $this->owner->BackLinkTracking(); - if($brokenPages) { + // We query the explicit ID list, because BackLinkTracking will get modified after the stage + // site does its thing + $brokenPageIDs = $this->owner->BackLinkTracking()->column("ID"); + if($brokenPageIDs) { $origStage = Versioned::current_stage(); // This will syncLinkTracking on draft Versioned::reading_stage('Stage'); + $brokenPages = DataObject::get('SiteTree')->byIDs($brokenPageIDs); foreach($brokenPages as $brokenPage) $brokenPage->write(); // This will syncLinkTracking on published Versioned::reading_stage('Live'); - foreach($brokenPages as $brokenPage) $brokenPage->write(); + $liveBrokenPages = DataObject::get('SiteTree')->byIDs($brokenPageIDs); + foreach($liveBrokenPages as $brokenPage) { + $brokenPage->write(); + } Versioned::reading_stage($origStage); } From b0348321528e5fc011983b304bd22adc427ede13 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Sun, 1 May 2011 17:42:27 +1200 Subject: [PATCH 07/11] BUGFIX: Fix bugs introduced by the expectation of having a DataModel. --- code/controller/ContentController.php | 11 ++++++----- code/controller/ModelAsController.php | 5 +++-- code/controller/RootURLController.php | 5 +++-- code/model/ErrorPage.php | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/code/controller/ContentController.php b/code/controller/ContentController.php index 940e41cc..22da4a4d 100755 --- a/code/controller/ContentController.php +++ b/code/controller/ContentController.php @@ -133,9 +133,10 @@ class ContentController extends Controller { * * @return SS_HTTPResponse */ - public function handleRequest(SS_HTTPRequest $request) { + public function handleRequest(SS_HTTPRequest $request, DataModel $model) { $child = null; $action = $request->param('Action'); + $this->setModel($model); // If nested URLs are enabled, and there is no action handler for the current request then attempt to pass // control to a child controller. This allows for the creation of chains of controllers which correspond to a @@ -144,9 +145,9 @@ class ContentController extends Controller { // See ModelAdController->getNestedController() for similar logic if(class_exists('Translatable')) Translatable::disable_locale_filter(); // look for a page with this URLSegment - $child = DataObject::get_one('SiteTree', sprintf ( + $child = $this->model->SiteTree->where(sprintf ( "\"ParentID\" = %s AND \"URLSegment\" = '%s'", $this->ID, Convert::raw2sql($action) - )); + ))->First(); if(class_exists('Translatable')) Translatable::enable_locale_filter(); // if we can't find a page with this URLSegment try to find one that used to have @@ -180,7 +181,7 @@ class ContentController extends Controller { $request->shiftAllParams(); $request->shift(); - $response = ModelAsController::controller_for($child)->handleRequest($request); + $response = ModelAsController::controller_for($child)->handleRequest($request, $model); } else { // If a specific locale is requested, and it doesn't match the page found by URLSegment, // look for a translation and redirect (see #5001). Only happens on the last child in @@ -197,7 +198,7 @@ class ContentController extends Controller { } Director::set_current_page($this->data()); - $response = parent::handleRequest($request); + $response = parent::handleRequest($request, $model); Director::set_current_page(null); } diff --git a/code/controller/ModelAsController.php b/code/controller/ModelAsController.php index 1faac691..8789f2da 100755 --- a/code/controller/ModelAsController.php +++ b/code/controller/ModelAsController.php @@ -36,8 +36,9 @@ class ModelAsController extends Controller implements NestedController { * @uses ModelAsController::getNestedController() * @return SS_HTTPResponse */ - public function handleRequest(SS_HTTPRequest $request) { + public function handleRequest(SS_HTTPRequest $request, DataModel $model) { $this->request = $request; + $this->setModel($model); $this->pushCurrent(); @@ -64,7 +65,7 @@ class ModelAsController extends Controller implements NestedController { $result = $this->getNestedController(); if($result instanceof RequestHandler) { - $result = $result->handleRequest($this->request); + $result = $result->handleRequest($this->request, $model); } else if(!($result instanceof SS_HTTPResponse)) { user_error("ModelAsController::getNestedController() returned bad object type '" . get_class($result)."'", E_USER_WARNING); diff --git a/code/controller/RootURLController.php b/code/controller/RootURLController.php index c9ebfacf..5d01e32d 100755 --- a/code/controller/RootURLController.php +++ b/code/controller/RootURLController.php @@ -91,8 +91,9 @@ class RootURLController extends Controller { * @param SS_HTTPRequest $request * @return SS_HTTPResponse */ - public function handleRequest(SS_HTTPRequest $request) { + public function handleRequest(SS_HTTPRequest $request, DataModel $model) { self::$is_at_root = true; + $this->setModel($model); $this->pushCurrent(); $this->init(); @@ -109,7 +110,7 @@ class RootURLController extends Controller { $request->match('$URLSegment//$Action', true); $controller = new ModelAsController(); - $result = $controller->handleRequest($request); + $result = $controller->handleRequest($request, $model); $this->popCurrent(); return $result; diff --git a/code/model/ErrorPage.php b/code/model/ErrorPage.php index 753097c5..130157f8 100755 --- a/code/model/ErrorPage.php +++ b/code/model/ErrorPage.php @@ -39,7 +39,7 @@ class ErrorPage extends Page { public static function response_for($statusCode) { // first attempt to dynamically generate the error page if($errorPage = DataObject::get_one('ErrorPage', "\"ErrorCode\" = $statusCode")) { - return ModelAsController::controller_for($errorPage)->handleRequest(new SS_HTTPRequest('GET', '')); + return ModelAsController::controller_for($errorPage)->handleRequest(new SS_HTTPRequest('GET', ''), DataModel::inst()); } // then fall back on a cached version From 62d86bb18cdfff5902c99e83a0fbd9ceb829d476 Mon Sep 17 00:00:00 2001 From: ajshort Date: Tue, 3 May 2011 12:17:02 +1000 Subject: [PATCH 08/11] MINOR: Updated methods which expect a DataObjectSet to accept an SS_List. --- code/batchactions/CMSBatchActions.php | 8 ++++---- code/controller/AssetAdmin.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) mode change 100755 => 100644 code/controller/AssetAdmin.php diff --git a/code/batchactions/CMSBatchActions.php b/code/batchactions/CMSBatchActions.php index 892adaf3..9c323406 100644 --- a/code/batchactions/CMSBatchActions.php +++ b/code/batchactions/CMSBatchActions.php @@ -10,7 +10,7 @@ class CMSBatchAction_Publish extends CMSBatchAction { return _t('CMSBatchActions.PUBLISH_PAGES', 'Publish'); } - function run(DataObjectSet $pages) { + function run(SS_List $pages) { return $this->batchaction($pages, 'doPublish', _t('CMSBatchActions.PUBLISHED_PAGES', 'Published %d pages, %d failures') ); @@ -32,7 +32,7 @@ class CMSBatchAction_Unpublish extends CMSBatchAction { return _t('CMSBatchActions.UNPUBLISH_PAGES', 'Un-publish'); } - function run(DataObjectSet $pages) { + function run(SS_List $pages) { return $this->batchaction($pages, 'doUnpublish', _t('CMSBatchActions.UNPUBLISHED_PAGES', 'Un-published %d pages') ); @@ -50,7 +50,7 @@ class CMSBatchAction_Delete extends CMSBatchAction { return _t('CMSBatchActions.DELETE_DRAFT_PAGES', 'Delete from draft site'); } - function run(DataObjectSet $pages) { + function run(SS_List $pages) { $status = array( 'modified'=>array(), 'deleted'=>array(), @@ -98,7 +98,7 @@ class CMSBatchAction_DeleteFromLive extends CMSBatchAction { } - function run(DataObjectSet $pages) { + function run(SS_List $pages) { $status = array( 'modified'=>array(), 'deleted'=>array() diff --git a/code/controller/AssetAdmin.php b/code/controller/AssetAdmin.php old mode 100755 new mode 100644 index 7b963e44..6cac0ba0 --- a/code/controller/AssetAdmin.php +++ b/code/controller/AssetAdmin.php @@ -520,7 +520,7 @@ class AssetAdmin_DeleteBatchAction extends CMSBatchAction { return _t('AssetAdmin_DeleteBatchAction.TITLE', 'Delete folders'); } - function run(DataObjectSet $records) { + function run(SS_List $records) { $status = array( 'modified'=>array(), 'deleted'=>array() From 435867d516018d0d38b9fc5d5273264f117fc33f Mon Sep 17 00:00:00 2001 From: ajshort Date: Tue, 3 May 2011 13:05:14 +1000 Subject: [PATCH 09/11] MINOR: Replaced usage of deprecated toDropdownMap() with map(). --- tests/model/SiteTreeTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) mode change 100755 => 100644 tests/model/SiteTreeTest.php diff --git a/tests/model/SiteTreeTest.php b/tests/model/SiteTreeTest.php old mode 100755 new mode 100644 index a06d8be2..8ad36a3e --- a/tests/model/SiteTreeTest.php +++ b/tests/model/SiteTreeTest.php @@ -188,9 +188,9 @@ class SiteTreeTest extends SapphireTest { /* If we create a new SiteTree object with ID = 0 */ $obj = new SiteTree(); /* Then its children should be the top-level pages */ - $stageChildren = $obj->stageChildren()->toDropDownMap('ID','Title'); - $liveChildren = $obj->liveChildren()->toDropDownMap('ID','Title'); - $allChildren = $obj->AllChildrenIncludingDeleted()->toDropDownMap('ID','Title'); + $stageChildren = $obj->stageChildren()->map('ID','Title'); + $liveChildren = $obj->liveChildren()->map('ID','Title'); + $allChildren = $obj->AllChildrenIncludingDeleted()->map('ID','Title'); $this->assertContains('Home', $stageChildren); $this->assertContains('Products', $stageChildren); From e7acf678a91b68b1a9d5b2e79d7f91010cba88d5 Mon Sep 17 00:00:00 2001 From: ajshort Date: Tue, 3 May 2011 20:26:04 +1000 Subject: [PATCH 10/11] MINOR: Replaced containsIDs() calls in tests with assertContains() and column(). --- tests/model/SiteTreeBacklinksTest.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/model/SiteTreeBacklinksTest.php b/tests/model/SiteTreeBacklinksTest.php index 98d44e84..8eb72b6a 100644 --- a/tests/model/SiteTreeBacklinksTest.php +++ b/tests/model/SiteTreeBacklinksTest.php @@ -33,7 +33,7 @@ class SiteTreeBacklinksTest extends SapphireTest { // assert backlink to page 2 doesn't exist $page2 = $this->objFromFixture('Page', 'page2'); - $this->assertFalse($page1->BackLinkTracking()->containsIDs(array($page2->ID)), 'Assert backlink to page 2 doesn\'t exist'); + $this->assertNotContains($page2->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 2 doesn\'t exist'); // add hyperlink to page 1 on page 2 $page2->Content .= '

Testing page 1 link

'; @@ -43,7 +43,7 @@ class SiteTreeBacklinksTest extends SapphireTest { $page1 = $this->objFromFixture('Page', 'page1'); // assert backlink to page 2 exists - $this->assertTrue($page1->BackLinkTracking()->containsIDs(array($page2->ID)), 'Assert backlink to page 2 exists'); + $this->assertContains($page2->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 2 exists'); } function testRemovingLinkFromPageRemovesBacklink() { @@ -52,7 +52,7 @@ class SiteTreeBacklinksTest extends SapphireTest { // assert backlink to page 3 exits $page3 = $this->objFromFixture('Page', 'page3'); - $this->assertTrue($page1->BackLinkTracking()->containsIDs(array($page3->ID)), 'Assert backlink to page 3 exists'); + $this->assertContains($page3->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 3 exists'); // remove hyperlink to page 1 $page3->Content = '

No links anymore!

'; @@ -62,7 +62,7 @@ class SiteTreeBacklinksTest extends SapphireTest { $page1 = $this->objFromFixture('Page', 'page1'); // assert backlink to page 3 exists - $this->assertFalse($page1->BackLinkTracking()->containsIDs(array($page3->ID)), 'Assert backlink to page 3 doesn\'t exist'); + $this->assertNotContains($page3->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 3 doesn\'t exist'); } function testChangingUrlOnDraftSiteRewritesLink() { @@ -71,7 +71,7 @@ class SiteTreeBacklinksTest extends SapphireTest { // assert backlink to page 3 exists $page3 = $this->objFromFixture('Page', 'page3'); - $this->assertTrue($page1->BackLinkTracking()->containsIDs(array($page3->ID)), 'Assert backlink to page 3 exists'); + $this->assertContains($page3->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 3 exists'); // assert hyperlink to page 1's current url exists on page 3 $links = HTTP::getLinksIn($page3->obj('Content')->forTemplate()); @@ -101,7 +101,7 @@ class SiteTreeBacklinksTest extends SapphireTest { $page3live = Versioned::get_one_by_stage('Page', 'Live', '"SiteTree"."ID" = ' . $page3->ID); // assert backlink to page 3 exists - $this->assertTrue($page1live->BackLinkTracking()->containsIDs(array($page3live->ID)), 'Assert backlink to page 3 exists'); + $this->assertContains($page3live->ID, $page1live->BackLinkTracking()->column('ID'), 'Assert backlink to page 3 exists'); // assert hyperlink to page 1's current url exists on page 3 $links = HTTP::getLinksIn($page3live->obj('Content')->forTemplate()); @@ -202,7 +202,7 @@ class SiteTreeBacklinksTest extends SapphireTest { $page2->doPublish(); // assert backlink to page 2 doesn't exist - $this->assertFalse($page1->BackLinkTracking()->containsIDs(array($page2->ID)), 'Assert backlink to page 2 doesn\'t exist'); + $this->assertNotContains($page2->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 2 doesn\'t exist'); // add hyperlink to page 1 on page 2 $page2->ExtraContent .= '

Testing page 1 link

'; @@ -210,7 +210,7 @@ class SiteTreeBacklinksTest extends SapphireTest { $page2->doPublish(); // assert backlink to page 2 exists - $this->assertTrue($page1->BackLinkTracking()->containsIDs(array($page2->ID)), 'Assert backlink to page 2 exists'); + $this->assertContains($page2->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 2 exists'); // update page1 url $page1 = $this->objFromFixture('Page', 'page1'); @@ -237,7 +237,7 @@ class SiteTreeBacklinksTest extends SapphireTest { $page2->write(); // assert backlink to page 2 no longer exists - $this->assertFalse($page1->BackLinkTracking()->containsIDs(array($page2->ID)), 'Assert backlink to page 2 has been removed'); + $this->assertNotContains($page2->ID, $page1->BackLinkTracking()->column('ID'), 'Assert backlink to page 2 has been removed'); } } From 5cc549f57c3c6de5c5b64024c98df29a74d7297c Mon Sep 17 00:00:00 2001 From: ajshort Date: Thu, 5 May 2011 20:40:26 +1000 Subject: [PATCH 11/11] API CHANGE: Replaced DataObjectSet instances with ArrayList. --- code/controller/CMSMain.php | 2 +- code/controller/ContentController.php | 2 +- code/controller/ReportAdmin.php | 2 +- code/model/SiteTree.php | 2 +- code/reports/BrokenLinksReport.php | 2 +- code/widgets/WidgetArea.php | 2 +- code/widgets/WidgetAreaEditor.php | 2 +- tasks/RemoveOrphanedPagesTask.php | 2 +- tests/reports/SSReportTest.php | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) mode change 100755 => 100644 code/controller/CMSMain.php mode change 100755 => 100644 code/controller/ContentController.php mode change 100755 => 100644 code/controller/ReportAdmin.php mode change 100755 => 100644 code/model/SiteTree.php diff --git a/code/controller/CMSMain.php b/code/controller/CMSMain.php old mode 100755 new mode 100644 index 9b5e6459..885200a0 --- a/code/controller/CMSMain.php +++ b/code/controller/CMSMain.php @@ -280,7 +280,7 @@ JS; public function PageTypes() { $classes = SiteTree::page_type_classes(); - $result = new DataObjectSet(); + $result = new ArrayList(); foreach($classes as $class) { $instance = singleton($class); diff --git a/code/controller/ContentController.php b/code/controller/ContentController.php old mode 100755 new mode 100644 index 22da4a4d..be46167e --- a/code/controller/ContentController.php +++ b/code/controller/ContentController.php @@ -314,7 +314,7 @@ class ContentController extends Controller { } } - return new DataObjectSet($visible); + return new ArrayList($visible); } public function Menu($level) { diff --git a/code/controller/ReportAdmin.php b/code/controller/ReportAdmin.php old mode 100755 new mode 100644 index 9da06fda..2fb743cb --- a/code/controller/ReportAdmin.php +++ b/code/controller/ReportAdmin.php @@ -71,7 +71,7 @@ class ReportAdmin extends LeftAndMain { * @return DataObjectSet */ public function Reports() { - $output = new DataObjectSet(); + $output = new ArrayList(); foreach(SS_Report::get_reports('ReportAdmin') as $report) { if($report->canView()) $output->push($report); } diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php old mode 100755 new mode 100644 index 88fd8086..30811311 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -1608,7 +1608,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid if(is_callable('Subsite::disable_subsite_filter')) Subsite::disable_subsite_filter(true); // Content links - $items = new DataObjectSet(); + $items = new ArrayList(); // We merge all into a regular DataObjectSet, because DataList doesn't support merge if($contentLinks = $this->BackLinkTracking()) { diff --git a/code/reports/BrokenLinksReport.php b/code/reports/BrokenLinksReport.php index 96439bb4..04c7e466 100644 --- a/code/reports/BrokenLinksReport.php +++ b/code/reports/BrokenLinksReport.php @@ -33,7 +33,7 @@ class BrokenLinksReport extends SS_Report { if (!isset($_REQUEST['CheckSite']) || $params['CheckSite'] == 'Published') $ret = Versioned::get_by_stage('SiteTree', 'Live', "({$q}SiteTree{$q}.{$q}HasBrokenLink{$q} = 1 OR {$q}SiteTree{$q}.{$q}HasBrokenFile{$q} = 1)", $sort, $join, $limit); else $ret = DataObject::get('SiteTree', "({$q}SiteTree{$q}.{$q}HasBrokenFile{$q} = 1 OR {$q}HasBrokenLink{$q} = 1)", $sort, $join, $limit); - $returnSet = new DataObjectSet(); + $returnSet = new ArrayList(); if ($ret) foreach($ret as $record) { $reason = false; $isRedirectorPage = in_array($record->ClassName, ClassInfo::subclassesFor('RedirectorPage')); diff --git a/code/widgets/WidgetArea.php b/code/widgets/WidgetArea.php index 710da822..2d00a010 100644 --- a/code/widgets/WidgetArea.php +++ b/code/widgets/WidgetArea.php @@ -29,7 +29,7 @@ class WidgetArea extends DataObject { * @return DataObjectSet Collection of {@link Widget_Controller} */ function WidgetControllers() { - $controllers = new DataObjectSet(); + $controllers = new ArrayList(); foreach($this->ItemsToRender() as $widget) { // find controller diff --git a/code/widgets/WidgetAreaEditor.php b/code/widgets/WidgetAreaEditor.php index 230571b6..d53581a5 100644 --- a/code/widgets/WidgetAreaEditor.php +++ b/code/widgets/WidgetAreaEditor.php @@ -28,7 +28,7 @@ class WidgetAreaEditor extends FormField { function AvailableWidgets() { - $widgets= new DataObjectSet(); + $widgets= new ArrayList(); foreach($this->widgetClasses as $widgetClass) { $classes = ClassInfo::subclassesFor($widgetClass); diff --git a/tasks/RemoveOrphanedPagesTask.php b/tasks/RemoveOrphanedPagesTask.php index 30083d9f..7a5b9d0d 100644 --- a/tasks/RemoveOrphanedPagesTask.php +++ b/tasks/RemoveOrphanedPagesTask.php @@ -325,7 +325,7 @@ in the other stage:
$filter .= ($filter) ? ' AND ' : ''; $filter .= sprintf("\"%s\".\"ParentID\" != 0 AND \"Parents\".\"ID\" IS NULL", $class); - $orphans = new DataObjectSet(); + $orphans = new ArrayList(); foreach(array('Stage', 'Live') as $stage) { $joinByStage = $join; $table = $class; diff --git a/tests/reports/SSReportTest.php b/tests/reports/SSReportTest.php index 14ec8a8e..a805a7ba 100644 --- a/tests/reports/SSReportTest.php +++ b/tests/reports/SSReportTest.php @@ -22,6 +22,6 @@ class SSReportTest_FakeTest extends SS_Report implements TestOnly { ); } function sourceRecords($params, $sort, $limit) { - return new DataObjectSet(); + return new ArrayList(); } } \ No newline at end of file