#!/usr/bin/perl

#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#\\  Creation company : WEB service DIC (ウェブサービス ディック)
#\\  produce by Manabu_Kimura
#\\  http://www.d-ic.com/
#\\  DIC-Studio Shop_v50. Version: 3.0 (2004/11/05)
#\\  Copyright (C) DIC All Rights Reserved. このスクリプトの再配布などを禁止します.
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

##=====================================
## 初期設定部分
##=====================================

# 一時ファイルを削除するタイミング(秒数)
$temp_dir_del = '86400';	# 86400 = 1日

# 一時ファイル作成ディレクトリ
$temp_dir = './cago/';

# テンプレート（カゴ）
$html1 = 'template1.html';



##=====================================
## サブルーチン                       =
##=====================================
require './jcode.pl';
require './stdio.pl';
require './error.pl';
require './setup.pl';
&setup;


#□□□□□□□□□□□□ ここから下を修正した場合にはサポート対象外になります。ご注意ください。 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□





##=====================================
## データを受け取る                   =
##=====================================
%param = ();
@key_list = stdio::getFormData(\%param,0,sjis,1);	# タグ置換,漢字コード,半全カナ,同一キーのセパレータ


##=====================================
## 一時ファイル                       =
##=====================================
$tmp_file1 = $temp_dir.$ENV{'REMOTE_ADDR'};	# 一時ファイル（IPアドレスを使用）



#□□□□□ モード なし □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
if(!$param{'mode'}){

##=====================================
## 不要な一時ファイルを削除           =
##=====================================
@tempfile = glob($temp_dir."*");
foreach(@tempfile){
	@stat = stat $_;
	if($temp_dir_del < (time - $stat[9])){ unlink $_; }
}


##=====================================
## 一時ファイルオープン               =
##=====================================
if(-e $tmp_file1){
	if(!open(DATA,$tmp_file1)){ &error('システムエラー','一時ファイルをオープンできません。'); }
	@data = <DATA>;
	close(DATA);
}


##=====================================
## カゴの中身を表示                   =
##=====================================
if(-e $tmp_file1){
$cnt = '1';
foreach(@data){
	@data2 = split(/,/);
	($name,$price,$kazu,$note1,$note2) = @data2;
	$price1 = $price * $kazu;		# 小計
	$price2 = $price1 + $price2;	# 税抜き合計
	1 while $price =~ s/(.*\d)(\d\d\d)/$1,$2/g;		#桁カンマを入れる処理
	1 while $price1 =~ s/(.*\d)(\d\d\d)/$1,$2/g;	#桁カンマを入れる処理
	1 while $kazu =~ s/(.*\d)(\d\d\d)/$1,$2/g;		#桁カンマを入れる処理
	chomp $_;	# 改行を切り捨てる
	$indata .= qq|<input type="hidden" name="ご注文商品 $cnt" value="商品名:$name%%単価:$price%%数量:$kazu%%カラー:$note1%%サイズ:$note2">\n|;
	
	stdio::urlencode(\$_);
	
	$goods .= qq|
<form method="get" action="$self">
<tr bgcolor="#000000">
 <td align="center" bgcolor="#999999">$cnt</td>
 <td>$name</td>
 <td align="right">$price</td>
 <td align="right">$kazu</td>
 <td>&nbsp;$note1</td>
 <td>&nbsp;$note2</td>
 <td align="right">$price1</td>
 <td align="center">
  <input type="hidden" name="mode" value="del">
  <input type="hidden" name="data" value="$_">
  <input type="submit" value="削除">
 </td>
</tr>
</form>|;
	$cnt++;
}

# 消費税
$zeikin = $price2 / ($zei + 100) * $zei;	# 消費税
$zeikin = int($zeikin);			# 小数点以下切り捨て

# カード決済用
$indata .= qq|<input type="hidden" name="money" value="$price2">\n|;

$price3 = $price2;	# 合計金額
1 while $price2 =~ s/(.*\d)(\d\d\d)/$1,$2/g;		#桁カンマを入れる処理
1 while $zeikin =~ s/(.*\d)(\d\d\d)/$1,$2/g;		#桁カンマを入れる処理
1 while $price3 =~ s/(.*\d)(\d\d\d)/$1,$2/g;		#桁カンマを入れる処理

$indata .= qq|<input type="hidden" name="合計金額" value="$price3円（内消費税：$zeikin円）">\n|;

}else{
$goods = qq|<tr bgcolor="#000000"><td colspan="8" align="center"><br>現在、カゴの中身は空です。<br><br></td></tr>|;
}


##=====================================
## 支払方法の選択肢
##=====================================
if($zeus_id){
	$siharai_zeus = qq|<option value="CARD">クレジットカード</option>\n|;
}


##=====================================
## テンプレートをオープン             =
##=====================================
if(!open(HTML,$html1)){ &error('システムエラー','テンプレートファイルをオープンできません。'); }
@html = <HTML>;
close(HTML);


##=====================================
## データの置き換え                   =
##=====================================
$dic = qq|- <a href="http://www.d-ic.com/" target="_blank">Supported by DIC-Studio - Shop_v50.</a> -|;
foreach(@html){
	if($_ =~ /_%copyright%_/){ $flag = '1'; }
	s/_%homepage%_/$homepage/g;
	s/_%comment%_/$comment/g;
	s/_%goods%_/$goods/g;
	s/_%zeiritu%_/$zei/g;
	s/_%kei1%_/$price2/g;
	s/_%kei2%_/$price3/g;
	s/_%zei%_/$zeikin/g;
	s/_%indata%_/$indata/g;
	s/_%siharai_zeus%_/$siharai_zeus/g;
	s/_%copyright%_/$dic/g;
}
if(!$flag){ &error('システムエラー','著作権表示が削除されています。'); }


##=====================================
## ＨＴＭＬ出力                       =
##=====================================
print <<"EOF";
Content-type: text/html

@html
EOF
exit;
}	# モード なし ここまで





#□□□□□ モード in_goods □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
if($param{'mode'} eq 'in_goods'){

##=====================================
## 一時ファイルを作成、又は追加       =
##=====================================
if(-e $tmp_file1){
	if(!open(TMP,"+<$tmp_file1")){ &error('システムエラー','一時ファイルをオープンできませんでした。'); }
}else{
	if(!open(TMP,">$tmp_file1")){ &error('システムエラー','一時ファイルを作成できませんでした。'); }
	chmod 0666, $tmp_file1;
}
@data = <TMP>;

$new_data = "$param{'name'},$param{'price'},$param{'kazu'},$param{'note1'},$param{'note2'},\n";
push(@data,$new_data);

seek(TMP,0,0);
print TMP @data;
truncate(TMP,tell(TMP));
close(TMP);


##=====================================
## ＨＴＭＬ出力                       =
##=====================================
print <<"EOF";
Content-type: text/html

<html><head>
<meta http-equiv="refresh" content="0; URL=$self">
</head>
<body>読み込み中...</body></html>
EOF
exit;
exit;
}	# モード in_goods ここまで





#□□□□□ モード del □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
if($param{'mode'} eq 'del'){

##=====================================
## 対象のデータを削除                 =
##=====================================
if(!open(TMP,"+<$tmp_file1")){ &error('システムエラー','一時ファイルをオープンできませんでした。'); }
@data = <TMP>;

&urldecode(\$param{'data'});
foreach(@data){
	chomp $_;
	if($param{'data'} eq $_){
		$_ = '';
		last;
	}
	$_ .= "\n";
}

seek(TMP,0,0);
print TMP @data;
truncate(TMP,tell(TMP));
close(TMP);

if(-z $tmp_file1){ unlink $tmp_file1; }


##=====================================
## ＨＴＭＬ出力                       =
##=====================================
print <<"EOF";
Content-type: text/html

<html><head>
<meta http-equiv="refresh" content="0; URL=$self">
</head>
<body>読み込み中...</body></html>
EOF
exit;
exit;
}	# モード del ここまで



sub urldecode #(*data)
{
  local(*data) = @_;

  $data =~ tr/+/ /;
  $data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex $1)/eg;
}
