| | |
| | | $this->engine = $this->rc->config->get('spellcheck_engine', 'googie'); |
| | | $this->lang = $lang ? $lang : 'en'; |
| | | |
| | | if ($this->engine == 'pspell' && !extension_loaded('pspell')) { |
| | | rcube::raise_error(array( |
| | | 'code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Pspell extension not available"), true, true); |
| | | } |
| | | |
| | | $this->options = array( |
| | | 'ignore_syms' => $this->rc->config->get('spellcheck_ignore_syms'), |
| | | 'ignore_nums' => $this->rc->config->get('spellcheck_ignore_nums'), |
| | |
| | | |
| | | |
| | | /** |
| | | * Returns mispelled words |
| | | * Returns misspelled words |
| | | * |
| | | * @param string $text The content for spellchecking. If empty content |
| | | * used for check() method will be used. |
| | | * |
| | | * @return array List of mispelled words |
| | | * @return array List of misspelled words |
| | | */ |
| | | function get_words($text = null, $is_html=false) |
| | | { |
| | |
| | | |
| | | |
| | | /** |
| | | * Returns checking result (mispelled words with suggestions) |
| | | * Returns checking result (misspelled words with suggestions) |
| | | * |
| | | * @return array Spellchecking result. An array indexed by word. |
| | | */ |
| | |
| | | else if (!pspell_check($this->plink, $word)) { |
| | | $suggestions = pspell_suggest($this->plink, $word); |
| | | |
| | | if (sizeof($suggestions) > self::MAX_SUGGESTIONS) |
| | | $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS); |
| | | if (sizeof($suggestions) > self::MAX_SUGGESTIONS) { |
| | | $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS); |
| | | } |
| | | |
| | | $matches[] = array($word, $pos, $len, null, $suggestions); |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | * Returns the mispelled words |
| | | * Returns the misspelled words |
| | | */ |
| | | private function _pspell_words($text = null, $is_html=false) |
| | | { |
| | |
| | | return array(); |
| | | } |
| | | |
| | | // With PSpell we don't need to get suggestions to return mispelled words |
| | | // With PSpell we don't need to get suggestions to return misspelled words |
| | | if ($is_html) { |
| | | $text = $this->html2text($text); |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | * Returns suggestions for mispelled word |
| | | * Returns suggestions for misspelled word |
| | | */ |
| | | private function _pspell_suggestions($word) |
| | | { |
| | |
| | | private function _pspell_init() |
| | | { |
| | | if (!$this->plink) { |
| | | if (!extension_loaded('pspell')) { |
| | | $this->error = "Pspell extension not available"; |
| | | rcube::raise_error(array( |
| | | 'code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => $this->error), true, false); |
| | | |
| | | return; |
| | | } |
| | | |
| | | $this->plink = pspell_new($this->lang, null, null, RCMAIL_CHARSET, PSPELL_FAST); |
| | | } |
| | | |