Plugin Directory

Changeset 2960976


Ignore:
Timestamp:
08/31/2023 07:37:59 AM (3 years ago)
Author:
onecommerce
Message:

Hotfix version 2.9.5

Location:
transcy/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • transcy/trunk/includes/Admin/WPAdmin.php

    r2960387 r2960976  
    194194                    $lang = !empty($_GET['lang']) ? $_GET['lang'] : null;
    195195                    $client_data        = $client_data->data;
    196                     $currency_default   = $client_data->currencies[0];
    197                     if (!empty($lang) && $lang != $currency_default) {
     196                    $lang_default       = $client_data->default_language;
     197                    $lang_info = array_filter($client_data->languages, function ($var) use ($lang) {
     198                        return ($var->code == $lang);
     199                    });
     200                    $lang_info = array_shift($lang_info);
     201                    if (!empty($lang) && $lang != $lang_default->code && $lang_info->type != 1) {
    198202                        $pieces['join'] .= " INNER JOIN {$table_name} ON t.term_id = {$table_name}.relationship_id AND {$table_name}.lang = '$lang' AND (prefix='term' OR prefix='nav_menu' )";
    199203                    }
  • transcy/trunk/includes/Api/ExtenAppApi.php

    r2959707 r2960976  
    159159                }
    160160
    161                 if ($params['type'] == 'product_cat' && class_exists('WooCommerce')) {
     161                if ($params['type'] == 'product_cat' && class_exists( 'WooCommerce' )) {
    162162                    foreach ($list as $key => $cat) {
    163                         $thumbnail_id = get_term_meta($cat->term_id, 'thumbnail_id', true);
    164                         $image        = wp_get_attachment_image_url($thumbnail_id);
     163                        $thumbnail_id           = get_term_meta($cat->term_id, 'thumbnail_id', true);
     164                        $list[$key]->thumbnail  = wp_get_attachment_image_url($thumbnail_id);
    165165                    }
    166166                }
  • transcy/trunk/includes/Api/TranslateApi.php

    r2959707 r2960976  
    379379            $translationsRelationship = new RelationshipLanguage();
    380380            foreach ($responses as $res) {
    381                 $delete = $translationsRelationship->detele_translate($res->id, $res->type, $res->locale);
     381
     382                $relationship = reset($translationsRelationship->get($res->id, $res->type, $res->locale));
     383                if (empty($relationship)) {
     384                    $validate['failed'][] = [
     385                        'id'    => $res->id,
     386                        'type'  => $res->type
     387                    ];
     388                    continue;
     389                }
     390
     391                //Delete Resource Translate
     392                $delete = wp_delete_post($res->relationship_id);
     393
     394                if ($res->type == 'nav_menu_item') {
     395                    $delete = $translationsRelationship->update($res->id, $res->id, $res->type, $res->locale);
     396
     397                    //Update Title
     398                    global $wpdb;
     399                    $results      = $wpdb->get_results("SELECT * FROM $wpdb->term_relationships WHERE object_id = $relationship->relationship_id");
     400                    if (!empty($results)) {
     401                        foreach ($results as $key => $value) {
     402                            $wpdb->delete($wpdb->term_relationships, array('object_id' => $value->object_id, 'term_taxonomy_id' =>  $value->term_taxonomy_id));
     403                            $wpdb->insert($wpdb->term_relationships, ['object_id' => $res->id, 'term_taxonomy_id' => $value->term_taxonomy_id]);
     404                        }
     405                    }
     406                }
     407
    382408                if ($delete) {
    383409                    $validate['success'][] = [
     
    428454            if (!isset($res->menu_id) || !isset($res->item_id) || !isset($res->name) || !isset($res->locale)) {
    429455                $validate['failed'][] = $res->item_id;
     456                continue;
    430457            }
    431458            //Check has translate menu
     
    434461            if ($menuTranslateID == 0) {
    435462                $validate['failed'][] = $res->item_id;
     463                continue;
    436464            }
    437465
     
    440468            if ($itemMenuTransateID == 0) {
    441469                $validate['failed'][] = $res->item_id;
     470                continue;
    442471            }
    443472
  • transcy/trunk/includes/Hook/MenuHook.php

    r2959707 r2960976  
    2424    {
    2525        add_filter('wp_get_nav_menu_object', array($this, 'getMenu'), 999, 1);
    26 
     26        add_filter('get_post_metadata', array($this, 'getParrentMenu'), PHP_INT_MAX, 3);
    2727        if (is_admin()) {
    2828            //Action menu
     
    4747            $lang = isset($_GET['lang']) && !empty($_GET['lang']) ? $_GET['lang'] : null;
    4848            if (!empty($lang)) {
    49                 $menuTranslate  = $this->transcyMenu->get($menuObj->term_id, 'nav_menu', $lang);
    50                 if (empty($menuTranslate)) {
    51                     return $menuObj;
     49                $client_api  = ClientApi::getInstance();
     50                $client_data = $client_api->get_client_data();
     51                $client_data = $client_data->data;
     52                $lang_info   = array_filter($client_data->languages, function ($var) use ($lang) {
     53                    return ($var->code == $lang);
     54                });
     55                $lang_info = array_shift($lang_info);
     56                if (!empty($lang) && $lang_info->type === 2) {
     57                    $menuTranslate  = $this->transcyMenu->get($menuObj->term_id, 'nav_menu', $lang);
     58                    if (empty($menuTranslate)) {
     59                        return $menuObj;
     60                    }
     61                    $menuTranslate             = reset($menuTranslate);
     62                    return get_term($menuTranslate->relationship_id, 'nav_menu');
    5263                }
    53                 $menuTranslate             = reset($menuTranslate);
    54                 return get_term($menuTranslate->relationship_id, 'nav_menu');
    5564            }
    5665        }
     
    5968
    6069    /**
     70     * Get translate menu on store front
     71     *
     72     * @param $menuObj
     73     */
     74    public function getParrentMenu($value, $object_id, $meta_key)
     75    {
     76        $lang = isset($_GET['lang']) && !empty($_GET['lang']) ? $_GET['lang'] : null;
     77        if (!empty($lang) && !is_admin()) {
     78            $client_api  = ClientApi::getInstance();
     79            $client_data = $client_api->get_client_data();
     80            $client_data = $client_data->data;
     81            $lang_info   = array_filter($client_data->languages, function ($var) use ($lang) {
     82                return ($var->code == $lang);
     83            });
     84            $lang_info = array_shift($lang_info);
     85            if (!empty($lang) && $lang_info->type === 2) {
     86                if ($meta_key == '_menu_item_menu_item_parent') {
     87                    global $wpdb;
     88                    $metaData = $wpdb->get_var("SELECT meta_value FROM $wpdb->postmeta WHERE post_id = $object_id AND meta_key = '_menu_item_menu_item_parent'");
     89                    if ($metaData > 0) {
     90                        $table_name = $wpdb->prefix . 'transcy_relationships';
     91                        $idParrent = $wpdb->get_var("SELECT relationship_id FROM $table_name WHERE id = $metaData AND lang = '$lang' AND prefix = 'nav_menu_item'");
     92                        if ((int)$idParrent > 0) {
     93                            return (int)$idParrent;
     94                        }
     95                        return $value;
     96                    }
     97                }
     98            }
     99        }
     100
     101        return $value;
     102    }
     103
     104    /**
    61105     * Check action create
    62106     *
     
    66110    {
    67111        // Step 1: Call app with action create menu => Pedding
     112
     113        // Step 2: Call api get list language => Get from construct
     114
     115        // Step 3: Create relationship with language
     116        if (!empty($this->advancedLanguage) && !defined('REST_REQUEST')) {
     117            foreach ($this->advancedLanguage as $locale) {
     118                $this->transcyMenu->add($termId, $termId, $this->menuType, $locale);
     119            }
     120        }
     121    }
     122
     123    /**
     124     * Check action create
     125     *
     126     * @param $term_id
     127     */
     128    public function deleteMenu(int $termId)
     129    {
     130        // Step 1: Get relationship with menu
     131        $relationshipMenu = $this->transcyMenu->get($termId, $this->menuType);
     132
     133        // Step 2: Remove all menu translate from original menu delete
     134        if (empty($relationshipMenu)) {
     135            return;
     136        }
     137        foreach ($relationshipMenu as $menu) {
     138            if ($menu->relationship_id == $termId) {
     139                continue;
     140            }
     141            // Delete term translate
     142            $this->delete($menu->relationship_id);
     143        }
     144
     145        // Step 3: Delete all relationship with multi lang
     146        $this->transcyMenu->delete($termId, $this->menuType);
     147
     148        // Step 4: Call app with action delete menu => Pedding
     149    }
     150
     151    /**
     152     * Action create item menu to public
     153     *
     154     * @param $postId
     155     * @param $menuItemDbId
     156     */
     157    public function createItemMenu(int $menuId, int $menuItemDbId)
     158    {
     159        // Step 1: Call app with action create item menu => pedding
    68160
    69161        // Step 2: Call api get list language => Get from construct
     
    72164        if (!empty($this->advancedLanguage)) {
    73165            foreach ($this->advancedLanguage as $locale) {
    74                 $this->transcyMenu->add($termId, $termId, $this->menuType, $locale);
    75             }
    76         }
    77     }
    78 
    79     /**
    80      * Check action create
    81      *
    82      * @param $term_id
    83      */
    84     public function deleteMenu(int $termId)
    85     {
    86         // Step 1: Get relationship with menu
    87         $relationshipMenu = $this->transcyMenu->get($termId, $this->menuType);
    88 
    89         // Step 2: Remove all menu translate from original menu delete
    90         if (empty($relationshipMenu)) {
    91             return;
    92         }
    93         foreach ($relationshipMenu as $menu) {
    94             if ($menu->relationship_id == $termId) {
    95                 continue;
    96             }
    97             // Delete term translate
    98             $this->delete($menu->relationship_id);
    99         }
    100 
    101         // Step 3: Delete all relationship with multi lang
    102         $this->transcyMenu->delete($termId, $this->menuType);
    103 
    104         // Step 4: Call app with action delete menu => Pedding
    105     }
    106 
    107     /**
    108      * Action create item menu to public
    109      *
    110      * @param $postId
    111      * @param $menuItemDbId
    112      */
    113     public function createItemMenu(int $menuId, int $menuItemDbId)
    114     {
    115         // Step 1: Call app with action create item menu => pedding
    116 
    117         // Step 2: Call api get list language => Get from construct
    118 
    119         // Step 3: Create relationship with language
    120         if (!empty($this->advancedLanguage)) {
    121             foreach ($this->advancedLanguage as $locale) {
    122                 $this->transcyMenu->add($menuItemDbId, $menuItemDbId, $this->menuType, $locale);
     166                $this->transcyMenu->add($menuItemDbId, $menuItemDbId, $this->menuItemType, $locale);
    123167            }
    124168        }
  • transcy/trunk/includes/Model/TranscyMenu.php

    r2960387 r2960976  
    1717    {
    1818        $menuTranslate = reset($this->get($originMenuID, $this->type, $locale));
     19
    1920        //Check exist menu translate
    2021        if (empty($menuTranslate) || (int)$menuTranslate->relationship_id == $originMenuID) {
    2122            //Create translate menu
    2223            $relationshipID = $this->create($originMenuID, $locale);
    23             if ($relationshipID == 0) {
     24            if (empty($relationshipID)) {
    2425                return 0;
    2526            }
     
    3031            if (empty($menuTranslate)) {
    3132                //Add relationship translate
    32                 $addRelationShip   = $this->add($originMenuID, $relationshipID, $this->type, $locale);
     33                $status   = $this->add($originMenuID, $relationshipID, $this->type, $locale);
    3334            }
    3435
    3536            if ((int)$menuTranslate->relationship_id == $originMenuID) {
    3637                //Update relationship translate
    37                 $this->update($originMenuID, $relationshipID, $this->type, $locale);
     38                $status   = $this->update($originMenuID, $relationshipID, $this->type, $locale);
    3839            }
    3940
    40             if ($addRelationShip) {
     41            //Update or create done
     42            if ($status) {
    4143                return $relationshipID;
    4244            }
     45
    4346            return 0;
    4447        }
     
    7275        if (!empty($itemMenu)) {
    7376            $itemTranslate = reset($this->get($originItemID, $this->typeItem, $locale));
    74             if (empty($itemTranslate)) {
     77            if (empty($itemTranslate) || (int)$itemTranslate->relationship_id == $originItemID) {
    7578                //Create translate Menu
    7679                $args = [
     
    8992
    9093                //Add relationship translate
    91                 $relationshipItem   = $this->add($originItemID, $menuItem, $this->typeItem, $locale);
    92                 if (!$relationshipItem) {
     94                if (empty($itemTranslate)) {
     95                    $status   = $this->add($originItemID, $menuItem, $this->typeItem, $locale);
     96                }
     97
     98                if ((int)$itemTranslate->relationship_id == $originItemID) {
     99                    $status   = $this->update($originItemID, $menuItem, $this->typeItem, $locale);
     100                }
     101
     102                if (empty($status)) {
    93103                    return 0;
    94104                }
     
    138148            $wpdb->query($sql_query);
    139149        }
     150        //Update Submenu Translate
     151       
    140152    }
    141153
  • transcy/trunk/readme.txt

    r2960400 r2960976  
    55Requires at least: 4.5
    66Tested up to: 6.2.0
    7 Stable tag: 2.9.3
     7Stable tag: 2.9.5
    88Requires PHP: 7.0
    99License: GPLv2 or later
     
    163163
    164164== Changelog ==
    165 = 2.9.3 - 2023-08-30 =
     165= 2.9.5 - 2023-08-31 =
    166166* Hotfix errors
    167167
  • transcy/trunk/transcy.php

    r2960400 r2960976  
    44Plugin URI: https://onecommerce.io/transcy/?utm_source=transcyphp&utm_medium=plugin-uri&utm_campaign=wordpress-tc
    55Description: Make your website multilingual easily with no coding. Instantly translate between languages with the Google Translate API.
    6 Version: 2.9.3
     6Version: 2.9.5
    77Author: OneCommerce
    88Author URI: https://onecommerce.io/transcy/?utm_source=transcyphp&utm_medium=author-uri&utm_campaign=wordpress-tc
Note: See TracChangeset for help on using the changeset viewer.