#!/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';
$| = 1;
&main();
exit;
sub main {
%main::form_key = ( %main::form_key, %{ $main::formkeys{INVENTORY_LIST} } );
&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 $session = {};
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);
}
$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{INVENTORY_LIST});
$tpl_var = &makeTplVariables($tpl_var, $session, $form_data);
$content = &pages::makePage($main::PageTpl{INVENTORY_LIST}, $tpl_var);
} 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;
$tpl_var->{SESSION_ID} = &sanitize::convANB($session->{SESSION_ID});
$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->{USE_STOCK} = ($main::ConfigData->{'EXEC-STOCK_CONTROL'} == 1);
my $page_num = 0;
if (&mylibs::isExistFormValue($form_data, $main::form_key{PAGE_NO})) {
$page_num = &sanitize::convInteger(&mylibs::getFormValue($form_data, $main::form_key{PAGE_NO}));
}
my $ctg_id = &sanitize::convANB(&mylibs::getFormValue($form_data, $main::form_key{CTG_ID}));
if ($ctg_id eq '') {
$tpl_var->{VALID_CTG} = (0);
return $tpl_var;
}
my $ctg_file = $ctg_id . $main::DataFileExt;
if (-e $main::CtgFilePath . $ctg_file) {
my ($ctgData, $ctgTable) = &config::getCtgItemConfigData($main::CtgFilePath, $ctg_file);
unless (exists($ctgData->{'CATEGORY'})) {
$tpl_var->{VALID_CTG} = (0);
return $tpl_var;
}
unless (&check::isCategoryAllowShow($ctg_id)) {
$tpl_var->{VALID_CTG} = (0);
return $tpl_var;
}
my $ctg_id_str = $ctg_id;
$ctg_id_str =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
$tpl_var->{URL_CTG_ID} = $ctg_id_str;
$tpl_var->{ctg_name} = &sanitize::convHTML($ctgData->{'CATEGORY-CATEGORY_NAME'});
# non sanitize (use html tags)
my $ctg_comm = $ctgData->{'CATEGORY-CATEGORY_COMM'};
if ($main::isRunningImodeCGI) {
$ctg_comm = &mylibs::removeHtmlTags($ctg_comm);
}
$ctg_comm =~ s/\x0D\x0A/
/g;
$ctg_comm =~ s/\x0D/
/g;
$ctg_comm =~ s/\x0A/
/g;
$tpl_var->{ctg_comm} = $ctg_comm;
#
$tpl_var->{ctg_pic} = &sanitize::convFileName($ctgData->{'CATEGORY-CATEGORY_PIC'});
$tpl_var->{ctg_thumb} = &sanitize::convFileName($ctgData->{'CATEGORY-CATEGORY_THUMB'});
$tpl_var->{PAGE_TITLE} = &sanitize::convHTML($ctgData->{'CATEGORY-PAGE_TITLE'});
my $pr_id = &sanitize::convANB($ctgData->{'CATEGORY-CATEGORY_PATH'});
$pr_id =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
$tpl_var->{PARENTCTG_URL_ID} = $pr_id;
my ($child_ctg, $tbl_itemid, $fld_itemid) = &tables::getCategoryTable($ctgTable);
# add Child category data
my @ctmp = ();
# if ($ctgData->{'CATEGORY-CATEGORY_LEVEL'} < $main::ConfigData->{'SHOP-CTG_LVL'}) {
my $cctg_num = 0;
my $cc_id = '';
foreach $cc_id ( @$child_ctg ) {
$cc_id = &sanitize::convANB($cc_id);
my $cc_name = '';
my $Cctg_file = $cc_id . $main::DataFileExt;
if (-e $main::CtgFilePath . $Cctg_file) {
my ($CctgData, $CctgTable) = &config::getCtgItemConfigData($main::CtgFilePath, $Cctg_file);
next unless (exists($CctgData->{'CATEGORY'}));
next unless (&check::isCategoryAllowShow($cc_id));
$cc_name = &sanitize::convHTML($CctgData->{'CATEGORY-CATEGORY_NAME'});
if ($cc_name ne '') {
$ctmp[$cctg_num]->{CHILDCTG_ID} = $cc_id;
$ctmp[$cctg_num]->{CHILDCTG_NAME} = $cc_name;
$cc_id =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
$ctmp[$cctg_num]->{CHILDCTG_URL_ID} = $cc_id;
$cctg_num++;
}
}
}
# }
$tpl_var->{LOOP_CHILDCTG} = \@ctmp;
my $Items_sortkey = {};
$Items_sortkey = &getChildrensItem($ctg_id, $Items_sortkey);
my @ListedItems = sort { $Items_sortkey->{$a} cmp $Items_sortkey->{$b} } sort keys %$Items_sortkey;
my $CategoryItemNum = 0;
$CategoryItemNum = scalar(@ListedItems);
$tpl_var->{EXIST_ITEM} = ($CategoryItemNum != 0);
# page control
my $it_cols = 1;
my $it_rows = 0;
my $limit_num = 0;
$it_cols = $main::ConfigData->{'EXEC-CGI_COL_COUNT'}
if defined $main::ConfigData->{'EXEC-CGI_COL_COUNT'};
if ($main::isRunningImodeCGI) {
$it_rows = $main::ConfigData->{'EXEC-CGI_LIST_COUNT_IMODE'}
if defined $main::ConfigData->{'EXEC-CGI_LIST_COUNT_IMODE'};
$it_cols = 1;
} else {
$it_rows = $main::ConfigData->{'EXEC-CGI_LIST_COUNT'}
if defined $main::ConfigData->{'EXEC-CGI_LIST_COUNT'};
}
if ($it_cols * $it_rows > 0) {
$limit_num = $it_cols * $it_rows;
} else {
$tpl_var->{EXIST_ITEM} = (0);
return $tpl_var;
}
$tpl_var->{COL_WIDTH} = int(100 / $it_cols) if ($it_cols > 0);
$tpl_var->{ONE_COLUMN} = ($it_cols <= 1);
$limit_num =~ s/[^\d]//g;
if ($limit_num eq '') {
$limit_num = 20;
}
if ($CategoryItemNum < ($limit_num * ($page_num - 1))) {
$page_num = int($CategoryItemNum / $limit_num) + 1;
}
if ($CategoryItemNum == ($limit_num * ($page_num - 1))) {
$page_num = int($CategoryItemNum / $limit_num);
}
if ($page_num == 0) {
$page_num = 1;
}
# get item data
my $list_num = 0;
my @tmp = ();
my $list_details;
my $l_id;
if ($CategoryItemNum > 0) {
my @subtmp = ();
my $rw = 0;
my $cl = 0;
my $i = 0;
for ($i = ($limit_num * ($page_num - 1)); $i < ($limit_num * $page_num) and $i < $CategoryItemNum; $i++) {
$l_id = &sanitize::convANB($ListedItems[$i]);
if ($l_id ne '') {
my $item_file = $l_id . $main::DataFileExt;
if (-e $main::ItemFilePath . $item_file) {
my ($itemData, $itemTable) = &config::getCtgItemConfigData($main::ItemFilePath, $item_file);
next unless (exists($itemData->{'ITEM'}));
next unless (&check::isItemAllowShow($l_id));
my $stock = 0;
my $show_stock = '';
if ($main::ConfigData->{'EXEC-STOCK_CONTROL'} eq '1'
and $itemData->{'ITEM-USE_STOCK'} eq '1') {
$stock = &stock::getStock($l_id);
$show_stock = $stock;
} else {
$stock = 99999;
$show_stock = '';
}
next if ($main::ConfigData->{'EXEC-DISP_NOSTOCK'} ne '1' and $stock == 0);
if ($tpl_var->{ONE_COLUMN}) {
$tmp[$list_num]->{STOCK} = $show_stock;
if ($main::ConfigData->{'EXEC-TAX_INCLUDES_DECLARED'} == 1) {
$itemData->{'ITEM-ENTPRICE'} = $itemData->{'ITEM-TAXPRICE'};
$itemData->{'ITEM-TAX_DIV'} = 2;
}
$tmp[$list_num]->{item_id} = $l_id;
$tmp[$list_num]->{price} = &mylibs::formatNumber(&sanitize::convRealNum($itemData->{'ITEM-ENTPRICE'}));
$tmp[$list_num]->{item_name} = &sanitize::convHTML($itemData->{'ITEM-ITEM_NAME'});
$tmp[$list_num]->{tani} = &sanitize::convHTML($itemData->{'ITEM-TANI'});
my $spec_thumb = $itemData->{'ITEM-SPEC_THUMB'};
if ($main::isRunningImodeCGI) {
$spec_thumb = &mylibs::removeHtmlTags($spec_thumb);
}
$spec_thumb =~ s/\x0D\x0A/
/g;
$spec_thumb =~ s/\x0D/
/g;
$spec_thumb =~ s/\x0A/
/g;
$tmp[$list_num]->{spec_thumb} = $spec_thumb;
$tmp[$list_num]->{sales_term} = $itemData->{'ITEM-SALES_TERM'};
$tmp[$list_num]->{stock_status} = &sanitize::convInteger($itemData->{'ITEM-STOCK'});
$tmp[$list_num]->{pic1} = &sanitize::convFileName($itemData->{'ITEM-PIC_FILE'});
$tmp[$list_num]->{picthumbnail} = &sanitize::convFileName($itemData->{'ITEM-PIC_THUMBNAIL'});
$tmp[$list_num]->{item_mark} = &sanitize::convInteger($itemData->{'ITEM-MARK'});
if ($main::ConfigData->{'EXEC-STOCK_CONTROL'} eq '1'
and $itemData->{'ITEM-USE_STOCK'} eq '1') {
$tmp[$list_num]->{color_label} = '';
$tmp[$list_num]->{size_label} = '';
$tmp[$list_num]->{colorh} = '';
$tmp[$list_num]->{sizeh} = '';
} else {
$tmp[$list_num]->{color_label} = &sanitize::convHTML($itemData->{'ITEM-COLOR_LABEL'});
$tmp[$list_num]->{size_label} = &sanitize::convHTML($itemData->{'ITEM-SIZE_LABEL'});
my $colorh = '';
foreach ( split /\n/, $itemData->{'ITEM-COLOR'} ) {
my $cl = &sanitize::convHTML($_);
$colorh .= '\n";
}
$tmp[$list_num]->{colorh} = $colorh;
my $sizeh = '';
foreach ( split /\n/, $itemData->{'ITEM-SIZE'} ) {
my $sz = &sanitize::convHTML($_);
$sizeh .= '\n";
}
$tmp[$list_num]->{sizeh} = $sizeh;
}
$tmp[$list_num]->{ZEIKOMI} = ($itemData->{'ITEM-TAX_DIV'} == 2);
$tmp[$list_num]->{IS_USE_STOCK} = ($itemData->{'ITEM-USE_STOCK'} == 1);
$tmp[$list_num]->{USE_STOCK} = ($main::ConfigData->{'EXEC-STOCK_CONTROL'} == 1
and $itemData->{'ITEM-USE_STOCK'} == 1);
$tmp[$list_num]->{NUMBER} = ($list_num + 1);
my $item_id_str = $l_id;
$item_id_str =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
$tmp[$list_num]->{URL_ITEM_ID} = $item_id_str;
$list_num++;
} else {
if ($cl == $it_cols) {
$tmp[$rw]->{LOOP_LIST_SUB} = \@{$subtmp[$rw]};
$cl = 0;
$rw++;
$subtmp[$rw] = ();
}
$subtmp[$rw][$cl]->{STOCK} = $show_stock;
if ($main::ConfigData->{'EXEC-TAX_INCLUDES_DECLARED'} == 1) {
$itemData->{'ITEM-ENTPRICE'} = $itemData->{'ITEM-TAXPRICE'};
$itemData->{'ITEM-TAX_DIV'} = 2;
}
$subtmp[$rw][$cl]->{item_id} = $l_id;
$subtmp[$rw][$cl]->{price} = &mylibs::formatNumber(&sanitize::convRealNum($itemData->{'ITEM-ENTPRICE'}));
$subtmp[$rw][$cl]->{item_name} = &sanitize::convHTML($itemData->{'ITEM-ITEM_NAME'});
$subtmp[$rw][$cl]->{tani} = &sanitize::convHTML($itemData->{'ITEM-TANI'});
my $spec_thumb = $itemData->{'ITEM-SPEC_THUMB'};
if ($main::isRunningImodeCGI) {
$spec_thumb = &mylibs::removeHtmlTags($spec_thumb);
}
$spec_thumb =~ s/\x0D\x0A/
/g;
$spec_thumb =~ s/\x0D/
/g;
$spec_thumb =~ s/\x0A/
/g;
$subtmp[$rw][$cl]->{spec_thumb} = $spec_thumb;
$subtmp[$rw][$cl]->{sales_term} = $itemData->{'ITEM-SALES_TERM'};
$subtmp[$rw][$cl]->{stock_status} = &sanitize::convInteger($itemData->{'ITEM-STOCK'});
$subtmp[$rw][$cl]->{pic1} = &sanitize::convFileName($itemData->{'ITEM-PIC_FILE'});
$subtmp[$rw][$cl]->{picthumbnail} = &sanitize::convFileName($itemData->{'ITEM-PIC_THUMBNAIL'});
$subtmp[$rw][$cl]->{item_mark} = &sanitize::convInteger($itemData->{'ITEM-MARK'});
if ($main::ConfigData->{'EXEC-STOCK_CONTROL'} eq '1'
and $itemData->{'ITEM-USE_STOCK'} eq '1') {
$subtmp[$rw][$cl]->{color_label} = '';
$subtmp[$rw][$cl]->{size_label} = '';
$subtmp[$rw][$cl]->{colorh} = '';
$subtmp[$rw][$cl]->{sizeh} = '';
} else {
$subtmp[$rw][$cl]->{color_label} = &sanitize::convHTML($itemData->{'ITEM-COLOR_LABEL'});
$subtmp[$rw][$cl]->{size_label} = &sanitize::convHTML($itemData->{'ITEM-SIZE_LABEL'});
my $colorh = '';
foreach ( split /\n/, $itemData->{'ITEM-COLOR'} ) {
my $cl = &sanitize::convHTML($_);
$colorh .= '\n";
}
$subtmp[$rw][$cl]->{colorh} = $colorh;
my $sizeh = '';
foreach ( split /\n/, $itemData->{'ITEM-SIZE'} ) {
my $sz = &sanitize::convHTML($_);
$sizeh .= '\n";
}
$subtmp[$rw][$cl]->{sizeh} = $sizeh;
}
$subtmp[$rw][$cl]->{ZEIKOMI} = ($itemData->{'ITEM-TAX_DIV'} == 2);
$subtmp[$rw][$cl]->{IS_USE_STOCK} = ($itemData->{'ITEM-USE_STOCK'} == 1);
$subtmp[$rw][$cl]->{USE_STOCK} = ($main::ConfigData->{'EXEC-STOCK_CONTROL'} == 1
and $itemData->{'ITEM-USE_STOCK'} == 1);
$subtmp[$rw][$cl]->{NUMBER} = ($list_num + 1);
my $item_id_str = $l_id;
$item_id_str =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
$subtmp[$rw][$cl]->{URL_ITEM_ID} = $item_id_str;
$list_num++;
$cl++;
}
}
}
}
unless ($tpl_var->{ONE_COLUMN}) {
$tmp[$rw]->{LOOP_LIST_SUB} = \@{$subtmp[$rw]};
$cl = 0;
$rw++;
$subtmp[$rw] = ();
}
}
$tpl_var->{LOOP_LIST} = \@tmp;
my @pgtemp = ();
my $pg;
my $pgmax = int($CategoryItemNum / $limit_num);
if (($pgmax * $limit_num) != $CategoryItemNum) {
$pgmax++;
}
for ($pg = 0; $pg < $pgmax; $pg++) {
$pgtemp[$pg]->{PAGE} = $pg + 1;
}
$tpl_var->{PAGE_TAG} = \@pgtemp;
$tpl_var->{CURRENT_PAGE} = $page_num;
$tpl_var->{MAX_PAGE} = $pgmax;
if ($page_num == 1) {
$tpl_var->{PREV_PAGE} = 1;
} else {
$tpl_var->{PREV_PAGE} = $page_num - 1;
}
if ($page_num == $pgmax) {
$tpl_var->{NEXT_PAGE} = $pgmax;
} else {
$tpl_var->{NEXT_PAGE} = $page_num + 1;
}
$tpl_var->{VALID_CTG} = (1);
} else {
$tpl_var->{VALID_CTG} = (0);
}
($tpl_var->{LOOP_CTG_LIST}, $tpl_var->{VALID_LIST}) = &tpl::getCategoryList();
return $tpl_var;
}
sub getChildrensItem {
my $ctg_id = shift;
my $childitems = shift;
$ctg_id = &sanitize::convANB($ctg_id);
if ($ctg_id eq '') {
return $childitems;
}
my $ctg_file = $ctg_id . $main::DataFileExt;
if (-e $main::CtgFilePath . $ctg_file) {
my ($ctgData, $ctgTable) = &config::getCtgItemConfigData($main::CtgFilePath, $ctg_file);
unless (exists($ctgData->{'CATEGORY'})) {
return $childitems;
}
unless ($ctgData->{'CATEGORY-CATEGORY_SHOW'}) {
return $childitems;
} else {
my ($child_ctg, $tbl_itemid, $fld_itemid) = &tables::getCategoryTable($ctgTable);
foreach ( @$child_ctg ) {
$childitems = &getChildrensItem($_, $childitems);
}
my $i = 0;
for ($i = 0; $i <= $#{ $tbl_itemid->{${$fld_itemid}[0]} }; $i++) {
my $item_id = &sanitize::convANB($tbl_itemid->{${$fld_itemid}[0]}[$i]);
if ($item_id ne '') {
my $item_file = $item_id . $main::DataFileExt;
if (-e $main::ItemFilePath . $item_file) {
my ($itemData, $itemTable) = &config::getCtgItemConfigData($main::ItemFilePath, $item_file);
next unless (exists($itemData->{'ITEM'}));
next unless (&check::isItemAllowShow($item_id));
# push @$childitems, $item_id;
$childitems->{$item_id} = $itemData->{'ITEM-SORT_KEY'};
}
}
}
return $childitems;
}
} else {
return $childitems;
}
}
sub _dummy {
undef %main::formkeys;
undef $main::ConfigFile;
undef $main::VERSION;
}