the browser-facing portion of osu!
at master 2.9 kB view raw
1<?php 2 3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0. 4// See the LICENCE file in the repository root for full licence text. 5 6namespace App\Http\Controllers\InterOp; 7 8use App\Http\Controllers\Controller; 9use App\Jobs\BeatmapsetDelete; 10use App\Jobs\Notifications\UserBeatmapsetNew; 11use App\Jobs\Notifications\UserBeatmapsetRevive; 12use App\Models\BeatmapDiscussion; 13use App\Models\BeatmapDiscussionPost; 14use App\Models\Beatmapset; 15use App\Models\Event; 16use App\Models\User; 17 18class BeatmapsetsController extends Controller 19{ 20 public function broadcastNew($id) 21 { 22 $beatmapset = Beatmapset::findOrFail($id); 23 24 (new UserBeatmapsetNew($beatmapset))->dispatch(); 25 26 if (request()->boolean('create_event')) { 27 Event::generate('beatmapsetUpload', ['beatmapset' => $beatmapset]); 28 } 29 30 return response(null, 204); 31 } 32 33 public function broadcastRevive($id) 34 { 35 $beatmapset = Beatmapset::findOrFail($id); 36 37 (new UserBeatmapsetRevive($beatmapset))->dispatch(); 38 39 if (request()->boolean('create_event')) { 40 Event::generate('beatmapsetRevive', ['beatmapset' => $beatmapset]); 41 } 42 43 return response(null, 204); 44 } 45 46 public function broadcastUpdate($id) 47 { 48 $beatmapset = Beatmapset::findOrFail($id); 49 $user = User::findOrFail(request()->integer('user_id')); 50 51 Event::generate('beatmapsetUpdate', ['beatmapset' => $beatmapset, 'user' => $user]); 52 53 return response(null, 204); 54 } 55 56 public function destroy($id) 57 { 58 $beatmapset = Beatmapset::findOrFail($id); 59 $user = User::findOrFail($GLOBALS['cfg']['osu']['legacy']['bancho_bot_user_id']); 60 61 (new BeatmapsetDelete($beatmapset, $user))->handle(); 62 63 return response(null, 204); 64 } 65 66 public function disqualify($id) 67 { 68 $beatmapset = Beatmapset::findOrFail($id); 69 $user = User::findOrFail($GLOBALS['cfg']['osu']['legacy']['bancho_bot_user_id']); 70 71 $message = request('message') ?? null; 72 73 $discussion = new BeatmapDiscussion([ 74 'beatmapset_id' => $beatmapset->getKey(), 75 'message_type' => 'problem', 76 'user_id' => $user->getKey(), 77 'resolved' => false, 78 ]); 79 80 $post = new BeatmapDiscussionPost([ 81 'message' => $message, 82 'user_id' => $user->getKey(), 83 ]); 84 85 $discussion->getConnection()->transaction(function () use ($discussion, $post, $user) { 86 $discussion->saveOrExplode(); 87 $post->beatmap_discussion_id = $discussion->getKey(); 88 $post->saveOrExplode(); 89 90 $discussion->beatmapset->disqualifyOrResetNominations($user, $discussion); 91 }); 92 93 return ['beatmapset_discussion_id' => $discussion->getKey()]; 94 } 95}