Changeset 2960976
- Timestamp:
- 08/31/2023 07:37:59 AM (3 years ago)
- Location:
- transcy/trunk
- Files:
-
- 7 edited
-
includes/Admin/WPAdmin.php (modified) (1 diff)
-
includes/Api/ExtenAppApi.php (modified) (1 diff)
-
includes/Api/TranslateApi.php (modified) (4 diffs)
-
includes/Hook/MenuHook.php (modified) (5 diffs)
-
includes/Model/TranscyMenu.php (modified) (5 diffs)
-
readme.txt (modified) (2 diffs)
-
transcy.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
transcy/trunk/includes/Admin/WPAdmin.php
r2960387 r2960976 194 194 $lang = !empty($_GET['lang']) ? $_GET['lang'] : null; 195 195 $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) { 198 202 $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' )"; 199 203 } -
transcy/trunk/includes/Api/ExtenAppApi.php
r2959707 r2960976 159 159 } 160 160 161 if ($params['type'] == 'product_cat' && class_exists( 'WooCommerce')) {161 if ($params['type'] == 'product_cat' && class_exists( 'WooCommerce' )) { 162 162 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); 165 165 } 166 166 } -
transcy/trunk/includes/Api/TranslateApi.php
r2959707 r2960976 379 379 $translationsRelationship = new RelationshipLanguage(); 380 380 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 382 408 if ($delete) { 383 409 $validate['success'][] = [ … … 428 454 if (!isset($res->menu_id) || !isset($res->item_id) || !isset($res->name) || !isset($res->locale)) { 429 455 $validate['failed'][] = $res->item_id; 456 continue; 430 457 } 431 458 //Check has translate menu … … 434 461 if ($menuTranslateID == 0) { 435 462 $validate['failed'][] = $res->item_id; 463 continue; 436 464 } 437 465 … … 440 468 if ($itemMenuTransateID == 0) { 441 469 $validate['failed'][] = $res->item_id; 470 continue; 442 471 } 443 472 -
transcy/trunk/includes/Hook/MenuHook.php
r2959707 r2960976 24 24 { 25 25 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); 27 27 if (is_admin()) { 28 28 //Action menu … … 47 47 $lang = isset($_GET['lang']) && !empty($_GET['lang']) ? $_GET['lang'] : null; 48 48 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'); 52 63 } 53 $menuTranslate = reset($menuTranslate);54 return get_term($menuTranslate->relationship_id, 'nav_menu');55 64 } 56 65 } … … 59 68 60 69 /** 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 /** 61 105 * Check action create 62 106 * … … 66 110 { 67 111 // 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 68 160 69 161 // Step 2: Call api get list language => Get from construct … … 72 164 if (!empty($this->advancedLanguage)) { 73 165 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); 123 167 } 124 168 } -
transcy/trunk/includes/Model/TranscyMenu.php
r2960387 r2960976 17 17 { 18 18 $menuTranslate = reset($this->get($originMenuID, $this->type, $locale)); 19 19 20 //Check exist menu translate 20 21 if (empty($menuTranslate) || (int)$menuTranslate->relationship_id == $originMenuID) { 21 22 //Create translate menu 22 23 $relationshipID = $this->create($originMenuID, $locale); 23 if ( $relationshipID == 0) {24 if (empty($relationshipID)) { 24 25 return 0; 25 26 } … … 30 31 if (empty($menuTranslate)) { 31 32 //Add relationship translate 32 $ addRelationShip= $this->add($originMenuID, $relationshipID, $this->type, $locale);33 $status = $this->add($originMenuID, $relationshipID, $this->type, $locale); 33 34 } 34 35 35 36 if ((int)$menuTranslate->relationship_id == $originMenuID) { 36 37 //Update relationship translate 37 $ this->update($originMenuID, $relationshipID, $this->type, $locale);38 $status = $this->update($originMenuID, $relationshipID, $this->type, $locale); 38 39 } 39 40 40 if ($addRelationShip) { 41 //Update or create done 42 if ($status) { 41 43 return $relationshipID; 42 44 } 45 43 46 return 0; 44 47 } … … 72 75 if (!empty($itemMenu)) { 73 76 $itemTranslate = reset($this->get($originItemID, $this->typeItem, $locale)); 74 if (empty($itemTranslate) ) {77 if (empty($itemTranslate) || (int)$itemTranslate->relationship_id == $originItemID) { 75 78 //Create translate Menu 76 79 $args = [ … … 89 92 90 93 //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)) { 93 103 return 0; 94 104 } … … 138 148 $wpdb->query($sql_query); 139 149 } 150 //Update Submenu Translate 151 140 152 } 141 153 -
transcy/trunk/readme.txt
r2960400 r2960976 5 5 Requires at least: 4.5 6 6 Tested up to: 6.2.0 7 Stable tag: 2.9. 37 Stable tag: 2.9.5 8 8 Requires PHP: 7.0 9 9 License: GPLv2 or later … … 163 163 164 164 == Changelog == 165 = 2.9. 3 - 2023-08-30=165 = 2.9.5 - 2023-08-31 = 166 166 * Hotfix errors 167 167 -
transcy/trunk/transcy.php
r2960400 r2960976 4 4 Plugin URI: https://onecommerce.io/transcy/?utm_source=transcyphp&utm_medium=plugin-uri&utm_campaign=wordpress-tc 5 5 Description: Make your website multilingual easily with no coding. Instantly translate between languages with the Google Translate API. 6 Version: 2.9. 36 Version: 2.9.5 7 7 Author: OneCommerce 8 8 Author 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.