#!/usr/bin/perl require './jcode.pl'; require './cgi-lib-diary.pl'; require '../fckeditor/fckeditor.pl'; ##################### ## 初期設定 ## ##################### #CGIファイル名 $cgi_file = "info.cgi"; #FCK設定 $fckPath = 'news'; #データフォルダ指定 # $diary_path = "./diary_data"; #データファイル指定 $diary_dir = "./diary_data/"; #イメージフォルダ指定 $image_path = "./images"; #デザインファイルファイル指定 # $diary_tmp = "./diary_tmp.html"; #メンテナンスパスワード %password = ( "yamanashi01" => "YUs1GCwZ", "yamanashi02" => "gaC73rom", "yamanashi03" => "DAny2BJo", "yamanashi04" => "XdxlQ6wA", "yamanashi05" => "TE9FDZgO" ); $maximagekb = 5000; #チェック $maxlength_title = 128; $maxlength_detail = 50000; #TOPページリミット $recordLimit = 10; ##################### ## メインルーチン ## ##################### #日付時刻取得 $time2= time; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time2+($HourOffset*3600)); $month1 = ($mon + 1); $year += 1900; $date_now = sprintf("%02d/%02d/%02d %02d:%02d",$year,$month1,$mday,$hour,$min); $pid = $$; #ヘッダー出力 print "Content-type: text/html\n\n"; #フォームデータ取得(出力:in) &ReadParse; if($detailmessage ne ''){print "$detailmessage\n"; die;} # #デバっグ用 # while(($key,$val) = each(%in)){ # print "$key = $val
"; # } #データファイル指定 if($in{regist_year}){ $year = $in{regist_year};} $diary_file = $diary_dir.$year."_diary.dat"; #Diary年月取得 ($diary_select,$selected) = get_diary_select($year); if($year ne $selected){ $diary_file = $diary_dir.$selected."_diary.dat"; } #アクション指定 if($in{action} eq 'mente'){ # if($in{pass} eq $password){ if($in{loginid} ne '' and $in{pass} ne '' and $password{$in{loginid}} eq $in{pass}){ #書込、編集、削除画面表示 $confirm_flag = 0; $old_regist_year = $in{old_regist_year}; $regist_date = $in{regist_date}; $public_date = $in{public_date}; $public_date2 = $in{public_date2}; $regist_title = $in{regist_title}; $regist_comment = $in{regist_comment}; $regist_delgraphic1 = $in{regist_delgraphic1}; $regist_delgraphic2 = $in{regist_delgraphic2}; $regist_delgraphic3 = $in{regist_delgraphic3}; $regist_delpdffile1 = $in{regist_delpdffile1}; $public = $in{public}; $regist_date =~ s/(\n\r|\r\n|\r|\n)/
/g; $regist_title =~ s/(\n\r|\r\n|\r|\n)/
/g; # $regist_comment =~ s/(\n\r|\r\n|\r|\n)/
/g; $regist_date =~ s/,/,/g; $regist_date2 =~ s/,/,/g; $regist_title =~ s/,/,/g; $regist_comment =~ s/,/,/g; $regist_time=$in{regist_time}; $regist_pid=$in{regist_pid}; $regist_time =~ s/[ \n\r]//g; $regist_pid =~ s/[ \n\r]//g; if($in{execute} eq 'insert'){ #新規登録 #必須チェック $err_msg = &doneCheckValue($regist_date,$public_date,$public_date2,$regist_title,$regist_comment,$public); if($err_msg eq ''){ #画像処理 if($in{upload_image1}){ SaveFile('regist_image1',$time2,$pid,'1'); } if($in{upload_image2}){ SaveFile('regist_image2',$time2,$pid,'2'); } if($in{upload_image3}){ SaveFile('regist_image3',$time2,$pid,'3'); } if($in{upload_pdf1}){ SaveFile('regist_pdf1',$time2,$pid,'pdf1'); } #データの登録 $diary_file = $diary_dir.$year."_diary.dat"; if(open(FILE,"<$diary_file")){ @diary = ; close FILE; } else{ @diary = (); } open(FILE,"+>$diary_file"); push(@diary,"$regist_date , $public_date , $public_date2 , $regist_title , $regist_comment , $public , $time2 , $in{loginid} , $pid"); for($i=0;$i<=$#diary;$i++){ chomp($diary[$i]); $diary[$i] =~ s/(\r|\n)//g; $diary[$i] .= "\r\n"; } print FILE sort sort_cmp(@diary); close FILE; #リセット $regist_date = ''; $public_date = ''; $public_date2 = ''; $regist_title = ''; $regist_comment = ''; $public = ''; #Diary年月再取得 ($diary_select,$selected) = get_diary_select($year); } } elsif($in{execute} eq 'update'){ #上書更新 $err_msg = &doneCheckValue($regist_date,$public_date,$public_date2,$regist_title,$regist_comment,$public); if($err_msg eq ''){ ($graphic1,$graphic2,$graphic3) = get_image($regist_time,$regist_pid); ($pdffile1) = get_pdf($regist_time,$regist_pid); if($regist_delgraphic1 ne '' and $graphic1 ne ''){ unlink($graphic1);} if($regist_delgraphic2 ne '' and $graphic2 ne ''){ unlink($graphic2);} if($regist_delgraphic3 ne '' and $graphic3 ne ''){ unlink($graphic3);} if($regist_delpdffile1 ne '' and $pdffile1 ne ''){ unlink($pdffile1);} if($in{upload_image1}){ SaveFile('regist_image1',$regist_time,$regist_pid,'1'); } if($in{upload_image2}){ SaveFile('regist_image2',$regist_time,$regist_pid,'2'); } if($in{upload_image3}){ SaveFile('regist_image3',$regist_time,$regist_pid,'3'); } if($in{upload_pdf1}){ SaveFile('regist_pdf1',$regist_time,$regist_pid,'pdf1'); } #旧データの削除 $diary_file = $diary_dir.$old_regist_year."_diary.dat"; open(FILE,"<$diary_file"); @diary = ; close FILE; @diary = grep(!/([^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,\s*$regist_time\s*,[^,]*,?\s*$regist_pid)/,@diary); open(FILE,"+>$diary_file"); print FILE @diary; close FILE; #新データ登録 $diary_file = $diary_dir.$year."_diary.dat"; open(FILE,"<$diary_file"); @diary = ; close FILE; push(@diary,"$regist_date , $public_date , $public_date2 , $regist_title , $regist_comment , $public , $regist_time , $in{loginid} , $regist_pid"); for($i=0;$i<=$#diary;$i++){ chomp($diary[$i]); $diary[$i] =~ s/(\r|\n)//g; $diary[$i] .= "\r\n"; } open(FILE,"+>$diary_file"); print FILE sort sort_cmp(@diary); close FILE; #リセット $regist_time = ''; $regist_pid = ''; $regist_date = ''; $public_date = ''; $public_date2 = ''; $regist_title = ''; $regist_comment = ''; $graphic1 = ''; $graphic2 = ''; $graphic3 = ''; $pdffile1 = ''; $public = ''; #Diary年月再取得 ($diary_select,$selected) = get_diary_select($year); } } elsif($in{execute} eq 'delete'){ #削除 ($graphic1,$graphic2,$graphic3) = get_image($regist_time,$regist_pid); ($pdffile1) = get_pdf($regist_time,$regist_pid); if($graphic1 ne ''){ unlink($graphic1);} if($graphic2 ne ''){ unlink($graphic2);} if($graphic3 ne ''){ unlink($graphic3);} if($pdffile1 ne ''){ unlink($pdffile1);} open(FILE,"<$diary_file"); @diary = ; close FILE; @diary = grep(!/([^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,\s*$regist_time\s*,[^,]*,?\s*$regist_pid)/,@diary); for($i=0;$i<=$#diary;$i++){ chomp($diary[$i]); $diary[$i] =~ s/(\r|\n)//g; $diary[$i] .= "\r\n"; } if($#diary >= 0){ open(FILE,"+>$diary_file"); print FILE sort sort_cmp(@diary); close FILE; } else{ unlink("$diary_file"); } #リセット $regist_time = ''; $regist_pid = ''; $regist_date = ''; $public_date = ''; $public_date2 = ''; $regist_title = ''; $regist_comment = ''; $graphic1 = ''; $graphic2 = ''; $graphic3 = ''; $pdffile1 = ''; $public = ''; #Diary年月再取得 ($diary_select,$selected) = get_diary_select($year); $diary_file = $diary_dir.$selected."_diary.dat"; }elsif($in{execute} eq 'insert_confirm'){ #確認画面 #必須チェック $err_msg = &confirmCheckValue($regist_date,$public_date,$public_date2,$regist_title,$regist_comment,$public); if($err_msg eq ''){ $confirm_flag = 1; $diary_tmp='./confirm.html'; $execute='insert'; $exec_name='登録'; $regist_year = substr($regist_date,0,4); } }elsif($in{execute} eq 'edit_confirm'){ #確認画面 #必須チェック $err_msg = &confirmCheckValue($regist_date,$public_date,$public_date2,$regist_title,$regist_comment,$public); if($err_msg eq ''){ $confirm_flag = 1; $diary_tmp='./confirm.html'; $execute='update'; $exec_name='変更'; $regist_year = substr($regist_date,0,4); }else{ $execute=''; $exec_name=''; } ($graphic1,$graphic2,$graphic3) = get_image($regist_time,$regist_pid); ($pdffile1) = get_pdf($regist_time,$regist_pid); } #編集画面 if($diary_tmp eq ''){ $diary_tmp='./maintenance.html';} #指定Diaryデータ読込み @diary = &get_diary("$diary_file"); if($in{delete} ne ''){ @edit_message = grep(/[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,\s*$in{time}\s*,[^,]*,?\s*$in{pid}/,@diary); if($#edit_message == 0){ ($regist_date,$public_date,$public_date2,$regist_title,$regist_comment,$public,$regist_time,$regist_admin,$regist_pid,$dummy)=split(/\s?,\s?/,$edit_message[0]); $regist_comment =~ s/
/\n/gi; $regist_comment =~ s/,/,/gi; $regist_time =~ s/[ \r\n]//g; $regist_pid =~ s/[ \r\n]//g; $diary_tmp='./confirm.html'; $execute='delete'; $exec_name='削除'; $confirm_flag = 1; $regist_year = substr($regist_date,0,4); ($graphic1,$graphic2,$graphic3) = get_image($regist_time,$regist_pid); ($pdffile1) = get_pdf($regist_time,$regist_pid); } }elsif($in{edit}){ @edit_message = grep(/[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,\s*$in{time}\s*,[^,]*,?\s*$in{pid}/,@diary); if($#edit_message == 0){ ($regist_date,$public_date,$public_date2,$regist_title,$regist_comment,$public,$regist_time,$regist_admin,$regist_pid,$dummy)=split(/\s?,\s?/,$edit_message[0]); $old_regist_year = substr($regist_date,0,4); $regist_comment =~ s/
/\n/gi; $regist_comment =~ s/,/,/gi; $regist_time =~ s/[ \r\n]//g; $regist_pid =~ s/[ \r\n]//g; $execute='edit_confirm'; $exec_name='上書更新'; ($graphic1,$graphic2,$graphic3) = get_image($regist_time,$regist_pid); ($pdffile1) = get_pdf($regist_time,$regist_pid); } # }elsif($regist_time ne '' and $in{execute} eq ''){ }elsif($regist_time ne '' and $execute eq ''){ $execute='edit_confirm'; $exec_name='上書更新'; ($graphic1,$graphic2,$graphic3) = get_image($regist_time,$regist_pid); ($pdffile1) = get_pdf($regist_time,$regist_pid); } if($regist_date eq ''){ $regist_date = $date_now;} if($execute eq ''){ $execute='insert_confirm';} if($exec_name eq ''){ $exec_name='新規登録';} #テンプレート取得 $tmp_header = &get_tmp($diary_tmp); if($err_msg eq ''){ $tmp_header =~ s/.+?//gis; }else{ $err_msg =~ s/(\n\r|\r\n|\r|\n)/
/g; $err_msg =~ s/,/,/g; $tmp_header =~ s/<#err_msg#>/$err_msg/gi; } $tmp_header =~ s/<#diary_select#>/$diary_select/gi; $tmp_header =~ s/<#cgi_file#>/$cgi_file/gi; $tmp_header =~ s/<#loginid#>/$in{loginid}/gi; $tmp_header =~ s/<#password#>/$in{pass}/gi; $tmp_header =~ s/<#action#>/$in{action}/gi; $tmp_header =~ s/<#regist_date#>/$regist_date/gi; $tmp_header =~ s/<#public_date#>/$public_date/gi; $tmp_header =~ s/<#public_date2#>/$public_date2/gi; $regist_title= &escapeHtmlTags($regist_title); $tmp_header =~ s/<#regist_title#>/$regist_title/gi; # $tmp_header =~ s/<#regist_comment#>/$regist_comment/gi; if($confirm_flag ne 1){ $fck_tag = &createFCKTab($regist_comment); $tmp_header =~ s/<#regist_fck_tag#>/$fck_tag/gi; }else{ $tmp_header =~ s/<#regist_comment_prev#>/$regist_comment/gi; $regist_comment = &encodeHtmlTags($regist_comment); $tmp_header =~ s/<#regist_comment#>/$regist_comment/gi; } $tmp_header =~ s/<#regist_time#>/$regist_time/gi; $tmp_header =~ s/<#regist_pid#>/$regist_pid/gi; $tmp_header =~ s/<#execute#>/$execute/gi; $tmp_header =~ s/<#exec_name#>/$exec_name/gi; $tmp_header =~ s/<#regist_year#>/$regist_year/gi; $tmp_header =~ s/<#old_regist_year#>/$old_regist_year/gi; if($in{regist_image1}){ $view_upload_image1 = &view_upload_file_name('regist_image1'); } $tmp_header =~ s/<#regist_image1#>/$in{regist_image1}/gi; $tmp_header =~ s/<#view_upload_image1#>/$view_upload_image1/gi; if($in{regist_image2}){ $view_upload_image2 = &view_upload_file_name('regist_image2'); } $tmp_header =~ s/<#regist_image2#>/$in{regist_image2}/gi; $tmp_header =~ s/<#view_upload_image2#>/$view_upload_image2/gi; if($in{regist_image3}){ $view_upload_image3 = &view_upload_file_name('regist_image3'); } $tmp_header =~ s/<#regist_image3#>/$in{regist_image3}/gi; $tmp_header =~ s/<#view_upload_image3#>/$view_upload_image3/gi; if($in{regist_pdf1}){ $view_upload_pdf1 = &view_upload_file_name('regist_pdf1'); } $tmp_header =~ s/<#regist_delgraphic1#>/$regist_delgraphic1/gi; $tmp_header =~ s/<#regist_delgraphic2#>/$regist_delgraphic2/gi; $tmp_header =~ s/<#regist_delgraphic3#>/$regist_delgraphic3/gi; $tmp_header =~ s/<#regist_delpdffile1#>/$regist_delpdffile1/gi; #削除チェック if($regist_delgraphic1){ $tmp_header =~ s/<#regist_delgraphic1_check#>/checked/gi; }else{ $tmp_header =~ s/<#regist_delgraphic1_check#>//gis; $tmp_header =~ s/.+?//gis; } if($regist_delgraphic2){ $tmp_header =~ s/<#regist_delgraphic2_check#>/checked/gi; }else{ $tmp_header =~ s/<#regist_delgraphic2_check#>//gis; $tmp_header =~ s/.+?//gis; } if($regist_delgraphic3){ $tmp_header =~ s/<#regist_delgraphic3_check#>/checked/gi; }else{ $tmp_header =~ s/<#regist_delgraphic3_check#>//gis; $tmp_header =~ s/.+?//gis; } if($regist_delpdffile1){ $tmp_header =~ s/<#regist_delpdffile1_check#>/checked/gi; }else{ $tmp_header =~ s/<#regist_delpdffile1_check#>//gis; $tmp_header =~ s/.+?//gis; } $tmp_header =~ s/<#regist_pdf1#>/$in{regist_pdf1}/gi; $tmp_header =~ s/<#view_upload_pdf1#>/$view_upload_pdf1/gi; $tmp_header =~ s/<#delgraphic1#>/$graphic1/gi; $tmp_header =~ s/<#delgraphic2#>/$graphic2/gi; $tmp_header =~ s/<#delgraphic3#>/$graphic3/gi; $tmp_header =~ s/<#delpdffile1#>/$pdffile1/gi; if($graphic1 eq ''){$tmp_header =~ s/.+?//gis;} if($graphic2 eq ''){$tmp_header =~ s/.+?//gis;} if($graphic3 eq ''){$tmp_header =~ s/.+?//gis;} if($pdffile1 eq ''){$tmp_header =~ s/.+?//gis;} $tmp_header =~ s/<#public#>/$public/gi; if($public eq 1){ $tmp_header =~ s/<#regist_public_1_check#>/checked/gi; }else{ $tmp_header =~ s/<#regist_public_1_check#>//gis; $tmp_header =~ s/.+?//gis; } if($public eq 0){ $tmp_header =~ s/<#regist_public_0_check#>/checked/gi; }else{ $tmp_header =~ s/<#regist_public_0_check#>//gis; $tmp_header =~ s/.+?//gis; } if($in{delete}){$tmp_header =~ s/.+?//gis;} if($confirm_flag ne 1){ $tmp_header =~ m/(.+)/gis; $tmp_header = $`; #マッチ前方(ヘッダー部) $tmp_body = $1; #マッチパターンメッセージ部) $tmp_footer = $'; #マッチ後方(フッター部) #Diaryデータを差込 $out_body =""; foreach(reverse(sort sort_cmp(@diary))){ ($date,$public_data,$public_data2,$title,$message,$public,$time,$editor,$pid)=split(/\s?,\s?/,$_); $regist_year = substr($date,0,4); $time =~ s/[ \r\n]//g; $pid =~ s/[ \r\n]//g; ($graphic1,$graphic2,$graphic3) = get_image($time,$pid); $tmp_body2 = $tmp_body; if($graphic1 eq ''){ $tmp_body2 =~ s/.+?//gis;} if($graphic2 eq ''){ $tmp_body2 =~ s/.+?//gis;} if($graphic3 eq ''){ $tmp_body2 =~ s/.+?//gis;} $tmp_body2 =~ s/<#year#>/$regist_year/gi; $tmp_body2 =~ s/<#date#>/$date/gi; $tmp_body2 =~ s/<#title#>/$title/gi; $tmp_body2 =~ s/<#message#>/$message/gi; $tmp_body2 =~ s/<#time#>/$time/gi; $tmp_body2 =~ s/<#pid#>/$pid/gi; $tmp_body2 =~ s/<#graphic1#>/$graphic1/gi; $tmp_body2 =~ s/<#graphic2#>/$graphic2/gi; $tmp_body2 =~ s/<#graphic3#>/$graphic3/gi; $out_body .= $tmp_body2; } }else{ $out_body = ""; $tmp_footer = ""; } } else{ #メンテナンスログイン画面表示 $diary_tmp='./login.html'; #テンプレート取得 $tmp_header = &get_tmp($diary_tmp); $tmp_header =~ s/<#cgi_file#>/$cgi_file/gi; if($in{loginid} eq '' and $in{pass} eq ''){ $tmp_header =~ s/.+?//gis; }else{ } $out_body = ""; $tmp_footer = ""; } }else{ if($in{viewMode} eq 'detail'){ $diary_tmp='./detail.html'; @diary = &get_diary($diary_file); #テンプレート取得 $tmp_header = &get_tmp($diary_tmp); @edit_message = grep(/[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,\s*$in{time}\s*,[^,]*,?\s*$in{pid}/,@diary); if($#edit_message == 0){ ($date,$public_data,$public_data2,$title,$message,$flag,$time,$editor,$pid,$dummy)=split(/\s?,\s?/,$edit_message[0]); $regist_year = substr($date,0,4); $message =~ s/
/\n/gi; $message =~ s/,/,/gi; $time =~ s/[ \r\n]//g; $pid =~ s/[ \r\n]//g; ($graphic1,$graphic2,$graphic3) = get_image($time,$pid); ($pdffile1) = get_pdf($time,$pid); } $tmp_header =~ s/<#cgi_file#>/$cgi_file/gi; $tmp_header =~ s/<#regist_year#>/$in{regist_year}/gi; ($tmp_date,$tmp_time)=split(/\s/,$date); $tmp_date =~ s/\//\./gi; $tmp_header =~ s/<#date#>/$tmp_date/gi; $tmp_header =~ s/<#title#>/$title/gi; $tmp_header =~ s/<#message#>/$message/gi; $tmp_header =~ s/<#delgraphic1#>/$graphic1/gi; $tmp_header =~ s/<#delgraphic2#>/$graphic2/gi; $tmp_header =~ s/<#delgraphic3#>/$graphic3/gi; $tmp_header =~ s/<#delpdffile1#>/$pdffile1/gi; if($graphic1 eq ''){$tmp_header =~ s/.+?//gis;} if($graphic2 eq ''){$tmp_header =~ s/.+?//gis;} if($graphic3 eq ''){$tmp_header =~ s/.+?//gis;} if($pdffile1 eq ''){$tmp_header =~ s/.+?//gis;} $tmp_header =~ s/<#regist_year#>/$regist_year/gi; #Diaryデータを差込 $out_body = ""; $tmp_footer = ""; }else{ if($in{frame} eq 1){ $diary_tmp='./frame_list.html'; @diary = &get_diary(0); $limitFlag =1; }else{ $diary_tmp='./list.html'; #公開側diary_select再生成 ($diary_select,$selected) = get_diary_select2($year); if($year ne $selected){ $diary_file = $diary_dir.$selected."_diary.dat"; } @diary = &get_diary($diary_file); $limitFlag = 0; } #テンプレート取得 $tmp_header = &get_tmp($diary_tmp); $tmp_header =~ s/<#diary_select#>/$diary_select/gi; $tmp_header =~ s/<#cgi_file#>/$cgi_file/gi; if($in{select} eq '' and $in{regist_year} eq ''){ $tmp_header =~ s/.+?//gis; } $tmp_header =~ m/(.+)/gis; $tmp_header = $`; #マッチ前方(ヘッダー部) $tmp_body = $1; #マッチパターンメッセージ部) $tmp_footer = $'; #マッチ後方(フッター部) #Diaryデータを差込 $out_body =""; $cnt=0; foreach(reverse(sort sort_cmp(@diary))){ ($date,$public_data,$public_data2,$title,$message,$flag,$time,$editor,$pid)=split(/\s?,\s?/,$_); if(&day_comparison($public_data,$date_now) eq '' and ($public_data2 eq '' or ($public_data2 ne '' and &day_comparison($date_now,$public_data2) eq '')) and $flag eq 1){ $regist_year = substr($date,0,4); $time =~ s/[ \r\n]//g; $pid =~ s/[ \r\n]//g; $tmp_body2 = $tmp_body; ($tmp_date,$tmp_time)=split(/\s/,$date); $tmp_date =~ s/\//\./gi; $tmp_body2 =~ s/<#date#>/$tmp_date/gi; $tmp_body2 =~ s/<#regist_year#>/$regist_year/gi; $tmp_body2 =~ s/<#title#>/$title/gi; $tmp_body2 =~ s/<#time#>/$time/gi; $tmp_body2 =~ s/<#pid#>/$pid/gi; $out_body .= $tmp_body2; $cnt++; } if($limitFlag eq 1){ if($cnt >= $recordLimit){ last;} } } } } print "$tmp_header$out_body$tmp_footer"; sub sort_cmp{ $a =~ /^(\d+)\/(\d+)\/(\d+)\s*[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,\s*(\d+)\s*,/; my $a_data = $1.$2.$3.$4; $b =~ /^(\d+)\/(\d+)\/(\d+)\s*[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,\s*(\d+)\s*,/; my $b_data = $1.$2.$3.$4; if($a_data gt $b_data){ return 1;} if($a_data lt $b_data){ return -1;} if($a_data eq $b_data){ return 0;} } ##################### ## サブルーチン ## ##################### #管理側 sub get_diary_select{ my $selected = $_[0]; my $list_year = ""; my $select_flag=0; opendir(DIR,$diary_dir); my @file=readdir(DIR); close DIR; my @list=(); foreach(@file){ if($_ ne '' and $_ ne '\.' and $_ ne '\.\.' and rindex($_,'_diary.dat') > 0){ push(@list,substr($_,0,4));} } my %count; @list = grep {!$count{$_}++} @list; sort(@list); @list = sort { $b <=> $a } (@list); my $tmp_select = "\n"; if($select_flag ne 1 and @list > 0){ $selected = $list_yaer; } return($tmp_select,$selected); } #公開側プルダウン(記事が非公開の場合データとして扱わない。) sub get_diary_select2{ my $selected = $_[0]; my $list_year = ""; my $select_flag=0; opendir(DIR,$diary_dir); my @file=readdir(DIR); close DIR; my @list=(); foreach(@file){ if($_ ne '' and $_ ne '\.' and $_ ne '\.\.' and rindex($_,'_diary.dat') > 0){ push(@list,substr($_,0,4));} } my %count; @list = grep {!$count{$_}++} @list; sort(@list); @list = sort { $b <=> $a } (@list); my $tmp_select = "\n"; if($select_flag ne 1 and @list > 0){ $selected = $list_yaer; } return($tmp_select,$selected); } #テンプレート取得 sub get_tmp{ my $filename = $_[0]; if(!open(FILE,"<$filename")){print "TmplateFile '$filename' Open Error!!\n"; die;} my @tmp_data = ; close FILE; return (join("",@tmp_data)); } #Diaryデータ読込み sub get_diary{ my $filename = $_[0]; my @read_data=(); my @read_data_tmp=(); if($filename ne 0){ if(open(FILE,"<$filename")){ @read_data = ; close FILE; } }else{ opendir(DIR,$diary_dir); my @file=readdir(DIR); close DIR; foreach(@file){ my $dfile = $_; if($dfile ne '' and $dfile ne '\.' and $dfile ne '\.\.' and rindex($dfile,'_diary.dat') > 0){ $dfile = $diary_dir.$dfile; if(open(FILE,"<$dfile")){ @read_data_tmp = ; push(@read_data,@read_data_tmp); close FILE; } } } } return (@read_data); } # ファイル一覧取得 sub get_filelist { # ファイル名一覧を獲得 my $serchstr = $_[0]; my @filelist = glob($serchstr); # ファイル名一覧を逆順にソート ##@filelist = reverse sort @filelist; return(@filelist); } sub get_image{ my $time = $_[0]; my $pid = $_[1]; my @file=(); foreach(glob("$image_path/*")){ if(m/$time\_$pid\_([1-3])\.(jpg|gif|pdf)$/){ $file[$1] = "$image_path/$time\_$pid\_$1.$2"; } } return($file[1],$file[2],$file[3]); } sub get_pdf{ my $time = $_[0]; my $pid = $_[1]; my @file=(); foreach(glob("$image_path/*")){ if(m/$time\_$pid\_pdf([1-3])\.(jpg|gif|pdf)$/){ $file[$1] = "$image_path/$time\_$pid\_pdf$1.$2"; } } return($file[1],$file[2],$file[3]); } ##################### # FCK # sub createFCKTab { my $value = $_[0]; my $DefServerPath = ""; my $ServerPath; my $tags; $ServerPath = &GetServerPath(); $sBasePath = $ServerPath; $sBasePath = substr($sBasePath,0,index($sBasePath,$fckPath)); &FCKeditor('regist_comment'); $BasePath = $sBasePath.'/fckeditor/'; $ToolbarSet = 'yamanashi'; $Value = $value; $tags = &Create(); return ($tags); } sub GetServerPath { my $dir; if($DefServerPath) { $dir = $DefServerPath; } else { if($ENV{'PATH_INFO'}) { $dir = $ENV{'PATH_INFO'}; } elsif($ENV{'FILEPATH_INFO'}) { $dir = $ENV{'FILEPATH_INFO'}; } elsif($ENV{'REQUEST_URI'}) { $dir = $ENV{'REQUEST_URI'}; } } return($dir); } #【<>&"'】を変換 sub encodeHtmlTags { my $str = $_[0]; $str =~ s/&/&/g; $str =~ s//>/g; $str =~ s/\"/"/g; $str =~ s/\'/'/g; return($str); } # 極論 <>を全て消す sub escapeHtmlTags { my $str = $_[0]; $str =~ s/<.*?>//g; return($str); } ######################### # CHECKER # sub confirmCheckValue { my ($date,$public_date1,$public_date2,$title,$comment,$flag) = @_; my $msg =""; #日付(yyyy/mm/dd or yyyy/mm/dd,valuename ,nullflag) $msg .=&day_exists($date,'表示日',1); $msg .=&day_exists($public_date1,'公開期間の開始日',1); $msg .=&day_exists($public_date2,'公開期間の終了日',0); #日付比較(date1 <= date2) $msg .=&day_comparison($public_date1,$public_date2); #タイトル、本文(string,valuename,limit,nullflag) $msg .=&str_exists($title,'タイトル',$maxlength_title,1); $msg .=&str_exists($comment,'本文',$maxlength_detail,1); #アップロードファイルチェック(sysname,valuename,nullflag) $msg .=&upload_exists('regist_image1','画像1',0); $msg .=&upload_exists('regist_image2','画像2',0); $msg .=&upload_exists('regist_image3','画像3',0); $msg .=&upload_exists('regist_pdf1','PDFファイル1',0); #状態チェック(numeric,valuename,min,max,nullflag) $msg .=&num_exists($flag,'状態',0,1,1); return ($msg); } sub doneCheckValue { my ($date,$public_date1,$public_date2,$title,$comment) = @_; my $msg =""; #日付(yyyy/mm/dd or yyyy/mm/dd,valuename ,nullflag) $msg .=&day_exists($date,'表示日',1); $msg .=&day_exists($public_date1,'公開期間の開始日',1); $msg .=&day_exists($public_date2,'公開期間の終了日',0); #日付比較(date1 <= date2) $msg .=&day_comparison($public_date1,$public_date2); #タイトル、本文(string,valuename,limit,nullflag) $msg .=&str_exists($title,'タイトル',$maxlength_title,1); $msg .=&str_exists($comment,'本文',$maxlength_detail,1); # #アップロードファイルチェック(sysname,valuename,$nullflag) # $msg .=&upload_exists('regist_image1','画像1',0); # $msg .=&upload_exists('regist_image2','画像2',0); # $msg .=&upload_exists('regist_image3','画像3',0); # $msg .=&upload_exists('regist_pdf1','PDFファイル1',0); return ($msg); } #日付形式チェック sub day_exists { my $value = $_[0]; my $name = $_[1]; my $flag = $_[2]; my $msg=""; if($value eq '' and $flag eq 1){ $msg.=$name.'を入力して下さい。
'; }elsif($value ne ''){ my ($date,$time) = split(' ',$value); my($year, $month, $day) = split("/",$date); my(@mlast) = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if($value =~/\d{4}\/\d\d\/\d\d\s\d\d:\d\d/){ if ($month < 1 || 12 < $month) { $msg.=$name.'の月は1〜12の値で入力して下さい。
'; }else{ if ($month == 2) { if ( (($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400 == 0) ) { $mlast[1]++; } } if ($day < 1 || $mlast[$month-1] < $day) { $msg.=$name.'の'.$month.'月の日は1〜'.$mlast[$month-1].'の値で入力して下さい。
'; } if($time ne ''){ my($hour, $min) = split(":",$time); if($hour < 0 || 23 < $hour){ $msg.=$name.'の時は0〜23の値で入力して下さい。
'; } if($min < 0 || 59 < $min){ $msg.=$name.'の分は0〜59の値で入力して下さい。
'; } } } }else{ $msg.=$name.'の入力形式が正しくありません。
'; } } return ($msg); } sub day_comparison { my($d1,$d2) = @_; my $msg=""; my $errFlag=0; if($d1 ne '' and $d2 ne ''){ my($yy1,$mm1,$dd1,$hh1,$ii1) = ($d1 =~ /(\d{4})\/(\d\d)\/(\d\d)\s(\d\d):(\d\d)/); my($yy2,$mm2,$dd2,$hh2,$ii2) = ($d2 =~ /(\d{4})\/(\d\d)\/(\d\d)\s(\d\d):(\d\d)/); if($yy1 > $yy2){ $errFlag=1;} if($errFlag != 1 and $yy1 == $yy2){ if($mm1 > $mm2){ $errFlag=1;} if($errFlag != 1 and $mm1 == $mm2){ if($dd1 > $dd2){ $errFlag=1;} if($errFlag != 1 and $dd1 == $dd2){ if($hh1 > $hh2){ $errFlag=1;} if($errFlag != 1 and $hh1 == $hh2){ if($ii1 > $ii2){ $errFlag=1;} } } } } } if($errFlag eq 1){ $msg = '日付の選択範囲が不正です。
';} return ($msg); } sub str_exists { my($str,$name,$limit,$flag) = @_; my $msg=""; if($str ne ''){ if(length($str) > $limit){ $msg=$name."を".$limit."文字以下で入力して下さい。(全角文字は2文字、半角文字は1文字としてカウントされます。)
";} }elsif($flag eq 1){ $msg=$name."を入力して下さい。
"; } return ($msg); } sub num_exists { my($num,$name,$min,$max,$flag) = @_; my $msg=""; if($num =~ /[\D]/){ $msg=$name."を数字で入力して下さい。
"; }else{ if($num ne ''){ if(($num < $min and $min ne '') or ($max < $num and $max ne '')){ $msg=$name."の値を".$min."〜".$max."で入力して下さい。
";} }elsif($flag eq 1){ $msg=$name."を入力して下さい。
"; } } return ($msg); } sub upload_exists { my($iname,$name,$flag) = @_; my $macbin = 0; my $ctype = ''; my $msg=""; #ファイル名取得 my ($header) = grep(/\bname="?$iname"?/i,@in); if ($header =~ /\bfilename="?([^"]*)"?/i) { if($1 eq '' and $flag eq 1){ $msg=$name.'が選択されていません。
'; return ($msg); }elsif($1 eq '' and $flag ne 1){ return (''); } } ($ctype) = $header =~ /\s*Content-type:\s*"([^"]+)"/i; ($ctype) = $header =~ /\s*Content-Type:\s*([^\s:;]+)/i unless defined $ctype; # マックバイナリらしい if ($header =~ /application\/x-macbinary/i) {$macbin=1;} #コンテントタイプエラー my $ext=''; if ($ctype =~ /jpe?g/i){$ext = 'jpg';} if ($ctype =~ /gif/i){$ext = 'gif';} if ($ctype =~ /pdf/i){$ext = 'pdf';} if ($ext eq '') { $msg=$name.'はアップロードできない形式のファイルです。
'; return ($msg); } #コンテントタイプエラー unless ($ctype =~ /^image/i || $ctype =~ /^application/i){ $msg='コンテントタイプが間違っています。
'; return ($msg); } my $imagedata = $in{$iname}; my $imagelength; my $imageKB; # マックバイナリ対策 if ($macbin) { $imagelength = substr($imagedata, 83, 4); $imagelength = unpack("%N", $imagelength); $imagedata = substr($imagedata, 128, $imagelength); } # サイズ(KB) $imagelength = length($imagedata); $imageKB = int($imagelength / 1024); # 制限サイズを越えた if ($imageKB > $maximagekb) { $msg='アップロードできるファイルの容量は'.$maximagekb.'KBまでです。
'; return ($msg); } #仮保存 #ファイル名に拡張子を付ける my $imgfile = $image_path."/$in{loginid}_$iname.$ext"; # 添付データを書き込み open(IMAGEOUT,"> $imgfile"); binmode(IMAGEOUT); print IMAGEOUT $imagedata; close(IMAGEOUT); chmod(0666, $imgfile); return ($msg); } sub view_upload_file_name { my($iname) = $_[0]; my $name=""; #ファイル名取得 my ($header) = grep(/\bname="?$iname"?/i,@in); if ($header =~ /\bfilename="?([^"]*)"?/i) { if($1 ne ''){ $name=$1;} } return ($name); } sub SaveFile { my $iname = $_[0]; my $time = $_[1]; my $pid = $_[2]; my $no = $_[3]; opendir(DIR,$image_path); my @file=readdir(DIR); close DIR; my $base_file_name = "$in{loginid}\_$iname"; foreach(@file){ if($_ ne '' and $_ ne '.' and $_ ne '..' and $_ =/$base_file_name\.([a-zA-Z]+)/){ rename("$image_path/$in{loginid}\_$iname.$1","$image_path/$time\_$pid\_$no.$1"); last; } } }