--- /dev/null
+<?php\r
+/**\r
+ * $RCSfile: tinyspell.php,v $\r
+ * $Revision: 1.1 $\r
+ * $Date: 2006/03/14 17:33:47 $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+ // Ignore the Notice errors for now.\r
+ error_reporting(E_ALL ^ E_NOTICE);\r
+\r
+ require_once("config.php");\r
+\r
+ $id = sanitize($_POST['id'], "loose");\r
+\r
+ if (!$spellCheckerConfig['enabled']) {\r
+ header('Content-type: text/xml; charset=utf-8');\r
+ 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." />';\r
+ die;\r
+ }\r
+\r
+ // Basic config\r
+ $defaultLanguage = $spellCheckerConfig['default.language'];\r
+ $defaultMode = $spellCheckerConfig['default.mode'];\r
+\r
+ // Normaly not required to configure\r
+ $defaultSpelling = $spellCheckerConfig['default.spelling'];\r
+ $defaultJargon = $spellCheckerConfig['default.jargon'];\r
+ $defaultEncoding = $spellCheckerConfig['default.encoding'];\r
+ $outputType = "xml"; // Do not change\r
+\r
+ // Get input parameters.\r
+\r
+ $check = urldecode($_REQUEST['check']);\r
+ $cmd = sanitize($_REQUEST['cmd']);\r
+ $lang = sanitize($_REQUEST['lang'], "strict");\r
+ $mode = sanitize($_REQUEST['mode'], "strict");\r
+ $spelling = sanitize($_REQUEST['spelling'], "strict");\r
+ $jargon = sanitize($_REQUEST['jargon'], "strict");\r
+ $encoding = sanitize($_REQUEST['encoding'], "strict");\r
+ $sg = sanitize($_REQUEST['sg'], "bool");\r
+ $words = array();\r
+\r
+ $validRequest = true;\r
+\r
+ if (empty($check))\r
+ $validRequest = false;\r
+\r
+ if (empty($lang))\r
+ $lang = $defaultLanguage;\r
+\r
+ if (empty($mode))\r
+ $mode = $defaultMode;\r
+\r
+ if (empty($spelling))\r
+ $spelling = $defaultSpelling;\r
+\r
+ if (empty($jargon))\r
+ $jargon = $defaultJargon;\r
+\r
+ if (empty($encoding))\r
+ $encoding = $defaultEncoding;\r
+\r
+ function sanitize($str, $type="strict") {\r
+ switch ($type) {\r
+ case "strict":\r
+ $str = preg_replace("/[^a-zA-Z0-9_\-]/i", "", $str);\r
+ break;\r
+ case "loose":\r
+ $str = preg_replace("/</i", ">", $str);\r
+ $str = preg_replace("/>/i", "<", $str);\r
+ break;\r
+ case "bool":\r
+ if ($str == "true" || $str == true)\r
+ $str = true;\r
+ else\r
+ $str = false;\r
+ break;\r
+ }\r
+\r
+ return $str;\r
+ }\r
+\r
+ $result = array();\r
+ $tinyspell = new $spellCheckerConfig['class']($spellCheckerConfig, $lang, $mode, $spelling, $jargon, $encoding);\r
+\r
+ if (count($tinyspell->errorMsg) == 0) {\r
+ switch($cmd) {\r
+ case "spell":\r
+ // Space for non-exec version and \n for the exec version.\r
+ $words = preg_split("/ |\n/", $check, -1, PREG_SPLIT_NO_EMPTY);\r
+ $result = $tinyspell->checkWords($words);\r
+ break;\r
+ \r
+ case "suggest":\r
+ $result = $tinyspell->getSuggestion($check);\r
+ break;\r
+\r
+ default:\r
+ // Just use this for now.\r
+ $tinyspell->errorMsg[] = "No command.";\r
+ $outputType = $outputType . "error";\r
+ break;\r
+ }\r
+ } else\r
+ $outputType = $outputType . "error";\r
+\r
+ if (!$result)\r
+ $result = array();\r
+\r
+ // Output data\r
+ switch($outputType) {\r
+ case "xml":\r
+ header('Content-type: text/xml; charset=utf-8');\r
+ $body = '<?xml version="1.0" encoding="utf-8" ?>';\r
+ $body .= "\n";\r
+ \r
+ if (count($result) == 0)\r
+ $body .= '<res id="' . $id . '" cmd="'. $cmd .'" />';\r
+ else\r
+ $body .= '<res id="' . $id . '" cmd="'. $cmd .'">'. urlencode(implode(" ", $result)) .'</res>';\r
+\r
+ echo $body;\r
+ break;\r
+ case "xmlerror";\r
+ header('Content-type: text/xml; charset=utf-8');\r
+ $body = '<?xml version="1.0" encoding="utf-8" ?>';\r
+ $body .= "\n";\r
+ $body .= '<res id="' . $id . '" cmd="'. $cmd .'" error="true" msg="'. implode(" ", $tinyspell->errorMsg) .'" />';\r
+ echo $body;\r
+ break;\r
+ case "html":\r
+ var_dump($result);\r
+ break;\r
+ case "htmlerror":\r
+ echo "Error";\r
+ break;\r
+ }\r
+\r
+?>\r