#! /usr/bin/perl -w
#################################
# Date:2007.10.17 #
# Edit:YIZI #
# Program #
# RockSchool PerformarDetail #
#################################
use CGI;
use Jcode;
use XML::TreePP;
%FORM = ();
$FORM{'id'} = '';
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else{
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
if($FORM{'id'} eq ''){
$FORM{'id'} = '';
}
my $serverLocalDir = "/home/rocknogakuen/htdocs/www/";
my (@dataArr) = &xmlDataReadFunc($serverLocalDir, $FORM{'id'});
&outData($serverLocalDir, @dataArr);
exit();
#########################################
# xmlDataReadFunc #
# XMLデータの読み込み #
# 引数: #
# 1.サーバローカルディレクトリ #
# 2.対象ID #
# 戻値: #
# 1.検索結果配列 #
# a.アーティストID #
# b.アーティスト番号 #
# c.アーティスト名 #
# d.説明本文 #
# e.オフィシャルサイト #
#########################################
sub xmlDataReadFunc{
my ($localDir, $trgID) = @_;
my @retArr = ();
my $xmlPath = $localDir . 'resources_shared/xml/';
my $source = $xmlPath . 'namematching.xml';
my $tpp = XML::TreePP->new(force_array => [ "artist" ]);
my $tree = $tpp->parsefile( $source );
my $wCnt = $tree->{artistList}->{artist};
my $artID = '';
my $wwData = '';
#print "
" . $wCnt . "
\n";
foreach my $DaDa (@$wCnt){
$wwData .= '#';
if(($DaDa->{artName}) eq $trgID){
$artID = sprintf("%04d", ($DaDa->{artNumber}));
last;
}
}
if($artID eq ''){
push (@retArr, '');
push (@retArr, '');
push (@retArr, '出演者情報が表示できません');
push (@retArr, '該当する出演者情報が取得できませんでした。
データが存在しません Err=Code01');
push (@retArr, '');
return (@retArr);
}
my $sourceII = $xmlPath . 'artist.xml';
my $tppII = XML::TreePP->new(force_array => [ "artist" ]);
my $treeII = $tppII->parsefile( $sourceII );
my $wCntII = $treeII->{artistList}->{artist};
my $hitChk = 0;
foreach my $DaDa (@$wCntII){
if(($DaDa->{artID}) eq $artID){
$hitChk = 1;
push (@retArr, $trgID);
push (@retArr, ($DaDa->{artID}));
push (@retArr, ($DaDa->{artName}));
push (@retArr, ($DaDa->{artText}));
push (@retArr, ($DaDa->{artURI}));
last;
}
}
if($hitChk == 0){
push (@retArr, '');
push (@retArr, '');
push (@retArr, '出演者情報が表示できません');
push (@retArr, '該当する出演者情報が取得できませんでした。
データが存在しません Err=Code02');
push (@retArr, '');
return (@retArr);
}
return (@retArr);
}
#####################################
# outData #
# 画面出力 #
# 引数: #
# 1.サーバローカルディレクトリ #
# 2.検索結果配列 #
# a.アーティストID #
# b.アーティスト番号 #
# c.アーティスト名 #
# d.説明本文 #
# e.オフィシャルサイト #
# 戻値: #
#####################################
sub outData{
my ($localDir, $artID, $artNum, $artName, $artTxt, $artURI) = @_;
# テンプレートデータディレクトリ
my $perTemDat = $localDir . 'performer/detail/templ/det.tmp';
## インクルードデータ #読み込み用
my $includeRaedDataHead = $localDir . 'resources_shared/includes/header.ssi';
my $includeRaedDataFoot = $localDir . 'resources_shared/includes/footer.ssi';
my $includeRaedDataNavi01 = $localDir . 'resources_shared/includes/navi_01.ssi';
my $includeRaedDataNavi02 = $localDir . 'resources_shared/includes/navi_02.ssi';
my $includeRaedDataNaviPerformer = $localDir . 'resources_shared/includes/navi_performer.ssi';
# SSI部分データを読み込み
my $ssiHead = '';
my $ssiFoot = '';
my $ssiNaviPer = '';
if(open(SSIHEAD, "< $includeRaedDataHead")){
while(){ $ssiHead .= $_; }
close(SSIHEAD);
}
if(open(SSIFOOT, "< $includeRaedDataFoot")){
while(){ $ssiFoot .= $_; }
close(SSIFOOT);
}
if(open(SSINAVII, "< $includeRaedDataNaviPerformer")){
while(){ $ssiNaviPer .= $_; }
close(SSINAVII);
}
my $htmlTitleTagLine = '' . $artName . ' | 職員室 | ロックの学園';
my $htmlPanKuzu = 'TOP /
職員室 /
' . $artName . ' ';
my $htmlTitleLine = '' . $artName . '
';
my $htmlArtPict = '';
if($artID ne ''){
$htmlArtPict = '
';
}
my $htmlWebSite = '';
if($artURI ne ''){
$htmlWebSite = '
';
}
my $htmlMainText = $artTxt;
$htmlMainText =~ s/\r\n/
/gm;
$htmlMainText =~ s/\r/
/gm;
$htmlMainText =~ s/\n/
/gm;
$htmlMainText =~ s/\@/@/gm;
$htmlMainText =~ s/
/
\n/gm;
my $outHtmlData = '';
my $outHtmlDataData = '';
if(open(RSSDATA, "< $perTemDat")){
while(){
my $temDat = $_;
$temDat =~ s/\r\n//gm;
$temDat =~ s/\r//gm;
$temDat =~ s/\n//gm;
if($temDat eq '<%REPLACE_HTMLTITLELINE%>'){
$outHtmlData .= $htmlTitleTagLine;
} elsif($temDat eq '<%REPLACE_PANKUZU%>'){
$outHtmlData .= $htmlPanKuzu;
} elsif($temDat eq '<%REPLACE_TITLELINE%>'){
$outHtmlData .= $htmlTitleLine;
} elsif($temDat eq '<%REPLACE_ARTPICTURE%>'){
$outHtmlData .= $htmlArtPict;
} elsif($temDat eq '<%REPLACE_OFICIALSITE%>'){
$outHtmlData .= $htmlWebSite;
} elsif($temDat eq '<%REPLACE_MAINTEXT%>'){
$outHtmlData .= $htmlMainText;
} elsif($temDat eq '<%REPLACE_INCLUDEHEAD%>'){
$outHtmlData .= $ssiHead;
} elsif($temDat eq '<%REPLACE_INCLUDENAVIPERFORMER%>'){
$outHtmlData .= $ssiNaviPer;
} elsif($temDat eq '<%REPLACE_INCLUDEFOOTER%>'){
$outHtmlData .= $ssiFoot;
} else {
$outHtmlData .= $temDat;
}
$outHtmlData .= "\n";
}
close(RSSDATA);
} else {
$outHtmlData = 'READ ERROR TEMPLATE::' . $tempDat;
}
print "Content-type: text/html; charset=UTF-8\n\n";
print $outHtmlData;
}