ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:24.19 GB of 70.42 GB (34.35%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ http/ mail/ program/ lib/ Roundcube/ - drwxr-xr-x

Directory:
Viewing file:     rcube_spellcheck_enchant.php (5.26 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) 2011-2013, Kolab Systems AG                             |
 | Copyright (C) 20011-2013, The Roundcube Dev Team                      |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Spellchecking backend implementation to work with Enchant           |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Spellchecking backend implementation to work with Pspell
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_spellcheck_enchant extends rcube_spellcheck_engine
{
    private 
$enchant_broker;
    private 
$enchant_dictionary;
    private 
$matches = array();

    
/**
     * Return a list of languages supported by this backend
     *
     * @see rcube_spellcheck_engine::languages()
     */
    
function languages()
    {
        
$this->init();

        
$langs = array();
        
$dicts enchant_broker_list_dicts($this->enchant_broker);
        foreach (
$dicts as $dict) {
            
$langs[] = preg_replace('/-.*$/'''$dict['lang_tag']);
        }

        return 
array_unique($langs);
    }

    
/**
     * Initializes Enchant dictionary
     */
    
private function init()
    {
        if (!
$this->enchant_broker) {
            if (!
extension_loaded('enchant')) {
                
$this->error "Enchant extension not available";
                return;
            }

            
$this->enchant_broker enchant_broker_init();
        }

        if (!
enchant_broker_dict_exists($this->enchant_broker$this->lang)) {
            
$this->error "Unable to load dictionary for selected language using Enchant";
            return;
        }

        
$this->enchant_dictionary enchant_broker_request_dict($this->enchant_broker$this->lang);
    }

    
/**
     * Set content and check spelling
     *
     * @see rcube_spellcheck_engine::check()
     */
    
function check($text)
    {
        
$this->init();

        if (!
$this->enchant_dictionary) {
            return array();
        }

        
// tokenize
        
$text preg_split($this->separator$textNULLPREG_SPLIT_NO_EMPTY PREG_SPLIT_OFFSET_CAPTURE);

        
$diff       0;
        
$matches    = array();

        foreach (
$text as $w) {
            
$word trim($w[0]);
            
$pos  $w[1] - $diff;
            
$len  mb_strlen($word);

            
// skip exceptions
            
if ($this->dictionary->is_exception($word)) {
            }
            else if (!
enchant_dict_check($this->enchant_dictionary$word)) {
                
$suggestions enchant_dict_suggest($this->enchant_dictionary$word);

                if (
sizeof($suggestions) > self::MAX_SUGGESTIONS) {
                    
$suggestions array_slice($suggestions0self::MAX_SUGGESTIONS);
                }

                
$matches[] = array($word$pos$lennull$suggestions);
            }

            
$diff += (strlen($word) - $len);
        }

        
$this->matches $matches;
        return 
$matches;
    }

    
/**
     * Returns suggestions for the specified word
     *
     * @see rcube_spellcheck_engine::get_words()
     */
    
function get_suggestions($word)
    {
        
$this->init();

        if (!
$this->enchant_dictionary) {
            return array();
        }

        
$suggestions enchant_dict_suggest($this->enchant_dictionary$word);

        if (
sizeof($suggestions) > self::MAX_SUGGESTIONS)
            
$suggestions array_slice($suggestions0self::MAX_SUGGESTIONS);

        return 
is_array($suggestions) ? $suggestions : array();
    }

    
/**
     * Returns misspelled words
     *
     * @see rcube_spellcheck_engine::get_suggestions()
     */
    
function get_words($text null)
    {
        
$result = array();

        if (
$text) {
            
// init spellchecker
            
$this->init();

            if (!
$this->enchant_dictionary) {
                return array();
            }

            
// With Enchant we don't need to get suggestions to return misspelled words
            
$text preg_split($this->separator$textNULLPREG_SPLIT_NO_EMPTY PREG_SPLIT_OFFSET_CAPTURE);

            foreach (
$text as $w) {
                
$word trim($w[0]);

                
// skip exceptions
                
if ($this->dictionary->is_exception($word)) {
                    continue;
                }

                if (!
enchant_dict_check($this->enchant_dictionary$word)) {
                    
$result[] = $word;
                }
            }

            return 
$result;
        }

        foreach (
$this->matches as $m) {
            
$result[] = $m[0];
        }

        return 
$result;
    }

}

Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.1726 seconds