@extends('layout.default') @section('title') {{ $user->username }} - {{ __('common.members') }} - {{ config('other.title') }} @endsection @section('meta') @endsection @section('breadcrumbs') @endsection @section('nav-tabs') @include('user.buttons.user') @endsection @if (auth()->user()->isAllowed($user)) @section('main')

{{ __('user.user') }} {{ __('user.information') }}

@if (auth()->user()->is($user)) @elseif (auth()->user()->group->is_modo)
@csrf @method('DELETE')
@endif @if (auth()->id() !== $user->id)

Report user: {{ $user->username }}

@csrf

@endif
@if ($user->isOnline()) @else @endif @if ($user->warnings()->active()->exists()) @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_title') && $user->title) {{ __('user.title') }}: {{ $user->title }} @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_about') && $user->about)
{{ __('user.about') }}:
@joypixels($user->about_html)
@endif
@if (auth()->user()->isAllowed($user, 'profile', 'show_profile_achievement'))

{{ __('user.recent-achievements') }}

@forelse ($achievements->take(25) as $achievement) {{ $achievement->details->name }} @empty No recent achievements. @endforelse
@endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_follower'))

{{ __('user.recent-followers') }}

@if (auth()->id() !== $user->id)
@if ($user->followers()->where('users.id', '=', auth()->id())->exists())
@csrf @method('DELETE')
@else
@csrf
@endif
@endif
@forelse ($followers as $follower) {{ $follower->username }} @empty No recent followers @endforelse
@endif @if (auth()->user()->is($user) || auth()->user()->group->is_modo)

{{ __('user.client-list') }}

@if (\config('announce.connectable_check') === true) @endif @forelse ($clients as $client) @if (\config('announce.connectable_check') == true) @php $connectable = false; if (config('announce.external_tracker.is_enabled')) { $connectable = $client->connectable; } elseif (cache()->has('peers:connectable:' . $client->ip . '-' . $client->port . '-' . $client->agent)) { $connectable = cache()->get('peers:connectable:' . $client->ip . '-' . $client->port . '-' . $client->agent); } @endphp @endif @empty @endforelse
{{ __('torrent.client') }} {{ __('common.ip') }} {{ __('common.port') }} {{ __('torrent.started') }} {{ __('torrent.last-update') }} {{ __('torrent.peers') }} {{ __('torrent.size') }}Connectable
{{ $client->agent }} @if (auth()->user()->group->is_modo) {{ $client->ip }} @elseif (auth()->id() === $user->id) {{ $client->ip }} @endif {{ $client->port }} {{ $client->num_peers }} {{ App\Helpers\StringHelper::formatBytes($client->size) }} @choice('user.client-connectable-state', $connectable)
No Clients
If you don't recognize a torrent client or IP address in the list, please create a helpdesk ticket
@endif @if (auth()->user()->group->is_modo) @livewire('user-notes', ['user' => $user]) @if ($user->application !== null)

{{ __('staff.application') }}

{{ __('common.email') }} {{ __('staff.application-type') }} {{ __('common.created_at') }} {{ __('common.status') }} {{ __('common.action') }}
{{ $user->application->email }} {{ $user->application->type }} @switch($user->application->status) @case(\App\Models\Application::PENDING) Pending @break @case(\App\Models\Application::APPROVED) Approved @break @case(\App\Models\Application::REJECTED) Rejected @break @default Unknown @endswitch
  • {{ __('common.view') }}
  • @endif @endif @if (auth()->user()->group->is_modo ||auth()->user()->is($user))

    {{ __('ticket.helpdesk') }}

    @foreach ($user->tickets as $ticket) @endforeach
    {{ __('ticket.subject') }} {{ __('common.status') }} {{ __('ticket.created') }}
    {{ $ticket->subject }} @if ($ticket->closed_at) Closed @else Open @endif {{ $ticket->created_at }}
    @endif @if (auth()->user()->group->is_modo) @include('user.profile.partials.bans', ['bans' => $user->userban]) @endif @if (auth()->user()->group->is_modo ||auth()->user()->is($user)) @endif @if (auth()->user()->group->is_modo)

    Watchlist

    @if ($watch === null)

    Watch user: {{ $user->username }}

    @csrf

    @else
    @csrf @method('DELETE')
    @endif
    @if ($watch === null) @else @endif
    Watched By Message Created At {{ __('common.action') }}
    Not watched
    {{ $watch->message }}
  • @csrf @method('DELETE')
  • @endif @endsection @section('sidebar') @if (auth()->user()->group->is_modo ||auth()->user()->is($user))

    Donations

    Active Donor
    @if ($user->is_donor) @else @endif
    Lifetime Donor
    @if ($user->is_lifetime) @else @endif
    Latest Donation Amount
    {{ $donation->package->cost ?? 'N/A' }}
    Latest Donation Date
    {{ $donation->starts_at ?? 'N/A' }}
    Donation Expire Date
    @if ($user->is_lifetime) Lifetime Donor @else {{ $donation->ends_at ?? 'N/A' }} @endif
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_warning'))

    {{ __('common.warnings') }}

    {{ __('user.active-warnings') }}
    {{ $user->active_warnings_count ?? 0 }}
    {{ __('user.hit-n-runs-count') }}
    {{ $user->hitandruns }}
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_torrent_seed'))

    Seed {{ __('user.statistics') }}

    {{ __('user.total-seedtime') }}
    {{ App\Helpers\StringHelper::timeElapsed($history->seedtime_sum ?? 0) }}
    {{ __('user.avg-seedtime') }}
    {{ App\Helpers\StringHelper::timeElapsed(($history->seedtime_sum ?? 0) / max(1, $history->count ?? 0)) }}
    {{ __('user.seeding-size') }}
    {{ App\Helpers\StringHelper::formatBytes($user->seedingTorrents()->sum('size'), 2) }}
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_torrent_count')) @if (auth()->user()->is($user) || auth()->user()->group->is_modo)

    Torrent Count

    {{ __('user.total-downloads') }}
    {{ $history->download_count ?? 0 }}
    {{ __('user.total-seeding') }}
    {{ $peers->seeding ?? 0 }}
    {{ __('user.total-leeching') }}
    {{ $peers->leeching ?? 0 }}
    Total Inactive Peers
    {{ $peers->inactive ?? 0 }}
    @else

    Torrent Count

    {{ __('user.total-uploads') }}
    {{ $user->non_anon_uploads_count ?? 0 }}
    {{ __('user.total-downloads') }}
    {{ $history->download_count ?? 0 }}
    {{ __('user.total-seeding') }}
    {{ $peers->seeding ?? 0 }}
    {{ __('user.total-leeching') }}
    {{ $peers->leeching ?? 0 }}
    Total Inactive Peers
    {{ $peers->inactive ?? 0 }}
    @endif @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_torrent_ratio'))

    Traffic {{ __('torrent.statistics') }}

    {{ __('common.ratio') }}
    {{ $user->formatted_ratio }}
    Real {{ __('common.ratio') }}
    {{ $history->download_sum ? round(($history->upload_sum ?? 0) / $history->download_sum, 2) : "\u{221E}" }}
    {{ __('common.buffer') }}
    {{ $user->formatted_buffer }}
    {{ __('common.account') }} {{ __('common.upload') }} (Total)
    {{ $user->formatted_uploaded }}
    {{ __('common.account') }} {{ __('common.download') }} (Total)
    {{ $user->formatted_downloaded }}
    {{ __('torrent.torrent') }} {{ __('common.upload') }}
    {{ App\Helpers\StringHelper::formatBytes($history->upload_sum ?? 0, 2) }}
    {{ __('torrent.torrent') }} {{ __('common.upload') }} ({{ __('torrent.credited') }})
    {{ App\Helpers\StringHelper::formatBytes($history->credited_upload_sum ?? 0, 2) }}
    {{ __('torrent.torrent') }} {{ __('common.download') }}
    {{ App\Helpers\StringHelper::formatBytes($history->download_sum ?? 0, 2) }}
    {{ __('torrent.torrent') }} {{ __('common.download') }} ({{ __('torrent.credited') }})
    {{ App\Helpers\StringHelper::formatBytes($history->credited_download_sum ?? 0, 2) }}
    {{ __('torrent.torrent') }} {{ __('common.download') }} ({{ __('torrent.refunded') }})
    {{ App\Helpers\StringHelper::formatBytes($history->refunded_download_sum ?? 0, 2) }}
    {{ __('bon.bon') }} {{ __('common.upload') }}
    {{ App\Helpers\StringHelper::formatBytes($boughtUpload, 2) }}
    @endif @if (config('announce.external_tracker.is_enabled') && auth()->user()->group->is_modo) @if ($externalUser === true)

    External Tracker

    External tracker not enabled.
    @elseif ($externalUser === false)

    External Tracker

    User not found.
    @elseif ($externalUser === [])

    External Tracker

    Tracker returned an error.
    @else

    External Tracker

    {{ __('common.group') }}
    @if (null !== ($group = \App\Models\Group::find($externalUser['group_id']))) {{ $group->name }} @else Unrecognized group_id: {{ $externalUser['group_id'] }} @endif
    {{ __('user.passkey') }}
    {{ __('user.show-passkey') }}
    {{ $externalUser['passkey'] }}
    {{ __('user.passkey-warning') }}
    {{ __('user.can-download') }}
    {{ $externalUser['can_download'] ? __('common.yes') : __('common.no') }}
    {{ __('user.total-seeding') }}
    {{ $externalUser['num_seeding'] }}
    {{ __('user.total-leeching') }}
    {{ $externalUser['num_leeching'] }}
    @foreach ($externalUser['receive_seed_list_rates']['rates'] as $rate) @endforeach
    Seed lists Window Max Lists/h
    {{ \number_format($rate['count'], 2, null, "\u{202F}") }} {{ $rate['window'] }} {{ $rate['max_count'] }} {{ \number_format((3600 * $rate['count']) / $rate['window'], 1, null, "\u{202F}") }}
    @foreach ($externalUser['receive_leech_list_rates']['rates'] as $rate) @endforeach
    Leech lists Window Max Lists/h
    {{ \number_format($rate['count'], 2, null, "\u{202F}") }} {{ $rate['window'] }} {{ $rate['max_count'] }} {{ \number_format((3600 * $rate['count']) / $rate['window'], 1, null, "\u{202F}") }}
    @endif @endif @if (auth()->user()->is($user) || auth()->user()->group->is_modo)

    {{ __('user.id-permissions') }}

    {{ __('user.invited-by') }}
    @if ($invitedBy) @else {{ __('user.open-registration') }} @endif
    {{ __('user.passkey') }}
    {{ __('user.show-passkey') }}
    {{ $user->passkey }}
    {{ __('user.passkey-warning') }}
    {{ __('user.user-id') }}
    {{ $user->id }}
    {{ __('common.email') }}
    {{ $user->email }}
    2FA Enabled
    @if ($user->two_factor_confirmed_at !== null) @else @endif
    {{ __('user.last-login') }}
    @if ($user->last_login === null) N/A @else @endif
    Last Action
    @if ($user->last_action === null) N/A @else @endif
    {{ __('user.can-upload') }}
    @if ($user->can_upload ?? $user->group->can_upload) @else @endif
    {{ __('user.can-download') }}
    @if ($user->can_download == 1) @else @endif
    {{ __('user.can-comment') }}
    @if ($user->can_comment ?? $user->group->can_comment) @else @endif
    {{ __('user.can-request') }}
    @if ($user->can_request ?? $user->group->can_request) @else @endif
    {{ __('user.can-chat') }}
    @if ($user->can_chat ?? $user->group->can_chat) @else @endif
    {{ __('user.can-invite') }}
    @if (($user->can_invite ?? $user->group->can_invite) && $user->two_factor_confirmed_at !== null) @else @endif
    {{ __('user.invites') }}
    {{ $user->invites }}
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_bon_extra'))

    {{ __('user.bon') }}

    @if (auth()->user()->isNot($user))

    Gift BON to: {{ $user->username }}

    @csrf

    @endif
    {{ __('bon.bon') }}
    {{ $user->formatted_seedbonus }}
    {{ __('user.tips-received') }}
    {{ \number_format($user->receivedPostTips()->sum('bon') + $user->receivedTorrentTips()->sum('bon'), 0, null, "\u{202F}") }}
    {{ __('user.tips-given') }}
    {{ \number_format($user->sentPostTips()->sum('bon') + $user->sentTorrentTips()->sum('bon'), 0, null, "\u{202F}") }}
    {{ __('user.gift-received') }}
    {{ \number_format($user->receivedGifts()->sum('bon'), 0, null, "\u{202F}") }}
    {{ __('user.gift-given') }}
    {{ \number_format($user->sentGifts()->sum('bon'), 0, null, "\u{202F}") }}
    {{ __('user.bounty-received') }}
    {{ \number_format($user->filledRequests()->sum('bounty'), 0, null, "\u{202F}") }}
    {{ __('user.bounty-given') }}
    {{ \number_format($user->requestBounty()->sum('seedbonus'), 0, null, "\u{202F}") }}
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_torrent_extra'))

    {{ __('user.torrents') }}

    {{ __('common.fl_tokens') }}
    {{ $user->fl_tokens }}
    @if (config('other.thanks-system.is-enabled'))
    {{ __('user.thanks-received') }}
    {{ $user->thanksReceived()->count() }}
    {{ __('user.thanks-given') }}
    {{ $user->thanksGiven()->count() }}
    @endif
    {{ __('user.upload-snatches') }}
    {{ $user->uploadSnatches()->count() }}
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_comment_extra'))

    {{ __('user.comments') }}

    {{ __('user.article-comments') }}
    {{ $user->comments()->whereHasMorph('commentable', [App\Models\Article::class])->count() }}
    {{ __('user.torrent-comments') }}
    {{ $user->comments()->whereHasMorph('commentable', [App\Models\Torrent::class])->count() }}
    {{ __('user.request-comments') }}
    {{ $user->comments()->whereHasMorph('commentable', [App\Models\TorrentRequest::class])->count() }}
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_forum_extra'))

    {{ __('user.forums') }}

    {{ __('user.topics-started') }}
    {{ $user->topics_count }}
    {{ __('user.posts-posted') }}
    {{ $user->posts_count }}
    @endif @if (auth()->user()->isAllowed($user, 'profile', 'show_profile_request_extra'))

    {{ __('user.requests') }}

    {{ __('user.requested') }}
    {{ $user->requests_count }}
    {{ __('user.filled-request') }}
    {{ $user->filled_requests_count }}
    @endif @endsection @else @section('main')

    {{ __('user.private-profile') }}

    {{ __('user.not-authorized') }}
    @endsection @endif