mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 12:30:49 +08:00
improve torrents + torrentrss
This commit is contained in:
@@ -91,7 +91,7 @@ class UserResource extends Resource
|
||||
Tables\Columns\BadgeColumn::make('downloadpos')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.downloadpos")),
|
||||
Tables\Columns\BadgeColumn::make('parked')->colors(['success' => 'yes', 'danger' => 'no'])->label(__("label.user.parked")),
|
||||
Tables\Columns\TextColumn::make('added')->sortable()->dateTime('Y-m-d H:i')->label(__("label.added")),
|
||||
Tables\Columns\TextColumn::make('last_access')->dateTime()->label(__("label.last_access")),
|
||||
Tables\Columns\TextColumn::make('last_access')->dateTime('Y-m-d H:i')->label(__("label.last_access")),
|
||||
])
|
||||
->defaultSort('added', 'desc')
|
||||
->filters([
|
||||
|
||||
@@ -21,6 +21,10 @@ class Torrent extends NexusModel
|
||||
const VISIBLE_YES = 'yes';
|
||||
const VISIBLE_NO = 'no';
|
||||
|
||||
const FILTER_VISIBLE_ALL = '0';
|
||||
const FILTER_VISIBLE_YES = '1';
|
||||
const FILTER_VISIBLE_NO = '2';
|
||||
|
||||
const BANNED_YES = 'yes';
|
||||
const BANNED_NO = 'no';
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ class TorrentRepository extends BaseRepository
|
||||
$allowFilters = [
|
||||
'title', 'category', 'source', 'medium', 'codec', 'audiocodec', 'standard', 'processing', 'team',
|
||||
'owner', 'visible', 'added', 'size', 'sp_state', 'leechers', 'seeders', 'times_completed',
|
||||
'bookmark'
|
||||
'bookmark',
|
||||
];
|
||||
$allowSorts = ['id', 'comments', 'size', 'seeders', 'leechers', 'times_completed'];
|
||||
$apiQueryBuilder = ApiQueryBuilder::for(TorrentResource::NAME, $query, $request)
|
||||
@@ -110,11 +110,21 @@ class TorrentRepository extends BaseRepository
|
||||
->allowSorts($allowSorts)
|
||||
->registerCustomFilter('title', function (Builder $query, Request $request) {
|
||||
$title = $request->input(ApiQueryBuilder::PARAM_NAME_FILTER.".title");
|
||||
$title = trim(str_replace('.', '', $title));
|
||||
if ($title) {
|
||||
$query->where(function (Builder $query) use ($title) {
|
||||
$query->where('name', 'like', '%' . $title . '%')
|
||||
->orWhere('small_descr', 'like', '%' . $title . '%');
|
||||
});
|
||||
$titleParts = explode(" ", $title);
|
||||
$keywordCount = 1;
|
||||
foreach ($titleParts as $titlePart) {
|
||||
if ($keywordCount > 3) {
|
||||
break;
|
||||
}
|
||||
$titlePart = trim($titlePart);
|
||||
$query->where(function (Builder $query) use ($titlePart) {
|
||||
$query->where('name', 'like', '%' . $titlePart . '%')
|
||||
->orWhere('small_descr', 'like', '%' . $titlePart . '%');
|
||||
});
|
||||
$keywordCount++;
|
||||
}
|
||||
}
|
||||
})
|
||||
->registerCustomFilter('bookmark', function (Builder $query, Request $request) use ($user) {
|
||||
@@ -129,9 +139,17 @@ class TorrentRepository extends BaseRepository
|
||||
});
|
||||
}
|
||||
})
|
||||
->registerCustomFilter('visible', function (Builder $query, Request $request) use ($user) {
|
||||
$filterVisible = $request->input(ApiQueryBuilder::PARAM_NAME_FILTER.".visible", Torrent::FILTER_VISIBLE_YES);
|
||||
if ($filterVisible === Torrent::FILTER_VISIBLE_YES) {
|
||||
$query->where('visible', Torrent::VISIBLE_YES);
|
||||
} elseif ($filterVisible === Torrent::FILTER_VISIBLE_NO) {
|
||||
$query->where('visible', Torrent::VISIBLE_NO);
|
||||
}
|
||||
})
|
||||
;
|
||||
$query = $apiQueryBuilder->build();
|
||||
if (!$apiQueryBuilder->hasSort()) {
|
||||
if (!$apiQueryBuilder->hasSort() || !$apiQueryBuilder->hasSort('id')) {
|
||||
$query->orderBy("id", "DESC");
|
||||
}
|
||||
$torrents = $query->paginate($this->getPerPageFromRequest($request));
|
||||
|
||||
Reference in New Issue
Block a user