#!/usr/bin/perl -- ################################################################################ # # Star-tour main cgi ( st_main.cgi ) # # Code by T.Kamakura @ Office Tandem 2002.1.19 # ################################################################################ require 'jcode.pl'; require 'common.pl'; require 'const.pl'; require 'template.pl'; require 'config.pl'; require 'yoyaku.pl'; require 'counter.pl'; require 'check.pl'; require 'maintenance.pl'; ################################################################################ # 定数定義 ################################################################################ ################################################################################ # プロパティ ################################################################################ # システム設定 %g_SysConfig = (); ################################################################################ # for TEST ################################################################################ # ダミーデータ ################################################################################ # メインロジック ################################################################################ # 日本語コードライブラリの初期化 &jcode'init; # HTMLヘッダを出力 &common'printHtmlHeader; # CGIへの引数を読みこむ &common'getCgiParam($ENV{'REQUEST_METHOD'}); $func_name = $common'FORM{'Func'}; # システム設定ファイルの読み込み &config'readSysConfig( $const'g_SysConfigPath, *g_SysConfig); # 入力の一部をシステム設定として保持 $g_SysConfig{'HPCarrier'} = $common'FORM{'HPCarrier'}; # テンプレートモジュールに設定 &template'setSysItemTable( %g_SysConfig); # メンテナンスモード判定 if( &maintenance'onMaintenance() != 0) { &maintenance'showMaintenancePrompt('t_maintenance.html'); exit; } if( $func_name eq "") { &doYoyakuForm(); } else { if( $func_name eq 'TestFunc') { &doTest(); } elsif( $func_name eq 'YoyakuInputConfirm') { &doYoyakuInputConfirm(); } elsif( $func_name eq 'YoyakuInputCheck') { &doYoyakuInputCheck(); } elsif( $func_name eq 'ExecYoyaku') { &doExecYoyaku(); } elsif( $func_name eq 'SendConfirmMail') { &doSendConfirmMail( $common'FORM{'DataID'}); } else { # 未定義機能 print "未知の機能名称です。
"; print "CGIの呼び出し方法を確認してください。"; print "
"; } } exit; ################################################################################ # テスト実行関数 ################################################################################ sub doTest { # 予約データモジュールの初期化(1:ファイル読み込み) if( &yoyaku'init(1) < 0) { return -1; } # 予約レコード読み込み if( &yoyaku'readRecordId("000012") < 0) { return -1; } # テンプレートモジュールの初期化 &template'setItemTable( %yoyaku'g_Items); &template'setLoopCount( &yoyaku'getLoopCount()); # テンプレート出力関数の呼び出し &template'printTemplate("./test", "test.html", 0); # 予約データモジュールの終了 &yoyaku'end; } ################################################################################ # 予約フォーム実行 ################################################################################ sub doYoyakuForm { # テンプレート出力関数の呼び出し &template'printTemplate( $const'g_TemplateDir, "t_yoyaku.html", 0); } ################################################################################ # 予約入力確認実行 ################################################################################ sub doYoyakuInputConfirm { # 予約データモジュールの初期化 if( &yoyaku'init(0) < 0) { return -1; } # 代表者の名前はアクセスキーになるので、前後の空白を除去 $common'FORM{'FName0'} = &common'trimString($common'FORM{'FName0'}); $common'FORM{'LName0'} = &common'trimString($common'FORM{'LName0'}); # 予約フォームの入力データからレコード作成 if( &yoyaku'makeRecord( %common'FORM) < 0) { return -1; } # テンプレートモジュールの初期化 &template'setItemTable( %yoyaku'g_Items); &template'setLoopCount( &yoyaku'getLoopCount()); # 入力エラーチェック if( &checkInputError() < 0) { # テンプレートモジュールにエラー項目設定 &template'setSysItemTable( %g_SysConfig); # テンプレート出力関数の呼び出し &template'printTemplate( $const'g_TemplateDir, "t_yoyaku_input_ng.html", 0); } else { # テンプレート出力関数の呼び出し &template'printTemplate( $const'g_TemplateDir, "t_yoyaku_input_confirm.html", 0); } # 予約データモジュールの終了 &yoyaku'end; return 0; } ################################################################################ # 予約入力チェック実行(チェック結果を別ウィンドウ表示するためのインタフェース) ################################################################################ sub doYoyakuInputCheck { # 予約データモジュールの初期化 if( &yoyaku'init(0) < 0) { return -1; } # 代表者の名前はアクセスキーになるので、前後の空白を除去 $common'FORM{'FName0'} = &common'trimString($common'FORM{'FName0'}); $common'FORM{'LName0'} = &common'trimString($common'FORM{'LName0'}); # 予約フォームの入力データからレコード作成 if( &yoyaku'makeRecord( %common'FORM) < 0) { return -1; } # テンプレートモジュールの初期化 &template'setItemTable( %yoyaku'g_Items); &template'setLoopCount( &yoyaku'getLoopCount()); # 入力エラーチェック if( &checkInputError() < 0) { # テンプレートモジュールにエラー項目設定 &template'setSysItemTable( %g_SysConfig); # テンプレート出力関数の呼び出し &template'printTemplate( $const'g_TemplateDir, "t_yoyaku_input_ng_ow.html", 0); } else { # テンプレート出力関数の呼び出し &template'printTemplate( $const'g_TemplateDir, "t_yoyaku_input_ok_ow.html", 0); } # 予約データモジュールの終了 &yoyaku'end; return 0; } ################################################################################ # 入力エラーチェック # return # 正常:0 # 異常:負($g_SysConfig{'InputError'} にエラーとなった項目名を入れる) ################################################################################ sub checkInputError { local( %input_data) = @_; # 固定部分の項目をチェック $count = 0; foreach $key (@yoyaku'g_FixLabel) { $type = $yoyaku'g_FixConfig[$count]; $value = $yoyaku'g_Items{"Yoyaku.$key"}; if( !$value) { $value = ""; } if( check'checkInputValue( $type, $value) != 1) { # エラー発見 $g_SysConfig{'InputError'} = $key; return -1; } $count++; } # 代表者のみ入力チェック $type = 'INPUT'; if( check'checkInputValue( $type, $yoyaku'g_Items{"Yoyaku.FName0"}) != 1) { $g_SysConfig{'InputError'} = 'FName'; return -1; } if( check'checkInputValue( $type, $yoyaku'g_Items{"Yoyaku.LName0"}) != 1) { $g_SysConfig{'InputError'} = 'LName'; return -1; } # 繰り返し部分のデータ形式をチェック $LoopCount = 10; $count = 0; foreach $key (@yoyaku'g_LoopLabel) { $type = $yoyaku'g_LoopConfig[$count]; if( $type ne 'INPUT' && $type ne 'NON') { # 必須入力はチェック済みなので形式のみ for( $i = 0; $i < $LoopCount; $i++) { $value = $yoyaku'g_Items{"Yoyaku.$key$i"}; #print "$value:$type