|AccountInterstitial newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial newQuery() * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial query() * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereAppealHandledAt($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereAppealMessage($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereAppealRequestedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereBlurhash($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereEmailNotify($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereEmailedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereHasMedia($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereInViolation($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereIsSpam($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereItemId($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereItemType($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereMessage($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereMeta($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereReadAt($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereSeverityIndex($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereThreadId($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereType($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereView($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereViolationBody($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereViolationHeader($value) * @method static \Illuminate\Database\Eloquent\Builder|AccountInterstitial whereViolationId($value) * * @mixin \Eloquent */ class AccountInterstitial extends Model { public const JSON_MESSAGE = 'Please use web browser to proceed.'; protected function casts(): array { return [ 'read_at' => 'datetime', 'appeal_requested_at' => 'datetime', ]; } public function user(): BelongsTo { return $this->belongsTo(User::class); } public function status() { if ($this->item_type != Status::class) { return; } return $this->hasOne(Status::class, 'id', 'item_id'); } /** * Create an AccountInterstitial for a moderated status. * * @param Status $status The status being moderated * @param string $type The interstitial type (e.g. 'post.cw', 'post.unlist', 'post.removed', 'post.autospam') * @param string $view The blade view for the interstitial */ public static function createFromStatus(Status $status, string $type, string $view): self { $media = $status->media; $ai = new self; $ai->user_id = $status->profile->user_id; $ai->type = $type; $ai->view = $view; $ai->item_type = Status::class; $ai->item_id = $status->id; $ai->has_media = (bool) $media->count(); $ai->blurhash = $media->count() ? $media->first()->blurhash : null; $ai->meta = json_encode([ 'caption' => $status->caption, 'created_at' => $status->created_at, 'type' => $status->type, 'url' => $status->url(), 'is_nsfw' => $status->is_nsfw, 'scope' => $status->scope, 'reblog' => $status->reblog_of_id, 'likes_count' => $status->likes_count, 'reblogs_count' => $status->reblogs_count, ]); $ai->save(); $u = $status->profile->user; $u->has_interstitial = true; $u->save(); return $ai; } }