X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=NDWeb%2FPages%2FRaids.pm;h=2382a8fed360ac0503ca26f7da1123f6433afc2f;hb=1ac7abba88180254eaf3a65e1aded1c6d7c42576;hp=766d5a390e589e69202caded65c6527de2688ab1;hpb=ac550844a0deacd02badadadc67eb5a41ffa095d;p=ndwebbie.git diff --git a/NDWeb/Pages/Raids.pm b/NDWeb/Pages/Raids.pm index 766d5a3..2382a8f 100644 --- a/NDWeb/Pages/Raids.pm +++ b/NDWeb/Pages/Raids.pm @@ -119,13 +119,18 @@ sub render_body { my $target = param('target'); my $wave = param('wave'); - my $findtarget = $DBH->prepare("SELECT rt.id FROM raid_targets rt NATURAL JOIN raid_access ra NATURAL JOIN groupmembers where uid = ? AND id = ?"); + $DBH->begin_work; + my $findtarget = $DBH->prepare(q{SELECT rt.id FROM raid_targets rt + NATURAL JOIN raid_access ra NATURAL JOIN groupmembers + WHERE uid = ? AND id = ? + FOR UPDATE + }); my $result = $DBH->selectrow_array($findtarget,undef,$ND::UID,$target); if ($result != $target){ + $DBH->rollback; return $self->noAccess; } - $DBH->begin_work; if (param('cmd') eq 'Claim'){ my $claims = $DBH->prepare(qq{SELECT username FROM raid_claims NATURAL JOIN users WHERE target = ? AND wave = ?}); $claims->execute($target,$wave); @@ -222,9 +227,9 @@ sub render_body { $target{Id} = $target->{id}; $target{Race} = $target->{race}; my $num = pow(10,length($target->{score})-2); - $target{Score} = ceil($target->{score}/$num)*$num; + $target{Score} = "Hidden"; #ceil($target->{score}/$num)*$num; $num = pow(10,length($target->{value})-2); - $target{Value} = ceil($target->{value}/$num)*$num; + $target{Value} = "Hidden"; #ceil($target->{value}/$num)*$num; $num = pow(10,length($target->{size})-2); $target{Size} = floor($target->{size}/$num)*$num; $num = pow(10,length($target->{fleetvalue})-2); @@ -236,30 +241,29 @@ sub render_body { $target{comment} = parseMarkup($target->{comment}) if ($target->{comment}); my $unitscans = $DBH->prepare(q{ - SELECT i.id,i.name, i.tick, i.amount + SELECT DISTINCT ON (name) i.id,i.name, i.tick, i.amount FROM fleets i WHERE i.uid = -1 AND i.sender = ? AND i.mission = 'Full fleet' GROUP BY i.id,i.tick,i.name,i.amount - ORDER BY i.tick,name + ORDER BY name,i.tick DESC }); $unitscans->execute($target->{planet}) or warn $DBH->errstr; - my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships WHERE id = ?}); + my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships + WHERE id = ? ORDER BY num + }); my @missions; - my $i = 0; while (my $mission = $unitscans->fetchrow_hashref){ - $mission->{ODD} = $i++ % 2; my @ships; $ships->execute($mission->{id}); - my $j = 0; while (my $ship = $ships->fetchrow_hashref){ - $ship->{ODD} = $j++ % 2; push @ships,$ship; } push @ships, {ship => 'No', amount => 'ships'} if @ships == 0; $mission->{ships} = \@ships; $mission->{amount} =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g; #Add comma for ever 3 digits, i.e. 1000 => 1,000 + delete $mission->{id}; push @missions,$mission; } $target{missions} = \@missions; @@ -283,7 +287,7 @@ sub render_body { $size -= $roids; my $xp = 0; if ($planet){ - $xp = pa_xp($roids,$planet->{score},$planet->{value},$target{Score},$target{Value}); + $xp = pa_xp($roids,$planet->{score},$planet->{value},$target->{score},$target->{value}); } push @roids,{Wave => $i, Roids => $roids, XP => $xp}; if ($self->{AJAX}){