#!/usr/local/bin/perl utime time(), time(), __FILE__; ############################################################ # # 日記帳 version 0.19.3 # # 制作者: Yutaka Tsubakiyama # 制作日: 2000.09.20 # 種類 : フリーウエア # 動作確認:FreeBSD & perl5 # # URL : http://www1.linkclub.or.jp/~tsubaki/ ############################################################ $mode = "1"; # 動作環境(0=Windows 1=Unix) if($mode == "0"){ require "C:\\tsubakuro\\public_html\\diary\\lib.pl"; # フルパス指定 require "C:\\tsubakuro\\public_html\\diary\\diaryconf.cgi"; # フルパス指定 }else{ require "./lib.pl"; require "./diaryconf.cgi"; } $wording1 = '記帳されてありません。'; # 初期値チェック # 記帳表示日数 if ($reiterate <= 0){$reiterate = 1;} if ($reiterate > $reiterate_max){$reiterate = $reiterate_max;} # 日記表示縦サイズ if ($diary_hsize < 160){$diary_hsize = 160;} if ($diary_hsize > $diary_hsizemax){$diary_hsize = $diary_hsizemax;} # 日記表示横サイズ if ($diary_wsize < 450){$diary_wsize = 450;} if ($diary_wsize > $diary_wsizemax){$diary_wsize = $diary_wsizemax;} # Web日記帳管理人URL $url = 'http://www1.linkclub.or.jp/~tsubaki/'; &lib'getinputfromweb; $query_year = $form{'year'}; $query_mon = $form{'mon'}; $query_day = $form{'day'}; ($year,$mon,$day,$wday,$hour,$min,$sec) = &lib'getdatetime(time,$jisa); if($query_year eq ""){$query_year = $year;} if($query_mon eq ""){$query_mon = $mon;} if($query_day eq ""){ $query_day = $day; }elsif($query_day eq "99"){ $query_day = &lib'getgetumatu($query_year,$query_mon) } # クッキーを使うなら if($use_cookie){ &lib'get_cookie($kanji_code); @user_item = split(/\,/,$cookie{$item}); &make_user; } print "Content-type: text/html\n\n"; # 祝日/振替休日等の算出 @yearly = &lib'kurikaeshi_yearly($query_year,$yearlydata,$yearlydata2); @monthly = &lib'kurikaeshi_monthly($monthlydata); @weekly = &lib'kurikaeshi_weekly($weeklydata); # ここからHTML表示部分 $both = ''; ## フレーム分割 あり if ($frameid == "1"){ $both = '&framename=both'; if ($form{'framename'} eq 'left') { &leftdisp; } elsif ($form{'framename'} eq 'right') { &rightdisp; } elsif ($form{'framename'} eq 'both') { &leftdisp; print "\n"; } else { &framedisp; } exit 0; ## フレーム分割 なし } elsif ($frameid == "0"){ &diarydisp; exit 0; } ## カレンダー表示 なし &diary2disp; exit 0; ########################################################## # 標準表示(フレーム分割 あり) sub framedisp { print "\n"; print "\n"; print "\n"; # スタイルシートの展開 print &style_css; print "$query_year年$query_mon月の日記帳\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "<BODY><BR><CENTER>\n"; print "<P>フレームに対応していませんので、環境設定画面に於いてフレーム分割をしないを選択してください。</P>\n"; print "<P>"; print "<A HREF = \"$usercgi?year=$query_year&mon=$query_mon&day=$query_day\">環境設定画面</A>"; print "</P>\n"; print "</CENTER></BODY>\n"; print "\n"; print "\n"; } ########################################################## # 左フレーム表示 sub leftdisp { print "\n"; print "\n"; print "\n"; # スタイルシートの展開 print &style_css; print "$query_year年$query_mon月の日記帳\n"; # bodyタグ if ($backgif) { $bgkey = "background=\"$backgif1\" bgcolor=$h_bgcolor1 leftmargin=0"; }else{ $bgkey = "bgcolor=$h_bgcolor1 leftmargin=0"; } print "\n"; print "
\n"; print ""; print ""; print ""; print ""; print ""; print ""; print ""; if ($titlegif) { $interval_h = ($title_h + 18) - $icon_h; }else{ $interval_h = 50 - $icon_h; } print ""; print ""; print ""; print ""; print ""; print ""; print ""; print "\n"; print "
 "; # アイコンリンク &iconlink; print "
 
 "; # カレンダー本体の作成 &calendar; # メッセージの設定 &message; print " 
\n"; print "\n"; print "\n"; } ########################################################## # 右フレーム表示 sub rightdisp { print "\n"; print "\n"; print "\n"; # スタイルシートの展開 print &style_css; print "$query_year年$query_mon月の日記帳\n"; # bodyタグ if ($backgif) { $bgkey = "background=\"$backgif2\" bgcolor=$h_bgcolor2 leftmargin=0"; }else{ $bgkey = "bgcolor=$h_bgcolor2 leftmargin=0"; } print "\n"; print "\n"; print "
\n"; print ""; print ""; print ""; # タイトル print ""; print ""; print ""; print ""; print ""; print ""; # 日記本体の作成開始 print ""; # 日記本体の作成終了 print ""; print ""; # 著作権表示 print ""; print ""; print ""; print "
"; &diarytitle; print "
 
"; # 四隅の編集 &corners; # 書き込み背景カラー設定 &backcolor; # 年月日の待避 $next_year = $query_year; $next_mon = $query_mon; $next_day = $query_day; $no = 0; # 表示条件(1=日記 0=全て) if($diary_condition == "1"){ &write_view; }else{ # 記帳内容取得 &Is_GetDate; &all_view; } print "
"; print "$copyright
"; print "\n"; print "\n"; } ########################################################## # 標準表示(フレーム分割 なし) sub diarydisp { print "\n"; print "\n"; print "\n"; # スタイルシートの展開 print &style_css; print "$query_year年$query_mon月の日記帳\n"; # bodyタグ if ($backgif) { $bgkey = "background=\"$backgif\" bgcolor=$h_bgcolor"; }else{ $bgkey = "bgcolor=$h_bgcolor"; } print "\n"; print "\n"; # title print "
\n"; print ""; print "\n"; print ""; print ""; # アイコンリンク print ""; # タイトル print ""; print ""; print ""; print ""; print ""; print ""; print ""; print "\n"; print "\n"; # 日記本体の作成開始 print ""; # 日記本体の作成終了 print "\n"; print "\n"; # 著作権表示 print ""; print "\n"; print "\n"; print "
 \n"; &iconlink; print ""; &diarytitle; print "
 
 
 \n"; # カレンダー本体の作成 &calendar; # メッセージの設定 &message; print " \n"; # 四隅の編集 &corners; # 書き込み背景カラー設定 &backcolor; # 年月日の待避 $next_year = $query_year; $next_mon = $query_mon; $next_day = $query_day; $no = 0; # 表示条件(1=日記 0=全て) if($diary_condition == "1"){ &write_view; }else{ # 記帳内容取得 &Is_GetDate; &all_view; } print "
"; print "$copyright
\n"; print "
\n"; print "\n"; } ########################################################## # 標準表示(カレンダー表示 なし) sub diary2disp { print "\n"; print "\n"; print "\n"; # スタイルシートの展開 print &style_css; print "$query_year年$query_mon月の日記帳\n"; # bodyタグ if ($backgif) { $bgkey = "background=\"$backgif\" bgcolor=$h_bgcolor"; }else{ $bgkey = "bgcolor=$h_bgcolor"; } print "\n"; print "\n"; print "
\n"; print ""; print ""; print ""; # アイコンリンク print ""; print ""; print ""; print ""; # タイトル print ""; print ""; print ""; print ""; print ""; print ""; # 日記本体の作成開始 print ""; print ""; print ""; # 日記制御 print ""; # 著作権表示 print ""; print ""; print ""; print "
"; &iconlink; print ""; print "
"; &diarytitle; print "
 
"; # 四隅の編集 &corners; # 書き込み背景カラー設定 &backcolor; # 年月日の待避 $next_year = $query_year; $next_mon = $query_mon; $next_day = $query_day; $no = 0; # 表示条件(1=日記 0=全て) if($diary_condition == "1"){ &write_view; }else{ # 記帳内容取得 &Is_GetDate; &all_view; } # 日記本体の作成終了 print "
"; print ""; print "△最新をみる "; # 日記の表示 (1=昇順 0=降順) if ($screen == "1"){ print ""; print "△次をみる"; }else{ print ""; print "△前をみる "; } print ""; print "$copyright
\n"; print "
\n"; print "\n"; } ########################################################## # アイコンリンク sub iconlink { print ""; print "\"$m_home\""; print ""; print "\"$m_entry\""; print ""; print "\"$m_search\""; print ""; print "\"$m_preview\""; if ($use_del == "1"){ print ""; print "\"$m_delete\""; } if ($use_cookie == "1"){ print ""; print "\"$m_user\""; } if ($use_mail == "1"){ print ""; print "\"$m_mail\""; } } ########################################################## # タイトル sub diarytitle { if ($titlegif) { $wtitle = ""; }else{ $wtitle = "$query_year年$query_mon月$query_day日の日記"; } print "$wtitle"; } ########################################################## # カレンダーの作成 sub calendar { print ""; # 年月の前後を取得/設定 $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++;} $preday = $query_day; $nextday = $query_day; if ($predaystart == "1"){ if ($screen == "1"){ $preday = 1; }else{ $preday = &lib'getgetumatu($preyear,$premon); } $nextday = 1; } print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; # 曜日の取得/設定 for($i = 0; $i < 7; $i++){ $youbi = $weekstart+$i; if($youbi > 6){$youbi = 0;} $weekday = @wdays[$youbi]; if($i == (6 - $weekstart)){ print ""; } print "\n"; # 月の第1週めの始めの曜日を求める $startday = &lib'getyoubi($query_year,$query_mon,1); # 第1日 $tama = 1; # 最終日 $tamaend = &lib'getgetumatu($query_year,$query_mon); $startweek = 1; if($weekstart == 1){ if($startday == 0){ $startday = 6; }else{ $startday = $startday - $weekstart; } } while($tama <= $tamaend){ print "\n"; for($i = 0; $i < 7; $i++){ # ファイルの存在チェック&背景設定 $datafile = "$datadir/$query_year.$query_mon/$tama"; if(-f "$datafile"){ $writteclass = "class=writtenday"; }else{ $writteclass = ""; } #もし第1週目ならば if($startweek == 1){ if($i >= $startday){ ($yearly_flag,$yearly_dat) = &lib'getyearly("$query_year/$query_mon/$tama",@yearly); ($monthly_flag,$monthly_dat) = &lib'getmonthly($tama,@monthly); ($weekly_flag,$weekly_dat) = &lib'getweekly($i,@weekly); $flag = $yearly_flag+$monthly_flag+$weekly_flag; #もし土曜日ならば if($i == (6 - $weekstart)){ &Is_Sat; #もし日曜日ならば }elsif($i == (6 * $weekstart)){ &Is_Sun; #もし平日ならば }else{ &Is_Day; } $tama++; }else{ print "\n"; } #もし第1週目でなければ }else{ if($tama <= $tamaend){ ($yearly_flag,$yearly_dat) = &lib'getyearly("$query_year/$query_mon/$tama",@yearly); ($monthly_flag,$monthly_dat) = &lib'getmonthly($tama,@monthly); ($weekly_flag,$weekly_dat) = &lib'getweekly($i,@weekly); $flag = $yearly_flag+$monthly_flag+$weekly_flag; #もし土曜日ならば if($i == (6 - $weekstart)){ &Is_Sat; #もし日曜日ならば }elsif($i == (6 * $weekstart)){ &Is_Sun; #もし平日ならば }else{ &Is_Day; } $tama++; }else{ $tama++; print "\n"; } } } print "\n"; $startweek++; } print "\n"; print "\n"; print "\n"; print "
"; print ""; print "\"$m_left\""; print ""; print "$query_year年$query_mon月"; print ""; print ""; print "\"$m_right\""; print "
"; }elsif($i == (6 * $weekstart)){ print ""; }else{ print ""; } print "$weekday
--
"; print ""; print "$m_today:$year/$mon/$day(@wdays[&lib'getyoubi($year,$mon,$day)])"; print "
\n"; } ########################################################## # メッセージの設定 sub message { print ""; print ""; print ""; print ""; print "
$message1
\n"; } ########################################################## # 四隅の編集 sub corners { if ($upperleftgif) { $upperleft = ""; }else{ $upperleft = " "; } if ($upperrightgif) { $upperright = ""; }else{ $upperright = " "; } if ($lowerleftgif) { $lowerleft = ""; }else{ $lowerleft = " "; } if ($lowerrightgif) { $lowerright = ""; }else{ $lowerright = " "; } } ########################################################## # 書き込み背景カラー設定 sub backcolor { if ($backpengif) { $backpen = ""; }else{ $backpen = ""; } } ########################################################## # 記帳表示(全て) sub all_view { # 記帳表示 &Is_Screen; if ($reiterate - 1 >= 1){ # 日記の表示 (1=昇順 0=降順) if ($screen == "1"){ $next_day = $query_day + 1; # 月の最終日を取得 $tamaend = &lib'getgetumatu($next_year,$next_mon); for($j = 0; $j < $reiterate - 1; $j++){ if ($next_day > $tamaend){ $next_day = 1; if ($next_mon >= 12){ $next_mon = 1; $next_year++; # 祝日/振替休日等の算出 @yearly = &lib'kurikaeshi_yearly($next_year,$yearlydata,$yearlydata2); }else{ $next_mon++; } $tamaend = &lib'getgetumatu($next_year,$next_mon); } &Is_GetDate; &Is_Screen; $next_day++; } }else{ $next_day = $query_day - 1; if ($next_day <= 0){ if ($next_mon == 1){ $next_mon = 12;$next_year--; # 祝日/振替休日等の算出 @yearly = &lib'kurikaeshi_yearly($next_year,$yearlydata,$yearlydata2); }else{ $next_mon--; } $next_day = &lib'getgetumatu($next_year,$next_mon); } for($j = 0; $j < $reiterate - 1; $j++){ &Is_GetDate; &Is_Screen; $next_day--; if ($next_day <= 0){ if ($next_mon == 1){ $next_mon = 12;$next_year--; # 祝日/振替休日等の算出 @yearly = &lib'kurikaeshi_yearly($next_year,$yearlydata,$yearlydata2); }else{ $next_mon--; } $next_day = &lib'getgetumatu($next_year,$next_mon); } } } } } ########################################################## # 記帳表示(日記) sub write_view { $w_reiterate = 0; $w_next_mon = sprintf("%02d", $next_mon); $w_next_day = sprintf("%02d", $next_day); $w_next = $next_year; $w_next .= $w_next_mon; $w_next .= $w_next_day; # 日記の表示 (1=昇順 0=降順) if ($screen == "1"){ # 未来の年月日を取得 ($last_year,$last_mon) = &lib'getfuture($next_year,$next_mon,$diary_rmon); $last_day = &lib'getgetumatu($last_year,$last_mon); $last_mon = sprintf("%02d", $last_mon); $last_day = sprintf("%02d", $last_day); $w_last = $last_year; $w_last .= $last_mon; $w_last .= $last_day; # 月の最終日を取得 $tamaend = &lib'getgetumatu($next_year,$next_mon); while ($w_last >= $w_next) { # ファイルの存在チェック $datafile = "$datadir/$next_year.$next_mon/$next_day"; if(-f "$datafile"){ $w_reiterate++; # 記帳内容取得 &Is_GetDate; &Is_Screen; } $next_day++; if ($next_day > $tamaend){ $next_day = 1; if ($next_mon >= 12){ $next_mon = 1; $next_year++; }else{ $next_mon++; } $tamaend = &lib'getgetumatu($next_year,$next_mon); $w_next_mon = sprintf("%02d", $next_mon); } if($w_reiterate == $reiterate){ last; } $w_next_day = sprintf("%02d", $next_day); $w_next = $next_year; $w_next .= $w_next_mon; $w_next .= $w_next_day; } }else{ # 過去の年月日を取得 ($last_year,$last_mon) = &lib'getpast($next_year,$next_mon,$diary_rmon); $last_day = 1; $last_mon = sprintf("%02d", $last_mon); $last_day = sprintf("%02d", $last_day); $w_last = $last_year; $w_last .= $last_mon; $w_last .= $last_day; while ($w_last <= $w_next) { # ファイルの存在チェック $datafile = "$datadir/$next_year.$next_mon/$next_day"; if(-f "$datafile"){ $w_reiterate++; # 記帳内容取得 &Is_GetDate; &Is_Screen; } $next_day--; if ($next_day <= 0){ if ($next_mon == 1){ $next_mon = 12;$next_year--; }else{ $next_mon--; } $next_day = &lib'getgetumatu($next_year,$next_mon); $w_next_mon = sprintf("%02d", $next_mon); } if($w_reiterate == $reiterate){ last; } $w_next_day = sprintf("%02d", $next_day); $w_next = $next_year; $w_next .= $w_next_mon; $w_next .= $w_next_day; } } # 検索期間内に記帳されていない場合 if($w_reiterate == 0){ &Is_NoScreen; } } ########################################################## # 記帳内容取得 sub Is_GetDate { # 曜日の取得 $startday = &lib'getyoubi($next_year,$next_mon,$next_day); $next_weekday = @wdays[$startday]; if ($startday == 0){ $f_titlecolor = $f_suncolor;$wtitlegif = $sundaygif; }elsif ($startday == 6){ $f_titlecolor = $f_satcolor;$wtitlegif = $saturdaygif; }else{ $f_titlecolor = $f_color;$wtitlegif = $weekdaygif; } # 年間/月間/週間行事の取得 ($yearly_flag,$yearly_dat) = &lib'getyearly("$next_year/$next_mon/$next_day",@yearly); ($monthly_flag,$monthly_dat) = &lib'getmonthly($next_day,@monthly); ($weekly_flag,$weekly_dat) = &lib'getweekly($startday,@weekly); ($event_dat) = &lib'make_event($yearly_dat,$monthly_dat,$weekly_dat); $flag = $yearly_flag+$monthly_flag+$weekly_flag; if ($flag ne 0){$f_titlecolor = $f_suncolor;$wtitlegif = $holidaygif;} # 星座の取得 if ($use_star == "1"){ ($star_no) = &lib'getstar($next_mon,$next_day); $event_dat = "$event_dat$star_msg[$star_no]"; } # 記帳内容を取得 ($next_date,$next_select,$next_color,$next_diarydata,$data_flag) = &lib'getdiary($datadir,$next_year,$next_mon,$next_day); if ($next_select ne "99" && $data_flag ne 0){$wtitlegif = "$imagedir/$weather1[$next_select]";} if ($next_diarydata eq ""){ $next_diarydata = $no_diary; }else{ $next_diarydata = &lib'TagSupport($next_diarydata); $next_diarydata = &lib'dataedit($next_diarydata,$upload_dir,@extend); } # 文字色の設定 if ($data_flag ne 0){ $color_no = $next_color; }else{ $color_no = 0; } $wsize = $diary_wsize - 35; } ########################################################## # 記帳表示 sub Is_Screen { print ""; print ""; print ""; print "
\n"; print ""; print "\n"; print "$upperleft"; print ""; print "$upperright"; print "\n"; print ""; print ""; print ""; print ""; print ""; } print ""; print ""; print "\n"; print ""; print "\n"; print "$backpen"; print "$next_diarydata"; print "\n"; print "$lowerleft"; print ""; print "$lowerright"; print "
"; print " 
"; print " "; print ""; print ""; print " "; print "$next_year年$next_mon月$next_day日($next_weekday) $event_dat"; if ($topgif) { print ""; print ""; }else{ print " "; print " 
"; print " 
"; print " 
\n"; print "
"; } ########################################################## # 検索期間内に記帳されていない sub Is_NoScreen { $hyouji = '表示'; print ""; print "\n"; print "$upperleft"; print ""; print "$upperright"; print "\n"; print ""; # 書き込み背景カラー設定 if ($backpengif) { print "\n"; print ""; print "\n"; print "$lowerleft"; print ""; print "$lowerright"; print "
"; print " 
"; print " "; }else{ print ""; } # 日記の表示 (1=昇順 0=降順) if ($screen == "1"){ print ""; print ""; print ""; print "
"; print "$wording1
"; print "($query_year/$query_mon/$query_day〜$last_year/$last_mon/$last_day - $reiterate日間の昇順$hyouji)"; print "
\n"; }else{ print ""; print ""; print ""; print "
"; print "$wording1
"; print "($last_year/$last_mon/$last_day〜$query_year/$query_mon/$query_day - $reiterate日間の降順$hyouji)"; print "
\n"; } print "
"; print " 
"; print " 
\n"; } ########################################################## # 土曜日 sub Is_Sat { #もし今日でなければ if("$query_year/$query_mon/$tama" ne "$year/$mon/$day"){ #もし休日でなければ if($flag == 0){ #もし起点でなければ if($query_day != $tama){ print "$tama\n"; }else{ #もし起点ならば print "$tama\n"; } }else{ #もし休日ならば #もし起点でなければ if($query_day != $tama){ print "$tama\n"; }else{ #もし起点ならば print "$tama\n"; } } }else{ #もし今日ならば #もし休日でなければ if($flag == 0){ print "$tama\n"; }else{ #もし休日ならば print "$tama\n"; } } } ########################################################## # 日曜日 sub Is_Sun { #もし今日でなければ if("$query_year/$query_mon/$tama" ne "$year/$mon/$day"){ #もし起点でなければ if($query_day != $tama){ print "$tama\n"; }else{ #もし起点ならば print "$tama\n"; } }else{ #もし今日ならば print "$tama\n"; } } ########################################################## # 平日 sub Is_Day { #もし今日でなければ if("$query_year/$query_mon/$tama" ne "$year/$mon/$day"){ #もし休日でなければ if($flag == 0){ #もし起点でなければ if($query_day != $tama){ print "$tama\n"; }else{ #もし起点ならば print "$tama\n"; } }else{ #もし休日ならば #もし起点でなければ if($query_day != $tama){ print "$tama\n"; }else{ #もし起点ならば print "$tama\n"; } } }else{ #もし今日ならば #もし休日でなければ if($flag == 0){ print "$tama\n"; }else{ #もし休日ならば print "$tama\n"; } } } ########################################################## # ユーザー項目の設定 sub make_user { # 週の始まり if ($user_item[0] ne ""){$weekstart = $user_item[0];} # 表示分類 if ($user_item[1] ne ""){$frameid = $user_item[1];} # 表示条件 if ($user_item[2] ne ""){$diary_condition = $user_item[2];} # 日記検索期間 if ($user_item[3] ne "" && $user_item[3] ne 0){$diary_rmon = $user_item[3];} # 日記の表示日数 if ($user_item[4] ne "" && $user_item[4] ne 0){$reiterate = $user_item[4];} # 横のサイズ if ($user_item[5] ne "" && $user_item[5] ne 0){$diary_wsize = $user_item[5];} # 縦のサイズ if ($user_item[6] ne "" && $user_item[6] ne 0){$diary_hsize = $user_item[6];} # 日の表示 if ($user_item[10] ne ""){$screen = $user_item[10];} # 日の始まり if ($user_item[11] ne ""){$predaystart = $user_item[11];} # 星座の表示 if ($user_item[12] ne ""){$use_star = $user_item[12];} }