#!/usr/bin/perl
# Copyright (C) 2002-2003 Infotechnica Corporation, All rights reserved.
#use strict;
#use warnings;
#use lib '.';
##BEGIN{ unshift(@INC, '.'); }
#use CGI::Carp qw(fatalsToBrowser);
package main;
require './globals.pl';
require './mylibs.pl';
require './myfunc.pl';
require './mysubs.pl';
$| = 1;
&main();
exit;
sub main {
my $mode = 1; # 0: orderfrm / 1: orderfrm2
%main::form_key = ( %main::form_key, %{ $main::formkeys{ORDERFORM} } );
&mylibs::initialize();
&mylibs::getPathInfo();
&config::setConfigureData($main::ConfigFile);
&tables::getTableData();
&mylibs::getConnectInfo();
my $tpl_var = {};
$tpl_var = &tpl::makeBaseTplVariables($tpl_var);
my $content = '';
if ($main::ConfigData->{'SHOP-SHOP_OPENED'} == 1) {
my $form_data = &mylibs::getFormData();
my $cookie_data = {};
my $session = {};
my $cart_data = {};
if ($main::isRunningImodeCGI) {
my $session_id = '';
$session_id = &mylibs::getFormValue($form_data, $main::form_key{SESSION_ID})
if &mylibs::isExistFormName($form_data, $main::form_key{SESSION_ID});
$session = &session::beginSession($session_id);
$cart_data = &session::getSessionValue($session, 'cart_data');
} else {
$cookie_data = &cookie::getCookie();
$cart_data = &cookie::getData($cookie_data, $main::CartCookieName, 'cart_data');
}
my $cart = &cart::rebuildCart($cart_data);
&cart::procCart($cart, $form_data);
my $error = 0;
&cart::viewCart($cart, $tpl_var);
if ($tpl_var->{ERR_STOCK}) {
$error = 1; # stock error
}
$error = &form::buildOrderInfo($tpl_var, $form_data, $cookie_data, $mode, $error);
$error = &cart::calcOrder($tpl_var, $cart, $error, $mode);
if ($mode) {
# for GIFT
if (&mylibs::isSubmitPress($form_data, $main::form_key{_order})
and $error == 0) {
$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{CONFIRM_GIFT});
$tpl_var = &makeTplVariables($tpl_var, $session, $form_data, $cart, $cookie_data, $mode);
# $content = &pages::makePage($main::PageTpl{CONFIRM_GIFT}, $tpl_var);
$content = &makePage2($main::PageTpl{CONFIRM_GIFT}, $tpl_var);
} else {
$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{ORDERFORM_GIFT});
$tpl_var = &makeTplVariables($tpl_var, $session, $form_data, $cart, $cookie_data, $mode);
# $content = &pages::makePage($main::PageTpl{ORDERFORM_GIFT}, $tpl_var);
$content = &makePage2($main::PageTpl{ORDERFORM_GIFT}, $tpl_var);
}
} else {
if (&mylibs::isSubmitPress($form_data, $main::form_key{_order})
and $error == 0) {
$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{CONFIRM});
$tpl_var = &makeTplVariables($tpl_var, $session, $form_data, $cart, $cookie_data, $mode);
# $content = &pages::makePage($main::PageTpl{CONFIRM}, $tpl_var);
$content = &makePage2($main::PageTpl{CONFIRM}, $tpl_var);
} else {
$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{ORDERFORM});
$tpl_var = &makeTplVariables($tpl_var, $session, $form_data, $cart, $cookie_data, $mode);
# $content = &pages::makePage($main::PageTpl{ORDERFORM}, $tpl_var);
$content = &makePage2($main::PageTpl{ORDERFORM}, $tpl_var);
}
}
$cart_data = &cart::storeCart($cart);
if ($main::isRunningImodeCGI) {
&session::setSessionValue($session, 'cart_data', $cart_data);
} else {
&cookie::setData($cookie_data, $main::CartCookieName, 'cart_data', $cart_data);
my $secure = 0;
$secure = 1 if ($main::CGIRunMode == $main::Run{SSL});
$secure = 0 if ($main::ConfigData->{'EXEC-SSL_OPTION'} == $main::SSLOption{ORDER_SSL});
&cookie::setInfo($cookie_data, $main::CartCookieName, 1, '', $secure);
&cookie::setCookie($cookie_data);
}
} else {
$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{SHOP_CLOSED});
$content = &pages::makePage($main::PageTpl{SHOP_CLOSED}, $tpl_var);
}
my $regex = '()';
$content =~ s/$regex/$1$tpl_var->{REF_URL}$2/i;
my $VM = "\n";
$content =~ s/(<\/HEAD>)/$VM$1/i;
$content .= $VM;
&mylibs::outPage($content);
}
sub makeTplVariables {
my $tpl_var = shift;
my $session = shift;
my $form_data = shift;
my $cart = shift;
my $cookie_data = shift;
my $mode = shift;
$tpl_var->{SESSION_ID} = &sanitize::convANB($session->{SESSION_ID});
$tpl_var->{RETURN_URL} = &sanitize::convURL(
&mylibs::getFormValue($form_data, $main::form_key{RETURN_URL}) )
if &mylibs::isExistFormName($form_data, $main::form_key{RETURN_URL});
$tpl_var->{DISP_COLOR} = ($main::ConfigData->{'EXEC-DISP_COLOR'} != 0);
$tpl_var->{DISP_SIZE} = ($main::ConfigData->{'EXEC-DISP_SIZE'} != 0);
$tpl_var->{DISP_THUMB} = ($main::ConfigData->{'EXEC-DISP_THUMB'} != 0);
$tpl_var->{DISP_STATUS} = ($main::ConfigData->{'EXEC-DISP_STATUS'} == 1);
$tpl_var->{DISP_NOSTOCK} = ($main::ConfigData->{'EXEC-DISP_NOSTOCK'} != 1);
$tpl_var->{SHOP_USE_STOCK} = ($main::ConfigData->{'EXEC-STOCK_CONTROL'} == 1);
# form data for send
my @tmp_h = ();
my $rkey = '';
my $form_iv = 0;
foreach $rkey ( keys %$form_data ) {
if ($rkey ne $main::form_key{MODE}
and $rkey ne $main::form_key{_order}
and $rkey ne $main::form_key{_order} . '.x'
and $rkey ne $main::form_key{_order} . '.y'
and $rkey ne $main::form_key{_recalc}
and $rkey ne $main::form_key{_recalc} . '.x'
and $rkey ne $main::form_key{_recalc} . '.y'
and $rkey ne $main::form_key{_cancel}
and $rkey ne $main::form_key{_cancel} . '.x'
and $rkey ne $main::form_key{_cancel} . '.y'
and substr($rkey, 0, 10) ne 'delete_no='
and substr($rkey, 0, 7) ne 'amount=') {
# if (defined($tpl_var->{$rkey})) {
$tmp_h[$form_iv++] = {
FORM_KEY => $rkey,
FORM_VALUE => $tpl_var->{$rkey},
};
# }
}
}
if ($mode) {
$tmp_h[$form_iv++] = {
FORM_KEY => $main::form_key{MODE},
FORM_VALUE => 1,
};
} else {
$tmp_h[$form_iv++] = {
FORM_KEY => $main::form_key{MODE},
FORM_VALUE => 0,
};
}
$tpl_var->{LOOP_FORM_DATA} = \@tmp_h;
($tpl_var->{LOOP_CTG_LIST}, $tpl_var->{VALID_LIST}) = &tpl::getCategoryList();
return $tpl_var;
}
sub makePage2 {
my $template_file = shift;
my $template_variables = shift;
$template_file = &sanitize::convFileName($template_file);
my ($tree, @errors);
if (open(TMPL, $template_file)) {
my @template_lines = ;
close(TMPL);
my $tmplline = '';
foreach $tmplline ( @template_lines ) {
&jcode::convert(\$tmplline, 'euc', $main::file_code);
}
my @tpl_lines = &substituteTplVar(\@template_lines, $template_variables);
# ($tree, @errors) = httmpl::Parse(@template_lines);
($tree, @errors) = httmpl::Parse(@tpl_lines);
} else {
# error
&mylibs::error("Error: Could not open template file.($template_file : $!)");
exit 0;
}
unless ($tree) {
# parse error
my $msg = "Error: Template parse error. \n";
foreach ( @errors ) {
$msg .= $_ . " \n";
}
&mylibs::error($msg);
exit 0;
}
my $content = httmpl::Traverse($tree, $template_variables);
return $content;
}
sub substituteTplVar {
my $template_lines = shift;
my $template_variables = shift;
my @tpl_lines = ();
my $line = '';
foreach $line ( @$template_lines ) {
foreach ( keys %$template_variables ) {
$line =~ s/\$\{\Q$_\E\}/$template_variables->{$_}/g;
}
push @tpl_lines, $line;
}
return @tpl_lines;
}
sub _dummy {
undef %main::formkeys;
undef $main::ConfigFile;
undef $main::VERSION;
undef $main::CGIRunMode;
undef %main::Run;
undef $main::file_code;
}