public static upload ( Illuminate\Http\UploadedFile $file, $user, $contest = null ) | ||
$file | Illuminate\Http\UploadedFile |
public static function upload(UploadedFile $file, $user, $contest = null)
{
$entry = new static();
DB::transaction(function () use($entry, $file, $user, $contest) {
$entry->save();
// get id
$entry->user()->associate($user);
$entry->contest()->associate($contest);
$entry->filesize = $file->getClientSize();
$entry->original_filename = $file->getClientOriginalName();
$entry->storeFile($file->getRealPath(), $file->getClientOriginalExtension());
$entry->save();
});
return $entry;
}
public function store() { if (Request::hasFile('entry') !== true) { abort(422); } $user = Auth::user(); $contest = Contest::findOrFail(Request::input('contest_id')); priv_check('ContestEntryStore', $contest)->ensureCan(); $allowedExtensions = []; $maxFilesize = 0; switch ($contest->type) { case 'art': $allowedExtensions[] = 'jpg'; $allowedExtensions[] = 'jpeg'; $allowedExtensions[] = 'png'; $maxFilesize = 4000000; break; case 'beatmap': $allowedExtensions[] = 'osu'; $maxFilesize = 1000000; break; case 'music': $allowedExtensions[] = 'mp3'; $maxFilesize = 15000000; break; } if (!in_array(strtolower(Request::file('entry')->getClientOriginalExtension()), $allowedExtensions, true)) { abort(422); } if (Request::file('entry')->getClientSize() > $maxFilesize) { abort(413); } UserContestEntry::upload(Request::file('entry'), $user, $contest); return $contest->userEntries($user); }