add configuration: torrent.approval_status_none_visible

This commit is contained in:
xiaomlove
2022-06-24 14:55:10 +08:00
parent e786b8b461
commit aae45835ee
21 changed files with 145 additions and 56 deletions

View File

@@ -533,5 +533,36 @@ class TorrentRepository extends BaseRepository
}
public function renderApprovalStatus($approvalStatus, $show = null): string
{
if ($show === null) {
$show = $this->shouldShowApprovalStatusIcon($approvalStatus);
}
if ($show) {
return sprintf(
'<span style="margin-left: 6px" title="%s">%s</span>',
nexus_trans("torrent.approval.status_text.$approvalStatus"),
\App\Models\Torrent::$approvalStatus[$approvalStatus]['icon']
);
}
return '';
}
public function shouldShowApprovalStatusIcon($approvalStatus): bool
{
if (get_setting('torrent.approval_status_icon_enabled') == 'yes') {
//启用审核状态图标,肯定显示
return true;
}
if (
$approvalStatus != \App\Models\Torrent::APPROVAL_STATUS_ALLOW
&& get_setting('torrent.approval_status_none_visible') == 'no'
) {
//不启用审核状态图标,尽量不显示。在种子不是审核通过状态,而审核不通过又不能被用户看到时,显示
return true;
}
return false;
}
}

View File

@@ -382,8 +382,13 @@ class TrackerRepository extends BaseRepository
throw new TrackerException('Torrent not registered with this tracker.');
}
if ($torrent->banned == 'yes' && $user->class < Setting::get('authority.seebanned')) {
throw new TrackerException("torrent banned");
if ($user->class < Setting::get('authority.seebanned')) {
if ($torrent->banned == 'yes') {
throw new TrackerException("torrent banned");
}
if ($torrent->approval_status != Torrent::APPROVAL_STATUS_ALLOW && Setting::get('torrent.approval_status_none_visible') == 'no') {
throw new TrackerException("torrent review not approved");
}
}
return $torrent;
}
@@ -1066,7 +1071,7 @@ class TrackerRepository extends BaseRepository
{
$cacheKey = __METHOD__ . bin2hex($infoHash);
return Cache::remember($cacheKey, 60, function () use ($infoHash, $cacheKey) {
$fieldRaw = 'id, owner, sp_state, seeders, leechers, added, banned, hr, visible, last_action, times_completed';
$fieldRaw = 'id, owner, sp_state, seeders, leechers, added, banned, hr, visible, last_action, times_completed, approval_status';
$torrent = Torrent::query()->where('info_hash', $infoHash)->selectRaw($fieldRaw)->first();
do_log("[getTorrentByInfoHash] cache miss [$cacheKey], from database, and get: " . ($torrent->id ?? ''));
return $torrent;