summaryrefslogtreecommitdiff
path: root/program/js/tiny_mce/plugins/spellchecker/tinyspell.php
diff options
context:
space:
mode:
authorsvncommit <devs@roundcube.net>2006-09-23 23:37:29 +0000
committersvncommit <devs@roundcube.net>2006-09-23 23:37:29 +0000
commit6649b1f0a5db6160d197a13ca79cfd67fbb02d77 (patch)
tree446ddf056d29c8f3984c117f1dc87d5a466b3779 /program/js/tiny_mce/plugins/spellchecker/tinyspell.php
parent3acbc508ba514b5b29e948944ce1dda83a58c5f8 (diff)
added TinyMCE spellchecker plugin, configured to use GoogleSpell
Diffstat (limited to 'program/js/tiny_mce/plugins/spellchecker/tinyspell.php')
-rw-r--r--program/js/tiny_mce/plugins/spellchecker/tinyspell.php142
1 files changed, 142 insertions, 0 deletions
diff --git a/program/js/tiny_mce/plugins/spellchecker/tinyspell.php b/program/js/tiny_mce/plugins/spellchecker/tinyspell.php
new file mode 100644
index 000000000..18345e65b
--- /dev/null
+++ b/program/js/tiny_mce/plugins/spellchecker/tinyspell.php
@@ -0,0 +1,142 @@
+<?php
+/**
+ * $RCSfile: tinyspell.php,v $
+ * $Revision: 1.1 $
+ * $Date: 2006/03/14 17:33:47 $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+ // Ignore the Notice errors for now.
+ error_reporting(E_ALL ^ E_NOTICE);
+
+ require_once("config.php");
+
+ $id = sanitize($_POST['id'], "loose");
+
+ if (!$spellCheckerConfig['enabled']) {
+ header('Content-type: text/xml; charset=utf-8');
+ echo '<?xml version="1.0" encoding="utf-8" ?><res id="' . $id . '" error="true" msg="You must enable the spellchecker by modifying the config.php file." />';
+ die;
+ }
+
+ // Basic config
+ $defaultLanguage = $spellCheckerConfig['default.language'];
+ $defaultMode = $spellCheckerConfig['default.mode'];
+
+ // Normaly not required to configure
+ $defaultSpelling = $spellCheckerConfig['default.spelling'];
+ $defaultJargon = $spellCheckerConfig['default.jargon'];
+ $defaultEncoding = $spellCheckerConfig['default.encoding'];
+ $outputType = "xml"; // Do not change
+
+ // Get input parameters.
+
+ $check = urldecode($_REQUEST['check']);
+ $cmd = sanitize($_REQUEST['cmd']);
+ $lang = sanitize($_REQUEST['lang'], "strict");
+ $mode = sanitize($_REQUEST['mode'], "strict");
+ $spelling = sanitize($_REQUEST['spelling'], "strict");
+ $jargon = sanitize($_REQUEST['jargon'], "strict");
+ $encoding = sanitize($_REQUEST['encoding'], "strict");
+ $sg = sanitize($_REQUEST['sg'], "bool");
+ $words = array();
+
+ $validRequest = true;
+
+ if (empty($check))
+ $validRequest = false;
+
+ if (empty($lang))
+ $lang = $defaultLanguage;
+
+ if (empty($mode))
+ $mode = $defaultMode;
+
+ if (empty($spelling))
+ $spelling = $defaultSpelling;
+
+ if (empty($jargon))
+ $jargon = $defaultJargon;
+
+ if (empty($encoding))
+ $encoding = $defaultEncoding;
+
+ function sanitize($str, $type="strict") {
+ switch ($type) {
+ case "strict":
+ $str = preg_replace("/[^a-zA-Z0-9_\-]/i", "", $str);
+ break;
+ case "loose":
+ $str = preg_replace("/</i", "&gt;", $str);
+ $str = preg_replace("/>/i", "&lt;", $str);
+ break;
+ case "bool":
+ if ($str == "true" || $str == true)
+ $str = true;
+ else
+ $str = false;
+ break;
+ }
+
+ return $str;
+ }
+
+ $result = array();
+ $tinyspell = new $spellCheckerConfig['class']($spellCheckerConfig, $lang, $mode, $spelling, $jargon, $encoding);
+
+ if (count($tinyspell->errorMsg) == 0) {
+ switch($cmd) {
+ case "spell":
+ // Space for non-exec version and \n for the exec version.
+ $words = preg_split("/ |\n/", $check, -1, PREG_SPLIT_NO_EMPTY);
+ $result = $tinyspell->checkWords($words);
+ break;
+
+ case "suggest":
+ $result = $tinyspell->getSuggestion($check);
+ break;
+
+ default:
+ // Just use this for now.
+ $tinyspell->errorMsg[] = "No command.";
+ $outputType = $outputType . "error";
+ break;
+ }
+ } else
+ $outputType = $outputType . "error";
+
+ if (!$result)
+ $result = array();
+
+ // Output data
+ switch($outputType) {
+ case "xml":
+ header('Content-type: text/xml; charset=utf-8');
+ $body = '<?xml version="1.0" encoding="utf-8" ?>';
+ $body .= "\n";
+
+ if (count($result) == 0)
+ $body .= '<res id="' . $id . '" cmd="'. $cmd .'" />';
+ else
+ $body .= '<res id="' . $id . '" cmd="'. $cmd .'">'. urlencode(implode(" ", $result)) .'</res>';
+
+ echo $body;
+ break;
+ case "xmlerror";
+ header('Content-type: text/xml; charset=utf-8');
+ $body = '<?xml version="1.0" encoding="utf-8" ?>';
+ $body .= "\n";
+ $body .= '<res id="' . $id . '" cmd="'. $cmd .'" error="true" msg="'. implode(" ", $tinyspell->errorMsg) .'" />';
+ echo $body;
+ break;
+ case "html":
+ var_dump($result);
+ break;
+ case "htmlerror":
+ echo "Error";
+ break;
+ }
+
+?>