Added pspell support patch by Kris Steinhoff (#1483960)
parent
ac5d15de29
commit
5d2b7fd387
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
+-----------------------------------------------------------------------+
|
||||
| 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 |
|
||||
| |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Author: Thomas Bruederli <roundcube@gmail.com> |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
$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;
|
||||
|
||||
?>
|
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
+-----------------------------------------------------------------------+
|
||||
| program/steps/mail/spell_pspell.inc |
|
||||
| |
|
||||
| This file is part of the RoundCube Webmail client |
|
||||
| Licensed under the GNU GPL |
|
||||
| |
|
||||
| PURPOSE: |
|
||||
| Use the Pspell extension to check spelling, returns results |
|
||||
| compatible with spell_googie.inc. |
|
||||
| |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Author: Kris Steinhoff <steinhof@umich.edu> |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
$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 = '<?xml version="1.0" encoding="UTF-8"?><spellresult charschecked="'.strlen($text).'">';
|
||||
foreach ($words as $w) {
|
||||
$word = $w[0];
|
||||
$pos = $w[1];
|
||||
$len = strlen($word);
|
||||
if (!pspell_check($plink, $word)) {
|
||||
$suggestions = pspell_suggest($plink, $word);
|
||||
$out .= '<c o="'.$pos.'" l="'.$len.'">';
|
||||
$out .= implode("\t", $suggestions);
|
||||
$out .= '</c>';
|
||||
}
|
||||
}
|
||||
$out .= '</spellresult>';
|
||||
|
||||
echo $out;
|
||||
exit;
|
||||
|
||||
?>
|
Loading…
Reference in New Issue