diff kuttukibbs-1.0rc2-dom/kuttukibbs.cgi kuttukibbs-1.0rc2-rss/kuttukibbs.cgi *** kuttukibbs-1.0rc2-dom/kuttukibbs.cgi Sat Nov 27 03:49:52 2004 --- kuttukibbs-1.0rc2-rss/kuttukibbs.cgi Sat Nov 27 07:15:12 2004 *************** *** 18,23 **** --- 18,33 ---- my $page_template_edit; my $charset = "EUC-JP"; # 文字コード + # RSS 関連変数 + my $rdf_file; # 出力する RSS のファイル名 + my $rdf_content; + my $rdf_dcdate; + my $rdf_url; + my $rdf_id; + my $rdf_all_template; + my $rdf_seq_template; + my $rdf_item_template; + ### グローバル変数 my $latest_id = -1; # 最新のコメントの ID my %com_hash; # コメントを格納するハッシュ *************** *** 94,99 **** --- 104,110 ---- read_file($fn, \$all); set_comment_hash(\%com_hash, \$all); write_to_jsfile($fn_pref.".js"); # JavaScript Feed ファイル + write_to_rssfile(); # RSS ファイル %com_hash = (); } else { print "wrong password!\n"; *************** *** 131,136 **** --- 142,148 ---- write_to_logfile(); # ログファイルへの書き込み write_to_jsfile($fn_pref.".js"); # JavaScript Feed ファイルへの書き込み + write_to_rssfile(); # RSS ファイルへの書き込み write_to_adminlogfile(); # 管理者用ログファイルへの書き込み } } *************** *** 316,323 **** } ! ### 最近投稿されたコメントを表示 ! sub output_latest { my @fl = <$log_dir/*.log>; my @lalist; foreach my $f (@fl) { --- 328,335 ---- } ! ### 最近投稿されたコメントを得る ! sub get_latest { my @fl = <$log_dir/*.log>; my @lalist; foreach my $f (@fl) { *************** *** 336,348 **** @lalist)[0..($latest_comment_display_num - 1)]; } foreach my $i (@lalist) { ! last if $i eq ""; $comments .= make_comment_html($i, 0); } $cgi_url .= "?mode=latest"; eval qq(\$page_html = << "FFF"\n$page_template_latest\nFFF\n); print $page_html; exit; } --- 348,416 ---- @lalist)[0..($latest_comment_display_num - 1)]; } foreach my $i (@lalist) { ! last if ($i eq "" || $$i{'i'} eq ""); $comments .= make_comment_html($i, 0); } + return @lalist; + } + ### 最近投稿されたコメントを表示 + sub output_latest { + my @lalist = get_latest(); + $cgi_url .= "?mode=latest"; eval qq(\$page_html = << "FFF"\n$page_template_latest\nFFF\n); print $page_html; exit; } + + ### RSS で出力 + sub write_to_rssfile { + my @lalist = get_latest(); + my $rdf_seq; + my $rdf_item; + + foreach my $i (@lalist) { + last if ($i eq "" || $$i{'i'} eq ""); + my $date = $$i{'d'}; + my $id = $$i{'i'}; + my $url = id2url($id); + my $desc = $$i{'n'} . " [" . $$i{'m'}. "]"; + my $seqtmp; + my $itemtmp; + + $date =~ s/(\d\d\d\d)-(\d\d)-(\d\d)\s(\d\d):(\d\d):(\d\d)/$1-$2-$3T$4:$5:$6+09:00/; + + my $cont_max_len = 300; + if (length($desc) > $cont_max_len) { + $desc =~ s/^(.{$cont_max_len}).*$/$1/sm; + $desc =~ s/\n[^\n]*$//; + $desc .= "..."; + } + + $desc =~ s|<[^<>]+?>||gosm; + $desc =~ s/&/&/go; + $desc =~ s/>/>/go; + $desc =~ s/ + RDFSEQ + ; + + $rdf_item_template = << 'RDFITEM' + + $rdf_id へのつっこみ + http://quasiquote.org/bbs/?id=$rdf_id + $rdf_content + $rdf_dcdate + + RDFITEM + ; + + $rdf_all_template = << 'RDFALL' + + + + Misc Change Log + http://quasiquote.org/log/ + `OpenBSD で scheme のアプリ開発' みたいなことをやってます。 + $rdf_dcdate + + + $rdf_seq + + + + $rdf_item + + RDFALL + ; # -------------------------------------------------------------------- # ID を URL に変換する