From ebc6d6e1a5bf370afb00268fab9dc1d50a6abe3c Mon Sep 17 00:00:00 2001 From: Alexandre Morignot <erdnaxeli@cervoi.se> Date: Mon, 11 May 2015 22:09:52 +0200 Subject: [PATCH] move later management to sessions::irc::later --- lib/sessions/irc.pm | 37 +++++++------------------------------ lib/sessions/irc/later.pm | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 lib/sessions/irc/later.pm diff --git a/lib/sessions/irc.pm b/lib/sessions/irc.pm index 13815d0..48ca33f 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 0000000..8db55b1 --- /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; -- GitLab