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");
 | 
						|
?>
 |