#!/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;
$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;
}
}
}