#
# Logs URLs this script is just a hack. hack it to suit you
# if you want to.
#
# table format;
#
#+-----------+---------------+------+-----+---------+-------+
#| Field     | Type          | Null | Key | Default | Extra |
#+-----------+---------------+------+-----+---------+-------+
#| inserttime| timestamp(14) | YES  |     | NULL    |       |
#| nick      | char(10)      | YES  |     | NULL    |       |
#| target    | char(255)     | YES  |     | NULL    |       |
#| line      | char(255)     | YES  |     | NULL    |       |
#+-----------+---------------+------+-----+---------+-------+


use DBI;
use Irssi;
use Irssi::Irc;

use vars qw($VERSION %IRSSI);

$VERSION = "1.0";
%IRSSI = (
        authors     => "Tom Wesley",
        contact     => "tom\@tomaw.org",
        name        => "MySQL Logger and Searcher",
        description => "Logs channel activity to MySQL",
        license     => "GPLv2",
    );

$dsn = 'DBI:mysql:irssi:localhost';
$db_user_name = 'foo';
$db_password = 'bar';

sub cmd_logurl {
	my ($server, $data, $nick, $mask, $target) = @_;
	db_insert($nick, $target, $server->{tag}, $data);
	return 1;
}

sub cmd_own {
	my ($server, $data, $target) = @_;
	return cmd_logurl($server, $data, $server->{nick}, "", $target);
}
sub cmd_topic {
	my ($server, $target, $data, $nick, $mask) = @_;
	return cmd_logurl($server, $data, $nick, $mask, $target);
}

sub db_insert {
	my ($nick, $target, $tag, $line)=@_;
	my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
	my $sql="insert into logs (inserttime, nick, target, tag, line) values (NOW()".",". $dbh->quote($nick) ."," . $dbh->quote($target) ."," . $dbh->quote($tag) . "," . $dbh->quote($line) .")";
	my $sth = $dbh->do($sql);
	$dbh->disconnect();
}

sub cmd_search
{
	my ($arg) = @_;
	my @args = split(/ /, $arg);
	my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
	my $sql = $dbh->prepare("select nick, tag, line from logs where match(line) against(" . $dbh->quote($args[0]) .") order by inserttime desc;");
	$sql->execute();
	while (my($nick,$tag,$line)=$sql->fetchrow_array)
	{
		print($nick.":".$line);
	}
	$dbh->disconnect();
}

Irssi::signal_add_last('message public', 'cmd_logurl');
Irssi::signal_add_last('message own_public', 'cmd_own');
Irssi::signal_add_last('message topic', 'cmd_topic');
Irssi::command_bind('search','cmd_search');

