X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=ND%2FWeb%2FPages%2FAlliances.pm;h=311adb3c7b726d41d452a7fdfd67dc4d21ce9154;hb=ac65e241f748773959b94d66691ee93019fcae84;hp=aec9ea4a1cf5de17249d5add64fcc6028bdc9016;hpb=9ce5a8529e75cb109ed9ba3fc788c94ef47b1080;p=ndwebbie.git diff --git a/ND/Web/Pages/Alliances.pm b/ND/Web/Pages/Alliances.pm index aec9ea4..311adb3 100644 --- a/ND/Web/Pages/Alliances.pm +++ b/ND/Web/Pages/Alliances.pm @@ -24,23 +24,18 @@ use ND::Include; use CGI qw/:standard/; use ND::Web::Include; -$ND::PAGES{alliances} = {parse => \&parse, process => \&process, render=> \&render}; +use base qw/ND::Web::XMLPage/; -sub parse { - my ($uri) = @_; -} - -sub process { +$ND::Web::Page::PAGES{alliances} = __PACKAGE__; -} - -sub render { - my ($DBH,$BODY) = @_; +sub render_body { + my $self = shift; + my ($BODY) = @_; + $self->{TITLE} = 'Alliances'; + my $DBH = $self->{DBH}; my $error; - $ND::TEMPLATE->param(TITLE => 'Alliances'); - - return $ND::NOACCESS unless isHC(); + return $self->noAccess unless $self->isHC; my $alliance; if (defined param('alliance') && param('alliance') =~ /^(\d+)$/){ @@ -51,7 +46,7 @@ sub render { $DBH->begin_work; if (param('crelationship')){ my $value = escapeHTML(param('relationship')); - if ($DBH->do(q{UPDATE alliances SET relationship = ? WHERE id =?} + if ($DBH->do(q{UPDATE alliances SET relationship = NULLIF(?,'') WHERE id =?} ,undef,$value,$alliance->{id})){ $alliance->{relationship} = $value; log_message $ND::UID,"HC set alliance: $alliance->{id} relationship: $value"; @@ -65,11 +60,11 @@ sub render { UPDATE planets SET alliance_id = $2, nick = coalesce($3,nick) WHERE id = $1; }); - while ($coords =~ m/(\d+):(\d+):(\d+)(?:\s+nick=\s*(\S+))?/g){ + while ($coords =~ m/(\d+):(\d+):(\d+)(?:\s+nick=(\S+))?/g){ my ($id) = $DBH->selectrow_array($findplanet,undef,$1,$2,$3) or $ND::ERROR .= p $DBH->errstr; if ($addplanet->execute($id,$alliance->{id},$4)){ my $nick = ''; - $nick = '(nick $4)' if defined $4; + $nick = "(nick $4)" if defined $4; $error .= "

Added planet $1:$2:$3 $nick to this alliance

"; intel_log $ND::UID,$id,"HC Added planet $1:$2:$3 $nick to alliance: $alliance->{id} ($alliance->{name})"; }else{ @@ -83,7 +78,7 @@ sub render { $BODY->param(Alliance => $alliance->{name}); $BODY->param(Id => $alliance->{id}); my @relationships; - for my $relationship (" ","Friendly", "NAP", "Hostile"){ + for my $relationship ("","Friendly", "NAP", "Hostile"){ push @relationships,{Rel => $relationship, Selected => defined $alliance->{relationship} && $relationship eq $alliance->{relationship}} } $BODY->param(Relationships => \@relationships); @@ -108,12 +103,12 @@ sub render { } $BODY->param(Members => \@members); - my $query = $DBH->prepare(intelquery('o.alliance AS oalliance,coords(o.x,o.y,o.z) AS origin, t.alliance AS talliance,coords(t.x,t.y,t.z) AS target',qq{not ingal AND (t.alliance_id = ? OR t.alliance_id = ?) + my $query = $DBH->prepare(intelquery('o.alliance AS oalliance,coords(o.x,o.y,o.z) AS origin, t.alliance AS talliance,coords(t.x,t.y,t.z) AS target',q{not ingal AND (o.alliance_id = $1 OR t.alliance_id = $1) AND (i.mission = 'Defend' OR i.mission = 'AllyDef') - AND (t.alliance_id != ? OR t.alliance_id IS NULL OR o.alliance_id != ? OR o.alliance_id IS NULL) + AND ((( t.alliance_id != o.alliance_id OR t.alliance_id IS NULL OR o.alliance_id IS NULL))) AND i.sender NOT IN (SELECT planet FROM users u NATURAL JOIN groupmembers gm WHERE gid = 8 AND planet IS NOT NULL) })); - $query->execute($alliance->{id},$alliance->{id},$alliance->{id},$alliance->{id}) or $error .= $DBH->errstr; + $query->execute($alliance->{id}) or $error .= $DBH->errstr; my @intel; $i = 0; @@ -135,9 +130,9 @@ sub render { $order = "$1 DESC"; } my $query = $DBH->prepare(qq{ - SELECT DISTINCT a.id,name,COALESCE(s.score,SUM(p.score)) AS score,COALESCE(s.size,SUM(p.size)) AS size,s.members,count(*) AS kmem, + SELECT DISTINCT a.id,name,COALESCE(s.score,SUM(p.score)) AS score,COALESCE(s.size,SUM(p.size)) AS size,s.members,count(p.score) AS kmem, COALESCE(SUM(p.score),-1) AS kscore, COALESCE(SUM(p.size),-1) AS ksize, COALESCE(SUM(p.xp),-1) AS kxp,COALESCE(SUM(p.value),-1) AS kvalue, - COALESCE(s.score/LEAST(s.members,60),-1) AS scavg, COALESCE(AVG(p.score)::int,-1) AS kscavg, COALESCE(s.size/s.members,-1) AS siavg, + COALESCE(s.score/s.members,-1) AS scavg, COALESCE(AVG(p.score)::int,-1) AS kscavg, COALESCE(s.size/s.members,-1) AS siavg, COALESCE(AVG(p.size)::int,-1) AS ksiavg, COALESCE(AVG(p.xp)::int,-1) AS kxpavg, COALESCE(AVG(p.value)::int,-1) AS kvalavg FROM alliances a LEFT OUTER JOIN (SELECT * FROM alliance_stats WHERE tick = (SELECT max(tick) FROM alliance_stats)) s ON s.id = a.id