user()->profile; if($profile->status != null) { return false; } if($profile->unlisted == true && $profile->cw == true) { return false; } $types = [ "photo", "photo:album", "photo:video:album", "reply", "text", "video", "video:album" ]; $scopes = ['public', 'unlisted', 'private']; $status = Status::whereNull('reblog_of_id')->whereIn('type', $types)->whereIn('scope', $scopes)->find($this->route('id')); return $status && $this->user()->profile_id === $status->profile_id; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(): array { return [ 'status' => 'sometimes|max:'.config('pixelfed.max_caption_length', 500), 'spoiler_text' => 'nullable|string|max:140', 'sensitive' => 'sometimes|boolean', 'media_ids' => [ 'nullable', 'required_without:status', 'array', 'max:' . config('pixelfed.max_album_length'), function (string $attribute, mixed $value, Closure $fail) { Media::whereProfileId($this->user()->profile_id) ->where(function($query) { return $query->whereNull('status_id') ->orWhere('status_id', '=', $this->route('id')); }) ->findOrFail($value); }, ], 'location' => 'sometimes|nullable', 'location.id' => 'sometimes|integer|min:1|max:128769', 'location.country' => 'required_with:location.id', 'location.name' => 'required_with:location.id', ]; } }