mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 01:08:56 +00:00
Update Adult and Music pages
This commit is contained in:
+6
-10
@@ -23,10 +23,9 @@ use ApaiIO\ResponseTransformer\XmlToSimpleXmlObject;
|
||||
class Music
|
||||
{
|
||||
protected const MATCH_PERCENT = 60;
|
||||
/**
|
||||
* @var \Blacklight\db\DB
|
||||
*/
|
||||
public $pdo;
|
||||
|
||||
|
||||
protected $pdo;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
@@ -121,11 +120,8 @@ class Music
|
||||
$album = preg_replace('/( - | -|\(.+\)|\(|\))/', ' ', $album);
|
||||
$album = preg_replace('/[^\w ]+/', '', $album);
|
||||
$album = preg_replace('/(WEB|FLAC|CD)/', '', $album);
|
||||
$album = trim(preg_replace('/\s\s+/i', ' ', $album));
|
||||
$album = trim($album);
|
||||
$words = explode(' ', $album);
|
||||
|
||||
foreach ($words as $word) {
|
||||
$album = trim(trim(preg_replace('/\s\s+/i', ' ', $album)));
|
||||
foreach (explode(' ', $album) as $word) {
|
||||
$word = trim(rtrim(trim($word), '-'));
|
||||
if ($word !== '' && $word !== '-') {
|
||||
$word = '+'.$word;
|
||||
@@ -159,7 +155,7 @@ class Music
|
||||
$exccatlist = ' AND r.categories_id NOT IN ('.implode(',', $excludedcats).')';
|
||||
}
|
||||
$order = $this->getMusicOrder($orderby);
|
||||
$expiresAt = Carbon::now()->addSeconds(config('nntmux.cache_expiry_medium'));
|
||||
$expiresAt = Carbon::now()->addMinutes(config('nntmux.cache_expiry_medium'));
|
||||
$musicSql =
|
||||
sprintf(
|
||||
"
|
||||
|
||||
+106
-66
@@ -72,6 +72,8 @@ class XXX
|
||||
*/
|
||||
public $catWhere;
|
||||
|
||||
protected $pdo;
|
||||
|
||||
/**
|
||||
* @param array $options Echo to cli / Class instances.
|
||||
*
|
||||
@@ -86,6 +88,7 @@ class XXX
|
||||
];
|
||||
$options += $defaults;
|
||||
$this->releaseImage = ($options['ReleaseImage'] instanceof ReleaseImage ? $options['ReleaseImage'] : new ReleaseImage());
|
||||
$this->pdo = DB::connection()->getPdo();
|
||||
|
||||
$this->movieqty = Settings::settingValue('..maxxxxprocessed') !== '' ? (int) Settings::settingValue('..maxxxxprocessed') : 100;
|
||||
$this->showPasswords = Releases::showPasswords();
|
||||
@@ -108,73 +111,110 @@ class XXX
|
||||
/**
|
||||
* Get XXX releases with covers for xxx browse page.
|
||||
*
|
||||
*
|
||||
* @param $page
|
||||
* @param $page
|
||||
* @param $cat
|
||||
* @param $start
|
||||
* @param $num
|
||||
* @param $orderBy
|
||||
* @param array $excludedcats
|
||||
* @param int $maxAge
|
||||
* @param array $excludedCats
|
||||
*
|
||||
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|mixed
|
||||
* @throws \Exception
|
||||
* @return array
|
||||
*/
|
||||
public function getXXXRange($page, $cat, $orderBy, array $excludedcats = [])
|
||||
public function getXXXRange($page, $cat, $start, $num, $orderBy, $maxAge = -1, array $excludedCats = []): array
|
||||
{
|
||||
$order = $this->getXXXOrder($orderBy);
|
||||
|
||||
$sql = Release::query()
|
||||
->where('r.nzbstatus', '=', 1)
|
||||
->where('xxx.title', '<>', '');
|
||||
Releases::showPasswords($sql, true);
|
||||
if (\count($excludedcats) > 0) {
|
||||
$sql->whereNotIn('r.categories_id', $excludedcats);
|
||||
}
|
||||
|
||||
$catsrch = '';
|
||||
if (\count($cat) > 0 && $cat[0] !== -1) {
|
||||
Category::getCategorySearch($cat, $sql, true);
|
||||
$catsrch = Category::getCategorySearch($cat);
|
||||
}
|
||||
$sql->select(
|
||||
[
|
||||
'xxx.*',
|
||||
DB::raw('UNCOMPRESS(xxx.plot) AS plot'),
|
||||
'r.xxxinfo_id',
|
||||
'g.name as group_name',
|
||||
'rn.releases_id as nfoid',
|
||||
DB::raw("GROUP_CONCAT(r.id ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_id"),
|
||||
DB::raw("GROUP_CONCAT(r.rarinnerfilecount ORDER BY r.postdate DESC SEPARATOR ',') as grp_rarinnerfilecount"),
|
||||
DB::raw("GROUP_CONCAT(r.haspreview ORDER BY r.postdate DESC SEPARATOR ',') as grp_haspreview"),
|
||||
DB::raw("GROUP_CONCAT(r.passwordstatus ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_password"),
|
||||
DB::raw("GROUP_CONCAT(r.guid ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_guid"),
|
||||
DB::raw("GROUP_CONCAT(rn.releases_id ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_nfoid"),
|
||||
DB::raw("GROUP_CONCAT(g.name ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_grpname"),
|
||||
DB::raw("GROUP_CONCAT(r.searchname ORDER BY r.postdate DESC SEPARATOR '#') as grp_release_name"),
|
||||
DB::raw("GROUP_CONCAT(r.postdate ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_postdate"),
|
||||
DB::raw("GROUP_CONCAT(r.size ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_size"),
|
||||
DB::raw("GROUP_CONCAT(r.totalpart ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_totalparts"),
|
||||
DB::raw("GROUP_CONCAT(r.comments ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_comments"),
|
||||
DB::raw("GROUP_CONCAT(r.grabs ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_grabs"),
|
||||
DB::raw("GROUP_CONCAT(df.failed ORDER BY r.postdate DESC SEPARATOR ',') as grp_release_failed"),
|
||||
]
|
||||
)
|
||||
->from('releases as r')
|
||||
->leftJoin('groups as g', 'g.id', '=', 'r.groups_id')
|
||||
->leftJoin('release_nfos as rn', 'rn.releases_id', '=', 'r.id')
|
||||
->leftJoin('dnzb_failures as df', 'df.release_id', '=', 'r.id')
|
||||
->leftJoin('categories as c', 'c.id', '=', 'r.categories_id')
|
||||
->leftJoin('categories as cp', 'cp.id', '=', 'c.parentid')
|
||||
->join('xxxinfo as xxx', 'xxx.id', '=', 'r.xxxinfo_id')
|
||||
->groupBy('xxx.id')
|
||||
->orderBy($order[0], $order[1]);
|
||||
|
||||
$return = Cache::get(md5($page.implode('.', $cat).implode('.', $excludedcats)));
|
||||
$order = $this->getXXXOrder($orderBy);
|
||||
$expiresAt = Carbon::now()->addMinutes(config('nntmux.cache_expiry_medium'));
|
||||
$xxxmoviesSql =
|
||||
sprintf(
|
||||
"
|
||||
SELECT SQL_CALC_FOUND_ROWS
|
||||
xxx.id,
|
||||
GROUP_CONCAT(r.id ORDER BY r.postdate DESC SEPARATOR ',') AS grp_release_id
|
||||
FROM xxxinfo xxx
|
||||
LEFT JOIN releases r ON xxx.id = r.xxxinfo_id
|
||||
WHERE r.nzbstatus = 1
|
||||
AND xxx.title != ''
|
||||
AND r.passwordstatus %s
|
||||
%s %s %s %s
|
||||
GROUP BY xxx.id
|
||||
ORDER BY %s %s %s",
|
||||
$this->showPasswords,
|
||||
$this->getBrowseBy(),
|
||||
$catsrch,
|
||||
(
|
||||
$maxAge > 0
|
||||
? 'AND r.postdate > NOW() - INTERVAL '.$maxAge.'DAY '
|
||||
: ''
|
||||
),
|
||||
(\count($excludedCats) > 0 ? ' AND r.categories_id NOT IN ('.implode(',', $excludedCats).')' : ''),
|
||||
$order[0],
|
||||
$order[1],
|
||||
($start === false ? '' : ' LIMIT '.$num.' OFFSET '.$start)
|
||||
);
|
||||
$xxxmoviesCache = Cache::get(md5($xxxmoviesSql.$page));
|
||||
if ($xxxmoviesCache !== null) {
|
||||
$xxxmovies = $xxxmoviesCache;
|
||||
} else {
|
||||
$data = DB::select($xxxmoviesSql);
|
||||
$xxxmovies = ['total' => DB::select('SELECT FOUND_ROWS() AS total'), 'result' => $data];
|
||||
Cache::put(md5($xxxmoviesSql.$page), $xxxmovies, $expiresAt);
|
||||
}
|
||||
$xxxIDs = $releaseIDs = false;
|
||||
if (\is_array($xxxmovies['result'])) {
|
||||
foreach ($xxxmovies['result'] as $xxx => $id) {
|
||||
$xxxIDs[] = $id->id;
|
||||
$releaseIDs[] = $id->grp_release_id;
|
||||
}
|
||||
}
|
||||
$sql = sprintf(
|
||||
"
|
||||
SELECT
|
||||
r.id, r.rarinnerfilecount, r.grabs, r.comments, r.totalpart, r.size, r.postdate, r.searchname, r.haspreview, r.passwordstatus, r.guid, df.failed AS failed,
|
||||
CONCAT(cp.title, ' > ', c.title) AS catname,
|
||||
xxx.*, UNCOMPRESS(xxx.plot) AS plot,
|
||||
g.name AS group_name,
|
||||
rn.releases_id AS nfoid
|
||||
FROM releases r
|
||||
LEFT OUTER JOIN groups g ON g.id = r.groups_id
|
||||
LEFT OUTER JOIN release_nfos rn ON rn.releases_id = r.id
|
||||
LEFT OUTER JOIN dnzb_failures df ON df.release_id = r.id
|
||||
LEFT OUTER JOIN categories c ON c.id = r.categories_id
|
||||
LEFT OUTER JOIN categories cp ON cp.id = c.parentid
|
||||
INNER JOIN xxxinfo xxx ON xxx.id = r.xxxinfo_id
|
||||
WHERE r.nzbstatus = 1
|
||||
AND xxx.id IN (%s)
|
||||
AND xxx.title != ''
|
||||
AND r.passwordstatus %s
|
||||
%s %s %s %s
|
||||
GROUP BY xxx.id
|
||||
ORDER BY %s %s",
|
||||
(\is_array($xxxIDs) ? implode(',', $xxxIDs) : -1),
|
||||
$this->showPasswords,
|
||||
$this->getBrowseBy(),
|
||||
$catsrch,
|
||||
(
|
||||
$maxAge > 0
|
||||
? 'AND r.postdate > NOW() - INTERVAL '.$maxAge.'DAY '
|
||||
: ''
|
||||
),
|
||||
(\count($excludedCats) > 0 ? ' AND r.categories_id NOT IN ('.implode(',', $excludedCats).')' : ''),
|
||||
$order[0],
|
||||
$order[1]
|
||||
);
|
||||
$return = Cache::get(md5($sql.$page));
|
||||
if ($return !== null) {
|
||||
return $return;
|
||||
}
|
||||
|
||||
$return = $sql->paginate(config('nntmux.items_per_cover_page'));
|
||||
|
||||
$expiresAt = Carbon::now()->addMinutes(config('nntmux.cache_expiry_long'));
|
||||
Cache::put(md5($page.implode('.', $cat).implode('.', $excludedcats)), $return, $expiresAt);
|
||||
|
||||
$return = DB::select($sql);
|
||||
if (\count($return) > 0) {
|
||||
$return['_totalcount'] = $xxxmovies['total'][0]->total ?? 0;
|
||||
}
|
||||
Cache::put(md5($sql.$page), $return, $expiresAt);
|
||||
return $return;
|
||||
}
|
||||
|
||||
@@ -212,25 +252,25 @@ class XXX
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
*
|
||||
* @return mixed
|
||||
* @return string
|
||||
*/
|
||||
protected function getBrowseBy($query)
|
||||
protected function getBrowseBy(): string
|
||||
{
|
||||
$browseBy = ' ';
|
||||
foreach (['title', 'director', 'actors', 'genre', 'id'] as $bb) {
|
||||
if (request()->has($bb) && request()->input($bb) !== null) {
|
||||
$bbv = stripslashes(request()->input($bb));
|
||||
if (isset($_REQUEST[$bb]) && ! empty($_REQUEST[$bb])) {
|
||||
$bbv = stripslashes($_REQUEST[$bb]);
|
||||
if ($bb === 'genre') {
|
||||
$bbv = $this->getGenreID($bbv);
|
||||
}
|
||||
if ($bb === 'id') {
|
||||
return $query->where('xxx.'.$bb, '=', $bbv);
|
||||
$browseBy .= 'AND xxx.'.$bb.'='.$bbv;
|
||||
} else {
|
||||
$browseBy .= 'AND xxx.'.$bb.' '.$this->pdo->quote('%'.$bbv.'%');
|
||||
}
|
||||
|
||||
return $query->where('xxx.'.$bb, 'like', '%'.$bbv.'%');
|
||||
}
|
||||
}
|
||||
return $browseBy;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
2018-05-12 DariusIII
|
||||
* Chg: Update Adult and Music pages
|
||||
* Chg: Update music cover pages
|
||||
* Fix: Fix games covers page
|
||||
2018-05-11 DariusIII
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
||||
use Blacklight\XXX;
|
||||
use App\Models\Category;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
|
||||
class AdultController extends BasePageController
|
||||
{
|
||||
@@ -48,12 +49,17 @@ class AdultController extends BasePageController
|
||||
|
||||
$movies = [];
|
||||
$page = $request->has('page') ? $request->input('page') : 1;
|
||||
$results = $adult->getXXXRange($page, $catarray, $orderby, $this->userdata['categoryexclusions']);
|
||||
$offset = ($page - 1) * config('nntmux.items_per_cover_page');
|
||||
$rslt = $adult->getXXXRange($page, $catarray, $offset, config('nntmux.items_per_cover_page'), $orderby, -1, $this->userdata['categoryexclusions']);
|
||||
$results = new LengthAwarePaginator($rslt, $rslt['_totalcount'], config('nntmux.items_per_cover_page'), $page, ['path' => $request->url()]);
|
||||
foreach ($results as $result) {
|
||||
$result['genre'] = makeFieldLinks($result, 'genre', 'xxx');
|
||||
$result['actors'] = makeFieldLinks($result, 'actors', 'xxx');
|
||||
$result['director'] = makeFieldLinks($result, 'director', 'xxx');
|
||||
$movies[] = $result;
|
||||
if (! empty($result->id)) {
|
||||
$result->genre = makeFieldLinks((array) $result, 'genre', 'movies');
|
||||
$result->actors = makeFieldLinks((array) $result, 'actors', 'movies');
|
||||
$result->director = makeFieldLinks((array) $result, 'director', 'movies');
|
||||
|
||||
$movies[] = $result;
|
||||
}
|
||||
}
|
||||
$title = ($request->has('title') && ! empty($request->input('title'))) ? stripslashes($request->input('title')) : '';
|
||||
$this->smarty->assign('title', stripslashes($title));
|
||||
|
||||
Reference in New Issue
Block a user