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;