chiark / gitweb /
.gitignore: add data dir
[nj-awaymsg.git] / mason / save
index 2b9622485c8feca71afdfd4f82a1beedd99398d1..c749084c757cb10928d2f7e25c804135f1c44703 100755 (executable)
@@ -1,37 +1,71 @@
 <%init>
 use AwayMsg;
+use Data::Dumper;
 db_connect();
 www_begin($r,$m);
 </%init><%args>
 $save => 0
 $cancel => 0
 $textid => undef
+$desc
+$subject
+$text
 </%args><%perl>
-if ($save) {
-    my $ins;
-    $dbh->do('BEGIN');
-    if ($textid eq 'new') {
-       my $ntextq = $dbh->prepare("SELECT textid FROM texts".
-                                  " ORDER BY textid DESC LIMIT 1");
-       $ntextq->execute();
-       my $ntextrow = $ntextq->fetchrow_hashref();
-       if ($ntextrow) {
-           $textid = $ntextrow->{'textid'} + 1;
-       } else {
-           $textid = 1;
-       }
-    } else {
-       my $dtextq = $dbh->prepare("DELETE FROM texts WHERE textid = ?");
-       my $ndeleted = $dtextq->execute($textid);
-       if (!$ndeleted) {
-</%perl><htmlhead, subpage => 'Error, editing deleted message'>
-Message was deleted.
-<form action="main" method="get">
-<input type="submit" value="OK">
-</form><%perl>
-       }
-       return;
+if (!$save) {
+    $m->redirect("main");
+    return;
+}
+my $ins;
+
+$dbh->do('BEGIN');
+
+if ($textid ne 'new') {
+    my $dtextq = $dbh->prepare("DELETE FROM texts WHERE textid = ?");
+    my $ndeleted = $dtextq->execute($textid);
+    if (!$ndeleted) {
+       $textid = 'new';
+    }
+}
+
+if ($textid eq 'new') {
+    $textid = time;
+    my $ntextq = $dbh->prepare("SELECT textid FROM texts".
+                              " ORDER BY textid DESC LIMIT 1");
+    $ntextq->execute();
+    my $ntextrow = $ntextq->fetchrow_hashref();
+    if ($ntextrow) {
+       my $mintextid = $ntextrow->{'textid'} + 1;
+       $textid = $mintextid if $textid < $mintextid;
     }
 }
-$m->redirect("main");
-</%perl>
+
+print STDERR Dumper([$textid, $desc, $subject, $text]);
+
+my $dinsertq = $dbh->prepare("INSERT INTO texts (textid, desc, subject, text)".
+                            " VALUES (?,?,?,?)");
+$dinsertq->execute($textid, $desc, $subject, $text);
+
+my $tdeleteq = $dbh->prepare("DELETE FROM addresses WHERE textid = ?");
+$tdeleteq->execute($textid);
+
+my $odeleteq = $dbh->prepare("DELETE FROM addresses WHERE emailaddr = ?");
+
+my $tinsertq = $dbh->prepare("INSERT INTO addresses (emailaddr, textid)".
+                            " VALUES (?,?)");
+my $tlistq = $dbh->prepare("SELECT * FROM config");
+$tlistq->execute();
+while (my $row = $tlistq->fetchrow_hashref()) {
+    if ($ARGS{"u_".hquote($row->{'emailaddr'})}) {
+       $odeleteq->execute($row->{'emailaddr'});
+       $tinsertq->execute($row->{'emailaddr'}, $textid);
+    }
+}
+
+db_commit();
+
+</%perl><& htmlhead, subpage => "Saved \"$desc\"" &>
+Message and configuration saved.
+<p>
+<form action="main" method="get">
+<input type="submit" value="OK">
+</form>