summaryrefslogtreecommitdiff
path: root/nzbget/cancel.pm
blob: 0a960916035b2547d7fee137b968f5d797530cea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package nzbget::cancel;

use strict;
use Apache2::Const -compile => qw(OK REDIRECT);
use CGI qw(:standard);
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" unless (($download->owner->owner_id() eq $user->get_id()) or ($user->is_admin()));
	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 nzbget";
	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;