#!/usr/bin/perl

use lib '/home/blogoloog2/lib';
use BlogoloogDB;
use CGI;
use HTML::Template;
use Query;
use Cache::Memcached;
$memd = new Cache::Memcached;
$memd->set_servers(["localhost:11211"]);
my $template = HTML::Template->new(filename => 'templates/badge.tmpl');
my $cgi = new CGI();
print $cgi->header('Content-Type: text/html;charset=UTF-8');
my $search = $cgi->param('query');
$search =~ s/<.+?>//g;
my $tag = $cgi->param('tag')?'tag':'';
my $width = $cgi->param('width')||175;
my @results;

my $cache = $memd->get('badge|'.$tag.'|'.$search);
unless ($cache){

my $dbh = BlogoloogDB->new('new');

my $tagquery = $dbh->prepare("
SELECT DISTINCT (
entry.url
), blog.url, entry.title, entry.dateupdated, blog.name, entry.body
FROM blog, entry, entry_tag, tag
WHERE blog.id = entry.blogid
AND entry.id = entry_tag.entry_id
AND entry_tag.tag_id = tag.id
AND tag.name = ?
ORDER BY entry.dateupdated DESC
LIMIT 10
");

my $textquery = $dbh->prepare("select distinct(entry.url), blog.url, entry.title, entry.dateupdated, blog.name, entry.body from blog, entry where blog.id = entry.blogid and match(entry.title, entry.body) against(? IN BOOLEAN MODE) order by entry.dateupdated desc limit 10
");


my $executesearch = $search;

my $query = '';    
if ($cgi->param('tag')){
    $query = $tagquery;
}
else{
    $executesearch =~ s/\+//g;
    $executesearch =~ s/\s+/ +/g;
    $executesearch = "+".$executesearch;
    $query = $textquery;
}

$query->execute($executesearch);


while (my @line = $query->fetchrow_array){
    my %result;
    $result{ENTRY_URl} = $line[0];
    $result{ENTRY_TITLE} = $line[2];
    if (length($result{ENTRY_TITLE}) > int(($width/8)+.5)){
	$result{ENTRY_TITLE} = substr($result{ENTRY_TITLE},0,int(($width/8)+.5))."...";
    }
    $result{BLOG_URl} = $line[1];
    $result{BLOG_NAME} = $line[4];
    $result{ENTRY_DATETIME} = $line[3];
    push @results, \%result;
}
$memd->set('badge|'.$tag.'|'.$search, \@results, 60*60);
}
else {
	@results = @{$cache};
}

$tag = $cgi->param('tag')?"&tag=1":"";
$search =~ s/\"/&quot;/g;

$template->param(RESULTS => \@results,
		 MOREURL => "http://www.blogoloog.be/search.cgi?query=".$search.$tag,
		 QUERY => $search,
		 WIDTH => $width);

my @output = split ('\n',$template->output);
my $output = '';
foreach $line (@output){
    $line =~ s/'/\\'/g;
    print "document.write('$line');\n";
    $output .= "document.write('$line');\n";
}

