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