X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=NDWeb%2FPages%2FEditRaid.pm;h=cbcc3b2aca91dcaac13e79bf90f3dc16000b0295;hb=b1a7289bb7acbb4e911b62557acb7812492d90d5;hp=b0f4f99c7ca2a12e88448cc8087ccbfa20f93f3b;hpb=a074bd17f5e8ba341a22bbfca1da7093b8351774;p=ndwebbie.git diff --git a/NDWeb/Pages/EditRaid.pm b/NDWeb/Pages/EditRaid.pm index b0f4f99..cbcc3b2 100644 --- a/NDWeb/Pages/EditRaid.pm +++ b/NDWeb/Pages/EditRaid.pm @@ -140,6 +140,10 @@ sub render_body { my $comment = $DBH->prepare(q{UPDATE raid_targets SET comment = ? WHERE id = ?}); my $unclaim = $DBH->prepare(q{DELETE FROM raid_claims WHERE target = ? AND wave = ?}); my $block = $DBH->prepare(q{INSERT INTO raid_claims (target,uid,wave) VALUES(?,-2,?)}); + my $claim = $DBH->prepare(q{INSERT INTO raid_claims (target,uid,wave) + VALUES($1,(SELECT uid FROM users WHERE username ILIKE $3),$2) + }); + my $unblock = $DBH->prepare(q{DELETE FROM raid_claims WHERE target = ? AND wave = ? AND uid = -2}); my $remove = $DBH->prepare(q{DELETE FROM raid_targets WHERE raid = ? AND id = ?}); for $_ (param()){ if (/^comment:(\d+)$/){ @@ -149,6 +153,14 @@ sub render_body { log_message $ND::UID,"BC unclaimed target $1 wave $2."; }elsif(/^block:(\d+):(\d+)$/){ $block->execute($1,$2) or $error .= p($DBH->errstr); + }elsif(/^claim:(\d+):(\d+)$/){ + my $target = $1; + my $wave = $2; + my @claims = split /[, ]+/, param($_); + $unblock->execute($target,$wave) if @claims; + for (@claims){ + $claim->execute($target,$wave,$_) or warn $DBH->errstr; + } }elsif(/^remove:(\d+)$/){ $remove->execute($raid->{id},$1) or $error .= p($DBH->errstr); } @@ -223,28 +235,15 @@ sub render_body { } $target->{waves} = \@waves; - my $scans = $DBH->prepare(q{SELECT DISTINCT ON (type) type, tick, scan FROM scans - WHERE planet = ? AND type ~ 'Unit|Planet|Advanced Unit|.* Analysis' AND tick + 24 > tick() AND scan is not null - GROUP BY type, tick, scan ORDER BY type ,tick DESC}); + my $scans = $DBH->prepare(q{SELECT DISTINCT ON (type) scan_id,type, tick FROM scans + WHERE planet = ? AND type ~ 'Unit|Planet|Advanced Unit|.* Analysis' AND tick + 24 > tick() + ORDER BY type ,tick DESC}); $scans->execute($target->{planet}); delete $target->{planet}; - my %scans; - while (my $scan = $scans->fetchrow_hashref){ - $scans{$scan->{type}} = $scan; - } my @scans; - for my $type ('Planet','Unit','Advanced Unit','Surface Analysis','Technology Analysis'){ - next unless exists $scans{$type}; - my $scan = $scans{$type}; - if ($self->{TICK} - $scan->{tick} > 5){ - $scan->{scan} =~ s{}{}; - } - if ($type eq 'Planet'){ - $target->{PlanetScan} = $scan->{scan}; - next; - } - push @scans,{Scan => $scan->{scan}}; + while (my $scan = $scans->fetchrow_hashref){ + push @scans,$scan; } $target->{Scans} = \@scans; push @targets,$target;