From 971d0f108f6ae77f821859541f8c3c65157bd51e Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 15 Oct 2010 00:28:02 +0000 Subject: [PATCH] BUGFIX: When finding an old page in the 404 handler, favour existing subpages over historical ones. (from r104468) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@112349 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- core/control/ModelAsController.php | 8 +------- tests/ModelAsControllerTest.yml | 0 tests/control/ModelAsControllerTest.php | 2 ++ 3 files changed, 3 insertions(+), 7 deletions(-) create mode 100644 tests/ModelAsControllerTest.yml diff --git a/core/control/ModelAsController.php b/core/control/ModelAsController.php index 3784f9e2a..41b850d66 100755 --- a/core/control/ModelAsController.php +++ b/core/control/ModelAsController.php @@ -150,7 +150,7 @@ class ModelAsController extends Controller implements NestedController { static function find_old_page($URLSegment,$parentID = 0, $ignoreNestedURLs = false) { $URLSegment = Convert::raw2sql($URLSegment); - $useParentIDFilter = SiteTree::nested_urls() && !$ignoreNestedURLs; + $useParentIDFilter = SiteTree::nested_urls() && $parentID; // First look for a non-nested page that has a unique URLSegment and can be redirected to. if(SiteTree::nested_urls()) { @@ -177,12 +177,6 @@ class ModelAsController extends Controller implements NestedController { // Run the page through an extra filter to ensure that all decorators are applied. if(SiteTree::get_by_link($oldPage->RelativeLink())) return $oldPage; } - - // Otherwise, if nested URLs is enabled, look for a page anywhere in the site that may be - // left from pre-nested-URLs days - if(SiteTree::nested_urls() && !$ignoreNestedURLs && $parentID == 0) { - return self::find_old_page($URLSegment, $parentID, true); - } } } \ No newline at end of file diff --git a/tests/ModelAsControllerTest.yml b/tests/ModelAsControllerTest.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/control/ModelAsControllerTest.php b/tests/control/ModelAsControllerTest.php index caba41e1a..fd780b5a1 100644 --- a/tests/control/ModelAsControllerTest.php +++ b/tests/control/ModelAsControllerTest.php @@ -7,6 +7,8 @@ class ModelAsControllerTest extends FunctionalTest { protected $usesDatabase = true; + static $fixture_file = 'sapphire/tests/ModelAsControllerTest.yml'; + protected $autoFollowRedirection = false; protected $orig = array();