compose.spell.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:7k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. error_reporting(E_ALL & ~E_NOTICE);
  3. session_start();
  4. ############################################################################
  5. // get rid of slashes in get / post / cookie data
  6. if (get_magic_quotes_gpc()) {
  7. function stripslashesarray($array) {
  8. if (is_array($array)) {
  9. foreach($array as $key => $val) {
  10. if (is_array($val)) {
  11. $array["$key"] = stripslashesarray($val);
  12. } elseif (is_string($val)) {
  13. if (get_cfg_var('magic_quotes_sybase')) {
  14. $array["$key"] = str_replace("''", "'", $val);
  15. } else {
  16. $array["$key"] = stripslashes($val);
  17. }
  18. }
  19. }
  20. }
  21. return $array;
  22. }
  23. $_GET = stripslashesarray($_GET);
  24. $_POST = stripslashesarray($_POST);
  25. $_COOKIE = stripslashesarray($_COOKIE);
  26. $_REQUEST = stripslashesarray($_REQUEST);
  27. }
  28. set_magic_quotes_runtime(0);
  29. require_once('./functions.php');
  30. // register_globals off/on
  31. if (!isset($cmd)) {
  32. $cmd = $_REQUEST['cmd'];
  33. }
  34. // ############################################################################
  35. // Show processing frameset
  36. if ($cmd == 'procframeset') {
  37. $_SESSION['spell_wordbox'] = $_REQUEST[$_REQUEST['box']];
  38. if ($_REQUEST['html']) {
  39. $spell_html = 1;
  40. }
  41. // some variables for template
  42. $_SESSION['spell_form'] = $_REQUEST['frm'];
  43. $_SESSION['spell_textarea'] = $_REQUEST['box'];
  44. ?>
  45. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "XHTML1-f.dtd">
  46. <html>
  47. <head>
  48. <title>SpellingPRO Spell Checker</title>
  49. <frameset rows="0,*" framespacing="0" frameborder="no" border="1">
  50. <frame name="process" scrolling="no" _noresize="noresize" frameborder="no" border="0" src="compose.spell.php?cmd=process&spell_html=<?php echo $spell_html; ?>&sendafter=<?php echo $sendafter; ?>" />
  51. <frame name="content" scrolling="no" _noresize="noresize" frameborder="no" border="0" marginwidth="0" marginheight="0" src="compose.spell.php?cmd=loading" />
  52. </frameset>
  53. </head>
  54. </html>
  55. <?php
  56. }
  57. // ############################################################################
  58. // Show "Loading..." screen
  59. if ($cmd == 'loading') {
  60. eval(makeeval('echo', 'compose_spell_loading'));
  61. }
  62. // ############################################################################
  63. // Process text and come up with misspelled words and suggestions
  64. if ($cmd == 'process') {
  65. require_once('./spell_data.php');
  66. $jsOutput = spell_process($_SESSION['spell_wordbox'], 'metaphone', $spell_html, $sendafter);
  67. ?>
  68. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  69. <html>
  70. <head>
  71. <title>HiveMail: Spell Checker</title>
  72. <?php //echo '<pre>'.htmlspecialchars($jsOutput); ?>
  73. <script>
  74. <!--
  75. <?php echo $jsOutput; ?>
  76. // Return context of misspelling
  77. function getContext(intMissNum) {
  78. return msMissWordAr[intMissNum][2];
  79. }
  80. // Return the original index of the misspelled word from the main word array
  81. function getOi(intMissNum) {
  82. return msMissWordAr[intMissNum][1];
  83. }
  84. // Return misspelled word
  85. function getWord(intMissNum) {
  86. return msMissWordAr[intMissNum][0];
  87. }
  88. // Return number of suggestions for word
  89. function getSuggNum(intMissNum) {
  90. return msMissWordAr[intMissNum][3].length();
  91. }
  92. // Return array of word suggestions
  93. function getSuggList(intMissNum) {
  94. return msMissWordAr[intMissNum][3];
  95. }
  96. // Return true if we are at the end of the misspelled word array
  97. function isEnd(intMissNum) {
  98. return (intMissNum >= (msMissWordAr.length - 1));
  99. }
  100. // Return total misspelled
  101. function getMisspelledCount() {
  102. return msWc;
  103. }
  104. // Sets the corrected word in the original array
  105. function setNewWord(intMissNum, strNewWord) {
  106. var oi = getOi(intMissNum);
  107. var strOWord = getWord(intMissNum);
  108. msOrigWordAr[oi] = msOrigWordAr[oi].replace(strOWord, strNewWord);
  109. }
  110. // Sets the corrected word in the original array
  111. function setNewWord(intMissNum, strNewWord) {
  112. var oi = getOi(intMissNum);
  113. lastOrigWord = getWord(intMissNum);
  114. msOrigWordAr[oi] = msOrigWordAr[oi].replace(lastOrigWord, strNewWord);
  115. }
  116. // Sets the original word in the original array
  117. function setOrigWord(intMissNum, lastOrigWord) {
  118. var oi = getOi(intMissNum);
  119. var strNewWord = msOrigWordAr[oi];
  120. msOrigWordAr[oi] = msOrigWordAr[oi].replace(strNewWord, lastOrigWord);
  121. }
  122. // Returns the whole orginal word array (with assumed spell check corrections in place) for reassembly
  123. function getOrigAr() {
  124. return msOrigWordAr;
  125. }
  126. // Returns the last original word that was replaced
  127. function getLastOrigWord() {
  128. return lastOrigWord;
  129. }
  130. // -->
  131. </script>
  132. </head>
  133. <body>
  134. </body>
  135. </html>
  136. <?php
  137. }
  138. // ############################################################################
  139. // Yay! No mistakes found!
  140. if ($cmd == 'noerrors') {
  141. eval(makeeval('echo', 'compose_spell_noerrors'));
  142. }
  143. // ############################################################################
  144. // Show suggestions
  145. if ($cmd == 'suggestions') {
  146. $textarea_name = $_SESSION['spell_textarea'];
  147. $form_name = $_SESSION['spell_form'];
  148. eval(makeeval('echo', 'compose_spell_suggestions'));
  149. }
  150. // ############################################################################
  151. // Update user's dictionary and common mistakes
  152. if ($_POST['cmd'] == 'updatedata') {
  153. // Add new words into dictionary
  154. /*
  155. ************ NOT DONE YET ************
  156. $newWords = array_unique(explode("n", $newWords));
  157. $newValues = array();
  158. foreach ($newWords as $word) {
  159. if (trim($word) == '') {
  160. continue;
  161. }
  162. $newValues[] = "('".addslashes($word)."', '".addslashes(metaphone($word))."', $hiveuser[userid])";
  163. }
  164. if (!empty($newValues)) {
  165. $DB_site->query('
  166. INSERT INTO hive_word
  167. (word, metaphone, userid)
  168. VALUES '.implode(', ', $newValues).'
  169. ');
  170. }
  171. // Build combos of bad and good words
  172. $goodWords = explode("n", $changedTo);
  173. $badWords = explode("n", $changedFrom);
  174. $combos = array();
  175. for ($i = 0; $i < count($goodWords); $i++) {
  176. $goodWords[$i] = trim($goodWords[$i]);
  177. $badWords[$i] = trim($badWords[$i]);
  178. $combos[$i] = strtolower(addslashes($badWords[$i].'~'.$goodWords[$i]));
  179. }
  180. // Get existing changes
  181. $changes = $DB_site->query("
  182. SELECT *
  183. FROM hive_wordchange
  184. WHERE userid = $hiveuser[userid]
  185. AND combo IN ("".implode('", "', $combos)."")
  186. ");
  187. print_R($combos);
  188. while ($change = $DB_site->fetch_array($changes)) {
  189. print_R($change);
  190. // I know this is not very optimizied, but, well... I'll fix it later
  191. while (($foundKey = array_search($change['combo'], $combos)) !== false) {
  192. $DB_site->query("
  193. UPDATE hive_wordchange
  194. SET times = times + 1
  195. WHERE userid = $hiveuser[userid]
  196. AND combo  = '".addslashes($change['combo'])."'
  197. ");
  198. unset($combos[$foundKey]);
  199. }
  200. }
  201. // Create new records for new combos
  202. $newCombos = array();
  203. foreach ($combos as $key => $combo) {
  204. if (trim($badWords[$key]) == '') {
  205. continue;
  206. }
  207. $newCombos[] = "($hiveuser[userid], '".addslashes($badWords[$key])."', '".addslashes($combo)."', 1)";
  208. }
  209. if (!empty($newCombos)) {
  210. $DB_site->query('
  211. INSERT INTO hive_wordchange
  212. (userid, wrongword, combo, times)
  213. VALUES '.implode(', ', $newCombos).'
  214. ');
  215. }
  216. */
  217. // Close window
  218. ?><script language="JavaScript" type="text/javascript">
  219. <!--
  220. window.top.window.close();
  221. //-->
  222. </script><?php
  223. exit;
  224. }
  225. ?>