diff --git a/src/Http/HttpServiceProvider.php b/src/Http/HttpServiceProvider.php index f871bde75..f8ed8182e 100644 --- a/src/Http/HttpServiceProvider.php +++ b/src/Http/HttpServiceProvider.php @@ -50,10 +50,12 @@ class HttpServiceProvider extends AbstractServiceProvider $compiledDrivers = []; foreach ($this->app->make('flarum.http.slugDrivers') as $resourceClass => $resourceDrivers) { - $driverClass = $resourceDrivers[$settings->get("slug_driver_$resourceClass", 'default')]; - echo 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; - echo "slug_driver_$resourceClass"; - //echo $settings->get("slug_driver_$resourceClass", 'default'); + $driverKey = $settings->get("slug_driver_$resourceClass", 'default'); + if (array_key_exists($driverKey, $resourceDrivers)) { + $driverClass = $resourceDrivers[$driverKey]; + } else { + $driverClass = $resourceDrivers['default']; + } $compiledDrivers[$resourceClass] = $this->app->make($driverClass); } @@ -70,14 +72,14 @@ class HttpServiceProvider extends AbstractServiceProvider ]); }, Post::class => function (UrlGenerator $urlGenerator, Post $post) use ($slugManager) { - return $urlGenerator->to('forum')->route('user', [ + return $urlGenerator->to('forum')->route('post', [ 'id' => $slugManager->forResource(Discussion::class)->toSlug($post->discussion), 'near' => $post->id, ]); }, User::class => function (UrlGenerator $urlGenerator, User $user) use ($slugManager) { return $urlGenerator->to('forum')->route('user', [ - 'id' => $slugManager->forResource(User::class)->toSlug($user) + 'username' => $slugManager->forResource(User::class)->toSlug($user) ]); }, ]; diff --git a/src/Http/UrlGenerator.php b/src/Http/UrlGenerator.php index 4d0a3152e..e17f1bb33 100644 --- a/src/Http/UrlGenerator.php +++ b/src/Http/UrlGenerator.php @@ -79,8 +79,6 @@ class UrlGenerator { $callback = $this->resourceUrlGenerators[$resourceClass]; - $result = $callback($this, $instance, ...$args); - - return $result; + return $callback($this, $instance, ...$args); } } diff --git a/tests/integration/extenders/ModelUrlTest.php b/tests/integration/extenders/ModelUrlTest.php index ce51751c2..264c83ee9 100644 --- a/tests/integration/extenders/ModelUrlTest.php +++ b/tests/integration/extenders/ModelUrlTest.php @@ -14,6 +14,7 @@ use Flarum\Extend; use Flarum\Http\SlugDriverInterface; use Flarum\Http\SlugManager; use Flarum\Http\UrlGenerator; +use Flarum\Settings\SettingsRepositoryInterface; use Flarum\Tests\integration\RetrievesAuthorizedUsers; use Flarum\Tests\integration\TestCase; use Flarum\User\User; @@ -24,35 +25,18 @@ class ModelUrlTest extends TestCase protected function prepDb() { + $userClass = User::class; $this->prepareDatabase([ 'users' => [ $this->adminUser(), $this->normalUser(), ], - ]); - } - - protected function activateCustomDriver() - { - $userClass = User::class; - $this->prepareDatabase([ 'settings' => [ ['key' => "slug_driver_$userClass", 'value' => 'testDriver'], - ], + ] ]); } -// public function tearDown() -// { -// $userClass = User::class; -// $this->prepareDatabase([ -// 'settings' => [ -// ['key' => "slug_driver_$userClass", 'value' => 'default'], -// ], -// ]); -// parent::tearDown(); -// } - /** * @test */ @@ -102,7 +86,7 @@ class ModelUrlTest extends TestCase /** * @test */ - public function custom_slug_driver_doesnt_have_effect_unless_enabled() + public function custom_slug_driver_has_effect_if_added() { $this->extend((new Extend\ModelUrl(User::class))->addSlugDriver('testDriver', TestSlugDriver::class)); @@ -112,24 +96,6 @@ class ModelUrlTest extends TestCase $testUser = User::find(1); - $this->assertEquals('admin', $slugManager->forResource(User::class)->toSlug($testUser)); - $this->assertEquals('1', $slugManager->forResource(User::class)->fromSlug('admin', $testUser)->id); - } - - /** - * @test - */ - public function custom_slug_driver_has_effect_if_enabled() - { - $this->extend((new Extend\ModelUrl(User::class))->addSlugDriver('testDriver', TestSlugDriver::class)); - - $this->prepDb(); - $this->activateCustomDriver(); - - $slugManager = $this->app()->getContainer()->make(SlugManager::class); - - $testUser = User::find(1); - $this->assertEquals('test-slug', $slugManager->forResource(User::class)->toSlug($testUser)); $this->assertEquals('1', $slugManager->forResource(User::class)->fromSlug('random-gibberish', $testUser)->id); }