From 0fd50e2bc23f1757bdc7637912ffb8e7abe589ba Mon Sep 17 00:00:00 2001 From: DariusIII Date: Mon, 16 Apr 2018 13:07:17 +0200 Subject: [PATCH] Optimize queue controller --- Changelog | 1 + app/Http/Controllers/NZBGetController.php | 82 ------- app/Http/Controllers/QueueController.php | 254 ++++++++++++++++++++++ public/pages/queue.php | 88 -------- routes/web.php | 12 +- 5 files changed, 266 insertions(+), 171 deletions(-) delete mode 100644 app/Http/Controllers/NZBGetController.php create mode 100644 app/Http/Controllers/QueueController.php delete mode 100644 public/pages/queue.php diff --git a/Changelog b/Changelog index 95bd9ac7a..d1c83db32 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2018-04-16 DariusIII + * Chg: Optimize queue controller * Chg: Add NZBGetController and route * Chg: Update headermenu.tpl in all themes * Chg: Use laravel pager in all themes diff --git a/app/Http/Controllers/NZBGetController.php b/app/Http/Controllers/NZBGetController.php deleted file mode 100644 index 2e4317b38..000000000 --- a/app/Http/Controllers/NZBGetController.php +++ /dev/null @@ -1,82 +0,0 @@ -setPrefs(); - $nzbGet = new NZBGet($this); - - $output = ''; - $data = $nzbGet->getQueue(); - - if ($data !== false) { - if (\count($data) > 0) { - $status = $nzbGet->status(); - - if ($status !== false) { - $output .= - "
-
Avg Speed:
".Utility::bytesToSizeString($status['AverageDownloadRate'], 2)."/s
-
Speed:
".Utility::bytesToSizeString($status['DownloadRate'], 2)."/s
-
Limit:
".Utility::bytesToSizeString($status['DownloadLimit'], 2)."/s
-
Queue Left(no pars):
".Utility::bytesToSizeString($status['RemainingSizeLo'], 2)."
-
Free Space:
".Utility::bytesToSizeString($status['FreeDiskSpaceMB'] * 1024000, 2)."
-
Status:
".($status['Download2Paused'] === 1 ? 'Paused' : 'Downloading').'
-
'; - } - - $count = 1; - $output .= - " - - - - - - - - - - - - - - "; - - foreach ($data as $item) { - $output .= - ''. - "'. - "'. - "'. - "'. - "'. - "'. - "". - "". - "". - ''; - $count++; - } - $output .= - ' -
#NameSizeLeft(+pars)DoneStatusDeletePause allResume all
".$count.'".$item['NZBName'].'".$item['FileSizeMB'].' MB".$item['RemainingSizeMB'].' MB".($item['FileSizeMB'] === 0 ? 0 : round(100 - ($item['RemainingSizeMB'] / $item['FileSizeMB']) * 100)).'%".($item['ActiveDownloads'] > 0 ? 'Downloading' : 'Paused').'DeletePauseResume
'; - } else { - $output .= "

The queue is currently empty.

"; - } - } else { - $output .= "

Error retreiving queue.

"; - } - - echo $output; - } -} diff --git a/app/Http/Controllers/QueueController.php b/app/Http/Controllers/QueueController.php new file mode 100644 index 000000000..b3c2bb9ad --- /dev/null +++ b/app/Http/Controllers/QueueController.php @@ -0,0 +1,254 @@ +setPrefs(); + $userData = User::find(Auth::id()); + if (! $userData) { + $this->show404(); + } + $this->smarty->assign('user', $userData); + + $queueType = $error = ''; + $queue = null; + switch (Settings::settingValue('apps.sabnzbplus.integrationtype')) { + case SABnzbd::INTEGRATION_TYPE_NONE: + if ($userData['queuetype'] === 2) { + $queueType = 'NZBGet'; + $queue = new NZBGet($this); + } + break; + case SABnzbd::INTEGRATION_TYPE_USER: + switch ((int) $userData['queuetype']) { + case 1: + $queueType = 'Sabnzbd'; + $queue = new SABnzbd(); + break; + case 2: + $queueType = 'NZBGet'; + $queue = new NZBGet($this); + break; + } + break; + } + + if ($queue !== null) { + if ($queueType === 'Sabnzbd') { + if (empty($queue->url)) { + $error = 'ERROR: The Sabnzbd URL is missing!'; + } + + if (empty($queue->apikey)) { + if ($error === '') { + $error = 'ERROR: The Sabnzbd API key is missing!'; + } else { + $error .= ' The Sabnzbd API key is missing!'; + } + } + } + + if ($error === '') { + if ($request->has('del')) { + $queue->delFromQueue($request->input('del')); + } + + if ($request->has('pause')) { + $queue->pauseFromQueue($request->input('pause')); + } + + if ($request->has('resume')) { + $queue->resumeFromQueue($request->input('resume')); + } + + if ($request->has('pall')) { + $queue->pauseAll(); + } + + if ($request->has('rall')) { + $queue->resumeAll(); + } + + $this->smarty->assign('serverURL', $queue->url); + } + } + + $this->smarty->assign(['queueType' => $queueType, 'error' => $error, 'user', User::class]); + $title = 'Your '.$queueType.' Download Queue'; + $meta_title = 'View'.$queueType.' Queue'; + $meta_keywords = 'view,'.strtolower($queueType).',queue'; + $meta_description = 'View'.$queueType.' Queue'; + $content = $this->smarty->fetch('viewqueue.tpl'); + $this->smarty->assign([ + 'title' => $title, + 'content' => $content, + 'meta_title' => $meta_title, + 'meta_keywords' => $meta_keywords, + 'meta_description' => $meta_description, + ]); + $this->pagerender(); + } + + /** + * @throws \Exception + */ + public function nzbget() + { + $this->setPrefs(); + $nzbGet = new NZBGet($this); + + $output = ''; + $data = $nzbGet->getQueue(); + + if ($data !== false) { + if (\count($data) > 0) { + $status = $nzbGet->status(); + + if ($status !== false) { + $output .= + "
+
Avg Speed:
".Utility::bytesToSizeString($status['AverageDownloadRate'], 2)."/s
+
Speed:
".Utility::bytesToSizeString($status['DownloadRate'], 2)."/s
+
Limit:
".Utility::bytesToSizeString($status['DownloadLimit'], 2)."/s
+
Queue Left(no pars):
".Utility::bytesToSizeString($status['RemainingSizeLo'], 2)."
+
Free Space:
".Utility::bytesToSizeString($status['FreeDiskSpaceMB'] * 1024000, 2)."
+
Status:
".($status['Download2Paused'] === 1 ? 'Paused' : 'Downloading').'
+
'; + } + + $count = 1; + $output .= + " + + + + + + + + + + + + + + "; + + foreach ($data as $item) { + $output .= + ''. + "'. + "'. + "'. + "'. + "'. + "'. + "". + "". + "". + ''; + $count++; + } + $output .= + ' +
#NameSizeLeft(+pars)DoneStatusDeletePause allResume all
".$count.'".$item['NZBName'].'".$item['FileSizeMB'].' MB".$item['RemainingSizeMB'].' MB".($item['FileSizeMB'] === 0 ? 0 : round(100 - ($item['RemainingSizeMB'] / $item['FileSizeMB']) * 100)).'%".($item['ActiveDownloads'] > 0 ? 'Downloading' : 'Paused').'DeletePauseResume
'; + } else { + $output .= "

The queue is currently empty.

"; + } + } else { + $output .= "

Error retreiving queue.

"; + } + + echo $output; + } + + /** + * @throws \Exception + */ + public function sabnzbd() + { + $this->setPrefs(); + $sab = new SABnzbd(); + + $output = ''; + + $json = $sab->getAdvQueue(); + + if ($json !== false) { + $obj = json_decode($json); + $queue = $obj->{'queue'}; + $count = 1; + + $output .= + "
+
Speed:
".$obj->{'speed'}."B/s
+
Queued:
".round($obj->{'mbleft'}, 2).'MB / '.round($obj->{'mb'}, 2).'MB'."
+
Status:
".ucwords(strtolower($obj->{'state'}))."
+
Free (temp):
".round($obj->{'diskspace1'})."GB
+
Free Space:
".round($obj->{'diskspace2'})."GB
+
Stats:
".preg_replace('/\s+\|\s+| /', ',', $obj->{'loadavg'}).'
+
'; + + if (\count($queue) > 0) { + $output .= + " + + + + + + + + + + + + + + "; + + foreach ($queue->{'slots'} as $item) { + if (strpos($item->{'filename'}, 'fetch NZB') === false) { + $output .= + ''. + "'. + "'. + "'. + "'. + "'. + "'. + "". + "". + "". + ''; + $count++; + } + } + $output .= + ' +
#NameSizeLeftDoneTime LeftDeletePause allResume all
".$count.'".$item->{'filename'}.'".round($item->{'mb'}, 2).' MB".round($item->{'mbleft'}, 2).' MB".($item->{'mb'} === 0 ? 0 : round(100 - ($item->{'mbleft'} / $item->{'mb'}) * 100)).'%".$item->{'timeleft'}.'DeletePauseResume
'; + } else { + $output .= "

The queue is currently empty.

"; + } + } else { + $output .= "

Error retrieving queue.

"; + } + + echo $output; + } +} diff --git a/public/pages/queue.php b/public/pages/queue.php deleted file mode 100644 index 0080ed803..000000000 --- a/public/pages/queue.php +++ /dev/null @@ -1,88 +0,0 @@ -show403(); -} - -$userData = User::find(Auth::id()); -if (! $userData) { - $page->show404(); -} -$page->smarty->assign('user', $userData); - -$queueType = $error = ''; -$queue = null; -switch (Settings::settingValue('apps.sabnzbplus.integrationtype')) { - case SABnzbd::INTEGRATION_TYPE_NONE: - if ($userData['queuetype'] === 2) { - $queueType = 'NZBGet'; - $queue = new NZBGet($page); - } - break; - case SABnzbd::INTEGRATION_TYPE_USER: - switch ((int) $userData['queuetype']) { - case 1: - $queueType = 'Sabnzbd'; - $queue = new SABnzbd($page); - break; - case 2: - $queueType = 'NZBGet'; - $queue = new NZBGet($page); - break; - } - break; -} - -if ($queue !== null) { - if ($queueType === 'Sabnzbd') { - if (empty($queue->url)) { - $error = 'ERROR: The Sabnzbd URL is missing!'; - } - - if (empty($queue->apikey)) { - if ($error === '') { - $error = 'ERROR: The Sabnzbd API key is missing!'; - } else { - $error .= ' The Sabnzbd API key is missing!'; - } - } - } - - if ($error === '') { - if (request()->has('del')) { - $queue->delFromQueue(request()->input('del')); - } - - if (request()->has('pause')) { - $queue->pauseFromQueue(request()->input('pause')); - } - - if (request()->has('resume')) { - $queue->resumeFromQueue(request()->input('resume')); - } - - if (request()->has('pall')) { - $queue->pauseAll(); - } - - if (request()->has('rall')) { - $queue->resumeAll(); - } - - $page->smarty->assign('serverURL', $queue->url); - } -} - -$page->smarty->assign(['queueType' => $queueType, 'error' => $error, 'user', User::class]); -$page->title = 'Your '.$queueType.' Download Queue'; -$page->meta_title = 'View'.$queueType.' Queue'; -$page->meta_keywords = 'view,'.strtolower($queueType).',queue'; -$page->meta_description = 'View'.$queueType.' Queue'; -$page->content = $page->smarty->fetch('viewqueue.tpl'); -$page->pagerender(); diff --git a/routes/web.php b/routes/web.php index 470b52e95..41dfdd1ea 100644 --- a/routes/web.php +++ b/routes/web.php @@ -157,4 +157,14 @@ Route::get('btc_payment_callback', 'BtcPaymentController@callback'); Route::post('btc_payment_callback', 'BtcPaymentController@callback'); -Route::get('nzbgetqueuedata', 'NZBGetController@queue'); +Route::get('queue', 'QueueController@index'); + +Route::post('queue', 'QueueController@index'); + +Route::get('nzbgetqueuedata', 'QueueController@nzbget'); + +Route::post('nzbgetqueuedata', 'QueueController@nzbget'); + +Route::get('sabnzbdqueuedata', 'QueueController@sabnzbd'); + +Route::post('sabnzbdqueuedata', 'QueueController@sabnzbd');