Bot-BasicBot-Pluggable
view release on metacpan or search on metacpan
examples/chump.cgi view on Meta::CPAN
# this won't work out the box. I'll fix it in a later release. But it's what
# we use to look at the output from the chumping module (Blog). See
# http://2lmc.org/blog
use strict;
use Template;
use CGI;
use Time::Local;
use Calendar::Simple;
use Digest::MD5 qw(md5_hex);
use LWP::Simple;
use Image::Size;
use DBI;
my $vars = {};
my $db = DBI->connect("DBI:mysql:database=jerakeen", "2lmc", "2lmc");
my %title;
if (open(TITLES, "titles.txt")) {
while (<TITLES>) {
chomp;
next unless $_;
my ($url, $title) = split(/\s+/, $_, 2);
$title{$url} = $title if $title;
}
close(TITLES);
}
my $timestamp = CGI::param("timestamp");
my $blog_id = CGI::param("blog_id");
my $upper = CGI::param("upper");
my $lower = CGI::param("lower");
my $search = CGI::param("search");
my $day = CGI::param("day");
my $month = CGI::param("month");
my $year = CGI::param("year");
my $title;
if ($day and $month and $year) {
$lower = timegm(0, 0, 0, $day, $month-1, $year-1900);
$upper = timegm(59, 59, 23, $day, $month-1, $year-1900);
$title = sprintf("%04d/%02d/%02d", $year, $month, $day);
} elsif ($month and $year) {
$lower = timegm(0, 0, 0, 1, $month-1, $year-1900);
$upper = timegm(0, 0, 0, 1, $month, $year-1900) if $month < 12;
$upper = timegm(0, 0, 0, 1, 0, $year-1899) if $month >= 12;
$title = sprintf("%04d/%02d", $year, $month);
} elsif ($year) {
$lower = timegm(0, 0, 0, 1, 0, $year-1900);
$upper = timegm(59, 59, 23, 1, 0, $year-1899);
$title = sprintf("%04d", $year);
}
$upper = 1500000000 unless defined($upper); # TODO - fix before Fri Jul 14 02:40:00 2017
$lower = 0 unless defined($lower);
my @calendar = calendar($month, $year, 1);
my $dates_ref = get_link_days($month, $year);
@calendar = merge(\@calendar, $dates_ref);
my @lt = localtime;
$vars->{calendar} = \@calendar;
$vars->{month} = $month || $lt[4]+1;
$vars->{year} = $year || $lt[5]+1900;
$vars->{today} = $day || $lt[3];
my @monthnames = (qw(dummy Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec));
$vars->{monthnames} = \@monthnames;
my @entries;
my $entry;
my $query;
if ($search) {
my $sql = "SELECT DISTINCT mindblog.* FROM mindblog,mindblog_comments ";
$sql .= "WHERE mindblog.blog_id=mindblog_comments.blog_id AND (";
my @terms = split(/[\s,]+/, $search);
$sql .= join(" AND ", map { "(mindblog.data LIKE '%$_%' OR mindblog_comments.data LIKE '%$_%')" } @terms);
$sql .= ") ORDER BY mindblog.timestamp DESC LIMIT 20";
print STDERR $sql;
$query = $db->prepare($sql);
$query->execute();
$title = "search results for ".join(", ", @terms);
} elsif ($blog_id) {
$query = $db->prepare("SELECT * FROM mindblog WHERE blog_id=? ORDER BY timestamp DESC");
$query->execute($blog_id);
} elsif ($timestamp) {
$query = $db->prepare("SELECT * FROM mindblog WHERE timestamp=? ORDER BY timestamp DESC");
$query->execute($timestamp);
} elsif ($upper and $lower) {
$query = $db->prepare("SELECT * FROM mindblog WHERE timestamp>? AND timestamp<? ORDER BY timestamp DESC");
$query->execute($lower, $upper);
} else {
$query = $db->prepare("SELECT * FROM mindblog ORDER BY timestamp DESC LIMIT 20");
$query->execute();
$title = "recent entries";
}
my $comment_query = $db->prepare("SELECT * FROM mindblog_comments WHERE blog_id=? ORDER BY timestamp");
while (my $row = $query->fetchrow_hashref) {
$row->{data} =~ s/#\s*$//;
if ($row->{data} =~ /^http:\S+$/) {
my $title = get_title($row->{data});
$row->{data} = "[$row->{data}|$title]" if $title;
}
$row->{message} = blog_filter($row->{data});
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime($row->{timestamp});
$row->{date} = sprintf("%04d/%02d/%02d %02d:%02d", $year+1900, $mon+1, $mday, $hour, $min);
$comment_query->execute($row->{blog_id});
my $comments = [];
while (my $comment = $comment_query->fetchrow_hashref) {
$comment->{message} = blog_filter($comment->{data});
( run in 1.899 second using v1.01-cache-2.11-cpan-39a47a84364 )