From 58514a67d1f38e9842045615993252a8810fd50b Mon Sep 17 00:00:00 2001 From: patriot720 Date: Thu, 9 Jan 2025 17:43:30 +0300 Subject: [PATCH 1/9] Add ability to search by circle or slider count --- app/Libraries/Search/BeatmapsetQueryParser.php | 6 ++++++ app/Libraries/Search/BeatmapsetSearch.php | 2 ++ app/Libraries/Search/BeatmapsetSearchParams.php | 2 ++ app/Libraries/Search/BeatmapsetSearchRequestParams.php | 2 ++ 4 files changed, 12 insertions(+) diff --git a/app/Libraries/Search/BeatmapsetQueryParser.php b/app/Libraries/Search/BeatmapsetQueryParser.php index faa4f51b8cd..24d3e16b040 100644 --- a/app/Libraries/Search/BeatmapsetQueryParser.php +++ b/app/Libraries/Search/BeatmapsetQueryParser.php @@ -41,6 +41,12 @@ public static function parse(?string $query): array case 'bpm': $option = static::makeFloatRangeOption($op, $m['value'], 0.01 / 2); break; + case 'circles': + $option = static::makeIntRangeOption($op, $m['value']); + break; + case 'sliders': + $option = static::makeIntRangeOption($op, $m['value']); + break; case 'length': $parsed = get_length_seconds($m['value']); if ($parsed !== null) { diff --git a/app/Libraries/Search/BeatmapsetSearch.php b/app/Libraries/Search/BeatmapsetSearch.php index f88edc7f930..96857e5777f 100644 --- a/app/Libraries/Search/BeatmapsetSearch.php +++ b/app/Libraries/Search/BeatmapsetSearch.php @@ -307,6 +307,8 @@ private function addSimpleFilters(BoolQuery $query, BoolQuery $nested): void 'accuracy' => ['field' => 'beatmaps.diff_overall', 'type' => 'range'], 'ar' => ['field' => 'beatmaps.diff_approach', 'type' => 'range'], 'bpm' => ['field' => 'bpm', 'type' => 'range'], + 'countNormal' => ['field' => 'beatmaps.countNormal', 'type' => 'range'], + 'countSlider' => ['field' => 'beatmaps.countSlider', 'type' => 'range'], 'created' => ['field' => 'submit_date', 'type' => 'range'], 'cs' => ['field' => 'beatmaps.diff_size', 'type' => 'range'], 'difficultyRating' => ['field' => 'beatmaps.difficultyrating', 'type' => 'range'], diff --git a/app/Libraries/Search/BeatmapsetSearchParams.php b/app/Libraries/Search/BeatmapsetSearchParams.php index 9cbd9b9e0d9..03cce272fbd 100644 --- a/app/Libraries/Search/BeatmapsetSearchParams.php +++ b/app/Libraries/Search/BeatmapsetSearchParams.php @@ -19,6 +19,8 @@ class BeatmapsetSearchParams extends SearchParams public ?array $ar = null; public ?string $artist = null; public ?array $bpm = null; + public ?array $countNormal = null; + public ?array $countSlider = null; public ?array $created = null; public ?string $creator = null; public ?array $cs = null; diff --git a/app/Libraries/Search/BeatmapsetSearchRequestParams.php b/app/Libraries/Search/BeatmapsetSearchRequestParams.php index c070c61139e..935295c2f0b 100644 --- a/app/Libraries/Search/BeatmapsetSearchRequestParams.php +++ b/app/Libraries/Search/BeatmapsetSearchRequestParams.php @@ -210,6 +210,7 @@ private function parseQuery(): void 'ar' => 'ar', 'artist' => 'artist', 'bpm' => 'bpm', + 'circles' => 'countNormal', 'created' => 'created', 'creator' => 'creator', 'cs' => 'cs', @@ -221,6 +222,7 @@ private function parseQuery(): void 'length' => 'totalLength', 'od' => 'accuracy', 'ranked' => 'ranked', + 'sliders' => 'countSlider', 'source' => 'source', 'stars' => 'difficultyRating', 'status' => 'statusRange', From 591409631c25a52f413a8a8f1bd5f284cc380ae1 Mon Sep 17 00:00:00 2001 From: bakaneko Date: Tue, 28 Jan 2025 16:59:50 +0900 Subject: [PATCH 2/9] add owners to beatmap controller default api includes --- app/Http/Controllers/BeatmapsController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/BeatmapsController.php b/app/Http/Controllers/BeatmapsController.php index be0feca32b1..278ee5a5914 100644 --- a/app/Http/Controllers/BeatmapsController.php +++ b/app/Http/Controllers/BeatmapsController.php @@ -23,7 +23,7 @@ */ class BeatmapsController extends Controller { - const DEFAULT_API_INCLUDES = ['beatmapset.ratings', 'failtimes', 'max_combo']; + const DEFAULT_API_INCLUDES = ['beatmapset.ratings', 'failtimes', 'max_combo', 'owners']; const DEFAULT_SCORE_INCLUDES = ['user', 'user.country', 'user.cover', 'user.team']; public function __construct() @@ -216,6 +216,7 @@ public function index() ::whereIn('beatmap_id', $ids) ->whereHas('beatmapset') ->with([ + 'beatmapOwners', 'beatmapset', 'beatmapset.userRatings' => fn ($q) => $q->select('beatmapset_id', 'rating'), 'failtimes', From 212bfc437884063f4bf8547785729365217e8e70 Mon Sep 17 00:00:00 2001 From: nanaya Date: Tue, 28 Jan 2025 17:23:29 +0900 Subject: [PATCH 3/9] Fix docs nav button resetting scroll position --- resources/js/docs/sidebar-toggle.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/js/docs/sidebar-toggle.ts b/resources/js/docs/sidebar-toggle.ts index 335f758d8f6..c5642d58546 100644 --- a/resources/js/docs/sidebar-toggle.ts +++ b/resources/js/docs/sidebar-toggle.ts @@ -19,7 +19,8 @@ export default class SidebarToggle { this.navButton.addEventListener('click', this.onClickNavButton); } - private readonly onClickNavButton = () => { + private readonly onClickNavButton = (e: MouseEvent) => { + e.preventDefault(); this.menuWrapper.classList.toggle('open'); this.navButton.classList.toggle('open'); }; From f8b8d64f4b4c1703e20b2577696002f235b1977d Mon Sep 17 00:00:00 2001 From: bakaneko Date: Tue, 28 Jan 2025 19:29:41 +0900 Subject: [PATCH 4/9] add BeatmapOwner api docs --- app/Http/Controllers/BeatmapsController.php | 2 +- resources/views/docs/_structures/beatmap.md | 1 + resources/views/docs/_structures/beatmap_owner.md | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 resources/views/docs/_structures/beatmap_owner.md diff --git a/app/Http/Controllers/BeatmapsController.php b/app/Http/Controllers/BeatmapsController.php index 278ee5a5914..e6854feb633 100644 --- a/app/Http/Controllers/BeatmapsController.php +++ b/app/Http/Controllers/BeatmapsController.php @@ -194,7 +194,7 @@ public function attributes($id) * * Field | Type | Description * -------- | ------------------------------------- | ----------- - * beatmaps | [BeatmapExtended](#beatmapextended)[] | Includes `beatmapset` (with `ratings`), `failtimes`, and `max_combo`. + * beatmaps | [BeatmapExtended](#beatmapextended)[] | Includes `beatmapset` (with `ratings`), `failtimes`, `max_combo`, and `owners`. * * @queryParam ids[] integer Beatmap IDs to be returned. Specify once for each beatmap ID requested. Up to 50 beatmaps can be requested at once. Example: 1 * diff --git a/resources/views/docs/_structures/beatmap.md b/resources/views/docs/_structures/beatmap.md index c3e6ac46a1f..dc8894a82b2 100644 --- a/resources/views/docs/_structures/beatmap.md +++ b/resources/views/docs/_structures/beatmap.md @@ -21,6 +21,7 @@ beatmapset | [Beatmapset](#beatmapset)\|[BeatmapsetExtended](#beatmapsetextende checksum | string? | | failtimes | [Failtimes](#beatmap-failtimes) | | max_combo | integer | | +owners | [BeatmapOwner](#beatmapowner)[] | List of owners (mappers) for the Beatmap.
diff --git a/resources/views/docs/_structures/beatmap_owner.md b/resources/views/docs/_structures/beatmap_owner.md new file mode 100644 index 00000000000..c9f8d48eb9a --- /dev/null +++ b/resources/views/docs/_structures/beatmap_owner.md @@ -0,0 +1,7 @@ +## BeatmapOwner + + +Field | Type | Description +-------- | ------- | ------------ +id | integer | [User](#user) id of the Beatmap owner +username | string | Username of the Beatmap owner From 9d02d5a380247af9f30b787f4d037d1b89fe65da Mon Sep 17 00:00:00 2001 From: bakaneko Date: Tue, 28 Jan 2025 20:26:40 +0900 Subject: [PATCH 5/9] too many new lines --- resources/views/docs/_structures/beatmap_owner.md | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/views/docs/_structures/beatmap_owner.md b/resources/views/docs/_structures/beatmap_owner.md index c9f8d48eb9a..489005882ce 100644 --- a/resources/views/docs/_structures/beatmap_owner.md +++ b/resources/views/docs/_structures/beatmap_owner.md @@ -1,6 +1,5 @@ ## BeatmapOwner - Field | Type | Description -------- | ------- | ------------ id | integer | [User](#user) id of the Beatmap owner From f7bb58b16620f91f854aa934603bdd189f40d7f5 Mon Sep 17 00:00:00 2001 From: bakaneko Date: Tue, 28 Jan 2025 20:27:32 +0900 Subject: [PATCH 6/9] need the username --- app/Http/Controllers/BeatmapsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/BeatmapsController.php b/app/Http/Controllers/BeatmapsController.php index e6854feb633..70f43e4140b 100644 --- a/app/Http/Controllers/BeatmapsController.php +++ b/app/Http/Controllers/BeatmapsController.php @@ -216,7 +216,7 @@ public function index() ::whereIn('beatmap_id', $ids) ->whereHas('beatmapset') ->with([ - 'beatmapOwners', + 'beatmapOwners.user', 'beatmapset', 'beatmapset.userRatings' => fn ($q) => $q->select('beatmapset_id', 'rating'), 'failtimes', From c279f4b3a6ea808f0bcb657b4a8a07c510b93dc5 Mon Sep 17 00:00:00 2001 From: bakaneko Date: Tue, 28 Jan 2025 20:40:30 +0900 Subject: [PATCH 7/9] add a note about DeletedUser --- resources/views/docs/_structures/beatmap_owner.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/resources/views/docs/_structures/beatmap_owner.md b/resources/views/docs/_structures/beatmap_owner.md index 489005882ce..ff48d57fcc3 100644 --- a/resources/views/docs/_structures/beatmap_owner.md +++ b/resources/views/docs/_structures/beatmap_owner.md @@ -2,5 +2,7 @@ Field | Type | Description -------- | ------- | ------------ -id | integer | [User](#user) id of the Beatmap owner -username | string | Username of the Beatmap owner +id | integer | [User](#user) id of the Beatmap owner. +username | string | Username of the Beatmap owner. + +Users that are no longer visible will still appear as a BeatmapOwner but have the username set to `[deleted user]`. From 038809734e83d33a5a0a8dd22e1389da0eae2483 Mon Sep 17 00:00:00 2001 From: bakaneko Date: Tue, 28 Jan 2025 20:41:43 +0900 Subject: [PATCH 8/9] more formatting --- resources/views/docs/_structures/beatmap_owner.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/docs/_structures/beatmap_owner.md b/resources/views/docs/_structures/beatmap_owner.md index ff48d57fcc3..8c0654dd3e7 100644 --- a/resources/views/docs/_structures/beatmap_owner.md +++ b/resources/views/docs/_structures/beatmap_owner.md @@ -5,4 +5,4 @@ Field | Type | Description id | integer | [User](#user) id of the Beatmap owner. username | string | Username of the Beatmap owner. -Users that are no longer visible will still appear as a BeatmapOwner but have the username set to `[deleted user]`. +Users that are no longer visible will still appear as a `BeatmapOwner` but have the `username` set to `[deleted user]`. From d78561f7efd1e8b1d97e9f20a32da989ed355f7b Mon Sep 17 00:00:00 2001 From: nanaya Date: Wed, 29 Jan 2025 14:53:35 +0900 Subject: [PATCH 9/9] Update user table to start from id 2 --- database/migrations/2015_01_01_133337_base_tables.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/2015_01_01_133337_base_tables.php b/database/migrations/2015_01_01_133337_base_tables.php index 6769a697b86..a19516f4168 100644 --- a/database/migrations/2015_01_01_133337_base_tables.php +++ b/database/migrations/2015_01_01_133337_base_tables.php @@ -1135,7 +1135,7 @@ public function up() }); Schema::create('phpbb_users', function (Blueprint $table) { - $table->mediumIncrements('user_id'); + $table->mediumIncrements('user_id')->from(2); $table->tinyInteger('user_type')->default(0); $table->mediumInteger('group_id')->unsigned()->default(2); $table->mediumText('user_permissions');