Update Adult and Music pages

This commit is contained in:
DariusIII
2018-05-12 22:42:30 +02:00
parent b380c94c2f
commit ba3cc0a478
4 changed files with 124 additions and 81 deletions
+6 -10
View File
@@ -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
View File
@@ -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
View File
@@ -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
+11 -5
View File
@@ -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));