#! /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 = '
' . $artName . '
'; } my $htmlWebSite = ''; if($artURI ne ''){ $htmlWebSite = '
OFFICIAL WEBSITE
'; } 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; }