#!/usr/bin/perl -w use strict; use File::Copy; use CGI; my $MT_DIR = '/web/data/mt/'; unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; my ($buffer,@pairs); my ($num,@number,$i,$k,$dummy,$data,$name,$url,$targetdir,$blog_id); my ($linkdata,$linkurl,$srcfile,$tmpfile); my $query = CGI->new; $blog_id = $query->param('blog_id'); if($blog_id ne ""){&read;exit;} $targetdir = $query->param('dir'); if($query->param('check') ne ""){ @pairs = $query->param('check'); &delete;exit; } $linkdata = $query->param('linkname'); $linkurl = $query->param('linkurl'); &addlink; exit; sub addlink{ $srcfile = $targetdir . 'link.js'; $tmpfile = $targetdir . 'temp.js'; open(IN ,"$srcfile"); open(TMP, "> $tmpfile"); $i = 0; while(){ if (/link\[\d+\]/){$i++;} if ($_ =~ /end_data/){ print TMP "link[$i] = \"$linkdata,$linkurl\"\;\n"; } print TMP $_; } close(IN); close(TMP); copy "$tmpfile", "$srcfile"; &close;exit; } sub delete{ $i = 0; foreach (@pairs){ $number[$i] = $_; $i++; } $srcfile = $targetdir . 'link.js'; $tmpfile = $targetdir . 'temp.js'; open(IN ,"$srcfile"); open(TMP, "> $tmpfile"); $num = 0; $i = 0; $k = 0; while(){ if (/link\[\d+\]/){ chomp; ($dummy,$data) = split(/=/); $data =~ s/^\ //g; $data =~ s/\ $//g; $data =~ s/"//g; $data =~ s/\;//; ($name,$url) = split(/\,/ , $data); if($number[$i] != $num){ print TMP "link[$k] = \"$name,$url\"\;\n"; $num++; $k++; }else{$i++; $num++} }else{print TMP $_;} } close(IN); close(TMP); copy "$tmpfile", "$srcfile"; &close;exit } sub close{ &header; print <<"EOD";
EOD } sub read{ require MT; require MT::Blog; my $mt = MT->new( Config => $MT_DIR . 'mt.cfg',Directory => $MT_DIR) or die print "Error".(MT->errstr); my $blog = MT::Blog->load($blog_id) or die print "Can not open blog_id: $blog_id"; $targetdir = $blog->site_path . '/'; &header; print <

削除と追加は同時には行えません。
どちらか一方づつにしてください。
EOD } sub header{ print <<"EOD"; Content-type: text/html; charset=EUC-JP\n\n リンク作成

  リンクの編集

EOD }