From a427c14806110bf7a3df2d33bfed920f0d1ebb5a Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 26 Feb 2021 11:56:10 -0800 Subject: [PATCH] Issue #3912 Fix for partial route match. Partials should always end with a '/' for predictable results. --- e107_handlers/theme_handler.php | 2 +- e107_tests/tests/unit/e_themeTest.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/e107_handlers/theme_handler.php b/e107_handlers/theme_handler.php index ff813d2b5..2caacc82d 100644 --- a/e107_handlers/theme_handler.php +++ b/e107_handlers/theme_handler.php @@ -572,7 +572,7 @@ class e_theme foreach($cusPageArray as $kpage) { // e_ROUTE - if(!empty($request['route']) && (strpos($kpage,':'.$request['route']) === 0)) + if(!empty($request['route']) && (strpos(':'.$request['route'], $kpage) === 0)) { return $lyout; } diff --git a/e107_tests/tests/unit/e_themeTest.php b/e107_tests/tests/unit/e_themeTest.php index ee8d27d92..c2477d9cc 100644 --- a/e107_tests/tests/unit/e_themeTest.php +++ b/e107_tests/tests/unit/e_themeTest.php @@ -453,6 +453,7 @@ 0 => 'forum', 1 => 'user.php!', // <-- exact match of URL 2 => ':forum/index', + 3 => ':myplugin/', // 2 => '/user', // <-- Expecting URL to match both user and usersetting since it contains no "!" ), @@ -512,6 +513,7 @@ // Using e_ROUTE; 24 => array('url' => 'whatever.php', 'script'=>'whatever.php', 'route'=> 'news/view/index', 'expected'=> 'other_layout'), 25 => array('url' => 'whatever.php', 'script'=>'whatever.php', 'route'=> 'forum/index', 'expected'=> 'jumbotron_full'), + 26 => array('url' => 'whatever.php', 'script'=>'whatever.php', 'route'=> 'myplugin/index', 'expected'=> 'jumbotron_full'), ); @@ -522,7 +524,8 @@ $var['script'] = isset($var['script']) ? $var['script'] : null; $result = $themeObj::getThemeLayout($pref, $defaultLayout, $var); - $this->assertEquals($var['expected'],$result, "Wrong theme layout returned for item [".$item."] ".$var['url']); + $diz = isset($var['route']) ? $var['route'] : $var['url']; + $this->assertEquals($var['expected'],$result, "Wrong theme layout returned for item [".$item."] ".$diz); // echo $var['url']."\t\t\t".$result."\n\n"; }