X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=mason%2Fsave;h=c749084c757cb10928d2f7e25c804135f1c44703;hb=dc799127a0e7b0599248dd9669652aeb4af59454;hp=28c4f616a4eb110e8d9407084fc250cb38fc89c7;hpb=bf9eedd3878e49ca2c27d8393dad92d3de29e454;p=nj-awaymsg.git diff --git a/mason/save b/mason/save index 28c4f61..c749084 100755 --- a/mason/save +++ b/mason/save @@ -1,36 +1,71 @@ <%init> use AwayMsg; +use Data::Dumper; db_connect(); +www_begin($r,$m); <%args> $save => 0 $cancel => 0 $textid => undef +$desc +$subject +$text <%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) { - 'Error, editing deleted message'> -Message was deleted. -
- -
<%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"); - + +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(); + +<& htmlhead, subpage => "Saved \"$desc\"" &> +Message and configuration saved. +

+

+ +