#!/usr/bin/perl
#--NetShopOwner-CGI-version:5.0.2.0--
;#
;# s_shop_index.cgi
;# [スマートフォン]トップページ
;# (C) 2012 株式会社ジャストシステム
;#
;# last modified YYYY/MM/DD
;#
use strict;
use uselib;
use defnsopath_shops;
use NsoVersionSP 1.00;
use Lib::SiteStatus;
use NsoUserAgent;
use NsoMobileAffiliate;
use DB::NsoShopCampaignDB;
use DB::NsoArticleCampaignDB;
&ReadParse();
my %in = %main::in;
my %incfn = %main::incfn;
my %inct = %main::inct;
# インスタンス定義
my $objConfigSystem = Config::NsoSystem->newShop();
my $objConfigMaster = Config::NsoMaster->new();
my $NsoMisc = NsoMisc->new();
my $NsoUserAgent = NsoUserAgent->new();
# コンフィグレーションのキャッシュ
my %ConfigSystem = $objConfigSystem->cache_config();
my %ConfigMaster = $objConfigMaster->cache_config();
my $status_err;
my $NsoShopCampaignDB = NsoShopCampaignDB->new({ ConfigSystem=>\%ConfigSystem, ConfigMaster=>\%ConfigMaster});
my $NsoArticleCampaignDB = NsoArticleCampaignDB->new({ ConfigSystem=>\%ConfigSystem, ConfigMaster=>\%ConfigMaster});
FUNC:{
my $func = $in{func} || 'main';
my %function = (
main => \&main,
);
&check_closing();
if ($function{$func}){
$function{$func}->();
}else{
&main();
}
}
exit();
;#
;# 開店・閉店状態検査
;#
sub check_closing {
my $SiteStatus = Lib::SiteStatus->new({ ConfigSystem=>\%ConfigSystem });
$SiteStatus->CheckClosing();
$SiteStatus->CheckUserAgentSmartPhone();
}
;#
;# メイン処理
;#
sub main {
# テンプレート置換
my $html_templ_dir = "./";
my $html_templ_kind = "nsoDB/templ/";
my $DataHead = "s_shop_index_head.htmp";
my $DataFoot = "s_shop_index_foot.htmp";
my %TextHead = ();
my %TextFoot = ();
my %htmls = ();
# テンプレート読込
my $NsoTemplHead = NsoTempl->new({ DataDir=>$html_templ_dir, DirKind=>$html_templ_kind, Data=>$DataHead });
my $NsoTemplFoot = NsoTempl->new({ DataDir=>$html_templ_dir, DirKind=>$html_templ_kind, Data=>$DataFoot });
# キャンペーンリスト作成
my $body_contents;
if($ConfigSystem{navigationCampaign_view}{smartphone}{flag} eq "1"){
&makeCampaignList( {
htmls => \%htmls ,
BodyContents => \$body_contents ,
} );
}
# テンプレート置換
my %replace_templ_head = (
Text => \%TextHead ,
htmls => \%htmls ,
);
my %replace_templ_foot = (
Text => \%TextFoot ,
);
# 表示HTML作成
my $contents = "";
$contents .= $NsoTemplHead->replace_templ(\%replace_templ_head);
$contents .= $body_contents;
$contents .= $NsoTemplFoot->replace_templ(\%replace_templ_foot);
print $NsoMisc->print_header();
print $contents;
exit();
}
;#
;# キャンペーン一覧を作成する
;# @param %htmls 置換用ハッシュ、エラーメッセージを入れる
;# BodyContents ボディHTML、ループ結果生成されたもの
;# @return なし
;#
sub makeCampaignList(){
my ($params) = shift if @_;
my $htmls = $params->{htmls};
my $body_contents = $params->{BodyContents};
# テンプレート
my $html_templ_dir = "./";
my $html_templ_kind = "nsoDB/templ/";
my $DataBody1 = "s_shop_index_body1.htmp";
my $DataBody2 = "s_shop_index_body2.htmp";
my $DataBody3 = "s_shop_index_body3.htmp";
my $DataBody4 = "s_shop_index_body4.htmp";
# テンプレート読込
my $NsoTemplBody1 = NsoTempl->new({ DataDir=>$html_templ_dir, DirKind=>$html_templ_kind, Data=>$DataBody1 });
my $NsoTemplBody2 = NsoTempl->new({ DataDir=>$html_templ_dir, DirKind=>$html_templ_kind, Data=>$DataBody2 });
my $NsoTemplBody3 = NsoTempl->new({ DataDir=>$html_templ_dir, DirKind=>$html_templ_kind, Data=>$DataBody3 });
my $NsoTemplBody4 = NsoTempl->new({ DataDir=>$html_templ_dir, DirKind=>$html_templ_kind, Data=>$DataBody4 });
# ショップキャンペーン読み込み
my $shop_contents = "";
if($ConfigSystem{navigationCampaign_view}{smartphone}{flag_shop} eq "1"){
my %resultShopCampaign = $NsoShopCampaignDB->GetShopCampaignForNavigation();
my %resultShopCampaignHash = (
RecordList => $resultShopCampaign{RecordList},
RecordCount => $resultShopCampaign{RecordCount},
status_err => $resultShopCampaign{status_err},
);
# DBエラー時
if ($resultShopCampaignHash{status_err} ne ""){
$htmls->{status_err} = 'DB情報取得に失敗しました。(1)
' . $resultShopCampaignHash{status_err};
return;
} elsif ($resultShopCampaignHash{RecordCount} == 0){
# レコードがない場合、$shop_contentsは空のまま
} else {
my %shopCampaign = %{$resultShopCampaignHash{RecordList}[0]};
my %TextBody2 = ();
# 説明文(改行文字をエスケープして、
タグに変換)
$TextBody2{ShopCampaignExplanation} = $NsoMisc->newline_br($NsoMisc->unesc_newline($shopCampaign{ExplanationSmartPhone}));
my %replace_templ_body2 = (Text => \%TextBody2 ,);
$shop_contents .= $NsoTemplBody2->replace_templ(\%replace_templ_body2);
}
}
# 商品キャンペーン読み込み
my $article_contents = "";
if($ConfigSystem{navigationCampaign_view}{smartphone}{flag_article} eq "1"){
my %resultArticleCampaign = $NsoArticleCampaignDB->GetArticleCampaignForNavigation();
my %resultArticleCampaignHash = (
RecordList => $resultArticleCampaign{RecordList},
RecordCount => $resultArticleCampaign{RecordCount},
status_err => $resultArticleCampaign{status_err},
);
# DBエラー時
if ($resultArticleCampaignHash{status_err} ne ""){
$htmls->{status_err} = 'DB情報取得に失敗しました。(2)
' . $resultArticleCampaignHash{status_err};
return;
} elsif ($resultArticleCampaignHash{RecordCount} == 0){
# レコードがない場合、$article_contentsは空のまま
} else {
my @articleCampaignArray = @{$resultArticleCampaignHash{RecordList}};
for(my $i = 0 ; $i < @articleCampaignArray ; $i++ ){
my %TextBody3 = ();
$TextBody3{ArticleCampaignID} = $articleCampaignArray[$i]{CampaignID};
$TextBody3{ArticleCampaignName} = $articleCampaignArray[$i]{CampaignName};
my %replace_templ_body3 = (Text => \%TextBody3 ,);
$article_contents .= $NsoTemplBody3->replace_templ(\%replace_templ_body3)
}
}
}
# 表示するショップor商品キャンペーンが1つでもあれば、キャンペーンヘッダフッタをつけて表示HTML作成
if($shop_contents ne "" || $article_contents ne ""){
my %TextBody1 = ();
my %replace_templ_body1 = (Text => \%TextBody1 ,);
my %TextBody4 = ();
my %replace_templ_body4 = (Text => \%TextBody4 ,);
$$body_contents = "";
$$body_contents .= $NsoTemplBody1->replace_templ(\%replace_templ_body1);
$$body_contents .= $shop_contents;
$$body_contents .= $article_contents;
$$body_contents .= $NsoTemplBody4->replace_templ(\%replace_templ_body4);
} else{
$$body_contents = "";
}
}