From: Michael Andreen Date: Mon, 16 Jan 2017 21:42:22 +0000 (+0100) Subject: Add sms sending to webbie X-Git-Url: https://ruin.nu/git/?p=ndwebbie.git;a=commitdiff_plain;h=0a35b86f2577bc9e2efcabe818a56a9ec46bb0bd Add sms sending to webbie --- diff --git a/database/data/group_roles.sql b/database/data/group_roles.sql index 1496d77..0a51258 100644 --- a/database/data/group_roles.sql +++ b/database/data/group_roles.sql @@ -31,6 +31,7 @@ INSERT INTO roles VALUES('textexport_alliance'); INSERT INTO roles VALUES('stats_find_nick'); INSERT INTO roles VALUES('members_defenders'); INSERT INTO roles VALUES('stats_tags_all'); +INSERT INTO roles VALUES('users_sms'); INSERT INTO group_roles (gid,role) VALUES(2,'member_menu'); INSERT INTO group_roles (gid,role) VALUES(2,'attack_menu'); @@ -47,6 +48,7 @@ INSERT INTO group_roles (gid,role) VALUES(6,'calls_edit'); INSERT INTO group_roles (gid,role) VALUES(6,'calls_leeches'); INSERT INTO group_roles (gid,role) VALUES(6,'members_defenders'); INSERT INTO group_roles (gid,role) VALUES('D','stats_tags_all'); +INSERT INTO group_roles (gid,role) VALUES('D','users_sms'); INSERT INTO group_roles (gid,role) VALUES(4,'bc_menu'); INSERT INTO group_roles (gid,role) VALUES(4,'raids_info'); @@ -83,6 +85,7 @@ INSERT INTO group_roles (gid,role) VALUES(1,'intel_member'); INSERT INTO group_roles (gid,role) VALUES(1,'intel_naps'); INSERT INTO group_roles (gid,role) VALUES(1,'textexport_alliance'); INSERT INTO group_roles (gid,role) VALUES(1,'members_defenders'); +INSERT INTO group_roles (gid,role) VALUES('T','users_sms'); INSERT INTO group_roles (gid,role) VALUES(3,'dc_menu'); INSERT INTO group_roles (gid,role) VALUES(3,'bc_menu'); @@ -104,6 +107,9 @@ INSERT INTO group_roles (gid,role) VALUES(3,'intel_member'); INSERT INTO group_roles (gid,role) VALUES(3,'intel_naps'); INSERT INTO group_roles (gid,role) VALUES(3,'textexport_alliance'); INSERT INTO group_roles (gid,role) VALUES(3,'members_defenders'); +INSERT INTO group_roles (gid,role) VALUES('H','users_sms'); + +INSERT INTO group_roles (gid,role) VALUES('O','users_sms'); INSERT INTO group_roles (gid,role) VALUES('R','stats_tags_all'); diff --git a/lib/NDWeb.pm b/lib/NDWeb.pm index 2cb66a0..81a78fd 100644 --- a/lib/NDWeb.pm +++ b/lib/NDWeb.pm @@ -88,6 +88,7 @@ __PACKAGE__->config( encoding => 'UTF-8'); __PACKAGE__->setup(); __PACKAGE__->deny_access_unless('/users',[qw/admin_users/]); +__PACKAGE__->deny_access_unless('/users/sms',[qw/users_sms/]); __PACKAGE__->deny_access_unless('/alliances',[qw/alliances/]); __PACKAGE__->deny_access_unless('/alliances/resources',[qw/alliances_resources/]); __PACKAGE__->deny_access_unless('/graphs/alliancevsintel',[qw/graphs_intel/]); diff --git a/lib/NDWeb/Controller/Users.pm b/lib/NDWeb/Controller/Users.pm index bdad4fc..efb48d3 100644 --- a/lib/NDWeb/Controller/Users.pm +++ b/lib/NDWeb/Controller/Users.pm @@ -188,6 +188,51 @@ sub postmail : Local { $c->res->redirect($c->uri_for('mail')); } +sub sms : Local { + my ( $self, $c ) = @_; + my $dbh = $c->model; + + $c->stash(ok => $c->flash->{ok}); + $c->stash(error => $c->flash->{error}); + + my $query = $dbh->prepare(q{ +SELECT uid,username FROM users +WHERE uid > 0 AND sms SIMILAR TO '\+\d+' + AND uid IN (SELECT uid FROM groupmembers WHERE gid = 'M') +ORDER BY username + }); + $query->execute; + + $c->stash(users => $query->fetchall_arrayref({}) ); + + my $query = $dbh->prepare(q{ +SELECT u.username AS sender, COALESCE(r.username,'unknown?') AS receiver, number, + message, status, cost, to_char(time, 'YYYY-MM-DD HH24:MI:SS') AS time +FROM users u + JOIN sms s USING (uid) + LEFT JOIN users r ON r.sms = '+' || s.number +WHERE time > now() - '2 weeks'::interval +ORDER BY time desc + }); + $query->execute; + $c->stash(sms => $query->fetchall_arrayref({})); +} + +sub postsms : Local { + my ( $self, $c ) = @_; + my $dbh = $c->model; + + $c->req->parameters->{uid} = [$c->req->parameters->{uid}] + unless ref $c->req->parameters->{uid} eq 'ARRAY'; + + my $query = $dbh->prepare(q{INSERT INTO sms (uid,message,number) + (SELECT $1,$2, trim(leading '+' FROM sms) FROM users u WHERE uid = ANY ($3) AND sms SIMILAR TO '\+\d+' )}); + + $query->execute($c->user->id,$c->req->param('message'),$c->req->parameters->{uid}); + + $c->res->redirect($c->uri_for('sms')); +} + =head1 AUTHOR Micahel Andreen (harv@ruin.nu) diff --git a/root/lib/site/leftbar.tt2 b/root/lib/site/leftbar.tt2 index 41b658d..8dae00e 100644 --- a/root/lib/site/leftbar.tt2 +++ b/root/lib/site/leftbar.tt2 @@ -98,6 +98,7 @@ [% IF c.check_user_roles("dc_menu") %]

DC menu