From 5d2b7fd387bd887be957d9221c66a030b374938b Mon Sep 17 00:00:00 2001 From: thomascube Date: Fri, 15 Aug 2008 10:35:09 +0000 Subject: Added pspell support patch by Kris Steinhoff (#1483960) --- program/steps/mail/spell.inc | 48 ++++------------------------ program/steps/mail/spell_googie.inc | 64 +++++++++++++++++++++++++++++++++++++ program/steps/mail/spell_pspell.inc | 54 +++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 42 deletions(-) create mode 100644 program/steps/mail/spell_googie.inc create mode 100644 program/steps/mail/spell_pspell.inc (limited to 'program/steps/mail') diff --git a/program/steps/mail/spell.inc b/program/steps/mail/spell.inc index 06c050882..a567c7bf6 100644 --- a/program/steps/mail/spell.inc +++ b/program/steps/mail/spell.inc @@ -5,60 +5,24 @@ | program/steps/mail/spell.inc | | | | This file is part of the RoundCube Webmail client | - | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | - | Submit request to Google's spell checking engine | - | | - | CREDITS: | - | Script from GoogieSpell by amix.dk | + | Invoke the configured or default spell checking engine. | | | +-----------------------------------------------------------------------+ - | Author: Thomas Bruederli | + | Author: Kris Steinhoff | +-----------------------------------------------------------------------+ $Id$ */ -$REMOTE_REQUEST = TRUE; - -// default settings -$host = "ssl://www.google.com"; -$port = 443; -$lang = get_input_value('lang', RCUBE_INPUT_GET); -$path = "/tbproxy/spell?lang=$lang"; - -// spell check uri is configured -if (!empty($CONFIG['spellcheck_uri'])) - { - $a_uri = parse_url($CONFIG['spellcheck_uri']); - $ssl = ($a_uri['scheme']=='https' || $a_uri['scheme']=='ssl'); - $port = $a_uri['port'] ? $a_uri['port'] : ($ssl ? 443 : 80); - $host = ($ssl ? 'ssl://' : '') . $a_uri['host']; - $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '') . $lang; - } - -$data = file_get_contents('php://input'); -$store = ""; - -if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) - { - $out = "POST $path HTTP/1.0\r\n"; - $out .= "Host: $host\r\n"; - $out .= "Content-Length: " . strlen($data) . "\r\n"; - $out .= "Content-type: application/x-www-form-urlencoded\r\n"; - $out .= "Connection: Close\r\n\r\n"; - $out .= $data; - fwrite($fp, $out); - - while (!feof($fp)) - $store .= fgets($fp, 128); - fclose($fp); - } +if ($spell_engine = $RCMAIL->config->get('spellcheck_engine', 'googie')) { + include('spell_'.$spell_engine.'.inc'); +} -print $store; +header('HTTP/1.1 404 Not Found'); exit; ?> diff --git a/program/steps/mail/spell_googie.inc b/program/steps/mail/spell_googie.inc new file mode 100644 index 000000000..06c050882 --- /dev/null +++ b/program/steps/mail/spell_googie.inc @@ -0,0 +1,64 @@ + | + +-----------------------------------------------------------------------+ + + $Id$ + +*/ + +$REMOTE_REQUEST = TRUE; + +// default settings +$host = "ssl://www.google.com"; +$port = 443; +$lang = get_input_value('lang', RCUBE_INPUT_GET); +$path = "/tbproxy/spell?lang=$lang"; + +// spell check uri is configured +if (!empty($CONFIG['spellcheck_uri'])) + { + $a_uri = parse_url($CONFIG['spellcheck_uri']); + $ssl = ($a_uri['scheme']=='https' || $a_uri['scheme']=='ssl'); + $port = $a_uri['port'] ? $a_uri['port'] : ($ssl ? 443 : 80); + $host = ($ssl ? 'ssl://' : '') . $a_uri['host']; + $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '') . $lang; + } + +$data = file_get_contents('php://input'); +$store = ""; + +if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) + { + $out = "POST $path HTTP/1.0\r\n"; + $out .= "Host: $host\r\n"; + $out .= "Content-Length: " . strlen($data) . "\r\n"; + $out .= "Content-type: application/x-www-form-urlencoded\r\n"; + $out .= "Connection: Close\r\n\r\n"; + $out .= $data; + fwrite($fp, $out); + + while (!feof($fp)) + $store .= fgets($fp, 128); + fclose($fp); + } + +print $store; +exit; + +?> diff --git a/program/steps/mail/spell_pspell.inc b/program/steps/mail/spell_pspell.inc new file mode 100644 index 000000000..ad637e85b --- /dev/null +++ b/program/steps/mail/spell_pspell.inc @@ -0,0 +1,54 @@ + | + +-----------------------------------------------------------------------+ + + $Id$ + +*/ + +if (!extension_loaded('pspell')) { + raise_error(array( + 'code' => 500, + 'file' => __FILE__, + 'message' => "Pspell extension not available"), true, false); + + header('HTTP/1.1 404 Not Found'); + exit; +} + +$data = file_get_contents('php://input'); +$xml = simplexml_load_string($data); +$text = (string)$xml->text; +$words = preg_split('/[ !"#$%&()*+\\,-.\/\n:;<=>?@\[\]^_{|}]+/', $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE ); +$plink = pspell_new(get_input_value('lang', RCUBE_INPUT_GET), null, null, 'utf-8'); +$out = ''; +foreach ($words as $w) { + $word = $w[0]; + $pos = $w[1]; + $len = strlen($word); + if (!pspell_check($plink, $word)) { + $suggestions = pspell_suggest($plink, $word); + $out .= ''; + $out .= implode("\t", $suggestions); + $out .= ''; + } +} +$out .= ''; + +echo $out; +exit; + +?> -- cgit v1.2.3