--- trunk/bin/irc-logger.pl 2007/04/14 12:45:03 60 +++ trunk/bin/irc-logger.pl 2007/06/08 12:07:45 63 @@ -73,7 +73,9 @@ use HTML::CalendarMonthSimple; use Getopt::Long; use DateTime; +use URI::Escape; use Data::Dump qw/dump/; +use DateTime::Format::ISO8601; my $use_twitter = 1; eval { require Net::Twitter; }; @@ -260,7 +262,10 @@ $sql .= " where message ilike ? or nick ilike ? " if ($args->{search}); $sql .= " where id in (" . join(",", @{ $tags->{ $args->{tag} } }) . ") " if ($args->{tag} && $tags->{ $args->{tag} }); - $sql .= " where date(time) = ? " if ($args->{date}); + if ($args->{date}) { + $args->{date} = DateTime::Format::ISO8601->parse_datetime( $args->{date} )->ymd; + $sql .= " where date(time) = ? "; + } $sql .= " order by log.time desc"; $sql .= " limit " . $args->{limit} if ($args->{limit}); @@ -941,12 +946,21 @@ filter => { message => sub { my $m = shift || return; + + # protect HTML from wiki modifications + sub e { + my $t = shift; + return 'uri_unescape{' . uri_escape($t) . '}'; + } + $m =~ s/($escape_re)/$escape{$1}/gs; - $m =~ s#($RE{URI}{HTTP})#$1#gs; - $m =~ s#$tag_regex#$1#g; + $m =~ s#($RE{URI}{HTTP})#e(qq{$1})#egs; + $m =~ s#$tag_regex#e(qq{$1})#egs; $m =~ s#\*(\w+)\*#$1#gs; $m =~ s#_(\w+)_#$1#gs; $m =~ s#\/(\w+)\/#$1#gs; + + $m =~ s#uri_unescape{([^}]+)}#uri_unescape($1)#egs; return $m; }, nick => sub {