]> ruin.nu Git - ndwebbie.git/blobdiff - lib/NDWeb/Controller/Members.pm
Adding coords and tick to intel messages
[ndwebbie.git] / lib / NDWeb / Controller / Members.pm
index e14cdcc7092d864971703d88d2b11a6b7e4bd427..81a1238c2cdb8c2d270b3ffe22530bb6dbe24b54 100644 (file)
@@ -137,15 +137,26 @@ sub postowncoords : Local {
        if ($c->user->planet){
                $c->flash(error => 'You already have a planet set.'
                        .' Contact a HC if they need to be changed');
-       }elsif ($c->req->param('planet') =~ m/(\d+)\D+(\d+)\D+(\d+)/){
+       }elsif (my ($x,$y,$z) = $c->req->param('planet') =~ m/(\d+)\D+(\d+)\D+(\d+)/){
                my $planet = $dbh->selectrow_array(q{SELECT planetid($1,$2,$3,TICK())
-                       },undef,$1,$2,$3);
+                       },undef,$x,$y,$z);
 
                if ($planet){
-                       $dbh->do(q{UPDATE users SET planet = ? WHERE uid = ?
-                               },undef, $planet , $c->user->id);
+                       eval {
+                               $dbh->do(q{UPDATE users SET pid = ? WHERE uid = ?
+                                       },undef, $planet , $c->user->id);
+                       };
+                       given ($@){
+                               when (''){}
+                               when (/duplicate key value violates/){
+                                       $c->flash(error => "The coords $x:$y:$z are already in use. Talk to hc if these are really your coords.")
+                               }
+                               default {
+                                       $c->flash(error => $@)
+                               }
+                       }
                }else{
-                       $c->flash(error => "No planet at coords: $1:$2:$3");
+                       $c->flash(error => "No planet at coords: $x:$y:$z");
                }
        }else{
                $c->flash(error => $c->req->param('planet') . " are not valid coords.");
@@ -254,7 +265,7 @@ sub postircrequest : Local {
 INSERT INTO irc_requests (uid,channel,message) VALUES($1,$2,$3)
                });
                $query->execute($c->user->id,$c->req->param('channel'),$c->req->param('message'));
-               system 'killall','-USR1', 'irssi';
+               system 'killall','-USR1', 'ndbot.pl';
 
                $c->flash(reply => "Msg sent to: ".$c->req->param('channel'));
                $c->res->redirect($c->uri_for('ircrequest'));
@@ -355,6 +366,11 @@ sub postintelmessage : Local {
                }
        }
 
+       my ($coords,$tick) = $c->model->selectrow_array(q{
+SELECT coords(x,y,z), tick() FROM current_planet_stats WHERE pid = $1
+               }, undef, $c->user->planet);
+
+       $c->req->param(message => "[i]Posted by $coords at tick $tick [/i]\n\n" . $c->req->param('message'));
        $c->forward('/forum/insertThread',[12]);
        $c->forward('/forum/insertPost',[$c->stash->{thread}]);
        $c->flash(intelmessage => 1);