summaryrefslogtreecommitdiff
path: root/nzbget/cancel.pm
diff options
context:
space:
mode:
Diffstat (limited to 'nzbget/cancel.pm')
-rw-r--r--nzbget/cancel.pm43
1 files changed, 43 insertions, 0 deletions
diff --git a/nzbget/cancel.pm b/nzbget/cancel.pm
new file mode 100644
index 0000000..556cc22
--- /dev/null
+++ b/nzbget/cancel.pm
@@ -0,0 +1,43 @@
+package nzbget::cancel;
+
+use strict;
+use Apache2::Const -compile => qw(OK REDIRECT);
+use CGI qw(:standard);
+use CGI::Carp 'fatalsToBrowser';
+use local::nzbget;
+use local::db;
+use local::user;
+use File::Path;
+use config;
+
+sub handler
+{
+ my $user = new local::user(%ENV);
+ my $del_id = param('id');
+
+ my ($download) = local::db::download->retrieve($del_id) or die 'Error in cancel';
+ die "Not allowed" if not $download->owner->owner_id() eq $user->get_id();
+ my $basedir = $config::config{files_dir} or die 'Missing files_dir in config';
+ my $cli = new local::nzbget;
+ my $row = $cli->send_request('listgroups') or die "Can't connect to nubget";
+ foreach my $value ( @$row)
+ {
+ my ($dl) = local::db::download->retrieve($value->{NZBNicename}) or die ' Error in groups';
+ if ($value->{NZBNicename} == $del_id)
+ {
+ my $status = $cli->send_request('editqueue','GroupDelete',0,"",[$value->{LastID}]) or die "Can't connect to nzbget";
+ sleep 1;
+ File::Path::rmtree($basedir.'/'.$dl->category->name.'/'.$dl->download_id);
+ $user->obj->quota_used($user->obj->quota_used - $dl->size);
+ $user->obj->update;
+ my @seens = local::db::seen->search(download=>$del_id);
+ map {$_->delete()} @seens;
+ $dl->delete();
+ }
+ }
+
+ print CGI::redirect('download');
+ return Apache2::Const::REDIRECT;
+}
+
+1;