diff --git a/Changelog b/Changelog index 611048d64..9f2a91781 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2018-04-13 DariusIII + * Chg: Add option to edit profile to ProfileController * Chg: Add MyShowsController, adjust rest of the controllers and classes * Chg: Add MyMoviesController * Fix: Fix search diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 15b84662d..51a98bec7 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -2,11 +2,14 @@ namespace App\Http\Controllers; +use App\Models\Category; use App\Models\User; +use Blacklight\NZBGet; use Blacklight\SABnzbd; use App\Models\Settings; use App\Models\UserRequest; use App\Models\UserDownload; +use Blacklight\utility\Utility; use Illuminate\Http\Request; use App\Models\ReleaseComment; use App\Models\UserExcludedCategory; @@ -113,4 +116,170 @@ class ProfileController extends BasePageController ); $this->pagerender(); } + + /** + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + * @throws \Exception + */ + public function edit(Request $request) + { + $this->setPrefs(); + $sab = new SABnzbd(); + $nzbGet = new NZBGet($this); + + $action = $request->input('action') ?? 'view'; + + $userid = Auth::id(); + $data = User::find($userid); + if (! $data) { + $this->show404(); + } + + $errorStr = ''; + + switch ($action) { + case 'newapikey': + User::updateRssKey($userid); + return redirect('profileedit'); + break; + case 'clearcookies': + $sab->unsetCookie(); + return redirect('profileedit'); + break; + case 'submit': + + $data['email'] = $request->input('email'); + if ($request->has('saburl') && ! ends_with($request->input('saburl'), '/') && strlen(trim($request->input('saburl'))) > 0) { + $request->merge(['saburl' => $request->input('saburl').'/']); + } + + if ($request->has('password') && $request->input('password') !== $request->input('password_confirmation')) { + $errorStr = 'Password Mismatch'; + } elseif ($request->has('password') && ! User::isValidPassword($request->input('password'))) { + $errorStr = 'Your password must be longer than eight characters, have at least 1 number, at least 1 capital and at least one lowercase letter'; + } elseif (! empty($request->input('nzbgeturl')) && $nzbGet->verifyURL($request->input('nzbgeturl')) === false) { + $errorStr = 'The NZBGet URL you entered is invalid!'; + } elseif (! User::isValidEmail($request->input('email'))) { + $errorStr = 'Your email is not a valid format.'; + } else { + $res = User::getByEmail($request->input('email')); + if ($res && (int) $res['id'] !== $userid) { + $errorStr = 'Sorry, the email is already in use.'; + } elseif ((! $request->has('saburl') && $request->has('sabapikey')) || ($request->has('saburl') && ! $request->has('sabapikey'))) { + $errorStr = 'Insert a SABnzdb URL and API key.'; + } else { + if ($request->has('sasetting') && $request->input('sabsetting') === 2) { + $sab->setCookie($request->input('saburl'), $request->input('sabapikey'), $request->input('sabpriority'), $request->input('sabapikeytype')); + } + + User::updateUser( + $userid, + $data['username'], + $request->input('email'), + $data['grabs'], + $data['user_roles_id'], + $data['notes'], + $data['invites'], + $request->has('movieview') ? 1 : 0, + $request->has('musicview') ? 1 : 0, + $request->has('gameview') ? 1 : 0, + $request->has('xxxview') ? 1 : 0, + $request->has('consoleview') ? 1 : 0, + $request->has('bookview') ? 1 : 0, + $request->input('queuetypeids'), + $request->input('nzbgeturl') ?? '', + $request->input('nzbgetusername') ?? '', + $request->input('nzbgetpassword') ?? '', + $request->has('saburl') ? str_finish($request->input('saburl'), '/') : '', + $request->input('sabapikey') ?? '', + $request->input('sabpriority') ?? '', + $request->input('sabapikeytype') ?? '', + $request->input('nzbvortex_server_url') ?? '', + $request->input('nzbvortex_api_key') ?? '', + $request->input('cp_url') ?? '', + $request->input('cp_api') ?? '', + (int) Settings::settingValue('site.main.userselstyle') === 1 ? $request->input('style') : 'None' + ); + + $request->merge(['exccat' => (! $request->has('exccat') || ! \is_array($request->input('exccat'))) ? [] : $request->input('exccat')]); + UserExcludedCategory::addCategoryExclusions($userid, $request->input('exccat')); + + if ($request->has('password')) { + User::updatePassword($userid, $request->input('password')); + } + + redirect('/profile'); + } + } + break; + + case 'view': + default: + break; + } + if ((int) Settings::settingValue('site.main.userselstyle') === 1) { + // Get the list of themes. + $this->smarty->assign('themelist', Utility::getThemesList()); + } + + $this->smarty->assign('error', $errorStr); + $this->smarty->assign('user', $data); + $this->smarty->assign('userexccat', User::getCategoryExclusion($userid)); + + $this->smarty->assign('saburl_selected', $sab->url); + $this->smarty->assign('sabapikey_selected', $sab->apikey); + + $this->smarty->assign('sabapikeytype_ids', [SABnzbd::API_TYPE_NZB, SABnzbd::API_TYPE_FULL]); + $this->smarty->assign('sabapikeytype_names', ['Nzb Api Key', 'Full Api Key']); + $this->smarty->assign('sabapikeytype_selected', ($sab->apikeytype === '') ? SABnzbd::API_TYPE_NZB : $sab->apikeytype); + + $this->smarty->assign('sabpriority_ids', [SABnzbd::PRIORITY_FORCE, SABnzbd::PRIORITY_HIGH, SABnzbd::PRIORITY_NORMAL, SABnzbd::PRIORITY_LOW, SABnzbd::PRIORITY_PAUSED]); + $this->smarty->assign('sabpriority_names', ['Force', 'High', 'Normal', 'Low', 'Paused']); + $this->smarty->assign('sabpriority_selected', ($sab->priority === '') ? SABnzbd::PRIORITY_NORMAL : $sab->priority); + + $this->smarty->assign('sabsetting_ids', [1, 2]); + $this->smarty->assign('sabsetting_names', ['Site', 'Cookie']); + $this->smarty->assign('sabsetting_selected', ($sab->checkCookie() === true ? 2 : 1)); + + switch ($sab->integrated) { + case SABnzbd::INTEGRATION_TYPE_USER: + $queueTypes = ['None', 'Sabnzbd', 'NZBGet']; + $queueTypeIDs = [User::QUEUE_NONE, User::QUEUE_SABNZBD, User::QUEUE_NZBGET]; + break; + case SABnzbd::INTEGRATION_TYPE_NONE: + $queueTypes = ['None', 'NZBGet']; + $queueTypeIDs = [User::QUEUE_NONE, User::QUEUE_NZBGET]; + break; + } + + $this->smarty->assign( + [ + 'queuetypes' => $queueTypes, + 'queuetypeids' => $queueTypeIDs, + ] + ); + + $meta_title = 'Edit User Profile'; + $meta_keywords = 'edit,profile,user,details'; + $meta_description = 'Edit User Profile for '.$data['username']; + + $this->smarty->assign('cp_url_selected', $data['cp_url']); + $this->smarty->assign('cp_api_selected', $data['cp_api']); + + $this->smarty->assign('catlist', Category::getForSelect(false)); + + $content = $this->smarty->fetch('profileedit.tpl'); + + $this->smarty->assign( + [ + 'content' => $content, + 'meta_title' => $meta_title, + 'meta_keywords' => $meta_keywords, + 'meta_description' => $meta_description, + ] + ); + $this->pagerender(); + } } diff --git a/public/pages/myshows.php b/public/pages/myshows.php deleted file mode 100755 index 5a66da751..000000000 --- a/public/pages/myshows.php +++ /dev/null @@ -1,188 +0,0 @@ -show403(); -} - -$action = request()->input('id') ?? ''; -$videoId = request()->input('subpage') ?? ''; - -if (request()->has('from')) { - $page->smarty->assign('from', WWW_TOP.request()->input('from')); -} else { - $page->smarty->assign('from', WWW_TOP.'/myshows'); -} - -switch ($action) { - case 'delete': - $show = UserSerie::getShow(Auth::id(), $videoId); - if (request()->has('from')) { - header('Location:'.WWW_TOP.request()->input('from')); - } else { - redirect('/myshows'); - } - if (! $show) { - $page->show404('Not subscribed'); - } else { - UserSerie::delShow(Auth::id(), $videoId); - } - - break; - case 'add': - case 'doadd': - $show = UserSerie::getShow(Auth::id(), $videoId); - if ($show) { - $page->show404('Already subscribed'); - } else { - $show = Video::getByVideoID($videoId); - if (! $show) { - $page->show404('No matching show.'); - } - } - - if ($action === 'doadd') { - $category = (request()->has('category') && is_array(request()->input('category')) && ! empty(request()->input('category'))) ? request()->input('category') : []; - UserSerie::addShow(Auth::id(), $videoId, $category); - if (request()->has('from')) { - header('Location:'.WWW_TOP.request()->input('from')); - } else { - redirect('/myshows'); - } - } else { - $tmpcats = Category::getChildren(Category::TV_ROOT); - $categories = []; - foreach ($tmpcats as $c) { - // If TV WEB-DL categorization is disabled, don't include it as an option - if ((int) $c['id'] === Category::TV_WEBDL && (int) Settings::settingValue('indexer.categorise.catwebdl') === 0) { - continue; - } - $categories[$c['id']] = $c['title']; - } - $page->smarty->assign('type', 'add'); - $page->smarty->assign('cat_ids', array_keys($categories)); - $page->smarty->assign('cat_names', $categories); - $page->smarty->assign('cat_selected', []); - $page->smarty->assign('video', $videoId); - $page->smarty->assign('show', $show); - $page->content = $page->smarty->fetch('myshows-add.tpl'); - $page->pagerender(); - } - break; - case 'edit': - case 'doedit': - $show = UserSerie::getShow(Auth::id(), $videoId); - - if (! $show) { - $page->show404(); - } - - if ($action === 'doedit') { - $category = (request()->has('category') && is_array(request()->input('category')) && ! empty(request()->input('category'))) ? request()->input('category') : []; - UserSerie::updateShow(Auth::id(), $videoId, $category); - if (request()->has('from')) { - redirect(request()->input('from')); - } else { - redirect('/myshows'); - } - } else { - $tmpcats = Category::getChildren(Category::TV_ROOT); - $categories = []; - foreach ($tmpcats as $c) { - $categories[$c['id']] = $c['title']; - } - - $page->smarty->assign('type', 'edit'); - $page->smarty->assign('cat_ids', array_keys($categories)); - $page->smarty->assign('cat_names', $categories); - $page->smarty->assign('cat_selected', explode('|', $show['categories'])); - $page->smarty->assign('video', $videoId); - $page->smarty->assign('show', $show); - $page->content = $page->smarty->fetch('myshows-add.tpl'); - $page->pagerender(); - } - break; - case 'browse': - - $page->title = 'Browse My Shows'; - $page->meta_title = 'My Shows'; - $page->meta_keywords = 'search,add,to,cart,nzb,description,details'; - $page->meta_description = 'Browse Your Shows'; - - $shows = UserSerie::getShows(Auth::id()); - - $releases = new Releases(['Settings' => $page->settings]); - $browsecount = $releases->getShowsCount($shows, -1, $page->userdata['categoryexclusions']); - - $offset = (request()->has('offset') && ctype_digit(request()->input('offset'))) ? request()->input('offset') : 0; - $ordering = $releases->getBrowseOrdering(); - $orderby = request()->has('ob') && in_array(request()->input('ob'), $ordering, false) ? request()->input('ob') : ''; - - $results = $releases->getShowsRange($shows, $offset, config('nntmux.items_per_page'), $orderby, -1, $page->userdata['categoryexclusions']); - - $page->smarty->assign('pagertotalitems', $browsecount); - $page->smarty->assign('pageroffset', $offset); - $page->smarty->assign('pageritemsperpage', config('nntmux.items_per_page')); - $page->smarty->assign('pagerquerybase', WWW_TOP.'/myshows/browse?ob='.$orderby.'&offset='); - $page->smarty->assign('pagerquerysuffix', '#results'); - $page->smarty->assign('covgroup', ''); - - $pager = $page->smarty->fetch('pager.tpl'); - $page->smarty->assign('pager', $pager); - - foreach ($ordering as $ordertype) { - $page->smarty->assign('orderby'.$ordertype, WWW_TOP.'/myshows/browse?ob='.$ordertype.'&offset=0'); - } - - $page->smarty->assign('lastvisit', $page->userdata['lastlogin']); - - $page->smarty->assign('results', $results); - - $page->smarty->assign('shows', true); - - $page->content = $page->smarty->fetch('browse.tpl'); - $page->pagerender(); - break; - default: - - $page->title = 'My Shows'; - $page->meta_title = 'My Shows'; - $page->meta_keywords = 'search,add,to,cart,nzb,description,details'; - $page->meta_description = 'Manage Your Shows'; - - $tmpcats = Category::getChildren(Category::TV_ROOT); - $categories = []; - foreach ($tmpcats as $c) { - $categories[$c['id']] = $c['title']; - } - - $shows = UserSerie::getShows(Auth::id()); - $results = []; - foreach ($shows as $showk => $show) { - $showcats = explode('|', $show['categories']); - if (is_array($showcats) && count($showcats) > 0) { - $catarr = []; - foreach ($showcats as $scat) { - if (! empty($scat)) { - $catarr[] = $categories[$scat]; - } - } - $show['categoryNames'] = implode(', ', $catarr); - } else { - $show['categoryNames'] = ''; - } - - $results[$showk] = $show; - } - $page->smarty->assign('shows', $results); - - $page->content = $page->smarty->fetch('myshows.tpl'); - $page->pagerender(); - break; -} diff --git a/public/pages/profileedit.php b/public/pages/profileedit.php deleted file mode 100644 index 19abf53f2..000000000 --- a/public/pages/profileedit.php +++ /dev/null @@ -1,161 +0,0 @@ -show403(); -} - -$sab = new SABnzbd($page); -$nzbGet = new NZBGet($page); - -$action = request()->input('action') ?? 'view'; - -$userid = Auth::id(); -$data = User::find($userid); -if (! $data) { - $page->show404(); -} - -$errorStr = ''; - -switch ($action) { - case 'newapikey': - User::updateRssKey($userid); - redirect('/profileedit'); - break; - case 'clearcookies': - $sab->unsetCookie(); - redirect('/profileedit'); - break; - case 'submit': - - $data['email'] = request()->input('email'); - if (request()->has('saburl') && ! ends_with(request()->input('saburl'), '/') && strlen(trim(request()->input('saburl'))) > 0) { - request()->merge(['saburl' => request()->input('saburl').'/']); - } - - if (request()->input('password') !== null && request()->input('password') !== request()->input('password_confirmation')) { - $errorStr = 'Password Mismatch'; - } elseif (request()->input('password') !== null && ! User::isValidPassword(request()->input('password'))) { - $errorStr = 'Your password must be longer than eight characters, have at least 1 number, at least 1 capital and at least one lowercase letter'; - } elseif (! empty(request()->input('nzbgeturl')) && $nzbGet->verifyURL(request()->input('nzbgeturl')) === false) { - $errorStr = 'The NZBGet URL you entered is invalid!'; - } elseif (! User::isValidEmail(request()->input('email'))) { - $errorStr = 'Your email is not a valid format.'; - } else { - $res = User::getByEmail(request()->input('email')); - if ($res && (int) $res['id'] !== $userid) { - $errorStr = 'Sorry, the email is already in use.'; - } elseif ((empty(request()->input('saburl')) && ! empty(request()->input('sabapikey'))) || (! empty(request()->input('saburl')) && empty(request()->input('sabapikey')))) { - $errorStr = 'Insert a SABnzdb URL and API key.'; - } else { - if (request()->has('sasetting') && request()->input('sabsetting') === 2) { - $sab->setCookie(request()->input('saburl'), request()->input('sabapikey'), request()->input('sabpriority'), request()->input('sabapikeytype')); - } - - User::updateUser( - $userid, - $data['username'], - request()->input('email'), - $data['grabs'], - $data['user_roles_id'], - $data['notes'], - $data['invites'], - request()->has('movieview') ? 1 : 0, - request()->has('musicview') ? 1 : 0, - request()->has('gameview') ? 1 : 0, - request()->has('xxxview') ? 1 : 0, - request()->has('consoleview') ? 1 : 0, - request()->has('bookview') ? 1 : 0, - request()->input('queuetypeids'), - request()->input('nzbgeturl') ?? '', - request()->input('nzbgetusername') ?? '', - request()->input('nzbgetpassword') ?? '', - request()->has('saburl') ? str_finish(request()->input('saburl'), '/') : '', - request()->input('sabapikey') ?? '', - request()->input('sabpriority') ?? '', - request()->input('sabapikeytype') ?? '', - request()->input('nzbvortex_server_url') ?? '', - request()->input('nzbvortex_api_key') ?? '', - request()->input('cp_url') ?? '', - request()->input('cp_api') ?? '', - (int) Settings::settingValue('site.main.userselstyle') === 1 ? request()->input('style') : 'None' - ); - - request()->merge(['exccat' => (! request()->has('exccat') || ! is_array(request()->input('exccat'))) ? [] : request()->input('exccat')]); - UserExcludedCategory::addCategoryExclusions($userid, request()->input('exccat')); - - if (request()->input('password') !== null) { - User::updatePassword($userid, request()->input('password')); - } - - redirect('/profile'); - } - } - break; - - case 'view': - default: - break; -} -if ((int) Settings::settingValue('site.main.userselstyle') === 1) { - // Get the list of themes. - $page->smarty->assign('themelist', Utility::getThemesList()); -} - -$page->smarty->assign('error', $errorStr); -$page->smarty->assign('user', $data); -$page->smarty->assign('userexccat', User::getCategoryExclusion($userid)); - -$page->smarty->assign('saburl_selected', $sab->url); -$page->smarty->assign('sabapikey_selected', $sab->apikey); - -$page->smarty->assign('sabapikeytype_ids', [SABnzbd::API_TYPE_NZB, SABnzbd::API_TYPE_FULL]); -$page->smarty->assign('sabapikeytype_names', ['Nzb Api Key', 'Full Api Key']); -$page->smarty->assign('sabapikeytype_selected', ($sab->apikeytype === '') ? SABnzbd::API_TYPE_NZB : $sab->apikeytype); - -$page->smarty->assign('sabpriority_ids', [SABnzbd::PRIORITY_FORCE, SABnzbd::PRIORITY_HIGH, SABnzbd::PRIORITY_NORMAL, SABnzbd::PRIORITY_LOW, SABnzbd::PRIORITY_PAUSED]); -$page->smarty->assign('sabpriority_names', ['Force', 'High', 'Normal', 'Low', 'Paused']); -$page->smarty->assign('sabpriority_selected', ($sab->priority === '') ? SABnzbd::PRIORITY_NORMAL : $sab->priority); - -$page->smarty->assign('sabsetting_ids', [1, 2]); -$page->smarty->assign('sabsetting_names', ['Site', 'Cookie']); -$page->smarty->assign('sabsetting_selected', ($sab->checkCookie() === true ? 2 : 1)); - -switch ($sab->integrated) { - case SABnzbd::INTEGRATION_TYPE_USER: - $queueTypes = ['None', 'Sabnzbd', 'NZBGet']; - $queueTypeIDs = [User::QUEUE_NONE, User::QUEUE_SABNZBD, User::QUEUE_NZBGET]; - break; - case SABnzbd::INTEGRATION_TYPE_NONE: - $queueTypes = ['None', 'NZBGet']; - $queueTypeIDs = [User::QUEUE_NONE, User::QUEUE_NZBGET]; - break; -} - -$page->smarty->assign( - [ - 'queuetypes' => $queueTypes, - 'queuetypeids' => $queueTypeIDs, - ] -); - -$page->meta_title = 'Edit User Profile'; -$page->meta_keywords = 'edit,profile,user,details'; -$page->meta_description = 'Edit User Profile for '.$data['username']; - -$page->smarty->assign('cp_url_selected', $data['cp_url']); -$page->smarty->assign('cp_api_selected', $data['cp_api']); - -$page->smarty->assign('catlist', Category::getForSelect(false)); - -$page->content = $page->smarty->fetch('profileedit.tpl'); -$page->pagerender(); diff --git a/routes/web.php b/routes/web.php index 6e5cb3d07..3061ba3b2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -117,13 +117,9 @@ Route::get('forumpost/{id}', 'ForumController@getPosts'); Route::post('forumpost/{id}', 'ForumController@getPosts'); -Route::get('/profileedit', function () { - redirect('/profileedit'); -})->middleware('auth'); +Route::get('profileedit', 'ProfileController@edit'); -Route::post('/profileedit', function () { - redirect('/profileedit'); -})->middleware('auth'); +Route::post('profileedit', 'ProfileController@edit'); Route::get('/profile_delete', function () { redirect('/profile_delete');