diff options
Diffstat (limited to 'program/steps/utils/spell_html_googie.inc')
-rw-r--r-- | program/steps/utils/spell_html_googie.inc | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/program/steps/utils/spell_html_googie.inc b/program/steps/utils/spell_html_googie.inc deleted file mode 100644 index ceda62687..000000000 --- a/program/steps/utils/spell_html_googie.inc +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -/* - +-----------------------------------------------------------------------+ - | program/steps/utils/spell_html_googie.inc | - | | - | This file is part of the Roundcube Webmail client | - | Copyright (C) 2005-2010, The Roundcube Dev Team | - | Licensed under the GNU GPL | - | | - | PURPOSE: | - | Submit request to Google's spell checking engine | - | | - +-----------------------------------------------------------------------+ - | Author: Aleksander Machniak <alec@alec.pl> | - +-----------------------------------------------------------------------+ - - $Id: spell_googie.inc 3780 2010-06-23 09:55:08Z alec $ - -*/ - -function json_error($str) -{ - echo '{"error":{"errstr":"' . addslashes($str) . '","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}'; - exit; -} - -function googie_get($host, $port, $path, $data) -{ - $store = ''; - if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) { - $out = "POST $path HTTP/1.0\r\n"; - $out .= "Host: " . str_replace('ssl://', '', $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 (!$store) { - json_error("Empty result from spelling engine"); - } - - $matches = array(); - preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $store, $matches, PREG_SET_ORDER); - - return $matches; -} - -$REMOTE_REQUEST = TRUE; - -// read input -$data = file_get_contents('php://input'); - -// Decode JSON input -$request = json_decode($data, true); -$result = array(); - -$lang = $request['params'][0]; -$data = $request['params'][1]; -$result['id'] = $request['id']; - -// default settings -$host = "ssl://www.google.com"; -$port = 443; -$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; - } - -$wordstr = implode("\n", (array) $data); -$data = '<?xml version="1.0" encoding="utf-8" ?>' - .'<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">' - .'<text>' . $wordstr . '</text>' - .'</spellrequest>'; -$matches = googie_get($host, $port, $path, $data); - -if ($request['method'] == 'checkWords') { - $result['result'] = array(); - for ($i=0, $len=count($matches); $i<$len; $i++) - $result['result'][] = mb_substr($wordstr, $matches[$i][1], $matches[$i][2], RCMAIL_CHARSET); -} -else if ($request['method'] == 'getSuggestions') { - if ($matches[0][4]) { - $suggestions = explode("\t", $matches[0][4]); - if (sizeof($suggestions)>MAX_SUGGESTIONS) - $suggestions = array_slice($suggestions, 0, MAX_SUGGESTIONS); - $result['result'] = $suggestions; - } - else - $result['result'] = array(); -} - -// send output -header("Content-Type: text/xml; charset=".RCMAIL_CHARSET); -echo json_encode($result); -exit; - |