+HotelGate product.
[www.jankratochvil.net.git] / product / hotelgate / OrderSubmit.pm
diff --git a/product/hotelgate/OrderSubmit.pm b/product/hotelgate/OrderSubmit.pm
new file mode 100644 (file)
index 0000000..553f247
--- /dev/null
@@ -0,0 +1,100 @@
+# $Id$
+# Ordering form processor of 'My::Project::hotelgate'
+# Copyright (C) 2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; exactly version 2 of June 1991 is required
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+package product::hotelgate::OrderSubmit;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+our $CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+use My::Web;
+use Apache2::Const qw(HTTP_MOVED_TEMPORARILY);
+use Carp qw(confess cluck);
+require MIME::Entity;
+
+
+my $SENDER='HotelGate of www.jankratochvil.net <project-hotelgate@jankratochvil.net>';
+my $FROM=$SENDER;
+my $TO=$SENDER;
+
+our $HTML_TEST="download";
+our $HTML_TEST_RC=HTTP_MOVED_TEMPORARILY;
+
+sub handler
+{
+my $W=My::Web->init(
+               "http_safe"=>0,
+               );
+
+
+my @fields=qw(
+               email
+               address
+               location
+               type
+               downlink
+               uplink
+               comment
+               );
+my %fields=map(($_=>1),@fields);
+
+# Required fields:
+for my $field (qw(
+               type
+               email
+               )) {
+       cluck if !$fields{$field};
+       next if $W->{"args"}{$field};
+       $W->{"args_persistent"}{$_}=1 for @fields;
+       My::Web->http_moved("./Order.pm?error=".product::hotelgate::Order->error("${field}_missing"),HTTP_MOVED_TEMPORARILY);
+       confess "NOTREACHED";
+       }
+
+my $data="";
+$data.=<<"HERE" for @fields;
+$_:
+@{[ $W->{"args"}{$_} ]}
+
+HERE
+for (qw(
+       User-Agent
+       Referer
+       _remote_ip
+       )) {
+       $data.=<<"HERE"
+headers_in::$_=@{[ $W->{"headers_in"}{$_} ]}
+HERE
+       }
+$data.=<<"HERE";
+EOF
+HERE
+
+my $top=MIME::Entity->build(
+               "Sender"=>$SENDER,
+               "From"=>$FROM,
+               "To"=>$TO,
+               "Data"=>$data,
+               );
+$top->smtpsend();
+
+
+My::Web->http_moved("./Order.pm?error=".product::hotelgate::Order->error("ok"),HTTP_MOVED_TEMPORARILY);
+confess "NOTREACHED";
+}
+1;