상속: extends Illuminate\Database\Eloquent\Model
 public function testPostStoreNewDiscussionRequestBeatmapsetDiscussion()
 {
     $currentDiscussions = BeatmapDiscussion::count();
     $currentDiscussionPosts = BeatmapDiscussionPost::count();
     $this->actingAs($this->user)->post(route('beatmap-discussion-posts.store'), ['beatmapset_id' => $this->otherBeatmapset->beatmapset_id, 'beatmap_discussion_post' => ['message' => 'Hello']])->assertResponseStatus(404);
     $this->assertEquals($currentDiscussions, BeatmapDiscussion::count());
     $this->assertEquals($currentDiscussionPosts, BeatmapDiscussionPost::count());
 }
 public function setUp()
 {
     parent::setUp();
     $this->user = factory(User::class)->create();
     $this->beatmapset = factory(Beatmapset::class)->create(['user_id' => $this->user->user_id]);
     $this->beatmap = $this->beatmapset->beatmaps()->save(factory(Beatmap::class)->make(['user_id' => $this->user->user_id]));
     $this->beatmapsetDiscussion = BeatmapsetDiscussion::create(['beatmapset_id' => $this->beatmapset->beatmapset_id]);
     $this->beatmapDiscussion = BeatmapDiscussion::create(['beatmapset_discussion_id' => $this->beatmapsetDiscussion->id, 'timestamp' => 0, 'message_type' => 'praise', 'beatmap_id' => $this->beatmap->beatmap_id, 'user_id' => $this->user->user_id]);
 }
예제 #3
0
 public function vote($id)
 {
     $discussion = BeatmapDiscussion::findOrFail($id);
     priv_check('BeatmapDiscussionVote', $discussion)->ensureCan();
     $params = get_params(Request::all(), 'beatmap_discussion_vote', ['score:int']);
     $params['user_id'] = Auth::user()->user_id;
     if ($discussion->vote($params)) {
         return $discussion->beatmapsetDiscussion->defaultJson(Auth::user());
     } else {
         return error_popup(trans('beatmaps.discussion-votes.update.error'));
     }
 }
예제 #4
0
 /**
  * Bootstrap any application services.
  *
  * @return void
  */
 public function boot()
 {
     //
     Validator::extend('mixture', function ($attribute, $value, $parameters, $validator) {
         return preg_match('/[\\d]/', $value) === 1 && preg_match('/[^\\d\\s]/', $value) === 1;
     });
     BeatmapDiscussion::saving(function ($discussion) {
         return $discussion->isValid();
     });
     BeatmapDiscussionPost::saving(function ($post) {
         return $post->isValid();
     });
     ForumPollVote::saving(function ($vote) {
         return $vote->isValid();
     });
 }
 public function store()
 {
     $discussion = BeatmapDiscussion::findOrNew(Request::input('beatmap_discussion_id'));
     $isNewDiscussion = $discussion->id === null;
     if ($isNewDiscussion) {
         $beatmapsetDiscussion = BeatmapsetDiscussion::where('beatmapset_id', Request::input('beatmapset_id'))->firstOrFail();
         $discussion->beatmapset_discussion_id = $beatmapsetDiscussion->id;
     }
     $posts = [new BeatmapDiscussionPost($this->postParams($discussion))];
     $previousDiscussionResolved = $discussion->resolved;
     $discussion->fill($this->discussionParams($isNewDiscussion));
     priv_check('BeatmapDiscussionPost', $discussion)->ensureCan();
     if ($discussion->resolved === true) {
         priv_check('BeatmapDiscussionResolve', $discussion)->ensureCan();
     }
     if (!$isNewDiscussion && $discussion->resolved !== $previousDiscussionResolved) {
         $posts[] = BeatmapDiscussionPost::generateLogResolveChange(Auth::user(), $discussion->resolved);
     }
     try {
         $saved = DB::transaction(function () use($posts, $discussion) {
             if ($discussion->save() === false) {
                 throw new Exception('failed');
             }
             foreach ($posts as $post) {
                 // done here since discussion may or may not previously exist
                 $post->beatmap_discussion_id = $discussion->id;
                 if ($post->save() === false) {
                     throw new Exception('failed');
                 }
             }
             return true;
         });
     } catch (Exception $_e) {
         $saved = false;
     }
     $postIds = array_pluck($posts, 'id');
     if ($saved === true) {
         return ['beatmapset_discussion' => $posts[0]->beatmapsetDiscussion->defaultJson(Auth::user()), 'beatmap_discussion_post_ids' => $postIds, 'beatmap_discussion_id' => $discussion->id];
     } else {
         return error_popup(trans('beatmaps.discussion-posts.store.error'));
     }
 }