WordPress.org

Make WordPress Core

Ticket #9798: 9798.wp_googlespell.patch

File 9798.wp_googlespell.patch, 3.1 KB (added by bforchhammer, 6 years ago)
  • wp-includes/js/tinymce/plugins/spellchecker/classes/WP_GoogleSpell.php

     
     1<?php 
     2/** 
     3 * Extension of TinyMCE GoogleSpell class for Wordpress 
     4 *  
     5 * WP_GoogleSpell extends TinyMCE's GoogleSpell class. It overrides the way in which the  
     6 * http request to google is executed and uses WP_Http instead of curl/fsockopen. 
     7 * 
     8 * In order to use this class the "general.engine" value in config.php 
     9 * (wp-includes/js/tinymce/plugins/spellchecker) needs to be set to "WP_GoogleSpell" 
     10 * instead of "GoogleSpell". 
     11 * 
     12 * @link http://trac.wordpress.org/ticket/9798 Request for proxy support for spellchecking 
     13 * 
     14 * @package WordPress 
     15 * @subpackage TinyMCE 
     16 * @since 2.8.0 
     17 * @author Benedikt Forchhammer <b.forchhammer@mind2.de> 
     18 */ 
     19 
     20// Wordpress functions and classes 
     21require_once(dirname(__FILE__) . '/../../../../../../wp-load.php'); 
     22 
     23// The SpellChecking Engine which we want to extend 
     24require_once(dirname(__FILE__) . '/GoogleSpell.php'); 
     25 
     26class WP_GoogleSpell extends GoogleSpell { 
     27 
     28        function &_getMatches($lang, $str) { 
     29                if (class_exists('WP_Http')) { 
     30                        $http = new WP_Http(); 
     31                         
     32                        // request url 
     33                        $host = "www.google.com:443"; 
     34                        $path = "/tbproxy/spell?lang=" . $lang . "&hl=en"; 
     35                        $url = "https://" . $host . $path; 
     36                                                 
     37                        // Setup XML request 
     38                        $xml = '<?xml version="1.0" encoding="utf-8" ?><spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><text>' . $str . '</text></spellrequest>'; 
     39                         
     40                        // set up request arguments. 
     41                        // [bforchhammer] sslverify disabled because it did not work on our server / should possibly be enabled by default? 
     42                        $args = array( 'body' => $xml, 'sslverify' => false ); 
     43 
     44                        $response = $http->post($url, $args); 
     45                         
     46                        if (is_wp_error($response)) { 
     47                                echo implode("\n", $response->get_error_messages()); 
     48                                return array(); 
     49                        } 
     50                        else { 
     51                                // Grab and parse content 
     52                                $matches = array(); 
     53                                preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $response['body'], $matches, PREG_SET_ORDER); 
     54                         
     55                                return $matches; 
     56                        } 
     57                } 
     58                else { 
     59                        echo 'WP_Http class has not been loaded'; 
     60                } 
     61        } 
     62} 
     63?> 
     64 No newline at end of file 
  • wp-includes/js/tinymce/plugins/spellchecker/config.php

     
    66 * @copyright Copyright © 2007, Moxiecode Systems AB, All rights reserved. 
    77 */ 
    88        // General settings 
    9         $config['general.engine'] = 'GoogleSpell'; 
     9        //$config['general.engine'] = 'GoogleSpell'; 
     10        $config['general.engine'] = 'WP_GoogleSpell'; 
    1011        //$config['general.engine'] = 'PSpell'; 
    1112        //$config['general.engine'] = 'PSpellShell'; 
    1213        //$config['general.remote_rpc_url'] = 'http://some.other.site/some/url/rpc.php';