#!/usr/local/bin/perl ############################################################ # # Yoyaku Form ver.2.0 # # 制作者: 株式会社ワイズプランニング 制作室 # 制作日: 2001.05.31 # 動作確認: FreeBSD & perl5 # ############################################################ require "lib.pl"; require "webcal.conf"; require "kihon.pl"; require "qreki.pl"; &lib'getinputfromweb; $query_year = $form{'year'}; $query_mon = $form{'mon'}; $lday = "3"; if($use_cookie){ &lib'get_cookie('sjis'); $from_cookie_name = $cookie{'name'}; } ($year,$mon,$day,$wday,$hour,$min,$sec) = &lib'getdatetime; if($query_year eq ""){ $query_year = $year; $query_mon = $mon; } $wyear = $form{'year'}; $wmon = $form{'mon'}; ($year,$mon,$day,$wday,$hour,$min,$sec) = &lib'getdatetime(time); if($wyear eq ""){ $wyear = $year; $wmon = $mon; } print "Content-type: text/html\n\n"; # ここからHTML表示部分 ############################################################ # ヘッダ print qq( $query_year年$query_mon月の\予\約状況 ); ############################################################ # カレンダ上部のタイトル部分 print qq( ); ############################################################ # カレンダ上部の「年」セレクタ print qq(

 ご宿泊\予\約状況 

\n"; ############################################################ # カレンダ上部の「月」セレクタ print "\n"; ############################################################ # 送信ボタン print "
\n"; print "

$query_year年$query_mon月

"; if($from_cookie_name ne ""){ print "$from_cookie_name さんようこそ!
"; } print qq(
※当館では宿泊日の4ヶ月前よりご\予\約を受け付けさせていただいております。

); ############################################################ # 年月の前後を取得 $preyear = $query_year;$nextyear = $query_year; $premon = $query_mon - 1; if($premon <= 0){$premon = 12; $preyear--;} $nextmon = $query_mon + 1; if($nextmon >= 13){$nextmon = 1; $nextyear++;} if(@nen[0] > $preyear){ print "←前の月・"; }else{ print "←前の月・"; } if(@nen[$nensize] < $nextyear){ print "次の月→/"; }else{ print "次の月→/"; } if("$query_year/$query_mon" ne "$year/$mon"){ print "今月へ"; }else{ print "今月へ"; } $datafiledir = "$datadir/$query_year.$query_mon"; @filelist = (); #http://www.fin.ne.jp/webcal/schedule.cgi?year=1998&mon=12&day=11 #関だ様のご助言により #while(<$datafiledir/*>){push(@filelist, $_);} opendir(DIR,"$datafiledir") && (@filelist = readdir(DIR), closedir(DIR)); # もしスケジュールがなければリンクはしない ## if($#filelist >= 0){ ## print "$query_year年$query_mon月の\予\約状況一覧
"; ## }else{ ## print "$query_year年$query_mon月の\予\約状況一覧
"; ## } ########################################################## # カレンダー本体の作成 print qq( ); for($i = 0; $i < 7; $i++){ $youbi = $weekstart+$i; if($youbi > 6){$youbi = 0;} $weekday = @wdays[$youbi]; if($i == (6 - $weekstart)){ print "" } #月の第1週めの始めの曜日を求める # if ($query_year eq 2005){ #$startday = &lib'getyoubi($query_year,$query_mon,2); # } else { # if ($query_year eq 2009){ #$startday = &lib'getyoubi($query_year,$query_mon,2); # } else { #$startday = &lib'getyoubi($query_year,$query_mon,1); # } # } #月の第1週めの始めの曜日を求める $startday = &lib'getyoubi($wyear,$wmon,1); #第1日 $tama = 1; #最終日 $tamaend = &lib'getgetumatu($wyear,$wmon); # 繰返し処理 @yearly = &lib'kurikaeshi_yearly($wyear,$yearlydata,$yearlydata2); @monthly = &lib'kurikaeshi_monthly($monthlydata); @weekly = &lib'kurikaeshi_weekly($weeklydata); ########################################################## # http://www.fin.ne.jp/webcal/schedule.cgi?year=1999&mon=2&day=17 # 小林様のご助言により、春分の日、秋分の日、振替休日をサポート # すごいっす(^_^) # 2000年1月6日 # 2000年ハッピーマンデー対応(クソ!勝手に休みを変えるな!) # if(open(DATA,"<$yearlydata")){ while () { if($_ !~ /^#/){ chop; push(@yearly, $_); } } close(DATA); } # 成人の日の割出し(2000年以降に適用) if($query_year >= 2000){ if(($seijin = &lib'getyoubi($query_year,1,1)) <= 1){ $seijin = 9 - $seijin; push(@yearly,"1\t$seijin\t成人の日\t1"); }else{ $seijin = 16 - $seijin; push(@yearly,"1\t$seijin\t成人の日\t1"); } }else{ push(@yearly,"1\t15\t成人の日\t1"); } # 体育の日の割出し(2000年以降に適用) if($query_year >= 2000){ if(($taiiku = &lib'getyoubi($query_year,10,1)) <= 1){ $taiiku = 9 - $taiiku; push(@yearly,"10\t$taiiku\t体育の日\t1"); }else{ $taiiku = 16 - $taiiku; push(@yearly,"10\t$taiiku\t体育の日\t1"); } }else{ push(@yearly,"10\t10\t体育の日\t1"); } # 海の日の割出し(2000年以降に適用) if($query_year >= 2000){ if(($uminohi = &lib'getyoubi($query_year,7,1)) <= 1){ $uminohi = 16 - $uminohi; push(@yearly,"7\t$uminohi\t海の日\t1"); }else{ $uminohi = 23 - $uminohi; push(@yearly,"7\t$uminohi\t海の日\t1"); } }else{ push(@yearly,"7\t20\t海の日\t1"); } # 敬老の日の割出し(2000年以降に適用) if($query_year >= 2000){ if(($keirou = &lib'getyoubi($query_year,9,1)) <= 1){ $keirou = 16 - $keirou; push(@yearly,"9\t$keirou\t敬老の日\t1"); }else{ $keirou = 23 - $keirou; push(@yearly,"9\t$keirou\t敬老の日\t1"); } }else{ push(@yearly,"9\t15\t敬老の日\t1"); } # 春分の日の割出し(1980年以降に適用) $shun = int(20.8431+0.242194*($query_year-1980)-int(($query_year-1980)/4)); push(@yearly,"3\t$shun\t春分の日\t1"); # 秋分の日の割出し(1980年以降に適用) $shuu = int(23.2488+0.242194*($query_year-1980)-int(($query_year-1980)/4)); push(@yearly,"9\t$shuu\t秋分の日\t1"); # 振替休日のチェック @furikae = (); $yearlysize = $#yearly; for($i = 0; $i <= $yearlysize; $i++){ ($yearly_mon,$yearly_day,$yearly_dat,$yearly_flag) = split(/\t/,@yearly[$i]); $weekday = &lib'getyoubi($query_year,$yearly_mon,$yearly_day); if ($weekday == 0 && $yearly_dat ne "憲法記念日" && $yearly_dat ne "国民の休日"){ $yearly_day_tmp = $yearly_day + 1; push(@furikae,"$yearly_mon\t$yearly_day_tmp\t振替休日\t1"); } } $furikaesize = $#furikae; if ($furikaesize >= 1){push(@yearly,@furikae);} $yearlysize = $#yearly; ########################################################## if(open(DATA,"<$monthlydata")){ while () { if($_ !~ /^#/){chop; push(@monthly, $_);}} close(DATA); } $monthlysize = $#monthly; if(open(DATA,"<$weeklydata")){ while () { if($_ !~ /^#/){chop; push(@weekly, $_);}} close(DATA); } $weeklysize = $#weekly; $startweek = 1; while($tama <= $tamaend){ print "\n"; for($i = 0; $i < 7; $i++){ #もし第1週目ならば if($startweek == 1){ if($i >= $startday){ ($yearly_dat,$yearly_flag) = &getyearly; ($monthly_dat,$monthly_flag,$monthly_hour,$monthly_minits) = &getmonthly; ($weekly_dat,$weekly_flag,$weekly_hour,$weekly_minits) = &getweekly; $flag = $yearly_flag+$monthly_flag+$weekly_flag; #もし土曜日ならば if($i == (6 - $weekstart)){ &Is_Sat; #もし日曜日ならば }elsif($i == (6 * $weekstart)){ &Is_Sun; #もし平日ならば }else{ &Is_Day; } &maketama; $tama++; }else{ print "\n"; } #もし第1週目でなければ }else{ if($tama <= $tamaend){ ($yearly_dat,$yearly_flag) = &getyearly; ($monthly_dat,$monthly_flag,$monthly_hour,$monthly_minits) = &getmonthly; ($weekly_dat,$weekly_flag,$weekly_hour,$weekly_minits) = &getweekly; $flag = $yearly_flag+$monthly_flag+$weekly_flag; #もし土曜日ならば if($i == (6 - $weekstart)){ &Is_Sat; #もし日曜日ならば }elsif($i == (6 * $weekstart)){ &Is_Sun; #もし平日ならば }else{ &Is_Day; } &maketama; $tama++; }else{ $tama++; print "\n"; } } } print "\n"; $startweek++; } ########################################################## # カレンダのフッタ # コピーライトの表示だけ残しておいてくださいm(_ _)m print qq(
"; }elsif($i == (6 * $weekstart)){ print ""; }else{ print ""; } print "

$weekday"; print "

\n"; print " "; print "\n"; print " "; print "
■記号の説明■
×:満 室
:残室わずか
空室あり

(c)FIN INC./WP_cgi
); print "\n"; print qq( ); # exit 0; ########################################################## # カレンダーの四角の中のコンテンツ部分 sub maketama { if ($query_year < $year){ print "$jitai_s$tama$jitai_e
\n"; }else{ if ($query_year > $year){ if ($query_year eq $year + 1){ if ($query_mon < $mon + 3 -11){ if ($mon -12 eq 0){ if ($tama < $day+$lday-$tamaend2){ print "$jitai_s$tama$jitai_e
\n"; }else{ print "$jitai_s$tama$jitai_e
\n"; } }else{ if ($query_mon eq 1) { if ($tama < 4) { if ($year+1 eq $query_year) { if ($mon > 9) { print "$jitai_s$tama$jitai_e
\n"; } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { if ($query_mon eq 12) { if ($tama eq 31) { if ($year eq $query_year) { if ($mon > 9) { print "$jitai_s$tama$jitai_e
\n"; } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { if ($mon -12 eq 0){ if ($tama < $day+$lday-$tamaend2){ print "$jitai_s$tama$jitai_e
\n"; }else{ print "$jitai_s$tama$jitai_e
\n"; } }else{ if ($query_mon eq 1) { if ($tama < 4) { if ($year+1 eq $query_year) { if ($mon > 9) { print "$jitai_s$tama$jitai_e
\n"; } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { if ($query_mon eq 12) { if ($tama eq 31) { if ($year eq $query_year) { if ($mon > 9) { print "$jitai_s$tama$jitai_e
\n"; } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } } } }else{ if ($query_mon < $mon){ print "$jitai_s$tama$jitai_e
\n"; }else{ if ($query_mon > $mon){ if ($query_mon > $mon + 3){ print "$jitai_s$tama$jitai_e
\n"; } else { if ($query_mon eq 12) { if ($tama eq 31) { if ($year eq $query_year) { if ($mon > 9) { print "$jitai_s$tama$jitai_e
\n"; } else { print "$jitai_s$tama$jitai_e
\n"; } } else { print "$jitai_s$tama$jitai_e
\n"; } } else { if ($query_mon >$mon+1){ print "$jitai_s$tama$jitai_e
\n"; }else{ if ($tama < $day+$lday-$tamaend2){ print "$jitai_s$tama$jitai_e
\n"; }else{ print "$jitai_s$tama$jitai_e
\n"; } } } } else { if ($query_mon >$mon+1){ print "$jitai_s$tama$jitai_e
\n"; }else{ if ($tama < $day+$lday-$tamaend2){ print "$jitai_s$tama$jitai_e
\n"; }else{ print "$jitai_s$tama$jitai_e
\n"; } } } } }else{ if ($tama < $day){ print "$jitai_s$tama$jitai_e
\n"; }else{ if ($tama < $day+$lday){ print "$jitai_s$tama$jitai_e
\n"; }else{ print "$jitai_s$tama$jitai_e
\n"; } } } } } } # if($yearly_dat ne ""){ # print "$w_jitai_s$yearly_dat$w_jitai_e
"; # } if($customtype[$USE_24SEKKI]){ $sekki24 = &qreki'check_24sekki($wyear,$wmon,$tama); if($sekki24 && $sekki24 ne "春分" && $sekki24 ne "秋分"){ print " $w_jitaim_s$sekki24$w_jitaim_e"; } } if($monthly_dat ne ""){ if($monthly_hour ne ""){ print "$w_jitai_s$monthly_hour:$monthly_minits$w_jitai_e/"; } print "$w_jitai_s$monthly_dat$w_jitai_e
"; } if($weekly_dat ne ""){ if($weekly_hour ne ""){ print "$w_jitai_s$weekly_hour:$weekly_minits$w_jitai_e/"; } print "$w_jitai_s$weekly_dat$w_jitai_e
"; } &load_sc; print "\n"; } ########################################################## # 年に一回のスケジュールの読み込み sub getyearly { for($ii = 0; $ii <= $yearlysize; $ii++){ ($yearly_mon,$yearly_day,$yearly_dat,$yearly_flag) = split(/\t/,@yearly[$ii]); if("$query_mon/$tama" eq "$yearly_mon/$yearly_day"){ return($yearly_dat,$yearly_flag); } } return(" ",0); } ########################################################## # 月に一回のスケジュールの読み込み sub getmonthly { for($ii = 0; $ii <= $monthlysize; $ii++){ ($monthly_day,$monthly_hour,$monthly_minits,$monthly_dat,$monthly_flag) = split(/\t/,@monthly[$ii]); if("$tama" eq "$monthly_day"){ return($monthly_dat,$monthly_flag,$monthly_hour,$monthly_minits); } } return("",0,"",""); } ########################################################## # 週に一回のスケジュールの読み込み sub getweekly { for($ii = 0; $ii <= $weeklysize; $ii++){ ($weekly_wday,$weekly_hour,$weekly_minits,$weekly_dat,$weekly_flag) = split(/\t/,@weekly[$ii]); if($weekstart == 1){ if($weekly_wday != 0){ $weekly_wday = $weekly_wday-1; }else{ $weekly_wday = 6; } } if($i == $weekly_wday){ return($weekly_dat,$weekly_flag,$weekly_hour,$weekly_minits); } } return("",0,"",""); } ########################################################## # スケジュールの読み込み sub load_sc { if ($query_year < $year){ print "\n"; }else{ if ($query_year eq $year){ if ($query_mon < $mon){ print "\n"; } else { # if ($query_mon > $mon+3){ # print "\n"; # } else { if ($query_mon eq $mon){ if ($tama < $day){ print "\n"; } else { if(open(DATA,"<$datadir/$query_year.$query_mon/$tama")){ @datalist = (); local($count) = 0; DATALOAD: while(){ last DATALOAD if $count == $gyou; chop; push(@datalist, $_);$count++; } close(DATA); foreach $eachdata (@datalist){ ($dyear,$dmon,$dday, $dhour,$dmin,$dsec, $dhour_s,$dmin_s,$dhour_e,$dmin_e,$dplace, $dname,$demail,$dtitle,$dcontent,$dr_1,$dr_2,$dr_3,$drhost,$dpasswd) = split(/\t/,$eachdata); $dtitle = substr($dtitle,0,$keta); if ($dplace eq "7"){ print "
全館休業
"; } else { if($dhour_s ne "" && $dmin_s ne ""){ print "$w_jitai_s$dhour_s:$dmin_s$w_jitai_e/"; } print "
ホテル$dr_1 
宿 舎$dr_2 
"; } # } } }else{ print "
ホテル
宿 舎
"; # print "
ホテル
宿 舎
"; } } } else { if($query_mon eq $mon+4){ if($tama < $day+1){ if(open(DATA,"<$datadir/$query_year.$query_mon/$tama")){ @datalist = (); local($count) = 0; DATALOAD: while(){ last DATALOAD if $count == $gyou; chop; push(@datalist, $_);$count++; } close(DATA); foreach $eachdata (@datalist){ ($dyear,$dmon,$dday, $dhour,$dmin,$dsec, $dhour_s,$dmin_s,$dhour_e,$dmin_e,$dplace, $dname,$demail,$dtitle,$dcontent,$dr_1,$dr_2,$dr_3,$drhost,$dpasswd) = split(/\t/,$eachdata); $dtitle = substr($dtitle,0,$keta); if ($dplace eq "7"){ print "
全館休業
"; } else { if($dhour_s ne "" && $dmin_s ne ""){ print "$w_jitai_s$dhour_s:$dmin_s$w_jitai_e/"; } print "
ホテル$dr_1 
宿 舎$dr_2 
"; } # } } }else{ print "
ホテル
宿 舎
"; # print "
ホテル
宿 舎
"; } } else { print "
受付前
"; } } else { if(open(DATA,"<$datadir/$query_year.$query_mon/$tama")){ @datalist = (); local($count) = 0; DATALOAD: while(){ last DATALOAD if $count == $gyou; chop; push(@datalist, $_);$count++; } close(DATA); foreach $eachdata (@datalist){ ($dyear,$dmon,$dday, $dhour,$dmin,$dsec, $dhour_s,$dmin_s,$dhour_e,$dmin_e,$dplace, $dname,$demail,$dtitle,$dcontent,$dr_1,$dr_2,$dr_3,$drhost,$dpasswd) = split(/\t/,$eachdata); $dtitle = substr($dtitle,0,$keta); if ($dplace eq "7"){ print "
全館休業
"; } else { if($dhour_s ne "" && $dmin_s ne ""){ print "$w_jitai_s$dhour_s:$dmin_s$w_jitai_e/"; } print "
ホテル$dr_1 
宿 舎$dr_2 
"; } } }else{ # print "
ホテル
宿 舎
"; if($query_mon < $mon+4){ print "
ホテル
宿 舎
"; } else { print "
受付前
"; } } } } } } else { if(open(DATA,"<$datadir/$query_year.$query_mon/$tama")){ @datalist = (); local($count) = 0; DATALOAD: while(){ last DATALOAD if $count == $gyou; chop; push(@datalist, $_);$count++; } close(DATA); foreach $eachdata (@datalist){ ($dyear,$dmon,$dday, $dhour,$dmin,$dsec, $dhour_s,$dmin_s,$dhour_e,$dmin_e,$dplace, $dname,$demail,$dtitle,$dcontent,$dr_1,$dr_2,$dr_3,$drhost,$dpasswd) = split(/\t/,$eachdata); $dtitle = substr($dtitle,0,$keta); if ($dplace eq "7"){ print "
全館休業
"; } else { if($dhour_s ne "" && $dmin_s ne ""){ print "$w_jitai_s$dhour_s:$dmin_s$w_jitai_e/"; } print "
ホテル$dr_1 
宿 舎$dr_2 
"; } } }else{ if ($dplace eq "7"){ print "
全館休業
"; } else { print "
受付前
"; } } } } } sub Is_Sat { #もし今日でなければ if("$query_year/$query_mon/$tama" ne "$year/$mon/$day"){ #もし休日でなければ if($flag == 0){ print ""; }else{ #もし休日ならば print "\n"; } }else{ #もし今日ならば &Is_Today; } } sub Is_Sun { #もし今日でなければ if("$query_year/$query_mon/$tama" ne "$year/$mon/$day"){ print "\n"; }else{ print "\n"; } } sub Is_Day { #もし今日でなければ if("$query_year/$query_mon/$tama" ne "$year/$mon/$day"){ &Is_Not_Today; }else{ &Is_Today; } } sub Is_Not_Today { #もし休日でなければ if($flag == 0){ print ""; }else{ #もし休日ならば print "\n"; } } sub Is_Today { print "\n"; } sub make_kurikaeshi { local($i,$monthly_dat,$monthly_hour,$monthly_minits,$weekly_dat,$weekly_hour,$weekly_minits,$shu); if($#yearly_data >= 0){ for($i = 0;$i <= $#yearly_data;$i++){ print "$w_jitaim_s$yearly_data[$i]
$w_jitaim_e"; } } if($#monthly >= 0){ for($i = 0;$i <= $#monthly_data;$i++){ ($monthly_dat,$monthly_hour,$monthly_minits,$shu) = split(/\t/,@monthly_data[$i]); print ""; if($monthly_hour ne ""){ print "$w_jitaim_s$monthly_hour:$monthly_minits/$w_jitaim_e"; } print "$w_jitaim_s$monthly_dat
$w_jitaim_e"; print "
"; } } if($#weekly_data >= 0){ for($i = 0;$i <= $#weekly_data;$i++){ ($weekly_dat,$weekly_hour,$weekly_minits) = split(/\t/,@weekly_data[$i]); print ""; if($weekly_hour ne ""){ print "$w_jitaim_s$weekly_hour:$weekly_minits/$w_jitaim_e"; } print "$w_jitaim_s$weekly_dat
$w_jitaim_e"; print "
"; } } }