順序 | 入力日 | タイトル | 画像 | 修正|削除|プレビュー |
EOF
foreach $LINE (@L_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;
if($FLAG == "1"){
print " \n";
}else{
print " \n";
}
print "$SORT | \n";
$NO1 = substr($NO,2,2);
$NO2 = substr($NO,4,2);
print "$NO1月$NO2日 | \n";
#if($SHURUI == 1){$SHURUI_TXT = "";}
#if($SHURUI == 2){$SHURUI_TXT = "";}
#if($SHURUI == 3){$SHURUI_TXT = "";}
#if($SHURUI == 4){$SHURUI_TXT = "";}
#print "$SHURUI_TXT | \n";
print "$MIDASHI | \n";
print "$PICTURE | \n";
print " | \n";
}
print <
Page:
EOF
#################### ▼ページコントロール ####################
for ($i=1;$i<=$PAGE_LINK;$i++){
$ii=$i-1;
$PAGE_START = $DISPLAY*$ii+1;
print "$i ";
}
#次のページ数があるかどうか判定
if($DATA_BASE > $END_COUNT){
$NEXT_COUNT = $END_COUNT+1;
print <[次のページへ]
EOF
}
#################### ▲ページコントロール ####################
print <
|
|
EOF
&footer;
exit;
}
# ------------------------------------------------------------------------------------
# トップページプレビュールーチン
# ------------------------------------------------------------------------------------
sub index {
print "Content-type: text/html\n\n";
print <
地方シンクタンク協議会
EOF
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
$NO0 = substr($NO,0,2);
$NO1 = substr($NO,2,2);
$NO2 = substr($NO,4,2);
if($FLAG == "1"){
print <
20$NO0.$NO1.$NO2 |
|
EOF
if($SHURUI ne ""){
print "$MIDASHI | ";
}else{
if($HONBUN ne ""){print "$MIDASHI | ";}
else{print "$MIDASHI | ";}
}
print <
EOF
}
}
print <
EOF
exit;
}
# ------------------------------------------------------------------------------------
# HTML出力ルーチン
# ------------------------------------------------------------------------------------
sub html {
if(!open(OUT,">$TOP_PAGE")) {
&error('html_outfile_Error','トップページHTMLファイルのオープンに失敗しました.');
}
flock(OUT,2);
print OUT @IHeader;
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
$NO0 = substr($NO,0,2);
$NO1 = substr($NO,2,2);
$NO2 = substr($NO,4,2);
if($FLAG == "1"){
print OUT <
2005.03.01 |
EOF
if($SHURUI ne ""){
print OUT "$MIDASHI | ";
}else{
if($HONBUN ne ""){print OUT "$MIDASHI | ";}
else{print OUT "$MIDASHI | ";}
}
print OUT <
EOF
}
}
print OUT @IFooter;
flock(OUT,8);
close(OUT);
print "Location: ../../index.html\n\n";
exit;
}
# ------------------------------------------------------------------------------------
# バックナンバールーチン
# ------------------------------------------------------------------------------------
sub back {
$DATA_BASE = @DATA_BASE;
$PAGE_LINK = $DATA_BASE/$DISPLAY;
$amari = $DATA_BASE%$DISPLAY;
if($amari ne "0"){ $PAGE_LINK++; }
$L_DATA_BASE = @L_DATA_BASE;
$END_COUNT = $FORM{page}+$L_DATA_BASE-1;
print "Content-type: text/html\n\n";
print @THeader;
print<
■バックナンバー[全$DATA_BASE件]
|
EOF
foreach $LINE (@L_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
print <
$MIDASHI |
EOF
}
print<
Page:
EOF
#################### ▼ページコントロール ####################
for ($i=1;$i<=$PAGE_LINK;$i++){
$ii=$i-1;
$PAGE_START = $DISPLAY*$ii+1;
print "$i ";
}
#次のページ数があるかどうか判定
if($DATA_BASE > $END_COUNT){
$NEXT_COUNT = $END_COUNT+1;
print <[次のページへ]
EOF
}
#################### ▲ページコントロール ####################
print < |
EOF
print @TFooter;
exit;
}
# ------------------------------------------------------------------------------------
# 登録フォームルーチン
# ------------------------------------------------------------------------------------
sub form_regist {
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
#最大ソート番号割出
if($SORT > $MAX_SORT_NO){$MAX_SORT_NO = "$SORT";}
}
$MAX_SORT_NO++;
&header;
print <
EOF
&footer;
exit;
}
# --------------------------------------------------------------------------------
# 変更フォームルーチン
# --------------------------------------------------------------------------------
sub form_change {
foreach $LINE (@N_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;
}
$DATE =~ s/ /\n/g;
$HONBUN =~ s/ /\n/g;
$SETSUMEI =~ s/ /\n/g;
$BIKOU =~ s/ /\n/g;
&header;
print <
EOF
&footer;
exit;
}
# -------------------------------------------------------------------------------
# プレビュールーチン
# -------------------------------------------------------------------------------
sub form_preview {
print "Content-type: text/html\n\n";
print @THeader;
foreach $LINE (@N_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;
}
if($FORM{select} ne "all"){
print <
|
$MIDASHI |
|
$HONBUN
EOF
if($PICTURE ne ""){
print <
$SETSUMEI
EOF
}
if($LINKURL ne ""){
print <
EOF
}
if($LINKTXT eq "1"){
print <
EOF
}
}
print @TFooter;
exit;
}
# --------------------------------------------------------------------------
# 登録処理ルーチン
# --------------------------------------------------------------------------
sub regist {
if($FORM{MIDASHI} eq ""){&error('エラー','タイトルが入力されていません。');}
&upfile();
$REGIST_DATA = "$date_num $FORM{SORT} $FORM{MIDASHI} $FORM{SHURUI} $FORM{FLAG} $FORM{DATE} $FORM{HONBUN} $filename $H $W $FORM{SETSUMEI} $FORM{BIKOU} $FORM{LINKURL} $FORM{LINKTXT}\n";
if (!open(OUT,">>$DB")) {
&error('Regist_Error','データベースの読み込みに失敗しました.');
}
#flock(OUT,2);
print OUT $REGIST_DATA;
#flock(OUT,8);
close(OUT);
print "Content-type: text/html\n\n";
print "登録されました。
";
print "メニュー画面へ戻る";
exit;
}
# ------------------------------------------------------------------------
# 削除ルーチン
# ------------------------------------------------------------------------
sub delete {
$target = join('|',@RM);
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
if ($NO =~ /$target/) {
#画像削除
$rcd2= -e "$img_dir2/$PICTURE";
if($rcd2){unlink("$img_dir2/$PICTURE");}
}else{
push(@NEW,$LINE);
}
}
if($target eq ""){
&error("Delete_Error",'何らかの理由で削除できません。');
}
if (!open(OUT,">$DB")) {
&error('Delete_Error','データベースの読み込みに失敗しました.');
}
#flock(OUT,2);
print OUT @NEW;
#flock(OUT,8);
close(OUT);
print "Content-type: text/html\n\n";
print "削除されました。
";
print "メニュー画面へ戻る";
exit;
}
# ---------------------------------------------------------------------------
# 変更ルーチン
# ---------------------------------------------------------------------------
sub change {
foreach $LINE (@N_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
}
if($FORM{PICTURE} ne ""){
#画像削除
$rcd2= -e "$img_dir/$PICTURE";
if($rcd2){unlink("$img_dir/$PICTURE");}
&upfile("change"); $change_flag="1"; $HH=$H; $WW=$W;
}
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
if($NO eq $FORM{N_NO}){
unless($change_flag){$WW=$W; $HH=$H;}
#画像変更がある場合新しい画像名を代入
if($update){$PICTURE = $filename;}
$LINE = "$NO $FORM{N_SORT} $FORM{N_MIDASHI} $FORM{N_SHURUI} $FORM{N_FLAG} $FORM{N_DATE} $FORM{N_HONBUN} $PICTURE $HH $WW $FORM{N_SETSUMEI} $FORM{N_BIKOU} $FORM{N_LINKURL} $FORM{N_LINKTXT}\n";
push(@NEW,$LINE);
}
else{ push(@NEW,$LINE); }
}
@NEW = sort { (split(/\t/,$b))[1] <=> (split(/\t/,$a))[1] } @NEW;
if (!open(OUT,">$DB")) {
&error('Delete_Error','データベースの読み込みに失敗しました.');
}
#flock(OUT,2);
print OUT @NEW;
#flock(OUT,8);
close(OUT);
print "Content-type: text/html\n\n";
print "変更されました。
";
print "メニュー画面へ戻る";
exit;
}
# ------------------------------------------------------------------------------------
# リスト形式出力ルーチン
# ------------------------------------------------------------------------------------
sub list {
print "Content-type: text/html\n\n";
print @THeader;
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;
if($FLAG eq "1"){
print <
EOF
}
}
print @TFooter;
exit;
}
# ---------------------------------------------------------------------------
# ヘッダールーチン
# ---------------------------------------------------------------------------
sub header {
print "Content-type: text/html\n\n";
print <
$title
EOF
if($FORM{mode} eq "list"){
$body='';
}
print "";
print "$body";
}
# ---------------------------------------------------------------------------
# フッタールーチン
# ---------------------------------------------------------------------------
sub footer {
print <
EOF
}
# ---------------------------------------------------------------------------
# エラールーチン
# ---------------------------------------------------------------------------
sub error {
print "Content-type: text/html\n\n";
print "$title\n";
print "\n";
print "$_[0]\n";
print "$_[1]\n";
print "※ フォームページへ戻るか、ブラウザの[戻る]ボタンを押して前の画面に移動してください.\n";
print " \n";
exit;
}
# ---------------------------------------------------------------------------
# 画像アップ
# ---------------------------------------------------------------------------
sub upfile {
$MaxH = "468";
$MaxW = "468";
$change = $_[0];
$count = "0";
# 画像処理
foreach (@FORM) {
$macbin=0;
if ($_ =~ /(.*)Content-type:(.*)\/(.*)/i) { $tail = $3; }
if ($_ =~ /(.*)filename=(.*)/i) { $fname = $2; } else { $fname = ""; }
if ($_ =~ /application\/x-macbinary/i) { $macbin= 1; }
$tail =~ s/\r//g;
$tail =~ s/\n//g;
$fname =~ s/\r//g;
$fname =~ s/\n//g;
$fname =~ s/\"//g;
if($fname eq ""){ next; }
# ファイル形式を認識
$flag=0;
if ($tail =~ /gif/i) { $tail=".gif"; $flag=1; }
if ($tail =~ /jpeg/i) { $tail=".jpg"; $flag=1; }
if (!$flag) {
if ($fname =~ /.gif/i) { $tail=".gif"; $flag=1; }
if (($fname =~ /.jpg/i) || ($fname =~ /.jpeg/i)) { $tail=".jpg"; $flag=1; }
}
if (!$flag) { &error("$fname<>$tail<>画像形式でありません。","lock"); }
if($count == 0 || $change ne ""){
$upfile = $FORM{PICTURE};
$name1 = reverse($fname);
($fname1) = split(/\\|\/|\:/, $name1);
$filename1 = reverse($fname1);
$filename=$filename1;
$update="1";
}
if($upfile ne "") {
# マックバイナリ対策
if ($macbin) {
$length = substr($upfile,83,4);
$length = unpack("%N",$length);
$upfile = substr($upfile,128,$length);
}
# 添付データを書き込み
$ImgFile = "$img_dir2\/$filename";
open(OUT,"> $ImgFile") || &error("画像のアップロードに失敗しました","lock");
binmode(OUT);
binmode(STDOUT);
print OUT $upfile;
close(OUT);
chmod (0666,$ImgFile);
# 画像サイズ取得
if ($tail eq ".jpg") { ($W, $H) = &JpegSize($ImgFile); }
if ($tail eq ".gif") { ($W, $H) = &GifSize($ImgFile); }
# 画像表示縮小
if ($W > $MaxW) {
$key = $MaxW / $W;
$W = int ($W * $key) || 1;
$H = int ($H * $key) || 1;
}
if ($H > $MaxH) {
$key = $MaxH / $H;
$W = int ($W * $key) || 1;
$H = int ($H * $key) || 1;
}
}
$count++;
}
}
#------------------#
# JPEGサイズ認識 #
#------------------#
sub JpegSize {
local($jpeg) = @_;
local($t, $m, $c, $l, $W, $H);
open(JPEG, "$jpeg") || return (0,0);
binmode JPEG;
read(JPEG, $t, 2);
while (1) {
read(JPEG, $t, 4);
($m, $c, $l) = unpack("a a n", $t);
if ($m ne "\xFF") { $W = $H = 0; last; } elsif ((ord($c) >= 0xC0) && (ord($c) <= 0xC3)) {
read(JPEG, $t, 5);
($H, $W) = unpack("xnn", $t);
last;
}
else {
read(JPEG, $t, ($l - 2));
}
}
close(JPEG);
return ($W, $H);
}
#-----------------#
# GIFサイズ認識 #
#-----------------#
sub GifSize {
local($gif) = @_;
local($data);
open(GIF,"$gif") || return (0,0);
binmode(GIF);
sysread(GIF,$data,10);
close(GIF);
if ($data =~ /^GIF/) { $data = substr($data,-4); }
$W = unpack("v",substr($data,0,2));
$H = unpack("v",substr($data,2,2));
return ($W, $H);
}
sub cookie {
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 12*60*60*1);
$y0="Sunday"; $y1="Monday"; $y2="Tuesday"; $y3="Wednesday"; $y4="Thursday"; $y5="Friday"; $y6="Saturday";
$m0="Jan"; $m1="Feb"; $m2="Mar"; $m3="Apr"; $m4="May"; $m5="Jun"; $m6="Jul"; $m7="Aug"; $m8="Sep"; $m9="Oct"; $m10="Nov"; $m11="Dec";
@youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6);
@monthg = ($m0,$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11);
$date_gmt = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT",$youbi[$wdayg],$mdayg,$monthg[$mong],$yearg +1900,$hourg,$ming,$secg);
}
| |