71 lines
1.5 KiB
PHP
71 lines
1.5 KiB
PHP
<?php
|
|
/**
|
|
* PSpellEngine.php
|
|
*
|
|
* Copyright, Moxiecode Systems AB
|
|
* Released under LGPL License.
|
|
*
|
|
* License: http://www.tinymce.com/license
|
|
* Contributing: http://www.tinymce.com/contributing
|
|
*/
|
|
|
|
class TinyMCE_SpellChecker_PSpellEngine extends TinyMCE_SpellChecker_Engine {
|
|
/**
|
|
* Spellchecks an array of words.
|
|
*
|
|
* @param String $lang Selected language code (like en_US or de_DE). Shortcodes like "en" and "de" work with enchant >= 1.4.1
|
|
* @param Array $words Array of words to check.
|
|
* @return Name/value object with arrays of suggestions.
|
|
*/
|
|
public function getSuggestions($lang, $words) {
|
|
$config = $this->getConfig();
|
|
|
|
switch ($config['PSpell.mode']) {
|
|
case "fast":
|
|
$mode = PSPELL_FAST;
|
|
break;
|
|
|
|
case "slow":
|
|
$mode = PSPELL_SLOW;
|
|
break;
|
|
|
|
default:
|
|
$mode = PSPELL_NORMAL;
|
|
}
|
|
|
|
// Setup PSpell link
|
|
$plink = pspell_new(
|
|
$lang,
|
|
$config['pspell.spelling'],
|
|
$config['pspell.jargon'],
|
|
$config['pspell.encoding'],
|
|
$mode
|
|
);
|
|
|
|
if (!$plink) {
|
|
throw new Exception("No PSpell link found opened.");
|
|
}
|
|
|
|
$outWords = array();
|
|
foreach ($words as $word) {
|
|
if (!pspell_check($plink, trim($word))) {
|
|
$outWords[] = utf8_encode($word);
|
|
}
|
|
}
|
|
|
|
return $outWords;
|
|
}
|
|
|
|
/**
|
|
* Return true/false if the engine is supported by the server.
|
|
*
|
|
* @return boolean True/false if the engine is supported.
|
|
*/
|
|
public function isSupported() {
|
|
return function_exists("pspell_new");
|
|
}
|
|
}
|
|
|
|
TinyMCE_Spellchecker_Engine::add("pspell", "TinyMCE_SpellChecker_PSpellEngine");
|
|
?>
|