| | |
| | | <?php |
| | | |
| | | /* |
| | | /** |
| | | +-----------------------------------------------------------------------+ |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2011-2013, Kolab Systems AG | |
| | |
| | | { |
| | | $this->rc = rcube::get_instance(); |
| | | $this->engine = $this->rc->config->get('spellcheck_engine', 'googie'); |
| | | $this->lang = $lang ? $lang : 'en'; |
| | | $this->lang = $lang ?: 'en'; |
| | | |
| | | $this->options = array( |
| | | 'ignore_syms' => $this->rc->config->get('spellcheck_ignore_syms'), |
| | |
| | | return $this->found() == 0; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Number of mispellings found (after check) |
| | | * |
| | |
| | | { |
| | | return count($this->matches); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns suggestions for the specified word |
| | |
| | | |
| | | return array(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns misspelled words |
| | |
| | | return array(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns checking result in XML (Googiespell) format |
| | | * |
| | |
| | | return $out; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns checking result (misspelled words with suggestions) |
| | | * |
| | |
| | | else { |
| | | $word = mb_substr($this->content, $item[1], $item[2], RCUBE_CHARSET); |
| | | } |
| | | $result[$word] = is_array($item[4]) ? implode("\t", $item[4]) : $item[4]; |
| | | |
| | | if (is_array($item[4])) { |
| | | $suggestions = $item[4]; |
| | | } |
| | | else if (empty($item[4])) { |
| | | $suggestions = array(); |
| | | } |
| | | else { |
| | | $suggestions = explode("\t", $item[4]); |
| | | } |
| | | |
| | | $result[$word] = $suggestions; |
| | | } |
| | | |
| | | return $result; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns error message |
| | |
| | | */ |
| | | function error() |
| | | { |
| | | return $this->error ? $this->error : ($this->backend ? $this->backend->error() : false); |
| | | return $this->error ?: ($this->backend ? $this->backend->error() : false); |
| | | } |
| | | |
| | | |
| | | private function html2text($text) |
| | | { |
| | | $h2t = new rcube_html2text($text, false, true, 0); |
| | | return $h2t->get_text(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Check if the specified word is an exception accoring to |
| | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Add a word to dictionary |
| | | * |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Remove a word from dictionary |
| | | * |
| | |
| | | $this->update_dict(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Update dictionary row in DB |
| | |
| | | if ($this->have_dict) { |
| | | if (!empty($this->dict)) { |
| | | $this->rc->db->query( |
| | | "UPDATE ".$this->rc->db->table_name('dictionary') |
| | | ." SET data = ?" |
| | | ." WHERE user_id " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL") |
| | | ." AND " . $this->rc->db->quote_identifier('language') . " = ?", |
| | | "UPDATE " . $this->rc->db->table_name('dictionary', true) |
| | | ." SET `data` = ?" |
| | | ." WHERE `user_id` " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL") |
| | | ." AND `language` = ?", |
| | | implode(' ', $plugin['dictionary']), $plugin['language']); |
| | | } |
| | | // don't store empty dict |
| | | else { |
| | | $this->rc->db->query( |
| | | "DELETE FROM " . $this->rc->db->table_name('dictionary') |
| | | ." WHERE user_id " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL") |
| | | ." AND " . $this->rc->db->quote_identifier('language') . " = ?", |
| | | "DELETE FROM " . $this->rc->db->table_name('dictionary', true) |
| | | ." WHERE `user_id` " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL") |
| | | ." AND `language` = ?", |
| | | $plugin['language']); |
| | | } |
| | | } |
| | | else if (!empty($this->dict)) { |
| | | $this->rc->db->query( |
| | | "INSERT INTO " .$this->rc->db->table_name('dictionary') |
| | | ." (user_id, " . $this->rc->db->quote_identifier('language') . ", data) VALUES (?, ?, ?)", |
| | | "INSERT INTO " . $this->rc->db->table_name('dictionary', true) |
| | | ." (`user_id`, `language`, `data`) VALUES (?, ?, ?)", |
| | | $plugin['userid'], $plugin['language'], implode(' ', $plugin['dictionary'])); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Get dictionary from DB |
| | |
| | | if (empty($plugin['abort'])) { |
| | | $dict = array(); |
| | | $sql_result = $this->rc->db->query( |
| | | "SELECT data FROM ".$this->rc->db->table_name('dictionary') |
| | | ." WHERE user_id ". ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL") |
| | | ." AND " . $this->rc->db->quote_identifier('language') . " = ?", |
| | | "SELECT `data` FROM " . $this->rc->db->table_name('dictionary', true) |
| | | ." WHERE `user_id` ". ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL") |
| | | ." AND `language` = ?", |
| | | $plugin['language']); |
| | | |
| | | if ($sql_arr = $this->rc->db->fetch_assoc($sql_result)) { |
| | |
| | | |
| | | return $this->dict; |
| | | } |
| | | |
| | | } |