Catalystの練習 - 1行伝言板を再実装してみる(3)

データベースから、メッセージを引き抜いてきて表示する練習。(練習かよ

sub default : Private {
my ( $self, $c ) = @_;

my @msglist = msgboard::Model::CDBI::Message->search_like( date => '9999-12-30%' );
# $c->stash->{date} = $msglist[0]->get('date');
$msglist[0]->get('date') =~ /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
$c->stash->{year} = $1;
$c->stash->{month} = $2;
$c->stash->{day} = $3;
$c->stash->{msglist} = \@msglist;
$c->stash->{template} = 'index.tt';
$c->forward('msgboard::View::TT');
}

MySQLのDATETIME型を分解するのに、コントローラ側でやってますが、これTT側でできないのかな(・ω・;

ほんで、書き込み部分の練習。

sub post : Global {
my ( $self, $c ) = @_;

(my $sec, my $min, my $hour, my $day, my $mon, my $year, my $wday) = localtime(time);
$year += 1900;
$mon++;
my $domain = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2);
my $data = msgboard::Model::CDBI::Message->insert({
date => sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $day, $hour, $min),
name => $c->req->param('name'),
color => 'FFFFFF',
size => '0',
comment => $c->req->param('comment'),
domain => $domain,
client => $ENV{'HTTP_USER_AGENT'}
});
$c->res->redirect('/');
}

読み書きできるようになったので、あとは、

  • 25行くらいで黒板を区切る機能
  • 日付指定で過去ログを参照する機能
  • チョーク色をつける機能
  • 書き込み休憩時間を強制する機能

あたりをつけたら、完成、かな。