From c57393b1cab86602943ae4d18a15476c9d95a0dd Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Mon, 09 Jul 2012 18:19:59 +0000
Subject: [PATCH] Przeportowanie modułu ort do nowej wersji API

---
 /dev/null                  |   76 -------------------------
 modules/70_ort/init.php    |   36 ++++++++++++
 modules/70_ort/handler.php |   58 +++++++++++++++++++
 3 files changed, 94 insertions(+), 76 deletions(-)

diff --git a/modules/70_ort.php b/modules/70_ort.php
deleted file mode 100644
index 5c23271..0000000
--- a/modules/70_ort.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-class ort implements module {
-	static function register_cmd() {
-		return array(
-			'o' => 'cmd_ort',
-			'ort' => 'cmd_ort',
-		);
-	}
-	
-	static function help($cmd=NULL) {
-		if($cmd === NULL) {
-			GGapi::putRichText('ort ', TRUE);
-			GGapi::putRichText('słowo', FALSE, TRUE);
-			GGapi::putRichText("\n".'   Słownik ortograficzny'."\n");
-		}
-		else
-		{
-			GGapi::putRichText('ort ', TRUE);
-			GGapi::putRichText('słowo', FALSE, TRUE);
-			GGapi::putRichText(' (alias: ');
-			GGapi::putRichText('o', TRUE);
-			GGapi::putRichText(')'."\n".'   Sprawdza w słowniku ortograficznym ');
-			GGapi::putRichText('słowo', FALSE, TRUE);
-		}
-	}
-	
-	static function cmd_ort($name, $arg) {
-		if(empty($arg)) {
-			GGapi::putText('Funkcja ');
-			GGapi::putRichText('ort', TRUE);
-			GGapi::putRichText(' wymaga argumentu ');
-			GGapi::putRichText('slowo'."\n\n", FALSE, TRUE);
-			GGapi::putRichText('Przykłady', FALSE, FALSE, TRUE);
-			GGapi::putRichText("\n".'ort grzegżółka'."\n".'ort warsawa');
-			
-			return;
-		}
-		
-		$proc = proc_open('aspell --lang=pl --encoding=utf-8 --ignore-case=true pipe', array(array('pipe', 'r'), array('pipe', 'w'), array('file', '/dev/null', 'w')), $pipe);
-		
-		fwrite($pipe[0], trim($arg)."\n");
-		fclose($pipe[0]);
-		
-		$status = proc_get_status($proc);
-		while($status['running']) {
-			usleep(1);
-			$status = proc_get_status($proc);
-		}
-		
-		fgets($pipe[1], 1024);
-		$spell = fread($pipe[1], 4096);
-		
-		if(substr($spell, 0, 1)=='*') {
-			GGapi::putRichText('Pisownia poprawna', FALSE, FALSE, FALSE, 0, 150, 0);
-		}
-		elseif(substr($spell, 0, 1)=='#') {
-			GGapi::putText('Brak propozycji poprawnej pisowni');
-		}
-		else
-		{
-			$spell = explode(': ', $spell, 2);
-			$spell = explode(',', $spell[1]);
-			
-			$txt = 'Prawdopobnie chodziło ci o:';
-			foreach($spell as $val) {
-				$txt .= "\n".'- '.trim($val);
-			}
-			
-			GGapi::putText($txt);
-		}
-		
-		fclose($pipe[1]);
-		proc_close($proc);
-	}
-}
-?>
\ No newline at end of file
diff --git a/modules/70_ort/handler.php b/modules/70_ort/handler.php
new file mode 100644
index 0000000..8619f08
--- /dev/null
+++ b/modules/70_ort/handler.php
@@ -0,0 +1,58 @@
+<?php
+class bot_ort_module implements BotModule {
+	function handle($msg, $params) {
+		$args = trim($msg->args);
+		
+		if(empty($args)) {
+			return new BotMsg('Funkcja <b>ort</b> wymaga argumentu.<br />'
+					. '<br />'."\n"
+					. '<u>Przykład:</u><br />'."\n"
+					. 'ort grzegżółka<br />'."\n"
+					. 'ort warsawa');
+		}
+		
+		$args = strtr($args, array("\r\n" => ' ', "\r" => ' ', "\n" => ' '));
+		
+		$proc = proc_open('aspell --lang=pl --encoding=utf-8 --ignore-case=true pipe', array(array('pipe', 'r'), array('pipe', 'w'), array('file', '/dev/null', 'w')), $pipe);
+		
+		fwrite($pipe[0], $args."\n");
+		fclose($pipe[0]);
+		
+		do {
+			usleep(1);
+			$status = proc_get_status($proc);
+		} while($status['running']);
+		
+		fgets($pipe[1], 1024);
+		$spell = fgets($pipe[1], 4096);
+		fclose($pipe[1]);
+		
+		proc_close($proc);
+		
+		if(empty($spell)) {
+			return new BotMsg('Błąd podczas sprawdzania słowa w słowniku. Przepraszamy.');
+		}
+		elseif(substr($spell, 0, 1)=='*') {
+			return new BotMsg('<span style="color:#060;">Pisownia poprawna.</span>');
+		}
+		elseif(substr($spell, 0, 1)=='#') {
+			return new BotMsg('Brak propozycji poprawnej pisowni.');
+		}
+		else
+		{
+			$spell = explode(': ', $spell, 2);
+			$spell = explode(',', $spell[1]);
+			
+			$txt = '<p>Prawdopobnie chodziło ci o:</p>'."\n"
+				. '<ul>'."\n";
+			
+			foreach($spell as $val) {
+				$txt .= '<li>'.htmlspecialchars(trim($val)).'</li>'."\n";
+			}
+			$txt .= '</ul>';
+			
+			return new BotMsg($txt);
+		}
+	}
+}
+?>
\ No newline at end of file
diff --git a/modules/70_ort/init.php b/modules/70_ort/init.php
new file mode 100644
index 0000000..1c128e2
--- /dev/null
+++ b/modules/70_ort/init.php
@@ -0,0 +1,36 @@
+<?php
+class bot_ort_init implements BotModuleInit {
+	function register() {
+		$handler = array(
+			array(
+				'file' => 'handler.php',
+				'class' => 'bot_ort_module',
+				'method' => 'handle',
+			)
+		);
+		
+		return array(
+			'ort' => $handler,
+			'o' => $handler,
+		);
+	}
+	
+	function help($params = NULL) {
+		if($params === NULL) {
+			return new BotMsg('<b>ort</b> <i>słowo</i><br />'."\n"
+				. '   Słownik ortograficzny.<br />'."\n");
+		}
+		else
+		{
+			return new BotMsg('<b>ort</b> <i>słowo</i> (alias: <b>o</b>)<br />'."\n"
+				. '   Sprawdza <i>słowo</i> w słowniku ortograficznym. W przypadku jego nie odnalezienia zwraca propozycje poprawnej pisowni.<br />'."\n"
+				. '<br />'."\n"
+				. '<u>Przykład:</u><br />'."\n"
+				. 'ort grzegżółka<br />'."\n"
+				. 'ort warsawa');
+		}
+	}
+}
+
+return 'bot_ort_init';
+?>
\ No newline at end of file

--
Gitblit v1.9.1