#!/usr/bin/perl

#┌────────────────────────
#│ ShoppingCart - cart.cgi (2004/12/08)
#│ Copyright (c) KentWeb
#│ http://www.kent-web.com/
#└────────────────────────

# 外部ファイル取り込み
require './init.cgi';

# メイン処理
&decode;
if ($mode eq "note") { &note; }
elsif ($mode eq "check") { &check; }
&menu;

#-------------------------------------------------
#  メニュー表示
#-------------------------------------------------
sub menu {
	local($i,$n,$next,$back,$width);

	# 在庫
	&stock if ($stock);

	&header;
	print <<EOM;
<table>
<tr>
  <td><form>
<input type=button value="トップに戻る" onClick=window.open("$home","_top")>
  </td></form>
  <td><form action="$cart_order" method="post">
	<input type=hidden name=page value="$page">
	<input type=submit value="買物カゴの中身">
EOM

	foreach (0 .. $#key) {
		print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
	}

	print <<EOM;
  </td></form>
</tr>
</table>
<div align="center">
EOM

	if ($t_image) {
		print "<img src=\"$t_image\" alt=\"$title\">\n";
	} else {
		print "<hr width=350 size=1 color=\"$t_color\">\n";
		print "<b style=\"font-size:$t_size;color:$t_color\">$title</b>\n";
		print "<hr width=350 size=1 color=\"$t_color\">\n";
	}

	# 管理者メッセージ
	print <<EOM;
<p>
<table><tr><td>
$sub_msg
</td></tr></table>
EOM

	# 項目欄の横幅
	$width = 90;

	# 検索窓
	if ($find) {
		print "<table><tr><td>\n";
		print "<form action=\"$script\" method=\"post\">\n";
		print "<input type=hidden name=page value=\"$page\">\n";
		foreach (0 .. $#key) {
			print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
		}
		print "<input type=text name=word size=32 value=\"$in{'word'}\">\n";
		print "<input type=submit value=\"商品検索\"></td></form>\n";

		# 検索実行
		if ($in{'word'} ne "") { &find; }

		print "</tr></table>\n";
	}

	# カテゴリ表示
	if ($category == 2) { &category; }

	if ($page eq '') { $page=0; }
	$gview *= $rview;
	print "<p><TABLE BORDER=0 CELLPADDING=5><TR>\n";
	$i=0; $n=0;
	open(IN,"$logfile") || &error("Open Error: $logfile");
	while (<IN>) {
		$n++;
		if ($n < $page + 1) { next; }
		if ($n > $page + $gview) { last; }
		if ($i >= $rview) { print "</TR><TR>"; $i=0; }
		$i++;
		if ($category) { $span=6; } else { $span=5; }
		if ($stock) { $span++; }
		chop;
		($no,$item,$price,$size,$color,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail) = split(/<>/);
		if ($size) { $span++; }
		if ($color) { $span++; }
		if ($memo) { $span++; }
#		if (!$imgview && $tail) { $item = "<a href=\"$img\">$item</a>"; }
		$price2 = &filler($price);
		if ($id eq "") { $id = $no; }

		print "<TD VALIGN=TOP>";
		print "<form action=\"$cart_order\" method=\"post\">\n";
		print "<input type=hidden name=mode value=\"cart\">\n";
		print "<input type=hidden name=pick value=\"$no\">\n";
		print "<input type=hidden name=page value=\"$page\">\n";

		# 注文オーダ蓄積
		foreach (0 .. $#key) {
			print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
		}
		print "<table border=1 cellspacing=0 cellpadding=4 width=$cell>\n";
		print "<tr><td align=center nowrap class=l width=$width>商品No</td>";

		# 画像
		if ($tail) {
			print "<td class=r><span>$id</span></td>\n";
			print "<td align=center class=r rowspan=$span>";
			if ($w && $h) {	$wh = "width=$w height=$h"; }
			if ($link) {
				print "<a href=\"$link\" target=\"_blank\">";
			} else {
				print "<a href=\"$imgurl/$no$tail\" target=\"_blank\">";
			}
			print "<img src=\"$imgurl/$no$tail\" alt=\"$id\" border=0 $wh></a>";
			print "</td></tr>\n";
		} else {
			print "<td class=r><span>$id</span></td></tr>\n";
		}
		print "<tr><td align=center nowrap class=l width=$width>商品名</td>";
		print "<td class=r><b>$item</b></td></tr>\n";
		if ($category) {
			if ($cate eq "") { $cate = 0; }
			print "<tr><td align=center nowrap class=l width=$width>カテゴリ</td>";
			print "<td class=r>$cate[$cate]</td></tr>\n";
		}
		print "<tr><td align=center nowrap class=l width=$width>単価</td>";
		print "<td class=r><b>\\<span>$price2</span></b> ";
		if ($intax == 1) { print "(税込み)"; } else { print "(税別)"; }
		print "</td></tr>\n";
		if ($stock) {
			if (!defined($stock{$no})) { $stock{$no}=0; }
			print "<tr><td align=center class=l width=$width>在庫</td>
			<td class=r>&nbsp; <b>$stock{$no}</b></td></tr>\n";
		}
		print "<tr><td align=center nowrap class=l width=$width>数量</td>";

		# 入力
		$flag=0;
		$pnum = $psize = $pcol = '';
		foreach (0 .. $#key) {
			if ($no == $key[$_]) {
				$flag=1;
				($pnum,$psize,$pcol) = split(/:/, $val[$_]);
				last;
			}
		}
		if (!$flag) { $pnum = 1; }
		if ($nmb) {
			@nmb = split(/\s+/, $nmb);
			print "<td class=r><select name=\"pick$no\">\n";
			foreach (@nmb) {
				last if ($stock && $_ > $stock{$no});
				if ($pnum == $_) {
					print "<option value=\"$_\" selected>$_\n";
				} else {
					print "<option value=\"$_\">$_\n";
				}
			}
			print "</select>\n";
		} else {
			print "<td class=r><input type=text name=\"pick$no\" size=3 value=\"$pnum\" style=\"ime-mode:inactive\" maxlength=\"$maxlen\">\n";
		}

		if ($stock && $stock{$no} <= 0) {
			print "&nbsp; 在庫切れ";
		} else {
			print "&nbsp; <input type=submit value=\"購入する\">";
		}

		print "</td></tr>\n";

		if ($size) {
			@size = split(/\s+/, $size);
			print "<tr><td align=center nowrap class=l width=$width>$attr1</td>
			<td class=r><select name=size>\n";
			foreach (@size) {
				if ($psize eq $_) {
					print "<option value=\"$_\" selected>$_\n";
				} else {
					print "<option value=\"$_\">$_\n";
				}
			}
			print "</select></td></tr>\n";
		}
		if ($color) {
			@color = split(/\s+/, $color);
			print "<tr><td align=center nowrap class=l width=$width>$attr2</td>
			<td class=r><select name=color>\n";
			foreach (@color) {
				if ($pcol eq $_) {
					print "<option value=\"$_\" selected>$_\n";
				} else {
					print "<option value=\"$_\">$_\n";
				}
			}
			print "</select></td></tr>\n";
		}
		if ($memo) {
			print "<tr><td align=center nowrap class=l width=$width>備考</td>
			<td class=r>$memo</td></tr>\n";
		}

#		print "<tr><td align=center class=l width=$width>購入</td><td class=r>";
#		if ($stock && $stock{$no} <= 0) {
#			print "在庫切れ";
#		} else {
#			print "<input type=submit value=\"カゴに入れる\">";
#		}
#		print "</td></form></tr>";

		print "</form></table></TD>";
	}
	close(IN);
	print "</TR></TABLE>\n";

	# ページ繰越ボタン
	$next = $page + $gview;
	$back = $page - $gview;

	print "<p><table><tr>\n";
	if ($back >= 0) {
		print "<td><form action=\"$script\" method=\"post\">\n";
		print "<input type=hidden name=page value=\"$back\">\n";
		foreach (0 .. $#key) {
			print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
		}
		print "<input type=submit value=\"前ページ\"></td></form>\n";
	}
	if ($next < $n) {
		print "<td><form action=\"$script\" method=\"POST\">\n";
		print "<input type=hidden name=page value=\"$next\">\n";
		foreach (0 .. $#key) {
			print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
		}
		print "<input type=submit value=\"次ページ\"></td></form>\n";
	}

	# 著作権表示（削除禁止）
	print <<"EOM";
</tr></table>
<br><br><!-- $ver -->
<span style="font-family:Verdana,Helvetica,Arial; font-size:10px">
- <a href="http://www.kent-web.com/" target="_top">ShoppingCart</a> -
</span></div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  検索実行
#-------------------------------------------------
sub find {
	local($cols,$i,$flag,$wd,$no,$item,$price,$size,$col,$img,
		$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail,$zei,@wd);

	# 戻りボタン
	print <<EOM;
<td width=12></td>
<td><form action="$script" method="post">
<input type=hidden name=page value="$page">
EOM

	foreach (0 .. $#key) {
		print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
	}

	print <<EOM;
<input type=submit value="メニューに戻る">
</td></form>
</tr></table>
EOM

	# 入力内容を整理
	$in{'word'} =~ s/　/ /g;
	@wd = split(/\s+/, $in{'word'});

	# リスト
	print <<EOM;
<p><table border=1 cellspacing=0 cellpadding=5>
<tr>
  <th nowrap class=l>商品名</th>
  <th nowrap class=l>単価</th>
EOM

	$cols = 6;
	if ($stock) { print "<th nowrap class=l>在庫</th>"; $cols++; }

	print <<EOM;
<th nowrap class=l>商品情報</th>
<th nowrap class=l>購入</th>
</tr>
EOM

	# 検索
	$i=0;
	open(IN,"$logfile") || &error("Open Error: $logfile");
	while (<IN>) {
		chop;
		($no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail) = split(/<>/);
		$flag=0;
		foreach $wd (@wd) {
			if (index("$item$memo",$wd) >= 0) {
				$i++;
				if ($i % 2) { $line=$lin1; } else { $line=$lin2; }
				$price = &filler($price);

				print "<tr><form action=\"$cart_order\" method=\"post\">\n";
				print "<input type=hidden name=pick value=\"$no\">\n";
				print "<input type=hidden name=page value=\"$page\">\n";
				print "<input type=hidden name=word value=\"$in{'word'}\">\n";
				foreach (0 .. $#key) {
					print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
				}
				if ($intax == 1) { $zei="税込み"; } else { $zei="税別"; }
				if ($id eq "") { $id = $no; }

				print "<td class=r><span>[$id]</span><br><b>$item</b>";

				if ($tail) {
					print "<p>";
					if ($w && $h) {
						$w /= 4; $h /= 4;
						$wh="width=$w height=$h";
					}
					if ($link) {
						print "<a href=\"$link\" target=\"_blank\">";
					} else {
						print "<a href=\"$imgurl/$no$tail\" target=\"_blank\">";
					}
					print "<img src=\"$imgurl/$no$tail\" border=0 $wh></a>";
				}

				print "</td><td nowrap align=center class=r>";
				print "<b>\\<span>$price</span></b><br>($zei)</td>";

				if ($stock) {
					if (!defined($stock{$no})) { $stock{$no}=0; }
					print "<th class=r>$stock{$no}</th>";
				}

				print "<td class=r><font size=\"-1\">";

				$flag=0;
				if ($size) {
					$flag++;
					@size = split(/\s+/, $size);
					print "$attr1：<select name=size>\n";
					foreach (@size) {
						print "<option value=\"$_\">$_\n";
					}
					print "</select>\n";
				}
				if ($col) {
					$flag++;
					@col = split(/\s+/, $col);
					print "$attr2：<select name=color>\n";
					foreach (@col) {
						print "<option value=\"$_\">$_\n";
					}
					print "</select>\n";
				}
				if ($flag) { print "<br>"; }
				print "$memo</font></td>";
				print "<td align=center class=r>数量：";

				if ($nmb) {
					@nmb = split(/\s+/, $nmb);
					print "<select name=\"pick$no\">\n";
					foreach (@nmb) {
						last if ($stock && $_ > $stock{$no});
						print "<option value=\"$_\">$_\n";
					}
					print "</select><br>\n";
				} else {
					print "<input type=text name=\"pick$no\" size=3 value=\"1\" style=\"ime-mode:inactive\" maxlength=\"$maxlen\"><br>";
				}

				if ($stock && $stock{$no} <= 0) {
					print "在庫切れ";
				} else {
					print "<input type=submit value=\"購入する\">";
				}
				print "</td></form></tr>\n";
			}
		}
	}
	close(IN);

	# ヒットなし
	if (!$i) {
		print "<tr><td colspan=$cols align=center class=r>該当なし</td></tr>\n";
	}

	print <<EOM;
</table></div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  カテゴリ表示
#-------------------------------------------------
sub category {
	local($next,$back);

	# カテゴリメニュー
	if ($in{'view'} eq "") {

		print <<EOM;
<p>
▼最初にカテゴリーをお選びください。
<p>
<table border=1 cellpadding=4 cellspacing=0>
<tr>
  <th nowrap class=l>内容閲覧</th>
  <th nowrap class=l>カテゴリー</th>
  <th nowrap class=l>商品数</th>
</tr>
EOM

	$i=0; $f=0; $j=0;
	open(IN,"$logfile") || &error("Open Error: $logfile");
	while (<IN>) {
		($no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link) = split(/<>/);
		if ($cate2 ne $cate) {
			if ($f) { $f=0; print "<th class=r>$i</th></tr>\n"; $i=0; }
			$f=1;

			print "<tr><th class=r><form action=\"$script\" method=POST>
			<input type=hidden name=view value=\"$cate\">\n";

			foreach (0 .. $#key) {
				print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
			}
			print "<input type=submit value='閲覧'></th></form>";
			print "<td class=r><table><tr><td>";
			if (@cateImg > 0) {
				print "<img src=\"$cateImg[$cate]\">";
			}
			print "</td><td width=5></td><td><b>$cate[$cate]</b></td>
			</tr></table></td>";
			$j++;
		}
		$cate2 = $cate;
		$i++;
	}
	close(IN);
	if ($f) { print "<th class=r>$i</th></tr>\n"; }

	# 著作権表示（削除改編禁止）
	print <<EOM;
</table>
<br><br>
<!-- $ver -->
<span style='font-family:Verdana,Arial; font-size:10px'>
- <a href='http://www.kent-web.com/' target='_top'>ShoppingCart</a> -
</span>
</body>
</html>
EOM
	exit;

	# カテゴリの中身を表示
	} else {

	# 在庫
	&stock if ($stock);

	print <<EOM;
<p>
<table border=0>
<tr>
  <td><font color="$t_color">||| <b>$cate[$in{'view'}]</b> |||</font></td>
  <td width=20></td>
  <td align=right><form action="$script" method="post">
EOM

	foreach (0 .. $#key) {
		print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
	}

	print <<EOM;
<input type=submit value="メニューに戻る">
</td></form></tr>
</table>
<table border=1 cellspacing=0 cellpadding=5>
<tr>
  <th nowrap class=l>商品名</th>
  <th nowrap class=l>単価</th>
EOM

	if ($stock) { print "<th nowrap class=l>在庫</th>"; }

	print <<EOM;
<th nowrap class=l>商品情報</th>
<th nowrap class=l>購入</th>
</tr>
EOM

	$k=0;
	open(IN,"$logfile") || &error("Open Error: $logfile");
	while (<IN>) {
		($no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail) = split(/<>/);

		next if ($in{'view'} != $cate);
		$k++;
		if ($k < $page + 1) { next; }
		if ($k > $page + $pageView) { next; }

		$i++;
		if ($intax == 1) { $zei="税込み"; } else { $zei="税別"; }
		if ($id eq "") { $id = $no; }
		$price = &filler($price);

		print "<form action=\"$cart_order\" method=\"post\">\n";
		print "<input type=hidden name=view value=\"$in{'view'}\">\n";
		print "<input type=hidden name=pick value=\"$no\">\n";
		foreach (0 .. $#key) {
			print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
		}
		print "<tr><td class=r valign=top><span>[$id]</span><br><b>$item</b>";

		# 画像
		if ($tail) {
			print "<p>";
			if ($w && $h) { $wh="width=$w height=$h"; }
			if ($link) {
				print "<a href=\"$link\" target=\"_blank\">";
			} else {
				print "<a href=\"$imgurl/$no$tail\" target=\"_blank\">";
			}
			print "<img src=\"$imgurl/$no$tail\" alt=\"$item\" border=0 $wh></a>";
		}

		print "</td><td nowrap align=center class=r valign=top>";
		print "<b>\\<span>$price</span></b><br>($zei)</td>";

		if ($stock) {
			if (!defined($stock{$no})) { $stock{$no}=0; }
			print "<th class=r>$stock{$no}</th>";
		}
		print "<td valign=top class=r valign=top><font size=\"-1\">";

		$flag=0;
		if ($size) {
			$flag++;
			@size = split(/\s+/, $size);
			print "$attr1：<select name=size>\n";
			foreach (@size) {
				print "<option value=\"$_\">$_\n";
			}
			print "</select>\n";
		}
		if ($col) {
			$flag++;
			@col = split(/\s+/, $col);
			print "$attr2：<select name=color>\n";
			foreach (@col) {
				print "<option value=\"$_\">$_\n";
			}
			print "</select>\n";
		}
		if ($flag) { print "<br>"; }

		if ($memo eq "" && $link eq "") { $memo="<br>"; }
#		else { print ""; }
		print "$memo</font></td><td class=r valign=top>数量：";
		if ($nmb) {
			@nmb = split(/\s+/, $nmb);
			print "<select name=\"pick$no\">\n";
			foreach (@nmb) {
				last if ($stock && $_ > $stock{$no});
				print "<option value=\"$_\">$_\n";
			}
			print "</select><br>\n";
		} else {
			print "<input type=text name=\"pick$no\" size=3 value=\"1\" style=\"ime-mode:inactive\" maxlength=\"$maxlen\"><br>";
		}
		if ($stock && $stock{$no} <= 0) {
			print "在庫切れ";
		} else {
			print "<input type=submit value=\"購入する\">";
		}
		print "</td></form></tr>\n";
	}
	close(IN);

	print "</table>\n";
	} ##

	$next = $page + $pageView;
	$back = $page - $pageView;

	print "<p><table><tr>\n";
	if ($back >= 0) {
		print "<td><form action=\"$script\" method=\"POST\">\n";
		print "<input type=hidden name=view value=\"$in{'view'}\">\n";
		foreach (0 .. $#key) {
			print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
		}
		print "<input type=hidden name=page value=\"$back\">\n";
		print "<input type=submit value=\"前の$pageView件\"></td></form>\n";
	}
	if ($next < $k) {
		print "<td><form action=\"$script\" method=\"POST\">\n";
		print "<input type=hidden name=view value=\"$in{'view'}\">\n";
		foreach (0 .. $#key) {
			print "<input type=hidden name=\"pick$key[$_]\" value=\"$val[$_]\">\n";
		}
		print "<input type=hidden name=page value=\"$next\">\n";
		print "<input type=submit value=\"次の$pageView件\"></td></form>\n";
	}

	print <<EOM;
</table>
</div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  チェックモード
#-------------------------------------------------
sub check {
	&header;
	print <<EOM;
<h3>Check Mode</h3>
<ul>
EOM

	foreach ( $logfile, $ordfile, $stkfile, $rawfile ) {

		if (-e $_) {
			print "<li>$_のパスOK\n";
		} else {
			print "<li>$_のパスNG\n";
		}
		if (-r $_ && -w $_) {
			print "<li>$_のパーミッションOK\n";
		} else {
			print "<li>$_のパーミッションNG\n";
		}
	}

	# ロックディレクトリ
	print "<li>ロック形式：";
	if ($lockkey == 0) { print "ロック設定なし\n"; }
	elsif ($lockkey == 1) { print "symlink\n"; }
	else { print "mkdir\n"; }

	local($lockdir) = $lockfile =~ /(.*)[\\\/].*$/; 

	# ディレクトリチェック
	foreach ( $lockdir, $imgdir ) {

		print "<li>ディレクトリ名 → $_\n";

		if (-d $_) {
			print "<li>$_のパス：OK\n";
			if (-r $_ && -w $_ && -x $_) {
				print "<li>$_のパーミッション：OK\n";
			} else {
				print "<li>$_のパーミッション：NG → $_\n";
			}
		} else {
			print "<li>$_のパス：NG → $_\n";
		}
	}

	# 送信方式
	if ($ordertype == 1) {
		print "<li>注文方式：メール送信\n";

		# sendmailチェック
		if (-e $sendmail) {
			print "<li>sendmailパス：OK!\n";
		} else {
			print "<li>sendmailパス：NG → $sendmail\n";
		}
	} else {
		print "<li>注文方式：ログ蓄積\n";
	}

	# jcode.pl バージョンチェック
	print "<li>jcode.plバージョンチェック：";

	if ($jcode'version < 2.13) {
		print "バージョンが低いようです。→ v$jcode'version\n";
	} else {
		print "バージョンOK (v$jcode'version)\n";
	}

	print <<EOM;
<li>バージョン : $ver
</ul>
</body>
</html>
EOM
	exit;
}


__END__

