diff --git a/lib/sessions/irc.pm b/lib/sessions/irc.pm index 13815d0e7e0436a12dd2487a3b21cc1f1553f6a7..48ca33f7a13b485bfb676af17df1513e55e8ce20 100644 --- a/lib/sessions/irc.pm +++ b/lib/sessions/irc.pm @@ -14,6 +14,7 @@ use FindBin; use lib "$FindBin::Bin/lib/"; use utils::Logging; +use sessions::irc::later; use sites::parser; use commands::parser; @@ -65,7 +66,9 @@ POE::Session->create( irc_invite => \&on_invite, irc_notice => \&on_notice, _flux => \&flux, - _later => \&later + _later => sub { + sessions::irc::later::consume($_[ARG0], $_[ARG1]) + } }, ); @@ -99,35 +102,6 @@ sub flux } -sub later -{ - my ($nick, $id) = @_[ARG0,ARG1]; - - my $sth = $dbh->prepare('SELECT url, sender, title FROM playbot WHERE id = ?'); - $log->error("Couldn't prepare querie; aborting") unless (defined $sth); - - $sth->execute($id) - or $log->error("Couldn't finish transaction: " . $dbh->errstr); - - if ($sth->rows) { - my @donnees = $sth->fetchrow_array; - - $irc->yield(privmsg => $nick => '['.$id.'] '.$donnees[2].' | '.$donnees[1]); - $irc->yield(privmsg => $nick => $donnees[0]); - - # save the content in the history - my $sth2 = $dbh->prepare(' - INSERT INTO playbot_chan (content, chan, sender_irc) - VALUES (?,?,?)'); - $log->error("Couldn't prepare querie; aborting") unless (defined $sth2); - $sth2->execute($id, $nick, $nick) - or $log->error("Couldn't finish transaction: " . $dbh->errstr); - - $lastID{$nick} = $id; - } -} - - sub cycle { my ($arg) = @_; @@ -144,6 +118,9 @@ sub setConf { commands::parser::setConf($irc, $dbh, $log, \%lastID); + $sessions::irc::later::irc = $irc; + $sessions::irc::later::log = $log; + $sites::parser::irc = $irc; $sites::parser::log = $log; } diff --git a/lib/sessions/irc/later.pm b/lib/sessions/irc/later.pm new file mode 100644 index 0000000000000000000000000000000000000000..8db55b147f04ebbd9f3cf0cdfb374a49369438a1 --- /dev/null +++ b/lib/sessions/irc/later.pm @@ -0,0 +1,39 @@ +package utils::later; + +use lib "$FindBin::Bin/lib/"; +use utils::db; +use utils::print; + +our $irc; +our $log; + +sub consume +{ + my ($nick, $id) = @_; + + my $dbh = utils::db::main_session(); + my $sth = $dbh->prepare('SELECT url, sender, title FROM playbot WHERE id = ?'); + $log->error("Couldn't prepare querie; aborting") unless (defined $sth); + + $sth->execute($id) + or $log->error("Couldn't finish transaction: " . $dbh->errstr); + + if ($sth->rows) { + my @donnees = $sth->fetchrow_array; + + $irc->yield(privmsg => $nick => '['.$id.'] '.$donnees[2].' | '.$donnees[1]); + $irc->yield(privmsg => $nick => $donnees[0]); + + # save the content in the history + my $sth2 = $dbh->prepare(' + INSERT INTO playbot_chan (content, chan, sender_irc) + VALUES (?,?,?)'); + $log->error("Couldn't prepare querie; aborting") unless (defined $sth2); + $sth2->execute($id, $nick, $nick) + or $log->error("Couldn't finish transaction: " . $dbh->errstr); + } + + $dbh->commit; +} + +1;