Masato Kikuhara
en-sf****@users*****
2005年 6月 30日 (木) 07:57:13 JST
Index: affelio/apps/diary/Diary.pm
diff -u affelio/apps/diary/Diary.pm:1.12 affelio/apps/diary/Diary.pm:1.13
--- affelio/apps/diary/Diary.pm:1.12 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/Diary.pm Thu Jun 30 07:57:13 2005
@@ -153,6 +153,7 @@
if (-f $self->{datadir}."$id.stor") {
unlink $self->{datadir}."$id.stor";
}
+ $self->removeUploadedImage($id);
}
@@ -383,7 +384,7 @@
sub checkAccess {
my ($self, $page_name) = @_;
unless ($self->{afap}->check_access($page_name)) {
- $self->errorExit("$page_name: Following error has occured: Permission denied: you have no permission to access this page");
+ $self->errorExit("$page_name: ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããæ¨©éãããã¾ãã");
}
}
@@ -401,6 +402,7 @@
print<<ERR;
<div id="afMain">
<div class="information">
+<h2>ã¨ã©ã¼</h2>
<p>$msg</p>
</div>
</div>
@@ -616,6 +618,95 @@
return $tmpl->output;
}
+##############################################
+# saveUploadedImage
+##############################################
+
+sub saveUploadedImage {
+ use File::Basename;
+ my ($self, $filename, $id) = @_;
+
+ $id = $self->getColumn("SELECT MAX(id) FROM $self->{entry_table}") unless ($id);
+
+ my $afap = $self->{afap};
+
+ my $mimetype = $afap->{cgi}->uploadInfo($filename)->{'Content-Type'};
+ unless ($mimetype =~ /image\/(bmp|gif|png|jpeg)/) {
+ $self->errorExit('ãã¡ã¤ã«ã®ã¢ãããã¼ãï¼ä¸æ£ãªãã¡ã¤ã«ã¿ã¤ãã§ã');
+ }
+
+ my $file;
+ my $buf;
+ my $filesize = 0;
+ while (my $bytesread = read($filename, $buf, 1024)) {
+ $file .= $buf;
+ $self->errorExit('ãã¡ã¤ã«ã®ã¢ãããã¼ãï¼ãã¡ã¤ã«ãµã¤ãºã大ãããã¾ã') if ($filesize++ > 300);
+ }
+
+ my $imgdir = "$self->{datadir}img/";
+ unless (-d $imgdir) {
+ mkdir $imgdir;
+ }
+ my $basedir = $imgdir."$id/";
+ unless (-d $basedir) {
+ mkdir $basedir;
+ }
+
+ fileparse_set_fstype('DOS');
+ my $distfile = $basedir.basename($filename);
+
+ local (*OUT);
+ open(OUT, "> $distfile") or $self->errorExit('ãã¡ã¤ã«ã®ã¢ãããã¼ãï¼ãã¡ã¤ã«æ¸ãè¾¼ã¿ã«å¤±æãã¾ãã');
+ binmode OUT;
+ print OUT $file;
+ close(OUT);
+}
+
+##############################################
+# removeUploadedImage
+##############################################
+
+sub removeUploadedImage {
+ my ($self, $id) = @_;
+
+ $id = $self->getColumn("SELECT MAX(id) FROM $self->{entry_table}") unless ($id);
+
+ my $imgdir = "$self->{datadir}img/$id/";
+ if (-d $imgdir) {
+ local (*DIR);
+ opendir(DIR, $imgdir);
+ while (my $file = readdir(DIR)) {
+ unlink ($imgdir.$file) if (-f $imgdir.$file);
+ }
+ closedir(DIR);
+ rmdir $imgdir;
+ }
+}
+
+##############################################
+# getUploadedImages
+##############################################
+
+sub getUploadedImages {
+ my ($self, $id, $width, $height) = @_;
+
+ $width = "width = \"$width\"" if ($width);
+ $height = "height = \"$height\"" if ($height);
+
+ my $imgdir = "$self->{datadir}img/$id/";
+ my $ret;
+
+ local (*DIR);
+ opendir(DIR, $imgdir);
+ while (my $file = readdir(DIR)) {
+ if (-f $imgdir.$file) {
+ $ret .= "<img src=\"show_image.cgi?id=$id&filename=$file\" $width $height /><br />";
+ }
+ }
+ closedir(DIR);
+
+ return $ret ? "<p>$ret</p>" : "";
+}
##############################################
# Internal functions
Index: affelio/apps/diary/edit_diary.cgi
diff -u affelio/apps/diary/edit_diary.cgi:1.5 affelio/apps/diary/edit_diary.cgi:1.6
--- affelio/apps/diary/edit_diary.cgi:1.5 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/edit_diary.cgi Thu Jun 30 07:57:13 2005
@@ -12,6 +12,13 @@
# ç·¨éå®äº
if($afap->{cgi}->param('edit')) {
$diary->updateEntry($id, $afap->{cgi}->param('title'), $afap->{cgi}->param('contents'));
+ $diary->removeUploadedImage($id);
+ if ($afap->{cgi}->param('filename_1')) {
+ $diary->saveUploadedImage($afap->{cgi}->param('filename_1'), $id);
+ }
+ if ($afap->{cgi}->param('filename_2')) {
+ $diary->saveUploadedImage($afap->{cgi}->param('filename_2'), $id);
+ }
print $diary->getRedirection("show_diary.cgi?id=$id");
exit;
}
Index: affelio/apps/diary/external_blog.cgi
diff -u affelio/apps/diary/external_blog.cgi:1.1 affelio/apps/diary/external_blog.cgi:1.2
--- affelio/apps/diary/external_blog.cgi:1.1 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/external_blog.cgi Thu Jun 30 07:57:13 2005
@@ -57,27 +57,24 @@
# parse and output
use lib 'extlib';
-use XML::RSS::LP;
+use XML::RSS;
-my $rss = new XML::RSS::LP;
+my $rss = new XML::RSS;
$rss->parse($str);
my @entries;
my @entry_list;
-
-my $default = @{$rss->{prefix_table}->{'#default'}}[0];
-my $dc = @{$rss->{prefix_table}->{'dc'}}[0];
my $i = 0;
foreach (@{ $rss->{items} }) {
push @entries, {
- TITLE => $_->{$default.'title'},
- LINK => $_->{$default.'link'},
- CONTENTS=> &escape_html($_->{$default.'description'}),
- DATE => $_->{$dc.'date'},
+ TITLE => $_->{'title'},
+ LINK => $_->{'link'},
+ CONTENTS=> &escape_html($_->{'description'}),
+ DATE => $_->{dc}->{'date'},
};
push @entry_list, {
- TITLE => $_->{$default.'title'},,
- LINK => $_->{$default.'link'},
+ TITLE => $_->{'title'},
+ LINK => $_->{'link'},
};
last if (++$i >= 10);
}
@@ -86,8 +83,8 @@
$tmpl->param(
WRITABLE => $writable,
RSS_URL => $rssfile,
- TITLE_MAIN => $rss->{channel}->{$default.'title'},
- LINK_MAIN => $rss->{channel}->{$default.'link'},
+ TITLE_MAIN => $rss->channel('title'),
+ LINK_MAIN => $rss->channel('link'),
ENTRIES => \@entries,
ENTRY_LIST => \@entry_list,
);
Index: affelio/apps/diary/list_diary.cgi
diff -u affelio/apps/diary/list_diary.cgi:1.5 affelio/apps/diary/list_diary.cgi:1.6
--- affelio/apps/diary/list_diary.cgi:1.5 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/list_diary.cgi Thu Jun 30 07:57:13 2005
@@ -50,6 +50,7 @@
COMMENT_NO => $diary->getCommentsNo($_->{id}),
TRACKBACKS => $diary->getTrackbacksNo($_->{id}),
ID => $_->{id},
+ IMAGES => $diary->getUploadedImages($_->{id}),
EDITABLE=> $edit
};
}
Index: affelio/apps/diary/owner.cgi
diff -u affelio/apps/diary/owner.cgi:1.1 affelio/apps/diary/owner.cgi:1.2
--- affelio/apps/diary/owner.cgi:1.1 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/owner.cgi Thu Jun 30 07:57:13 2005
@@ -19,6 +19,8 @@
my $tmpl = new HTML::Template(filename => './templates/owner.tmpl');
+eval { require XML::Parser; } or $tmpl->param(NO_PARSER => 1);
+
print $diary->get_HTML_header;
print $tmpl->output;
print $diary->get_HTML_footer;
Index: affelio/apps/diary/show_diary.cgi
diff -u affelio/apps/diary/show_diary.cgi:1.5 affelio/apps/diary/show_diary.cgi:1.6
--- affelio/apps/diary/show_diary.cgi:1.5 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/show_diary.cgi Thu Jun 30 07:57:13 2005
@@ -18,6 +18,7 @@
DAY => $entry->{day},
TITLE => $entry->{title},
CONTENTS=> $entry->{contents},
+ IMAGES => $diary->getUploadedImages($entry->{id}),
);
# ã³ã¡ã³ã
Index: affelio/apps/diary/show_image.cgi
diff -u /dev/null affelio/apps/diary/show_image.cgi:1.1
--- /dev/null Thu Jun 30 07:57:13 2005
+++ affelio/apps/diary/show_image.cgi Thu Jun 30 07:57:13 2005
@@ -0,0 +1,18 @@
+#!/usr/bin/perl
+
+require 'init.pl';
+
+my $id = $afap->{cgi}->param('id') or die;
+my $filename = $afap->{cgi}->param('filename') or die;
+
+my $type = $filename;
+$type =~ s/[^.]+\.(.*)/$1/i;
+$type =~ s/jpg/jpeg/i;
+my $filepath = "$diary->{datadir}img/$id/".$filename;
+
+open(IMG, "$filepath") or die;
+binmode IMG;
+binmode STDOUT;
+print "Content-type: image/$type\n\n";
+print while (<IMG>);
+close(IMG);
Index: affelio/apps/diary/write_comment.cgi
diff -u affelio/apps/diary/write_comment.cgi:1.5 affelio/apps/diary/write_comment.cgi:1.6
--- affelio/apps/diary/write_comment.cgi:1.5 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/write_comment.cgi Thu Jun 30 07:57:13 2005
@@ -7,11 +7,13 @@
$diary->errorExit("åå¨ããªãè¨äºã§ã") unless $diary->existsEntry($id);
+my $user = $afap->get_visitor_info("nickname");
# ã³ã¡ã³ã確èªç»é¢
if($afap->{cgi}->param('comment_confirm')) {
my $tmpl = HTML::Template->new(filename => "./templates/write_comment_confirm.tmpl");
$tmpl->param(COMMENT_SHOW => $diary->escape($afap->{cgi}->param('comment')), COMMENT => $afap->{cgi}->param('comment'), ID => $id);
+ $tmpl->param(REQUIRE_NAME => 1) unless ($uname);
print $diary->get_HTML_header;
print $tmpl->output;
print $diary->get_HTML_footer;
@@ -20,9 +22,8 @@
# ã³ã¡ã³ããã³ããã
elsif($afap->{cgi}->param('comment_commit')) {
- $user = $afap->get_visitor_info("nickname");
if(!$user){
- $user = 'ãªãªããã';
+ $user = $afap->{cgi}->param('visitor_name');
}else{
$url = $afap->get_visitor_info("afid");
if ($url =~ /<a href="([^"]*)"/) {
Index: affelio/apps/diary/write_diary.cgi
diff -u affelio/apps/diary/write_diary.cgi:1.6 affelio/apps/diary/write_diary.cgi:1.7
--- affelio/apps/diary/write_diary.cgi:1.6 Thu Jun 30 03:00:43 2005
+++ affelio/apps/diary/write_diary.cgi Thu Jun 30 07:57:13 2005
@@ -12,6 +12,13 @@
my $tmpl;
if($afap->{cgi}->param('submit')) {
$diary->addEntry($title, $contents);
+ $diary->removeUploadedImage;
+ if ($afap->{cgi}->param('filename_1')) {
+ $diary->saveUploadedImage($afap->{cgi}->param('filename_1'));
+ }
+ if ($afap->{cgi}->param('filename_2')) {
+ $diary->saveUploadedImage($afap->{cgi}->param('filename_2'));
+ }
print $diary->getRedirection('list_diary.cgi');
exit;
}