Plugin Directory

Changeset 3142013


Ignore:
Timestamp:
08/27/2024 04:13:59 AM (7 months ago)
Author:
mvpis
Message:

Improving Language Management and Search

Location:
fluentc-translation/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • fluentc-translation/trunk/fluentc_wordpress_plugin.php

    r3140944 r3142013  
    77 * Plugin URI: https://github.com/fluentc/wordpress-plugin
    88 * Description: A plugin that enables website owners to easily install the FluentC Translation on their WordPress site.
    9  * Version: 1.7
     9 * Version: 1.7.1
    1010 * Author: FluentC
    1111 * Author URI: https://www.fluentc.ai
     
    1717define( 'FLUENTC_DIR', __DIR__ );
    1818define( 'FLUENTC_SLUG', 'fluentc_translation' );
    19 define( 'FLUENTC_TRANSLATION_VERSION', "1.7" );
     19define( 'FLUENTC_TRANSLATION_VERSION', "1.7.1" );
    2020define( 'FLUENTC_TRANSLATION_PLUGIN_DIR', plugin_dir_path(__FILE__) );
    2121define( 'FLUENTC_TRANSLATION_PLUGIN_URL', plugin_dir_url(__FILE__) );
  • fluentc-translation/trunk/readme.txt

    r3140944 r3142013  
    55Requires at least: 4.6
    66Tested up to: 6.6.1
    7 Stable tag: 1.7
     7Stable tag: 1.7.1
    88Requires PHP: 7.3
    99License: GPLv2 or later
  • fluentc-translation/trunk/src/services/class-fluentc-translations.php

    r3140944 r3142013  
    3333
    3434    private function get_paginated_translations($offset, $limit) {
    35         $fluentc_cache = new \FluentC\Services\Cache();
    36         $all_transients = $fluentc_cache->get_fluentc_transients();
    37        
     35        global $wpdb;
    3836        $translations = [];
    3937        $count = 0;
    40         $processed_ids = []; // Now an associative array
    41        
    42         foreach ($all_transients as $transient_name => $transient_data) {
     38   
     39        $sql = "SELECT option_name, option_value
     40                FROM {$wpdb->options}
     41                WHERE option_name LIKE '_transient_fluentc%'
     42                LIMIT %d OFFSET %d";
     43   
     44        $results = $wpdb->get_results($wpdb->prepare($sql, $limit, $offset), ARRAY_A);
     45   
     46        foreach ($results as $result) {
     47            $transient_name = str_replace('_transient_', '', $result['option_name']);
     48            $transient_data = $result['option_value'];
     49   
    4350            if (is_string($transient_data)) {
    4451                $data = json_decode($transient_data, true);
    4552                if (json_last_error() === JSON_ERROR_NONE && isset($data['data']['translateSite']['body'])) {
    46                    
    47                     $originalText = html_entity_decode($data['data']['translateSite']['body']['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
    48                     $translatedText = html_entity_decode($data['data']['translateSite']['body']['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
     53                    $body = $data['data']['translateSite']['body'];
    4954                   
    50                     // Generate a unique identifier for this translation
    51                     $unique_id = md5($transient_name . $originalText . $translatedText);
    52                    
    53                     // Check if we've processed this unique translation before
    54                     if ($originalText !== $translatedText && !isset($processed_ids[$unique_id])) {
    55                         if ($count >= $offset && count($translations) < $limit) {
     55                    // Check if body is a single translation or an array of translations
     56                    if (isset($body['originalText'])) {
     57                        $body = [$body]; // Convert single translation to array
     58                    }
     59   
     60                    foreach ($body as $translation) {
     61                        $originalText = html_entity_decode($translation['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
     62                        $translatedText = html_entity_decode($translation['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
     63                       
     64                        if ($originalText !== $translatedText) {
    5665                            $translations[] = [
    5766                                'id' => $transient_name,
    58                                 'sourceLanguage' => $data['data']['translateSite']['body']['sourceLanguage'],
    59                                 'targetLanguage' => $data['data']['translateSite']['body']['targetLanguage'],
     67                                'sourceLanguage' => $translation['sourceLanguage'],
     68                                'targetLanguage' => $translation['targetLanguage'],
    6069                                'originalText' => $originalText,
    6170                                'translatedText' => $translatedText
    6271                            ];
     72                            $count++;
     73   
     74                            if (count($translations) >= $limit) {
     75                                break 2; // Exit both loops if we've reached the limit
     76                            }
    6377                        }
     78                    }
     79                }
     80            }
     81        }
     82   
     83        return $translations;
     84    }
     85   
     86    private function get_total_translations_count() {
     87        global $wpdb;
     88        $count = 0;
     89   
     90        $sql = "SELECT option_value
     91                FROM {$wpdb->options}
     92                WHERE option_name LIKE '_transient_fluentc%'";
     93   
     94        $results = $wpdb->get_col($sql);
     95   
     96        foreach ($results as $transient_data) {
     97            $data = json_decode($transient_data, true);
     98            if (json_last_error() === JSON_ERROR_NONE && isset($data['data']['translateSite']['body'])) {
     99                $body = $data['data']['translateSite']['body'];
     100               
     101                // Check if body is a single translation or an array of translations
     102                if (isset($body['originalText'])) {
     103                    $body = [$body]; // Convert single translation to array
     104                }
     105   
     106                foreach ($body as $translation) {
     107                    $originalText = html_entity_decode($translation['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
     108                    $translatedText = html_entity_decode($translation['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
     109                   
     110                    if ($originalText !== $translatedText) {
    64111                        $count++;
    65                         $processed_ids[$unique_id] = true; // Mark this translation as processed
    66                        
    67112                    }
    68                
     113                }
    69114            }
    70             }
    71         }
    72        
    73         return $translations;
    74     }
    75 
    76     private function get_total_translations_count() {
    77         $fluentc_cache = new \FluentC\Services\Cache();
    78         $all_transients = $fluentc_cache->get_fluentc_transients();
    79        
    80         $count = 0;
    81         $processed_ids = []; // Now an associative array.
    82         foreach ($all_transients as $transient_name => $transient_data) {
    83             if (is_string($transient_data)) {
    84                 $data = json_decode($transient_data, true);
    85                 if (json_last_error() === JSON_ERROR_NONE && isset($data['data']['translateSite']['body'])) {
    86                    
    87                     $originalText = html_entity_decode($data['data']['translateSite']['body']['originalText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
    88                     $translatedText = html_entity_decode($data['data']['translateSite']['body']['translatedText'], ENT_QUOTES | ENT_XML1, 'UTF-8');
    89                    
    90                     $unique_id = md5($transient_name . $originalText . $translatedText);
    91                    
    92                     if ($originalText !== $translatedText && !isset($processed_ids[$unique_id])) {
    93                         $count++;
    94                         $processed_ids[$unique_id] = true;
    95                     }
    96                
    97             }
    98             }
    99         }
     115        }
     116   
    100117        return $count;
    101118    }
Note: See TracChangeset for help on using the changeset viewer.