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');
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');
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');
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');
__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/]);
$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)
[% IF c.check_user_roles("dc_menu") %]
<p>DC menu</p>
<ul class="linkbar">
+ <li><a href="/users/sms">Send SMS</a></li>
<li><a href="/members/defenders">Available defenders</a></li>
<li><a href="/calls/defleeches">Def Leeches</a></li>
<li><a href="/calls/list">Active calls</a></li>
--- /dev/null
+[% META title = 'SMS' %]
+
+<form action="postsms" method="post" id="sms"><fieldset class="forum-post">
+<legend>New SMS</legend>
+ <p><span id="recadd">Receiver(s): </span><select name="uid" multiple size="5">
+[% FOR u IN users %]
+ <option value="[% u.uid %]" [% IF uid == u.uid %]selected[% END %]>[% u.username %]</option>
+[% END %]
+ </select></p>
+ <div id="receivers"></div>
+ <p>Message <input type="text" name="message" size="50" value=""></p>
+ <br>
+ <input type="submit" name="cmd" value="Submit">
+</fieldset>
+</form>
+
+<table>
+ <tr><th>Sender</th><th>Receiver</th><th>Message</th><th>Cost</th><th>Status</th><th>Time</th></tr>
+[% FOR s IN sms %]
+ <tr class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
+ <td>[% s.sender | html %]</td>
+ <td>+[% s.number %] ([% s.receiver | html %])</td>
+ <td>[% s.message | html %]</td>
+ <td>[% s.cost %]</td>
+ <td>[% s.status | html %]</td>
+ <td>[% s.time %]</td>
+ </tr>
+[% END %]
+</table>
+
+<script type="text/javascript">
+$(document).ready(function(){
+ $('select').attr({name:'u', size: 1, multiple: null}).after($('<input type="button" id="add" value="Add">'));
+ $('#recadd').text('Users: ');
+ $('#receivers').append('Receiver(s):');
+
+ $('#add').click(function(){
+ var u = $('option:selected');
+ $('#receivers').append($('<p>'+u.text()+': <input type="checkbox" name="uid" checked value='+u.val()+'><\/p>'));
+ });
+
+ $('#sms').submit(function(){
+ if(!$('#sms :checkbox[name=uid][checked]').val()){
+ alert('You need to add a receiver.');
+ return false;
+ }
+ if($('#sms :input[name=message]').val() == ''){
+ alert('You need to write a message');
+ return false;
+ }
+ });
+});
+</script>