123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- namespace App\Http\Controllers;
- use App\Status;
- use Auth;
- use DB;
- use Illuminate\Http\Request;
- use Illuminate\Validation\Rule;
- class MicroController extends Controller
- {
- public function __construct()
- {
- $this->middleware('auth');
- }
- public function composeText(Request $request)
- {
- $this->validate($request, [
- 'type' => [
- 'required',
- 'string',
- Rule::in(['text']),
- ],
- 'title' => 'nullable|string|max:140',
- 'content' => 'required|string|max:500',
- 'visibility' => [
- 'required',
- 'string',
- Rule::in([
- 'public',
- 'unlisted',
- 'private',
- 'draft',
- ]),
- ],
- ]);
- $profile = Auth::user()->profile;
- $title = $request->input('title');
- $content = $request->input('content');
- $visibility = $request->input('visibility');
- $status = DB::transaction(function () use ($profile, $content, $visibility, $title) {
- $status = new Status;
- $status->type = 'text';
- $status->profile_id = $profile->id;
- $status->caption = strip_tags($content);
- $status->is_nsfw = false;
- // TODO: remove deprecated visibility in favor of scope
- $status->visibility = $visibility;
- $status->scope = $visibility;
- $status->entities = json_encode(['title' => $title]);
- $status->save();
- return $status;
- });
- $fractal = new \League\Fractal\Manager;
- $fractal->setSerializer(new \League\Fractal\Serializer\ArraySerializer);
- $s = new \League\Fractal\Resource\Item($status, new \App\Transformer\Api\StatusTransformer);
- return $fractal->createData($s)->toArray();
- }
- }
|