prefix . "smackuci_events"; $dont_show = get_option('smackuci_dont_show_again', false); if (isset($_POST['Later']) && $_POST['Later'] === "true") { $import_count = (int) $wpdb->get_var("SELECT COUNT(*) FROM $table"); update_option('smackuci_last_feedback_check', $import_count); wp_send_json_success(['reset' => true]); } if (isset($_POST['DontNotopen']) && $_POST['DontNotopen'] === "true") { update_option('smackuci_dont_show_again', true); wp_send_json_success(['dont_show' => true]); } $import_count = (int) $wpdb->get_var("SELECT COUNT(*) FROM $table"); $last_shown_at = (int) get_option('smackuci_last_feedback_check', 0); if ($import_count >= ($last_shown_at + 10) && !$dont_show) { update_option('smackuci_last_feedback_check', $import_count); wp_send_json_success(['show_popup' => true]); } wp_send_json_error(['show_popup' => false]); } public function handle_close_notification_action() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); $get_option = get_option('updateMessageDisplay'); if ($get_option === 'true') { update_option('updateMessageDisplay', 'false'); } $get_option = get_option('updateMessageDisplay'); echo wp_json_encode(array('success' => true)); wp_die(); } public function checkmain_mode() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); $ucisettings = get_option('sm_uci_pro_settings'); if (isset($ucisettings['enable_main_mode']) && $ucisettings['enable_main_mode'] == 'true') { $result['success'] = true; } else { $result['success'] = false; } $get_option = get_option('updateMessageDisplay'); if ($get_option === false) { // $result['notice_message'] = $this->updateMessage(); $result['notice_display'] = true; add_option('updateMessageDisplay', 'true'); }else { // Option exists, check its value if ($get_option === 'true') { // $result['notice_message'] = $this->updateMessage(); // Option is true $result['notice_display'] = true; }else{ // $result['notice_message'] = $this->updateMessage(); $result['notice_display'] = false; } } echo wp_json_encode($result); wp_die(); } public function updateMessage(){ $message = ''; $response = wp_safe_remote_get('https://www.smackcoders.com/wp-versions/wp-ultimate-csv-importer-free.json'); if ( is_wp_error( $response ) ) { return $message; } $response = json_decode($response); $current_plugin_version = '7.14'; if($current_plugin_version < $response->version[0]) { $message = $response->message[0]; } return $message; } /** * Save the mapped fields on using new mapping * @return boolean */ public function pause_import() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); global $wpdb; $response = []; $hash_key = sanitize_key($_POST['HashKey']); $log_table_name = $wpdb->prefix . "import_detail_log"; $wpdb->get_results("UPDATE $log_table_name SET running = 0 WHERE hash_key = '$hash_key'"); $response['pause_state'] = true; echo wp_json_encode($response); wp_die(); } public function resume_import() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); global $wpdb; $response = []; $hash_key = sanitize_key($_POST['HashKey']); $log_table_name = $wpdb->prefix . "import_detail_log"; $wpdb->get_results("UPDATE $log_table_name SET running = 1 WHERE hash_key = '$hash_key'"); $response['resume_state'] = true; $response['page_number'] = get_option('sm_bulk_import_page_number') + 1; echo wp_json_encode($response); wp_die(); } public function save_fields_function() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); $hash_key = sanitize_key($_POST['HashKey']); $type = sanitize_text_field($_POST['Types']); $map_fields = sanitize_text_field($_POST['MappedFields']); //$map_filter = sanitize_text_field($_POST['MappedFilter']); $mapping_type = sanitize_text_field($_POST['MappingType']); $counter = isset($counter) ? $counter : 0; $selected_mode = isset($_POST['selectedMode']) ? sanitize_text_field($_POST['selectedMode']) : ''; global $wpdb; if ($selected_mode == 'simpleMode') { $fileiteration = 5; update_option('sm_bulk_import_free_iteration_limit', $fileiteration); $media_settings['media_handle_option'] = 'true'; $media_settings['use_ExistingImage'] = 'true'; $image_info = array( 'media_settings' => $media_settings ); update_option('smack_image_options', $image_info); } $template_table_name = $wpdb->prefix . "ultimate_csv_importer_mappingtemplate"; $file_table_name = $wpdb->prefix . "smackcsv_file_events"; $filters = json_decode(stripslashes($_POST['MappedFilter']), true); $mapping_filter = serialize($filters); $mapped_fields = json_decode(stripslashes($map_fields), true); $helpers_instance = ImportHelpers::getInstance(); $response = []; $counter = 0; foreach ($mapped_fields as $maps) { foreach ($maps as $header_keys => $value) { if (strpos($header_keys, '->cus2') !== false) { if (!empty($value)) { $helpers_instance->write_to_customfile($value); } } } } $has_bundlemeta = array_key_exists('BUNDLEMETA', $mapped_fields); foreach ($mapped_fields as $key => $value) { if ($key === 'ECOMMETA') { $map_data[$key] = $value; if ($has_bundlemeta) { $map_data['BUNDLEMETA'] = $mapped_fields['BUNDLEMETA']; } } if ($key !== 'BUNDLEMETA') { $map_data[$key] = $value; } } $get_detail = $wpdb->get_results("SELECT file_name FROM $file_table_name WHERE `hash_key` = '$hash_key'"); $get_file_name = $get_detail[0]->file_name; $get_hash = $wpdb->get_results("SELECT eventKey FROM $template_table_name"); $mapping_fields = serialize($map_data); $time = date('Y-m-d h:i:s'); $get_file_name = $get_detail[0]->file_name; // Using prepare to safely insert the values if(!empty($get_hash)){ foreach ($get_hash as $hash_values) { $inserted_hash_values[] = $hash_values->eventKey; } if (in_array($hash_key, $inserted_hash_values)) { $query = $wpdb->prepare( "UPDATE $template_table_name SET mapping = %s, mapping_filter = %s, createdtime = %s, module = %s, mapping_type = %s WHERE eventKey = %s", $mapping_fields, $mapping_filter, $time, $type, $mapping_type, $hash_key ); } else { $query = $wpdb->prepare( "INSERT INTO $template_table_name (mapping, mapping_filter , createdtime, module, csvname, eventKey, mapping_type) VALUES (%s, %s, %s, %s, %s, %s, %s)", $mapping_fields, $mapping_filter, $time, $type, $get_file_name, $hash_key, $mapping_type ); } }else{ $query = $wpdb->prepare( "INSERT INTO $template_table_name (mapping, mapping_filter , createdtime, module, csvname, eventKey, mapping_type) VALUES (%s, %s, %s, %s, %s, %s, %s)", $mapping_fields, $mapping_filter, $time, $type, $get_file_name, $hash_key, $mapping_type ); } $wpdb->query($query); $fileiteration = '5'; update_option('sm_bulk_import_free_iteration_limit', $fileiteration); $response['success'] = true; $response['file_iteration'] = (int)$fileiteration; echo wp_json_encode($response); wp_die(); } /** * Provides import record details */ public function import_detail_function() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); $hash_key = sanitize_key($_POST['HashKey']); $response = []; global $wpdb; $log_table_name = $wpdb->prefix . "import_detail_log"; $importlog_table_name = $wpdb->prefix . "import_log_detail"; $file_table_name = $wpdb->prefix . "smackcsv_file_events"; $file_records = $wpdb->get_results("SELECT mode FROM $file_table_name WHERE hash_key = '$hash_key' ", ARRAY_A); $mode = $file_records[0]['mode']; if ($mode == 'Insert') { $method = 'Import'; } if ($mode == 'Update') { $method = 'Update'; } $total_records = $wpdb->get_results("SELECT file_name , total_records , processing_records ,status ,remaining_records , filesize FROM $log_table_name WHERE hash_key = '$hash_key' ", ARRAY_A); $log_records = $wpdb->get_results("SELECT message , status , verify , categories , tags FROM $importlog_table_name WHERE hash_key = '$hash_key' ", ARRAY_A); $response['success'] = true; $response['file_name'] = $total_records[0]['file_name']; $response['total_records'] = $total_records[0]['total_records']; $response['processing_records'] = $total_records[0]['processing_records']; $response['remaining_records'] = $total_records[0]['remaining_records']; $response['status'] = $total_records[0]['status']; $response['filesize'] = $total_records[0]['filesize']; $response['method'] = $method; if ($total_records[0]['status'] == 'Completed') { $response['progress'] = false; } else { $response['progress'] = true; } $response['Info'] = $log_records; echo wp_json_encode($response); wp_die(); } /** * Checks whether the import function is paused or resumed */ public function import_state_function() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); $response = []; $hash_key = sanitize_key($_POST['HashKey']); $upload = wp_upload_dir(); $upload_base_url = $upload['baseurl']; $upload_url = $upload_base_url . '/smack_uci_uploads/imports/'; $upload_dir = SaveMapping::$smackcsv_instance->create_upload_dir(); $import_txt_path = $upload_dir . 'import_state.txt'; chmod($import_txt_path, 0777); $import_state_arr = array(); /* Gets string 'true' when Resume button is clicked */ if (sanitize_text_field($_POST['State']) == 'true') { //first check then set on $open_file = fopen($import_txt_path, "w"); $import_state_arr = array('import_state' => 'on', 'import_stop' => 'on'); $state_arr = serialize($import_state_arr); fwrite($open_file, $state_arr); fclose($open_file); $response['import_state'] = false; } /* Gets string 'false' when Pause button is clicked */ if (sanitize_text_field($_POST['State']) == 'false') { //first check then set off $open_file = fopen($import_txt_path, "w"); $import_state_arr = array('import_state' => 'off', 'import_stop' => 'on'); $state_arr = serialize($import_state_arr); fwrite($open_file, $state_arr); fclose($open_file); if ($log_link_path != null) { $response['show_log'] = true; } else { $response['show_log'] = false; } $response['import_state'] = true; $response['log_link'] = $log_link_path; $response['url'] = $upload_url; } echo wp_json_encode($response); wp_die(); } /** * Checks whether the import function is stopped or the page is refreshed */ public function import_stop_function() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); global $wpdb; $upload_dir = SaveMapping::$smackcsv_instance->create_upload_dir(); /* Gets string 'false' when page is refreshed */ if (sanitize_text_field($_POST['Stop']) == 'false') { $import_txt_path = $upload_dir . 'import_state.txt'; chmod($import_txt_path, 0777); $import_state_arr = array(); $open_file = fopen($import_txt_path, "w"); $import_state_arr = array('import_state' => 'on', 'import_stop' => 'off'); $state_arr = serialize($import_state_arr); fwrite($open_file, $state_arr); fclose($open_file); } wp_die(); } /** * Starts the import process */ public function bulk_import() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); global $wpdb, $core_instance, $uci_woocomm_meta, $uci_woocomm_bundle_meta, $product_attr_instance, $wpmlimp_class; $header_array = []; $upload_dir = SaveMapping::$smackcsv_instance->create_upload_dir(); $hash_key = sanitize_key($_POST['HashKey']); $check = sanitize_text_field($_POST['Check']); $media_type = sanitize_text_field($_POST['MediaType']); $selected_type = sanitize_text_field($_POST['Types']); $page_number = isset($_POST['PageNumber']) ? intval(sanitize_text_field($_POST['PageNumber'])) : 0; $rollback_option = sanitize_text_field($_POST['RollBack']); $check_filter = sanitize_text_field($_POST['mappingFilterCheck']); $this->check_manage_filter = $check_filter == 'false' ? false : true; $unmatched_row_value = get_option('sm_uci_pro_settings'); $unmatched_row = isset($unmatched_row_value['unmatchedrow']) ? $unmatched_row_value['unmatchedrow'] : ''; $helpers_instance = ImportHelpers::getInstance(); $core_instance = CoreFieldsImport::getInstance(); $import_config_instance = ImportConfiguration::getInstance(); $log_manager_instance = LogManager::getInstance(); $file_table_name = $wpdb->prefix . "smackcsv_file_events"; $template_table_name = $wpdb->prefix . "ultimate_csv_importer_mappingtemplate"; $log_table_name = $wpdb->prefix . "import_detail_log"; $response = []; $get_id = $wpdb->get_results("SELECT id , mode ,file_name , total_rows FROM $file_table_name WHERE `hash_key` = '$hash_key'"); $get_mode = $get_id[0]->mode; $total_rows = $get_id[0]->total_rows; $page_number = isset($_POST['PageNumber']) ? intval(sanitize_text_field($_POST['PageNumber'])) : 0; $total_pages = ceil($total_rows / 5); $file_name = $get_id[0]->file_name; $file_extension = pathinfo($file_name, PATHINFO_EXTENSION); $gmode = 'Normal'; if (empty($file_extension)) { $file_extension = 'xml'; } if($file_extension == 'xlsx' || $file_extension == 'xls'){ $file_extension = 'csv'; } $upload_dir = SaveMapping::$smackcsv_instance->create_upload_dir(); $file_size = filesize($upload_dir . $hash_key . '/' . $hash_key); $filesize = $helpers_instance->formatSizeUnits($file_size); update_option('sm_bulk_import_page_number', $page_number); $remain_records = $total_rows - 1; $wpdb->insert($log_table_name, array('file_name' => $file_name, 'hash_key' => $hash_key, 'total_records' => $total_rows, 'filesize' => $filesize, 'processing_records' => 1, 'remaining_records' => $remain_records, 'status' => 'Processing')); $background_values = $wpdb->get_results("SELECT mapping , mapping_filter, module FROM $template_table_name WHERE `eventKey` = '$hash_key' "); foreach ($background_values as $values) { $mapped_fields_values = $values->mapping; $mapping_filter = $values->mapping_filter; $selected_type = $values->module; } $map = unserialize($mapped_fields_values); $this->manage_filter = unserialize($mapping_filter); if ($rollback_option == 'true') { $tables = $import_config_instance->get_rollback_tables($selected_type); $import_config_instance->set_backup_restore($tables, $hash_key, 'backup'); } $addHeader = false; $file_iteration = get_option('sm_bulk_import_free_iteration_limit'); if ($file_extension == 'csv' || $file_extension == 'txt') { if (version_compare(PHP_VERSION, '8.1.0', '<')) { // Only do this if PHP version is less than 8.1.0 if (!ini_get("auto_detect_line_endings")) { ini_set("auto_detect_line_endings", true); } } if (($h = fopen($upload_dir . $hash_key . '/' . $hash_key, "r")) !== FALSE) { $delimiters = array(',', '\t', ';', '|', ':', ' '); $file_path = $upload_dir . $hash_key . '/' . $hash_key; $delimiter = SaveMapping::$validatefile->getFileDelimiter($file_path, 5); $array_index = array_search($delimiter, $delimiters); $line_number = (($file_iteration * $page_number) - $file_iteration) + 1; $limit = ($file_iteration * $page_number); if ($page_number == 1) { $addHeader = true; } $info = []; $i = 0; if ($array_index == 5) { $delimiters[$array_index] = ' '; } if ($delimiter == '\t') { $delimiter = '~'; $temp = $file_path . 'temp'; if (($handles = fopen($temp, 'r')) !== FALSE) { while (($data = fgetcsv($handles, 0, $delimiter)) !== FALSE) { $trimmed_info = array_map('trim', $data); array_push($info, $trimmed_info); if ($i == 0) { $header_array = $info[$i]; $i++; continue; } if ($i >= $line_number && $i <= $limit) { $value_array = $info[$i]; $openAIKeys = array(); $openAIValues = array(); $openAInumberKeys = array(); $openAInumberValues = array(); $flag = false; $map_openAI = false; foreach ($map as $subarray) { foreach ($subarray as $key => $value) { if (strpos($key, '->OPENAIA') !== false) { $map_openAI = 1; break; } } } if ($map_openAI == true) { foreach ($map as $mainKey => $mainValue) { foreach ($mainValue as $subKey => $subValue) { if (substr($subKey, -8) === '->OPENAIA') { $flag = true; $value_header = str_replace("->OPENAIA", "", $subKey); $openAIKeys[] = $value_header; $openAIValues[] = $subValue; } if (substr($subKey, -5) === '->num') { $flag = true; $value_header = str_replace("->num", "", $subKey); $openAInumberKeys[] = $value_header; $openAInumberValues[] = $subValue; } } } $core_instance->generated_content = $flag; $combinedArray = array_combine($openAIKeys, $openAIValues); if (isset($combinedArray['featured_image'])) { $featuredImageValue = $combinedArray['featured_image']; $index = array_search($featuredImageValue, $header_array); if ($index !== false) { if (isset($value_array[$index])) { $resultArray = $value_array[$index]; } else { $resultArray = ''; } } else { $resultArray = ''; } $resultArray = [$mainKey => $resultArray]; foreach ($resultArray as $index => $valueName) { $OpenAIHelper = new OpenAIHelper; $responsevalueArray[] = $OpenAIHelper->generateImage($valueName); } $value = 'featured_image'; $index = array_search($value, $header_array); if ($index !== false) { $value_array[$index] = array_shift($responsevalueArray); } foreach ($responsevalueArray as $value) { $index = array_search($value, $header_array); $value_array[$index] = $value; } unset($combinedArray['featured_image']); } $openAIValues = array_values($combinedArray); $openAIKeys = array_keys($combinedArray); $resultArrays = []; foreach ($openAIValues as $mainKey) { $index = array_search($mainKey, $header_array); $resultArray = []; if ($index !== false) { if (isset($value_array[$index])) { $resultArray = $value_array[$index]; } else { $resultArray = ''; } } else { $resultArray = ''; } $resultArrays[] = [$mainKey => $resultArray]; } $outputArray = array(); foreach ($resultArrays as $key => $resultArray) { $dynamicKey = key($resultArray); $outputArray[$key] = array( $openAInumberValues[$key] => $resultArray[$dynamicKey] ); } $resultArrays = $outputArray; $responsevalueArray = []; foreach ($resultArrays as $index => $valueName) { foreach ($valueName as $val => $word) { $OpenAIHelper = new OpenAIHelper; $responsevalueArray[] = $OpenAIHelper->generateContent($word, $val); } } $core_instance->OPENAIA_response = $responsevalueArray; foreach ($openAIKeys as $value) { $index = array_search($value, $header_array); if ($index !== false) { $value_array[$index] = array_shift($responsevalueArray); } } foreach ($responsevalueArray as $value) { foreach ($openAIKeys as $mainKey) { $index = array_search($mainKey, $header_array); $value_array[$index] = $value; } } } foreach ($map as $group_name => $group_value) { if ($group_name == 'CORE') { $get_arr = $this->main_import_process($map, $header_array, $value_array, $selected_type, $get_mode, $i, $check, $hash_key, $unmatched_row, '', '', $media_type); $post_id = $get_arr['id']; $core_instance->detailed_log = $get_arr['detail_log']; $failed_media_log = $get_arr['failed_media_log']; $core_instance->media_log = $get_arr['media_log']; $media_log = $core_instance->media_log; } } $helpers_instance->get_post_ids($post_id, $hash_key); $remaining_records = $total_rows - $i; $fields = $wpdb->get_results("UPDATE $log_table_name SET processing_records = $i , remaining_records = $remaining_records , status = 'Processing' WHERE hash_key = '$hash_key'"); if ($i == $total_rows) { $fields = $wpdb->get_results("UPDATE $log_table_name SET status = 'Completed' WHERE hash_key = '$hash_key'"); } if (count($core_instance->detailed_log) > $file_iteration) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); $log_manager_instance->manage_records($hash_key, $selected_type, $file_name, $total_rows); $addHeader = false; $core_instance->detailed_log = []; $core_instance->media_log = []; $failed_media_log = []; } } if ($i > $limit) { break; } $i++; } } } else { while (($data = fgetcsv($h, 0, $delimiters[$array_index])) !== FALSE) { $trimmed_info = array_map('trim', $data); array_push($info, $trimmed_info); if ($i == 0) { $header_array = $info[$i]; $i++; continue; } if ($i >= $line_number && $i <= $limit) { $value_array = $info[$i]; $openAIKeys = array(); $openAIValues = array(); $openAInumberKeys = array(); $openAInumberValues = array(); $flag = false; $map_openAI = false; foreach ($map as $subarray) { foreach ($subarray as $key => $value) { if (strpos($key, '->OPENAIA') !== false) { $map_openAI = 1; break; } } } if ($map_openAI == true) { foreach ($map as $mainKey => $mainValue) { foreach ($mainValue as $subKey => $subValue) { if (substr($subKey, -8) === '->OPENAIA') { $flag = true; $value_header = str_replace("->OPENAIA", "", $subKey); $openAIKeys[] = $value_header; $openAIValues[] = $subValue; } if (substr($subKey, -5) === '->num') { $flag = true; $value_header = str_replace("->num", "", $subKey); $openAInumberKeys[] = $value_header; $openAInumberValues[] = $subValue; } } } $core_instance->generated_content = $flag; $combinedArray = array_combine($openAIKeys, $openAIValues); if (isset($combinedArray['featured_image'])) { $featuredImageValue = $combinedArray['featured_image']; $index = array_search($featuredImageValue, $header_array); if ($index !== false) { if (isset($value_array[$index])) { $resultArray = $value_array[$index]; } else { $resultArray = ''; } } else { $resultArray = ''; } $resultArray = [$mainKey => $resultArray]; foreach ($resultArray as $index => $valueName) { $OpenAIHelper = new OpenAIHelper; $responsevalueArray[] = $OpenAIHelper->generateImage($valueName); } $value = 'featured_image'; $index = array_search($value, $header_array); if ($index !== false) { $value_array[$index] = array_shift($responsevalueArray); } foreach ($responsevalueArray as $value) { $index = array_search($value, $header_array); $value_array[$index] = $value; } unset($combinedArray['featured_image']); } $openAIValues = array_values($combinedArray); $openAIKeys = array_keys($combinedArray); $resultArrays = []; foreach ($openAIValues as $mainKey) { $index = array_search($mainKey, $header_array); $resultArray = []; if ($index !== false) { if (isset($value_array[$index])) { $resultArray = $value_array[$index]; } else { $resultArray = ''; } } else { $resultArray = ''; } $resultArrays[] = [$mainKey => $resultArray]; } $outputArray = array(); foreach ($resultArrays as $key => $resultArray) { $dynamicKey = key($resultArray); $outputArray[$key] = array( $openAInumberValues[$key] => $resultArray[$dynamicKey] ); } $resultArrays = $outputArray; $responsevalueArray = []; foreach ($resultArrays as $index => $valueName) { foreach ($valueName as $val => $word) { $OpenAIHelper = new OpenAIHelper; $responsevalueArray[] = $OpenAIHelper->generateContent($word, $val); } } $core_instance->OPENAIA_response = $responsevalueArray; foreach ($openAIKeys as $value) { $index = array_search($value, $header_array); if ($index !== false) { $value_array[$index] = array_shift($responsevalueArray); } } foreach ($responsevalueArray as $value) { foreach ($openAIKeys as $mainKey) { $index = array_search($mainKey, $header_array); $value_array[$index] = $value; } } } foreach ($map as $group_name => $group_value) { if ($group_name == 'CORE') { $get_arr = $this->main_import_process($map, $header_array, $value_array, $selected_type, $get_mode, $i, $check, $hash_key, $unmatched_row, '', '', $media_type); $post_id = $get_arr['id']; $core_instance->detailed_log = $get_arr['detail_log']; $failed_media_log = $get_arr['failed_media_log']; $core_instance->media_log = $get_arr['media_log']; $media_log = $core_instance->media_log; } } $helpers_instance->get_post_ids($post_id, $hash_key); $remaining_records = $total_rows - $i; $fields = $wpdb->get_results("UPDATE $log_table_name SET processing_records = $i , remaining_records = $remaining_records , status = 'Processing' WHERE hash_key = '$hash_key'"); if ($i == $total_rows) { $fields = $wpdb->get_results("UPDATE $log_table_name SET status = 'Completed' WHERE hash_key = '$hash_key'"); } if (count($core_instance->detailed_log) > $file_iteration) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); $addHeader = false; $core_instance->detailed_log = []; $failed_media_log = []; $media_log = []; } } if ($i > $limit) { break; } $i++; } } $running = $wpdb->get_row("SELECT running FROM $log_table_name WHERE hash_key = '$hash_key' "); $check_pause = $running->running; if ($check_pause == 0) { $response['success'] = false; $response['pause_message'] = 'Record Paused'; echo wp_json_encode($response); wp_die(); } fclose($h); } } if($file_extension == 'tsv'){ if (version_compare(PHP_VERSION, '8.1.0', '<')) { // Only do this if PHP version is less than 8.1.0 if (!ini_get("auto_detect_line_endings")) { ini_set("auto_detect_line_endings", true); } } if (($h = fopen($upload_dir . $hash_key . '/' . $hash_key, "r")) !== FALSE) { $file_path = $upload_dir . $hash_key . '/' . $hash_key; $delimiter = SaveMapping::$validatefile->getFileDelimiter($file_path, 5); $file_iteration = get_option('sm_bulk_import_free_iteration_limit'); $line_number = (($file_iteration * $page_number) - $file_iteration) + 1; $limit = ($file_iteration * $page_number); if ($page_number == 1) { $addHeader = true; } $info = []; $i = 0; while (($data = fgetcsv($h, 0, "\t")) !== FALSE) { $trimmed_info = array_map('trim', $data); array_push($info, $trimmed_info); if ($i == 0) { $header_array = $info[$i]; $i++; continue; } if ($i >= $line_number && $i <= $limit) { $value_array = $info[$i]; $openAIKeys = array(); $openAIValues = array(); $openAInumberKeys = array(); $openAInumberValues = array(); $flag = false; $map_openAI = false; foreach ($map as $subarray) { foreach ($subarray as $key => $value) { if (strpos($key, '->OPENAIA') !== false) { $map_openAI = 1; break; } } } if ($map_openAI == true) { foreach ($map as $mainKey => $mainValue) { foreach ($mainValue as $subKey => $subValue) { if (substr($subKey, -8) === '->OPENAIA') { $flag = true; $value_header = str_replace("->OPENAIA", "", $subKey); $openAIKeys[] = $value_header; $openAIValues[] = $subValue; } if (substr($subKey, -5) === '->num') { $flag = true; $value_header = str_replace("->num", "", $subKey); $openAInumberKeys[] = $value_header; $openAInumberValues[] = $subValue; } } } $core_instance->generated_content = $flag; $combinedArray = array_combine($openAIKeys, $openAIValues); if (isset($combinedArray['featured_image'])) { $featuredImageValue = $combinedArray['featured_image']; $index = array_search($featuredImageValue, $header_array); if ($index !== false) { if (isset($value_array[$index])) { $resultArray = $value_array[$index]; } else { $resultArray = ''; } } else { $resultArray = ''; } $resultArray = [$mainKey => $resultArray]; foreach ($resultArray as $index => $valueName) { $OpenAIHelper = new OpenAIHelper; $responsevalueArray[] = $OpenAIHelper->generateImage($valueName); } $value = 'featured_image'; $index = array_search($value, $header_array); if ($index !== false) { $value_array[$index] = array_shift($responsevalueArray); } foreach ($responsevalueArray as $value) { $index = array_search($value, $header_array); $value_array[$index] = $value; } unset($combinedArray['featured_image']); } $openAIValues = array_values($combinedArray); $openAIKeys = array_keys($combinedArray); $resultArrays = []; foreach ($openAIValues as $mainKey) { $index = array_search($mainKey, $header_array); $resultArray = []; if ($index !== false) { if (isset($value_array[$index])) { $resultArray = $value_array[$index]; } else { $resultArray = ''; } } else { $resultArray = ''; } $resultArrays[] = [$mainKey => $resultArray]; } $outputArray = array(); foreach ($resultArrays as $key => $resultArray) { $dynamicKey = key($resultArray); $outputArray[$key] = array( $openAInumberValues[$key] => $resultArray[$dynamicKey] ); } $resultArrays = $outputArray; $responsevalueArray = []; foreach ($resultArrays as $index => $valueName) { foreach ($valueName as $val => $word) { $OpenAIHelper = new OpenAIHelper; $responsevalueArray[] = $OpenAIHelper->generateContent($word, $val); } } $core_instance->OPENAIA_response = $responsevalueArray; foreach ($openAIKeys as $value) { $index = array_search($value, $header_array); if ($index !== false) { $value_array[$index] = array_shift($responsevalueArray); } } foreach ($responsevalueArray as $value) { foreach ($openAIKeys as $mainKey) { $index = array_search($mainKey, $header_array); $value_array[$index] = $value; } } } foreach ($map as $group_name => $group_value) { if ($group_name == 'CORE') { $get_arr = $this->main_import_process($map, $header_array, $value_array, $selected_type, $get_mode, $i, $check, $hash_key, $unmatched_row, '', '', $media_type); $post_id = $get_arr['id']; $core_instance->detailed_log = $get_arr['detail_log']; $failed_media_log = $get_arr['failed_media_log']; $core_instance->media_log = $get_arr['media_log']; $media_log = $core_instance->media_log; } } $helpers_instance->get_post_ids($post_id, $hash_key); $remaining_records = $total_rows - $i; $fields = $wpdb->get_results("UPDATE $log_table_name SET processing_records = $i , remaining_records = $remaining_records , status = 'Processing' WHERE hash_key = '$hash_key'"); if ($i == $total_rows) { $fields = $wpdb->get_results("UPDATE $log_table_name SET status = 'Completed' WHERE hash_key = '$hash_key'"); } if (count($core_instance->detailed_log) > $file_iteration) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); $addHeader = false; $core_instance->detailed_log = []; $failed_media_log = []; $media_log = []; } } if ($i > $limit) { break; } $i++; } $running = $wpdb->get_row("SELECT running FROM $log_table_name WHERE hash_key = '$hash_key' "); $check_pause = $running->running; if ($check_pause == 0) { $response['success'] = false; $response['pause_message'] = 'Record Paused'; echo wp_json_encode($response); wp_die(); } fclose($h); } } if ($file_extension == 'xml') { $path = $upload_dir . $hash_key . '/' . $hash_key; // $lined_number = ((5 * $page_number) - 5); // $limit = (5 * $page_number) - 1; $lined_number = ($file_iteration * ($page_number - 1)); $limit = min(($file_iteration * $page_number) - 1, $total_rows - 1); // Ensure limit does not exceed total rows $header_array = []; $value_array = []; $i = 0; $info = []; $addHeader = false; for ($line_number = 0; $line_number < $total_rows; $line_number++) { if ($page_number == 1 && $line_number == 0) { $addHeader = true; } if ($i >= $lined_number && $i <= $limit) { $xml_class = new XmlHandler(); $parse_xml = $xml_class->parse_xmls($hash_key, $i); $j = 0; foreach ($parse_xml as $xml_key => $xml_value) { if (is_array($xml_value)) { foreach ($xml_value as $e_key => $e_value) { $header_array['header'][$j] = $e_value['name']; $value_array['value'][$j] = $e_value['value']; $j++; } } } $xml = simplexml_load_file($path); foreach ($xml->children() as $child) { $tag = $child->getName(); } $total_xml_count = $this->get_xml_count($path, $tag); if ($total_xml_count == 0 || $tag == 'channel') { $sub_child = $this->get_child($child, $path); $tag = $sub_child['child_name']; $total_xml_count = $sub_child['total_count']; } $doc = new \DOMDocument(); $doc->load($path); foreach ($map as $field => $value) { foreach ($value as $head => $val) { if (preg_match('/{/', $val) && preg_match('/}/', $val)) { preg_match_all('/{(.*?)}/', $val, $matches); $line_numbers = $i + 1; $val = preg_replace("{" . "(" . $tag . "[+[0-9]+])" . "}", $tag . "[" . $line_numbers . "]", $val); for ($k = 0; $k < count($matches[1]); $k++) { $matches[1][$k] = preg_replace("(" . $tag . "[+[0-9]+])", $tag . "[" . $line_numbers . "]", $matches[1][$k]); $value = $this->parse_element($doc, $matches[1][$k], $i); $search = '{' . $matches[1][$k] . '}'; $val = str_replace($search, $value, $val); } $mapping[$field][$head] = $val; } else { $mapping[$field][$head] = $val; } } } array_push($info, $value_array['value']); $get_arr = $this->main_import_process($mapping, $header_array['header'], $value_array['value'], $selected_type, $get_mode, $i, $check, $hash_key, $unmatched_row, '', '', ''); $post_id = $get_arr['id']; $core_instance->detailed_log = $get_arr['detail_log']; $failed_media_log = $get_arr['failed_media_log']; $media_log = $get_arr['media_log']; $helpers_instance->get_post_ids($post_id, $hash_key); $line_numbers = $i + 1; //$remaining_records = $total_rows - $line_numbers; $remaining_records = max($total_rows - $line_numbers, 0); $wpdb->get_results("UPDATE $log_table_name SET processing_records = $line_numbers, remaining_records = $remaining_records, status = 'Processing' WHERE hash_key = '$hash_key'"); if ($i == $total_rows - 1) { $wpdb->get_results("UPDATE $log_table_name SET status = 'Completed' WHERE hash_key = '$hash_key'"); } if (is_countable($core_instance->detailed_log) && count($core_instance->detailed_log) > $file_iteration ) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); $log_manager_instance->manage_records($hash_key, $selected_type, $file_name, $total_rows); $addHeader = false; $core_instance->detailed_log = []; $failed_media_log = []; $media_log = []; } } if ($i > $limit) { break; } $i++; } $running = $wpdb->get_row("SELECT running FROM $log_table_name WHERE hash_key = '$hash_key' "); $check_pause = $running->running; if ($check_pause == 0) { $response['success'] = false; $response['pause_message'] = 'Record Paused'; echo wp_json_encode($response); wp_die(); } } if (($unmatched_row == 'true') && ($page_number >= $total_pages)) { $post_entries_table = $wpdb->prefix . "ultimate_post_entries"; $post_entries_value = $wpdb->get_results("select ID from {$wpdb->prefix}ultimate_post_entries ", ARRAY_A); $type = $wpdb->get_var("select type from {$wpdb->prefix}ultimate_post_entries "); if (!empty($post_entries_value)) { foreach ($post_entries_value as $post_entries) { $entries_array[] = $post_entries['ID']; } $unmatched_object = new ExtensionHandler; $import_type = $unmatched_object->import_type_as($selected_type); $import_type_value = $unmatched_object->import_post_types($import_type); $import_name_as = $unmatched_object->import_name_as($import_type); if ($type == 'cct') { $jettable = $wpdb->prefix . 'jet_cct_' . $import_type; $get_total_row_count = $wpdb->get_col("SELECT DISTINCT _ID FROM $jettable WHERE cct_status != 'trash' "); $unmatched_id = array_diff($get_total_row_count, $test); foreach ($unmatched_id as $keys => $values) { $wpdb->get_results("DELETE FROM $jettable WHERE `_ID`='$values' "); } }else{ if ($import_type_value == 'category' || $import_type_value == 'post_tag' || $import_type_value == 'product_cat' || $import_type_value == 'product_tag') { $get_total_row_count = $wpdb->get_col("SELECT term_id FROM {$wpdb->prefix}term_taxonomy WHERE taxonomy = '$import_type_value'"); if (is_array($entries_array)) { $unmatched_id = array_diff($get_total_row_count, $entries_array); } foreach ($unmatched_id as $keys => $values) { $wpdb->get_results("DELETE FROM {$wpdb->prefix}terms WHERE `term_id` = '$values' "); } } if ($import_type_value == 'post' || $import_type_value == 'product' || $import_type_value == 'page' || $import_name_as == 'CustomPosts') { $get_total_row_count = $wpdb->get_col("SELECT DISTINCT ID FROM {$wpdb->prefix}posts WHERE post_type = '{$import_type_value}' AND post_status != 'trash' "); if (is_array($entries_array)) { $unmatched_id = array_diff($get_total_row_count, $entries_array); } foreach ($unmatched_id as $keys => $values) { $wpdb->get_results("DELETE FROM {$wpdb->prefix}posts WHERE `ID` = '$values' "); } } } $wpdb->get_results("DELETE FROM {$wpdb->prefix}ultimate_post_entries"); } } if (!empty($core_instance->detailed_log) && is_countable($core_instance->detailed_log)) { if (count($core_instance->detailed_log) > 0) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); } } $log_manager_instance->manage_records($hash_key, $selected_type, $file_name, $total_rows); $count = count($info); for ($i = 1; $i <= $count; $i++) { if (isset($info[$i]) && (is_array($info)) && (is_array($info[$i]))) { foreach ($info[$i] as $key => $value) { if (preg_match("/image_schedule(); // $image = $wpdb->get_results("select * from {$wpdb->prefix}ultimate_csv_importer_shortcode_manager where hash_key = '{$hash_key}'"); // if (!empty($image)) { // SaveMapping::$smackcsv_instance->delete_image_schedule(); // } } } } } // print_r($media_log); // exit(); if (!empty($media_log[$line_number]) && count($media_log) > 0) { global $wpdb; $table_name = $wpdb->prefix . 'failed_media'; $data_to_insert = array(); foreach ($media_log as $media_item) { $media_id = isset($media_item['media_id']) ? $media_item['media_id'] : null; $post_title = isset($media_item['title']) ? $media_item['title'] : null; $status = isset($media_item['status']) ? $media_item['status'] : null; $file_name = isset($media_item['file_name']) ? $media_item['file_name'] : null; $file_url = isset($media_item['file_url']) ? $media_item['file_url'] : null; $actual_url = isset($media_item['actual_url']) ? $media_item['actual_url'] : null; $caption = isset($media_item['caption']) ? $media_item['caption'] : null; $alt_text = isset($media_item['alt_text']) ? $media_item['alt_text'] : null; $description = isset($media_item['description']) ? $media_item['description'] : null; $data_to_insert[] = $wpdb->prepare( "(%s, %s, %d, %s, %s, %s, %s, %s, %s, %s)", $hash_key, $post_title, $media_id, $status, $file_url, $file_name, $actual_url, $caption, $alt_text, $description ); } if (!empty($data_to_insert)) { $query = "INSERT INTO $table_name (event_id, title, media_id, status, file_url, file_name, actual_url, caption, alt_text, description) VALUES " . implode(", ", $data_to_insert); $wpdb->query($query); } } $log_value = $log_manager_instance->displayLogValue(); // print_r($log_value); // exit(); //for log global $wpdb; $table_name = $wpdb->prefix . 'summary'; // data for batch insert $data_to_insert = array(); foreach ($log_value as $item) { $inserted_id = isset($item['id']) ? $item['id'] : null; $post_title = isset($item['post_title']) ? $item['post_title'] : null; $post_type = isset($item['post_type']) ? $item['post_type'] : null; $status = isset($item['Status']) ? $item['Status'] : null; $total_images = isset($item['total_image']) ? $item['total_image'] : 0; $failed_images = isset($item['failed_image_count']) ? $item['failed_image_count'] : 0; // $categorie = ($post_type == 'Categories') ? 1 : 0; if ($post_type == 'Categories') { $categorie = 1; } elseif ($post_type == 'Tags') { $categorie = 2; } elseif ($post_type == 'users') { $categorie = 3; } elseif ($post_type == 'Comment' || $post_type == 'WooCommerce Reviews') { $categorie = 4; } else { $categorie = 0; } $data_to_insert[] = $wpdb->prepare( "(%d, %s, %s, %s, %s, %d, %d, %d)", $inserted_id, $hash_key, $post_title, $post_type, $status, $categorie, $total_images, $failed_images ); } // Batch insert for boosting speed if (!empty($data_to_insert)) { $query = "INSERT INTO $table_name (post_id, event_id, post_title, post_type, status, is_category, associated_media, failed_media) VALUES " . implode(", ", $data_to_insert); $wpdb->query($query); } //for failed media log global $wpdb; $table_name = $wpdb->prefix . 'failed_media'; if (!empty($failed_media_log)) { // Data for batch insert $data_to_insert = array(); foreach ($failed_media_log as $item) { $inserted_id = $item['post_id']; $post_title = $item['post_title']; $media_id = $item['media_id']; $image_url = $item['actual_url']; $status = 'failed'; // Correct the number of placeholders and arguments $data_to_insert[] = $wpdb->prepare( "(%d, %s, %s, %d, %s , %s)", $inserted_id, $hash_key, $post_title, $media_id, $image_url, $status ); } // Batch insert for boosting speed if (!empty($data_to_insert)) { $query = "INSERT INTO $table_name (post_id, event_id, title, media_id, actual_url,status) VALUES " . implode(", ", $data_to_insert); $wpdb->query($query); } } // $download_log_url = $log_manager_instance->Insert_log_details($log_value,$line_number,$hash_key); // $failed_media_link = $log_manager_instance->failedMediaExport($failed_media_log,$line_number,$hash_key); // if (!empty($failed_media_log) && is_array($failed_media_log)) { // $response['media-progress'] = true; // } else { // $response['media-progress'] = false; // } // $upload = wp_upload_dir(); // $upload_base_url = $upload['baseurl']; $response['success'] = true; $response['log_value'] = $log_value; $response['media_link'] = $media_link ?? null; $response['download_log_link'] = $download_log_url ?? null; if ($rollback_option == 'true') { $response['rollback'] = true; } $total_records = $wpdb->get_results("SELECT status FROM $log_table_name WHERE hash_key = '$hash_key' ", ARRAY_A); if ($total_records[0]['status'] == 'Completed') { if (get_option('failed_line_number')) { delete_option('failed_line_number'); } if (get_option('total_attachment_ids')) { delete_option('total_attachment_ids'); } if (get_option('failed_attachment_ids')) { delete_option('failed_attachment_ids'); } } echo wp_json_encode($response); wp_die(); } /** * Starts the import process */ public function background_starts_function() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); $hash_key = sanitize_key($_POST['HashKey']); $check = sanitize_text_field($_POST['Check']); $unmatched_row_value = get_option('sm_uci_pro_settings'); $unmatched_row = $unmatched_row_value['unmatchedrow']; $file_iteration = get_option('sm_bulk_import_free_iteration_limit'); global $wpdb; //first check then set on $upload_dir = SaveMapping::$smackcsv_instance->create_upload_dir(); $import_txt_path = $upload_dir . 'import_state.txt'; chmod($import_txt_path, 0777); $import_state_arr = array(); $open_file = fopen($import_txt_path, "w"); $import_state_arr = array('import_state' => 'on', 'import_stop' => 'on'); $state_arr = serialize($import_state_arr); fwrite($open_file, $state_arr); fclose($open_file); $helpers_instance = ImportHelpers::getInstance(); $core_instance = CoreFieldsImport::getInstance(); $import_config_instance = ImportConfiguration::getInstance(); $log_manager_instance = LogManager::getInstance(); global $core_instance; global $uci_woocomm_meta, $uci_woocomm_bundle_meta, $product_attr_instance, $wpmlimp_class; $file_table_name = $wpdb->prefix . "smackcsv_file_events"; $template_table_name = $wpdb->prefix . "ultimate_csv_importer_mappingtemplate"; $log_table_name = $wpdb->prefix . "import_detail_log"; $response = []; $background_values = $wpdb->get_results("SELECT mapping , module FROM $template_table_name WHERE `eventKey` = '$hash_key' "); foreach ($background_values as $values) { $mapped_fields_values = $values->mapping; $selected_type = $values->module; } $get_id = $wpdb->get_results("SELECT id , mode ,file_name , total_rows FROM $file_table_name WHERE `hash_key` = '$hash_key'"); $get_mode = $get_id[0]->mode; $total_rows = $get_id[0]->total_rows; $file_name = $get_id[0]->file_name; $file_extension = pathinfo($file_name, PATHINFO_EXTENSION); if (empty($file_extension)) { $file_extension = 'xml'; } if($file_extension == 'xlsx' || $file_extension == 'xls'){ $file_extension = 'csv'; } $file_size = filesize($upload_dir . $hash_key . '/' . $hash_key); $filesize = $helpers_instance->formatSizeUnits($file_size); $remain_records = $total_rows - 1; $fields = $wpdb->insert($log_table_name, array('file_name' => $file_name, 'hash_key' => $hash_key, 'total_records' => $total_rows, 'filesize' => $filesize, 'processing_records' => 1, 'remaining_records' => $remain_records)); $map = unserialize($mapped_fields_values); if ($file_extension == 'csv' || $file_extension == 'txt') { if (!ini_get("auto_detect_line_endings")) { ini_set("auto_detect_line_endings", true); } $info = []; if (($h = fopen($upload_dir . $hash_key . '/' . $hash_key, "r")) !== FALSE) { // Convert each line into the local $data variable $line_number = 0; $header_array = []; $value_array = []; $addHeader = true; $delimiters = array(',', '\t', ';', '|', ':', ' '); $file_path = $upload_dir . $hash_key . '/' . $hash_key; $delimiter = SaveMapping::$validatefile->getFileDelimiter($file_path, 5); $array_index = array_search($delimiter, $delimiters); if ($array_index == 5) { $delimiters[$array_index] = ' '; } while (($data = fgetcsv($h, 0, $delimiters[$array_index])) !== FALSE) { // Read the data from a single line array_push($info, $data); if ($line_number == 0) { $header_array = $info[$line_number]; } else { $value_array = $info[$line_number]; $get_arr = $this->main_import_process($map, $header_array, $value_array, $selected_type, $get_mode, $line_number, $check, $hash_key, $unmatched_row, '', '', ''); $post_id = $get_arr['id']; $core_instance->detailed_log = $get_arr['detail_log']; $media_log = $get_arr['media_log']; $failed_media_log = $get_arr['failed_media_log']; $helpers_instance->get_post_ids($post_id, $hash_key); $import_table_name = $wpdb->prefix . "import_postID"; $medias_fields = $wpdb->get_results("INSERT INTO $import_table_name (post_id , line_number) VALUES ($post_id , $line_number )"); $remaining_records = $total_rows - $line_number; $fields = $wpdb->get_results("UPDATE $log_table_name SET processing_records = $line_number , remaining_records = $remaining_records , status = 'Processing' WHERE hash_key = '$hash_key'"); if ($line_number == $total_rows) { $fields = $wpdb->get_results("UPDATE $log_table_name SET status = 'Completed' WHERE hash_key = '$hash_key'"); } if (count($core_instance->detailed_log) > $file_iteration) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); $addHeader = false; $core_instance->detailed_log = []; $failed_media_log = []; $media_log = []; } } // get the pause or resume state $open_txt = fopen($import_txt_path, "r"); $read_text_ser = fread($open_txt, filesize($import_txt_path)); $read_state = unserialize($read_text_ser); fclose($open_txt); if ($read_state['import_stop'] == 'off') { return; } while ($read_state['import_state'] == 'off') { $open_txts = fopen($import_txt_path, "r"); $read_text_sers = fread($open_txts, filesize($import_txt_path)); $read_states = unserialize($read_text_sers); fclose($open_txts); if ($read_states['import_state'] == 'on') { break; } if ($read_states['import_stop'] == 'off') { return; } } $line_number++; } fclose($h); } } if($file_extension == 'tsv'){ if (!ini_get("auto_detect_line_endings")) { ini_set("auto_detect_line_endings", true); } $info = []; if (($h = fopen($upload_dir . $hash_key . '/' . $hash_key, "r")) !== FALSE) { // Convert each line into the local $data variable $line_number = 0; $header_array = []; $value_array = []; $addHeader = true; $file_path = $upload_dir . $hash_key . '/' . $hash_key; $delimiter = SaveMapping::$validatefile->getFileDelimiter($file_path, 5); while (($data = fgetcsv($h, 0, "\t")) !== FALSE) { // Read the data from a single line array_push($info, $data); if ($line_number == 0) { $header_array = $info[$line_number]; } else { $value_array = $info[$line_number]; $get_arr = $this->main_import_process($map, $header_array, $value_array, $selected_type, $get_mode, $line_number, $check, $hash_key, $unmatched_row, '', '', ''); $post_id = $get_arr['id']; $core_instance->detailed_log = $get_arr['detail_log']; $media_log = $get_arr['media_log']; $failed_media_log = $get_arr['failed_media_log']; $helpers_instance->get_post_ids($post_id, $hash_key); $import_table_name = $wpdb->prefix . "import_postID"; $medias_fields = $wpdb->get_results("INSERT INTO $import_table_name (post_id , line_number) VALUES ($post_id , $line_number )"); $remaining_records = $total_rows - $line_number; $fields = $wpdb->get_results("UPDATE $log_table_name SET processing_records = $line_number , remaining_records = $remaining_records , status = 'Processing' WHERE hash_key = '$hash_key'"); if ($line_number == $total_rows) { $fields = $wpdb->get_results("UPDATE $log_table_name SET status = 'Completed' WHERE hash_key = '$hash_key'"); } if (count($core_instance->detailed_log) > $file_iteration) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); $addHeader = false; $core_instance->detailed_log = []; $failed_media_log = []; $media_log = []; } } // get the pause or resume state $open_txt = fopen($import_txt_path, "r"); $read_text_ser = fread($open_txt, filesize($import_txt_path)); $read_state = unserialize($read_text_ser); fclose($open_txt); if ($read_state['import_stop'] == 'off') { return; } while ($read_state['import_state'] == 'off') { $open_txts = fopen($import_txt_path, "r"); $read_text_sers = fread($open_txts, filesize($import_txt_path)); $read_states = unserialize($read_text_sers); fclose($open_txts); if ($read_states['import_state'] == 'on') { break; } if ($read_states['import_stop'] == 'off') { return; } } $line_number++; } fclose($h); } } if ($file_extension == 'xml') { $path = $upload_dir . $hash_key . '/' . $hash_key; $xml_instance = XmlHandler::getInstance(); $line_number = 0; $header_array = []; $value_array = []; $addHeader = true; for ($line_number = 0; $line_number < $total_rows; $line_number++) { $xml_class = new XmlHandler(); $parse_xml = $xml_class->parse_xmls($hash_key, $line_number); $i = 0; foreach ($parse_xml as $xml_key => $xml_value) { if (is_array($xml_value)) { foreach ($xml_value as $e_key => $e_value) { $header_array['header'][$i] = $e_value['name']; $value_array['value'][$i] = $e_value['value']; $i++; } } } $xml = simplexml_load_file($path); foreach ($xml->children() as $child) { $tag = $child->getName(); } $total_xml_count = $this->get_xml_count($path, $tag); if ($total_xml_count == 0 || $tag == 'channel') { $sub_child = $this->get_child($child, $path); $tag = $sub_child['child_name']; $total_xml_count = $sub_child['total_count']; } $doc = new \DOMDocument(); $doc->load($path); foreach ($map as $field => $value) { foreach ($value as $head => $val) { if (preg_match('/{/', $val) && preg_match('/}/', $val)) { preg_match_all('/{(.*?)}/', $val, $matches); $line_numbers = $line_number + 1; $val = preg_replace("{" . "(" . $tag . "[+[0-9]+])" . "}", $tag . "[" . $line_numbers . "]", $val); for ($i = 0; $i < count($matches[1]); $i++) { $matches[1][$i] = preg_replace("(" . $tag . "[+[0-9]+])", $tag . "[" . $line_numbers . "]", $matches[1][$i]); $value = $this->parse_element($doc, $matches[1][$i], $line_number); $search = '{' . $matches[1][$i] . '}'; $val = str_replace($search, $value, $val); } $mapping[$field][$head] = $val; } else { $mapping[$field][$head] = $val; } } } $get_arr = $this->main_import_process($mapping, $header_array['header'], $value_array['value'], $selected_type, $get_mode, $line_number, $check, $hash_key, $unmatched_row, '', '', ''); $post_id = $get_arr['id']; $core_instance->detailed_log = $get_arr['detail_log']; $media_log = $get_arr['media_log']; $failed_media_log = $get_arr['failed_media_log']; $helpers_instance->get_post_ids($post_id, $hash_key); $line_numbers = $line_number + 1; $remaining_records = $total_rows - $line_numbers; $fields = $wpdb->get_results("UPDATE $log_table_name SET processing_records = $line_number + 1 , remaining_records = $remaining_records, status = 'Processing' WHERE hash_key = '$hash_key'"); if ($line_number == $total_rows - 1) { $fields = $wpdb->get_results("UPDATE $log_table_name SET status = 'Completed' WHERE hash_key = '$hash_key'"); } if (count($core_instance->detailed_log) > $file_iteration) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $line_number); $addHeader = false; $core_instance->detailed_log = []; $failed_media_log = []; $media_log = []; } $open_txt = fopen($import_txt_path, "r"); $read_text_ser = fread($open_txt, filesize($import_txt_path)); $read_state = unserialize($read_text_ser); fclose($open_txt); if ($read_state['import_stop'] == 'off') { return; } while ($read_state['import_state'] == 'off') { $open_txts = fopen($import_txt_path, "r"); $read_text_sers = fread($open_txts, filesize($import_txt_path)); $read_states = unserialize($read_text_sers); fclose($open_txts); if ($read_states['import_state'] == 'on') { break; } if ($read_states['import_stop'] == 'off') { return; } } } } if (!empty($core_instance->detailed_log) && is_countable($core_instance->detailed_log)) { if (count($core_instance->detailed_log) > 0) { $log_manager_instance->get_event_log($hash_key, $file_name, $file_extension, $get_mode, $total_rows, $selected_type, $core_instance->detailed_log, $addHeader); } } $log_manager_instance->manage_records($hash_key, $selected_type, $file_name, $total_rows); $count = count($info); for ($i = 1; $i <= $count; $i++) { if (is_array($info)) { foreach ($info[$i] as $key => $value) { if (preg_match("/image_schedule(); // $image = $wpdb->get_results("select * from {$wpdb->prefix}ultimate_csv_importer_shortcode_manager where hash_key = '{$hash_key}'"); // if (!empty($image)) { // SaveMapping::$smackcsv_instance->delete_image_schedule(); // } } } } } $upload = wp_upload_dir(); $upload_base_url = $upload['baseurl']; $upload_url = $upload_base_url . '/smack_uci_uploads/imports/'; $response['success'] = true; $result['url'] = $upload_url; unlink($import_txt_path); echo wp_json_encode($response); wp_die(); } public function get_child($child, $path) { foreach ($child->children() as $sub_child) { $sub_child_name = $sub_child->getName(); } $total_xml_count = $this->get_xml_count($path, $sub_child_name); if ($total_xml_count == 0 || $sub_child_name == 'channel') { $this->get_child($sub_child, $path); } else { $result['child_name'] = $sub_child_name; $result['total_count'] = $total_xml_count; return $result; } } public function get_xml_count($eventFile, $child_name) { $doc = new \DOMDocument(); $doc->load($eventFile); $nodes = $doc->getElementsByTagName($child_name); $total_row_count = $nodes->length; return $total_row_count; } public function parse_element($xml, $query) { $query = strip_tags($query); $xpath = new \DOMXPath($xml); $entries = $xpath->query($query); $content = $entries->item(0)->textContent; return $content; } public function manage_filteration($manage_filter, $header_array, $value_array, $core_instance, $line_number, $hash_key) { global $wpdb; $helpers_instance = ImportHelpers::getInstance(); $log_table_name = $wpdb->prefix . "import_detail_log"; $unikey_name = 'hash_key'; $unikey_value = $hash_key; $updated_row_counts = $helpers_instance->update_count($unikey_value, $unikey_name); $skipped_count = $updated_row_counts['skipped']; $conditions = []; foreach ($manage_filter as $filter) { $element = $filter['element']; $rule = strtolower(trim($filter['rule'])); $value = trim($filter['value']); $condition = isset($filter['condition']) ? strtoupper(trim($filter['condition'])) : ''; $key = array_search($element, $header_array); if ($key === false) continue; $actual_value = trim($value_array[$key]); switch ($rule) { case 'equals': $match = $actual_value == $value; break; case 'not_equals': $match = $actual_value != $value; break; case 'greater_than': $match = is_numeric($actual_value) && is_numeric($value) && $actual_value > $value; break; case 'less_than': $match = is_numeric($actual_value) && is_numeric($value) && $actual_value < $value; break; case 'equals_or_greater_than': $match = is_numeric($actual_value) && is_numeric($value) && $actual_value >= $value; break; case 'equals_or_less_than': $match = is_numeric($actual_value) && is_numeric($value) && $actual_value <= $value; break; case 'is_empty': $match = empty($actual_value); break; case 'is_not_empty': $match = !empty($actual_value); break; case 'contains': $match = str_contains($actual_value, $value); break; case 'not_contains': $match = !str_contains($actual_value, $value); break; default: $match = false; } $conditions[] = [ "match" => (bool) $match, "condition" => $condition ]; } if (empty($conditions)) { return; } // First, evaluate AND conditions $filtered_conditions = [$conditions[0]['match']]; for ($i = 0; $i < count($conditions) - 1; $i++) { if ($conditions[$i]['condition'] === 'AND') { $filtered_conditions[count($filtered_conditions) - 1] &= $conditions[$i + 1]['match']; } else { $filtered_conditions[] = $conditions[$i + 1]['match']; } } // Then evaluate OR conditions $result = false; foreach ($filtered_conditions as $value) { $result |= $value; } if (!$result) { $core_instance->detailed_log[$line_number] = [ 'Message' => "Skipped: Data does not match filter conditions.", 'state' => 'Skipped' ]; $wpdb->query($wpdb->prepare("UPDATE $log_table_name SET skipped = %d WHERE $unikey_name = %s", $skipped_count, $unikey_value)); } } public function main_import_process($map, $header_array, $value_array, $selected_type, $get_mode, $line_number, $check, $hash_key, $unmatched_row, $gmode = null, $templatekey = null, $media_type = null) { $return_arr = []; $core_instance = CoreFieldsImport::getInstance(); $order_meta = $attr_data =$meta_data = ''; $jetengine_map = []; $meta_data = ''; $att_data = ''; $woocom_image = ''; $bsi_data = ''; $post_id=''; global $core_instance, $uci_woocomm_meta, $uci_woocomm_bundle_meta, $product_attr_instance, $wpmlimp_class; /*** check manage filteration */ $this->check_manage_filter ? $this->manage_filteration($this->manage_filter,$header_array,$value_array,$core_instance,$line_number,$hash_key) : ''; if (preg_match("/(Can't|Skipped|Duplicate)/", $core_instance->detailed_log[$line_number]['Message']) === 0) { foreach ($map as $group_name => $group_value) { if ($group_name == 'CORE') { $wpml_map = isset($map['WPML']) ? $map['WPML'] : ''; $media_map = isset($map['FEATURED_IMAGE_META']) ? $map['FEATURED_IMAGE_META'] : ''; $core_instance = CoreFieldsImport::getInstance(); if ($selected_type == 'WooCommerce Orders') { $order_meta = !empty($map['ORDERMETA']) ? $map['ORDERMETA'] : ''; } if($selected_type=='WooCommerce Product'){ $meta_data = isset($map['ECOMMETA'])?$map['ECOMMETA']:''; $attr_data = isset($map['ATTERMETA'])?$map['ATTERMETA']:''; } if($selected_type=='WooCommerce Customer'){ $bsi_data = isset($map['BSI'])?$map['BSI']:''; } $post_id = $core_instance->set_core_values($header_array, $value_array, $map['CORE'], $selected_type, $get_mode, $line_number, $check, $hash_key, $unmatched_row, $gmode, $templatekey, $wpml_map, $media_map, $media_type, $order_meta,$meta_data,$attr_data,$bsi_data); } } foreach ($map as $group_name => $group_value) { switch ($group_name) { case 'ELEMENTOR': $elementor_instance = ElementorImport::getInstance(); $elementor_instance->set_elementor_value($header_array, $value_array, $map['ELEMENTOR'], $post_id, $selected_type, $hash_key, $gmode, $templatekey); break; case 'AIOSEO': $all_seo_instance = AllInOneSeoImport::getInstance(); $all_seo_instance->set_all_seo_values($header_array, $value_array, $map['AIOSEO'], $post_id, $selected_type, $get_mode); break; case 'RANKMATH': $rankmath_instance = RankMathImport::getInstance(); $rankmath_instance->set_rankmath_values($header_array, $value_array, $map['RANKMATH'], $post_id, $selected_type); break; // case 'ECOMMETA': // $variation_id = isset($variation_id) ? $variation_id : ''; // $uci_woocomm_meta->set_product_meta_values($header_array, $value_array, $map['ECOMMETA'], $post_id, $variation_id, $selected_type, $line_number, $get_mode, $hash_key); // break; // case 'ATTRMETA': // $product_meta_instance = ProductMetaImport::getInstance(); // $variation_id = isset($variation_id) ? $variation_id : ''; // $wpml_map = isset($map['WPML']) ? $map['WPML'] : ''; // $woocom_image = isset($map['PRODUCTIMAGEMETA']) ? $map['PRODUCTIMAGEMETA'] : []; // $product_meta_instance->set_product_meta_values($header_array, $value_array, $map['ATTRMETA'], $post_id, $variation_id, $selected_type, $line_number, $get_mode, $hash_key); // break; case 'JE': $jet_engine_instance = JetEngineImport::getInstance(); $jet_engine_instance->set_jet_engine_values($header_array, $value_array, $map['JE'], $post_id, $selected_type, $get_mode, $hash_key, $line_number); break; case 'POLYLANG': $polylang_instance = PolylangImport::getInstance(); $polylang_instance->set_polylang_values($header_array, $value_array, $map['POLYLANG'], $post_id, $selected_type); break; case 'COUPONMETA': $variation_id = isset($variation_id) ? $variation_id : ''; $product_meta_instance = ProductMetaImport::getInstance(); $poly_array = isset($map['POLYLANG']) ? $map['POLYLANG'] : []; $uci_woocomm_meta->set_product_meta_values($header_array, $value_array, $map['COUPONMETA'], $post_id, $variation_id, $selected_type, $line_number, $get_mode, $hash_key); break; case 'PPOMMETA': $meta_type = 'PPOMMETA'; $uci_woocomm_meta->set_product_meta_values($header_array, $value_array, $map['PPOMMETA'], $post_id, '', $meta_type, $line_number, $get_mode, $hash_key); break; case 'EPOMETA': $meta_type = 'EPOMETA'; $uci_woocomm_meta->set_product_meta_values($header_array, $value_array, $map['EPOMETA'], $post_id, '', $meta_type, $line_number, $get_mode, $hash_key); break; case 'WCPAMETA' : $meta_type = 'WCPAMETA'; $uci_woocomm_meta->set_product_meta_values($header_array, $value_array, $map['WCPAMETA'], $post_id, '', $meta_type, $line_number, $get_mode, $hash_key); break; case 'BUNDLEMETA': $bundle_type = 'BUNDLEMETA'; $uci_woocomm_meta->set_product_meta_values($header_array, $value_array, $map['BUNDLEMETA'], $post_id, '', $bundle_type, $line_number, $get_mode, $hash_key); break; case 'JECCT': $jet_engine_cct_instance = JetEngineCCTImport::getInstance(); $jet_engine_cct_instance->set_jet_engine_cct_values($header_array, $value_array, $map['JECCT'], $post_id, $selected_type, $get_mode, $hash_key, $line_number); break; case 'JECPT': $jet_engine_cpt_instance = JetEngineCPTImport::getInstance(); $jet_engine_cpt_instance->set_jet_engine_cpt_values($header_array, $value_array, $map['JECPT'], $post_id, $selected_type, $get_mode, $hash_key, $line_number); break; case 'JEREVIEW': $jet_engine_instance = JetReviewsImport::getInstance(); $jet_engine_instance->set_jet_reviews_values($header_array, $value_array, $map['JEREVIEW'], $post_id, $selected_type, $get_mode, $hash_key, $line_number, $gmode, $templatekey); break; case 'JEBOOKING': $jet_engine_instance = JetBookingImport::getInstance(); $jet_engine_instance->set_jet_booking_values($header_array, $value_array, $map['JEBOOKING'], $post_id, $selected_type, $get_mode, $hash_key, $line_number, $gmode, $templatekey); break; case 'CFS': $cfs_instance = CFSImport::getInstance(); $cfs_instance->set_cfs_values($line_number, $header_array, $value_array, $map['CFS'], $post_id, $selected_type, $hash_key); break; case 'BSI': global $billing_class,$customer_billing_class; if($selected_type == 'WooCommerce Customer'){ //$customer_billing_class->set_bsi_values($header_array, $value_array, $map['BSI'], $post_id, $selected_type); }else{ $billing_class->set_bsi_values($header_array, $value_array, $map['BSI'], $post_id, $selected_type); } break; case 'WPMEMBERS': global $wpmember_class; $wpmember_class->set_wpmembers_values($line_number, $header_array, $value_array, $map['WPMEMBERS'], $post_id, $selected_type, $hash_key); break; case 'MEMBERS': global $member_class; $member_class->set_multirole_values($header_array, $value_array, $map['MEMBERS'], $post_id, $selected_type); break; case 'TERMS': $terms_taxo_instance = TermsandTaxonomiesImport::getInstance(); $poly_array = isset($map['POLYLANG']) ? $map['POLYLANG'] : ''; $terms_taxo_instance->set_terms_taxo_values($header_array, $value_array, $map['TERMS'], $post_id, $selected_type, $get_mode, $line_number, $poly_array); break; case 'CORECUSTFIELDS': $wordpress_custom_instance = WordpressCustomImport::getInstance(); $wordpress_custom_instance->set_wordpress_custom_values($header_array, $value_array, $map['CORECUSTFIELDS'], $post_id, $selected_type, $hash_key, $line_number, $templatekey, $gmode); break; case 'FORUM': $bbpress_instance = BBPressImport::getInstance(); $bbpress_instance->set_bbpress_values($header_array, $value_array, $map['FORUM'], $post_id, $selected_type, $get_mode); break; case 'TOPIC': $bbpress_instance = BBPressImport::getInstance(); $bbpress_instance->set_bbpress_values($header_array, $value_array, $map['TOPIC'], $post_id, $selected_type, $get_mode); break; case 'REPLY': $bbpress_instance = BBPressImport::getInstance(); $bbpress_instance->set_bbpress_values($header_array, $value_array, $map['REPLY'], $post_id, $selected_type, $get_mode); break; case 'BP': global $buddy_class; $buddy_class->set_buddy_values($header_array, $value_array, $map['BP'], $post_id, $selected_type); break; case 'LPCOURSE': $learn_merge = []; $learn_merge = array_merge($map['LPCOURSE'], $map['LPCURRICULUM']); $learnpress_instance = LearnPressImport::getInstance(); $learnpress_instance->set_learnpress_values($header_array, $value_array, $learn_merge, $post_id, $selected_type); break; case 'LPLESSON': $learnpress_instance = LearnPressImport::getInstance(); $learnpress_instance->set_learnpress_values($header_array, $value_array, $map['LPLESSON'], $post_id, $selected_type); break; case 'LPQUIZ': $learnpress_instance = LearnPressImport::getInstance(); $learnpress_instance->set_learnpress_values($header_array, $value_array, $map['LPQUIZ'], $post_id, $selected_type); break; case 'LPQUESTION': $learnpress_instance = LearnPressImport::getInstance(); $learnpress_instance->set_learnpress_values($header_array, $value_array, $map['LPQUESTION'], $post_id, $selected_type); break; case 'LPORDER': $learnpress_instance = LearnPressImport::getInstance(); $learnpress_instance->set_learnpress_values($header_array, $value_array, $map['LPORDER'], $post_id, $selected_type); break; case 'LIFTERLESSON': $lifterlms_instance = LifterLmsImport::getInstance(); $lifterlms_instance->set_lifterlms_values($header_array, $value_array, $map['LIFTERLESSON'], $post_id, $selected_type, $get_mode); break; case 'LIFTERCOURSE': $lifterlms_instance = LifterLmsImport::getInstance(); $lifterlms_instance->set_lifterlms_values($header_array, $value_array, $map['LIFTERCOURSE'], $post_id, $selected_type, $get_mode); break; case 'LIFTERCOUPON': $lifterlms_instance = LifterLmsImport::getInstance(); $lifterlms_instance->set_lifterlms_values($header_array, $value_array, $map['LIFTERCOUPON'], $post_id, $selected_type, $get_mode); break; case 'JOB': $job_listing_instance = JobListingImport::getInstance(); $job_listing_instance->set_job_listing_values($header_array, $value_array, $map['JOB'], $post_id, $selected_type); break; case 'WPML': $wpmlimp_class = WPMLImport::getInstance(); $wpmlimp_class->set_wpml_values($header_array, $value_array, $map['WPML'], $post_id, $selected_type, $line_number); break; case 'METABOX': $metabox_instance = MetaBoxImport::getInstance(); $metabox_instance->set_metabox_values($line_number, $header_array, $value_array, $map['METABOX'], $post_id, $selected_type, $hash_key); break; case 'PODS': $map['WPML'] = isset($map['WPML']) ? $map['WPML'] : ''; $pods_instance = PodsImport::getInstance(); $pods_instance->set_pods_values($line_number, $header_array, $value_array, $map['PODS'], $post_id, $selected_type, $hash_key, $map['WPML']); break; case 'ACF': $acf_image = isset($map['ACFIMAGEMETA']) ? $map['ACFIMAGEMETA'] : ''; $acf_instance = ACFImport::getInstance(); $acf_instance->set_acf_values($header_array, $value_array, $map['ACF'], $acf_image, $post_id, $selected_type, $get_mode, $hash_key, $line_number); break; case 'TYPES': $types_image = isset($map['TYPESIMAGEMETA']) ? $map['TYPESIMAGEMETA'] : ''; $toolset_instance = ToolsetImport::getInstance(); $toolset_instance->set_toolset_values($header_array, $value_array, $map['TYPES'], $types_image, $post_id, $selected_type, $get_mode, $hash_key, $line_number, $gmode, $templatekey); break; case 'FIFUPOSTS': $fifu_instance = FIFUImport::getInstance(); $fifu_instance->set_fifu_values($header_array, $value_array, $map['FIFUPOSTS'], $post_id, $selected_type, $get_mode); break; case 'FIFUPAGE': $fifu_instance = FIFUImport::getInstance(); $fifu_instance->set_fifu_values($header_array, $value_array, $map['FIFUPAGE'], $post_id, $selected_type, $get_mode); break; case 'FIFUCUSTOMPOST': $fifu_instance = FIFUImport::getInstance(); $fifu_instance->set_fifu_values($header_array, $value_array, $map['FIFUCUSTOMPOST'], $post_id, $selected_type, $get_mode); break; case 'YOASTSEO': $yoast_instance = YoastSeoImport::getInstance(); $yoast_instance->set_yoast_values($line_number, $header_array, $value_array, $map['YOASTSEO'], $post_id, $selected_type, $hash_key, $gmode, $templatekey); break; case 'JEREL': $jet_engine_rel_instance = JetEngineRELImport::getInstance(); $jet_engine_rel_instance->set_jet_engine_rel_values($header_array, $value_array, $map['JEREL'], $post_id, $selected_type, $get_mode, $hash_key, $line_number, $gmode, $templatekey = null); case 'LISTINGMETA': $listing_instance = ListingImport::getInstance(); $listing_instance->set_listing_values($header_array, $value_array, $map['LISTINGMETA'], $post_id, $selected_type); break; } } if (get_option('total_attachment_ids')) { $stored_ids = unserialize(get_option('total_attachment_ids', '')); delete_option('total_attachment_ids'); $core_instance->detailed_log[$line_number]['total_image'] = (is_array($stored_ids) && count($stored_ids) > 0) ? count($stored_ids) : ''; $core_instance->detailed_log[$line_number]['failed_image_count'] = null; } if (get_option('failed_attachment_ids')) { $stored_ids = unserialize(get_option('failed_attachment_ids', '')); delete_option('failed_attachment_ids'); $core_instance->detailed_log[$line_number]['failed_image_count'] = (is_array($stored_ids) && count($stored_ids) > 0) ? count($stored_ids) : ''; } $return_arr['failed_media_log'] = !empty($core_instance->failed_media_data) ? $core_instance->failed_media_data : []; $return_arr['media_log'] = !empty($core_instance->media_log) ? $core_instance->media_log : []; $return_arr['id'] = $post_id; } $return_arr['detail_log'] = $core_instance->detailed_log; return $return_arr; } public function bulk_file_import_function() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); global $wpdb; $helpers_instance = ImportHelpers::getInstance(); $hash_key = sanitize_key($_POST['HashKey']); $fileiteration = sanitize_key($_POST['FileIteration']); $template_table_name = $wpdb->prefix . "ultimate_csv_importer_mappingtemplate"; $background_values = $wpdb->get_results("SELECT module FROM $template_table_name WHERE `eventKey` = '$hash_key' "); foreach ($background_values as $values) { $selected_type = $values->module; } update_option('sm_bulk_import_free_iteration_limit', $fileiteration); $file_table_name = $wpdb->prefix . "smackcsv_file_events"; $get_id = $wpdb->get_results("SELECT id , mode ,file_name , total_rows FROM $file_table_name WHERE `hash_key` = '$hash_key'"); $total_rows = $get_id[0]->total_rows; $file_name = $get_id[0]->file_name; $file_extension = pathinfo($file_name, PATHINFO_EXTENSION); $upload_dir = SaveMapping::$smackcsv_instance->create_upload_dir(); $file_size = filesize($upload_dir . $hash_key . '/' . $hash_key); $filesize = $helpers_instance->formatSizeUnits($file_size); $response['total_rows'] = (int)$total_rows; $response['file_extension'] = $file_extension; $response['file_name'] = $file_name; $response['filesize'] = $filesize; if ($selected_type == 'elementor_library') { $response['file_iteration'] = 1000000; } else { $response['file_iteration'] = (int)$fileiteration; } if (get_option('total_attachment_ids')) { delete_option('total_attachment_ids'); } echo wp_json_encode($response); wp_die(); } public function deactivate_mail() { check_ajax_referer('smack-ultimate-csv-importer', 'securekey'); $headers = array("Content-type: text/html; charset=UTF-8"); $headers .= 'MIME-Version: 1.0' . "\r\n"; $to = 'support@smackcoders.com'; $subject = 'Reason for csv importer plugin deactivation'; $message = sanitize_text_field($_REQUEST["reason"]); wp_mail($to, $subject, $message, $headers); $response = array('success' => true, 'code' => 200); echo wp_json_encode($response); wp_die(); } }