Files
roi-theme/wp-content/plugins/wp-ultimate-csv-importer/importExtensions/WPMLImport.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

202 lines
8.5 KiB
PHP
Executable File

<?php
/******************************************************************************************
* Copyright (C) Smackcoders. - All Rights Reserved under Smackcoders Proprietary License
* Unauthorized copying of this file, via any medium is strictly prohibited
* Proprietary and confidential
* You can contact Smackcoders at email address info@smackcoders.com.
*******************************************************************************************/
namespace Smackcoders\FCSV;
if ( ! defined( 'ABSPATH' ) )
exit; // Exit if accessed directly
class WPMLImport {
private static $wpml_instance = null;
public static function getInstance() {
if (WPMLImport::$wpml_instance == null) {
WPMLImport::$wpml_instance = new WPMLImport;
return WPMLImport::$wpml_instance;
}
return WPMLImport::$wpml_instance;
}
function set_wpml_values($header_array ,$value_array , $map, $post_id , $type, $line_number){
$post_values = [];
$helpers_instance = ImportHelpers::getInstance();
$post_values = $helpers_instance->get_header_values($map , $header_array , $value_array);
$this->wpml_import_function($post_values,$type, $post_id, $line_number);
}
function wpml_import_function($data_array, $import_as, $pId, $line_number) {
global $sitepress, $wpdb;
global $core_instance;
$site_lang = get_locale();
$lang_code = $data_array['language_code'];
$core_instance = CoreFieldsImport::getInstance();
$extension_object = new ExtensionHandler;
$taxonomies = get_taxonomies();
$is_active = $wpdb->get_var("select active from {$wpdb->prefix}icl_languages where code = '$lang_code'");
if(!$is_active){
$lang_tag = $wpdb->get_var("select code from {$wpdb->prefix}icl_languages where default_locale = '$site_lang'");
if(!empty($lang_tag))
$data_array['language_code'] = $lang_tag;
$core_instance->detailed_log[$line_number]['Instruction'] = "The given language code not configured in WPML.So all are done under default language section.";
}
if (isset($import_as) && in_array($import_as, $taxonomies)) {
$import_type = $import_as;
if($import_type == 'category' || $import_type == 'product_category' || $import_type == 'product_cat' || $import_type == 'wpsc_product_category' || $import_type == 'event-categories'):
$import_as = 'Categories';
elseif($import_type == 'product_tag' || $import_type == 'event-tags' || $import_type == 'post_tag'):
$import_as = 'Tags';
else:
$import_as = 'Taxonomies';
endif;
}
$importAs = $extension_object->import_post_types($import_as );
$get_trid = $wpdb->get_results("select trid from {$wpdb->prefix}icl_translations ORDER BY translation_id DESC limit 1");
$trid = $get_trid[0]->trid;
//Parent lang
if((isset($data_array['translated_taxonomy_title']) && empty($data_array['translated_taxonomy_title'])) || (isset($data_array['translated_post_title']) && empty($data_array['translated_post_title']))){
if($import_as == 'Taxonomies' || $import_as == 'Categories' || $import_as == 'Tags'){
$termdata = get_term_by('name', $data_array['translated_taxonomy_title'],$import_type,'ARRAY_A');
if(is_array($termdata) && !empty($termdata)) {
$element_id = $termdata['term_id'];
$taxo_type = $termdata['taxonomy'];
}
else{
$taxo_type = $import_type;
}
$element_type = 'tax_'.$taxo_type;
$trids = $trid+1;
$term_taxonomy_id = $wpdb->get_var("select term_taxonomy_id from {$wpdb->prefix}term_taxonomy where term_id = $pId");
$set_language_args = array(
'element_id' => $term_taxonomy_id,
'trid' => $trids,
'element_type' => $element_type,
'language_code' => $data_array['language_code']
);
}
else{
//POST,PAGE and Custom Posts
$update_query = $wpdb->prepare("select ID,post_type from $wpdb->posts where post_title = %s and post_type=%s order by ID DESC",$data_array['translated_post_title'] , $importAs);
$ID_result = $wpdb->get_results($update_query);
if(is_array($ID_result) && !empty($ID_result)) {
$element_id = $ID_result[0]->ID;
$post_type = $ID_result[0]->post_type;
}else{
$post_type = $importAs;
}
$element_type = 'post_'.$post_type;
$trids = $trid+1;
$set_language_args = array(
'element_id' => $pId,
'trid' => $trids,
'element_type' => $element_type,
'language_code' => $data_array['language_code']
);
}
do_action( 'wpml_set_element_language_details', $set_language_args );
}
//Child lang
else if(!empty($data_array['language_code'])
&&
((isset($data_array['translated_post_title']) && !empty($data_array['translated_post_title']))
||
(isset($data_array['translated_taxonomy_title']) && !empty($data_array['translated_taxonomy_title'])))
){
if($import_as == 'Taxonomies' || $import_as == 'Categories' || $import_as == 'Tags'){
if($import_as == 'Categories')
$import_as = 'category';
$translate_title = $data_array['translated_taxonomy_title'];
$termdata = get_term_by('name', "$translate_title","$import_type","ARRAY_A");
if(is_array($termdata) && !empty($termdata)) {
$term_id = $termdata['term_id'];
$taxo_type = $termdata['taxonomy'];
$element_id = $wpdb->get_var("select term_taxonomy_id from {$wpdb->prefix}term_taxonomy where term_id = $term_id");
}
else {
$taxo_type = $import_type;
}
if (isset($element_id)) {
$trid_id = apply_filters( 'wpml_element_trid', NULL, $element_id, 'tax_'.$taxo_type);
$args = array('element_id' => $element_id, 'element_type' => 'tax_'.$taxo_type );
$my_language_info = apply_filters( 'wpml_element_language_details', NULL, $args );
if (isset($my_language_info) && isset($my_language_info->language_code)) {
$translate_lcode = $my_language_info->language_code;
}
}
$element_type = 'tax_'.$taxo_type;
$term_taxonomy_id = $wpdb->get_var("select term_taxonomy_id from {$wpdb->prefix}term_taxonomy where term_id = $pId");
$set_language_args = array(
'element_id' => $term_taxonomy_id,
'element_type' => $element_type,
'trid' => isset($trid_id) ? $trid_id : '',
'language_code' => $data_array['language_code'],
'source_language_code' => isset($translate_lcode) ? $translate_lcode : ''
);
do_action( 'wpml_set_element_language_details', $set_language_args );
}
else{
//POST,PAGE,Custom Post
$update_query = $wpdb->prepare("SELECT ID,post_type FROM $wpdb->posts WHERE post_title = %s AND post_type=%s AND post_status NOT IN('%s')order by ID ASC",$data_array['translated_post_title'] , $importAs,'trash');
$ID_result = $wpdb->get_results($update_query);
if(is_array($ID_result) && !empty($ID_result)) {
$element_id = $ID_result[0]->ID;
$post_type = $ID_result[0]->post_type;
}
else{
$post_type = $importAs;
}
$trid_id = apply_filters( 'wpml_element_trid', NULL, $element_id, 'post_'.$post_type );
$args = array('element_id' => $element_id, 'element_type' => 'post_'.$post_type );
$my_language_info = apply_filters( 'wpml_element_language_details', null, $args );
$translate_lcode = $my_language_info->language_code;
$element_type = 'post_'.$post_type;
$set_language_args = array(
'element_id' => $pId,
'element_type' => $element_type,
'trid' => $trid_id,
'language_code' => $data_array['language_code'],
'source_language_code' => $translate_lcode
);
do_action( 'wpml_set_element_language_details', $set_language_args );
}
}
//added - to change lang code in admin view link
if(isset($core_instance->detailed_log[$line_number]['adminLink'])){
$admin_view_link = $this->check_for_wpml_urls($core_instance->detailed_log[$line_number]['adminLink'], $data_array['language_code']);
$core_instance->detailed_log[$line_number]['adminLink'] = $admin_view_link;
}
}
public function check_for_wpml_urls($admin_view_link, $lang_code){
global $wpdb;
if(strpos($admin_view_link, 'lang=') !== FALSE){
$get_existing_lang = explode('lang=', $admin_view_link);
$get_existing_lang_code = substr($get_existing_lang[1], 0, 2);
$existing_lang_string = 'lang='. $get_existing_lang_code;
$current_lang_string = 'lang=' . $lang_code;
$admin_view_link = str_replace($existing_lang_string, $current_lang_string, $admin_view_link);
return $admin_view_link;
}
else {
return $admin_view_link;
}
}
}