public function product_add_update()
 {
     global $wpdb, $current_user;
     $variation_att_id = isset($_POST['mp_attribute_variation_name']) ? $_POST['mp_attribute_variation_name'] : '';
     if (isset($_POST['sale_price'])) {
         if ($_POST['sale_price'] == '') {
             unset($_POST['sale_price']);
         }
     }
     $att_val = isset($_POST['pro_att']) ? $_POST['pro_att'] : '';
     $upload_dir = wp_upload_dir();
     $product_type = isset($_POST['product_type']) ? $_POST['product_type'] : 'simple';
     /*echo "===============";
     		print_r( $att_val);
     		echo "===============";*/
     if (isset($_POST['product_type']) && $product_type == 'variable' && isset($_POST['mp_attribute_variation_name']) && is_array($_POST['mp_attribute_variation_name'])) {
         $this->mp_save_variation($_POST['sell_pr_id'], $_POST['mp_attribute_variation_name']);
     }
     if (!empty($variation_att_id) && !empty($att_val) && false) {
         $variation_data = array();
         foreach ($variation_att_id as $var_id) {
             foreach ($_POST['mp_attribute_name'][$var_id] as $variation_type) {
                 $variation_data['attribute_' . $variation_type][] = $_POST['attribute_' . $variation_type][$var_id];
             }
             if (isset($_POST['wkmp_variable_is_downloadable'])) {
                 $downloadable_vari = $_POST['wkmp_variable_is_downloadable'][$var_id] == 'yes' ? 'yes' : 'no';
             } else {
                 $downloadable_vari = 'no';
             }
             if (isset($_POST['wkmp_variable_is_virtual']) && isset($_POST['wkmp_variable_is_virtual'][$var_id])) {
                 $virtual_vari = $_POST['wkmp_variable_is_virtual'][$var_id] == 'yes' ? 'yes' : 'no';
             } else {
                 $virtual_vari = 'no';
             }
             $down_expiry = $downloadable_vari == 'yes' ? $_POST['wkmp_variable_download_expiry'][$var_id] : '';
             $down_limit = $downloadable_vari == 'yes' ? $_POST['wkmp_variable_download_limit'][$var_id] : '';
             $variation_data['_download_expiry'][] = $_POST['wkmp_variable_download_expiry'][$var_id];
             $variation_data['_download_limit'][] = $_POST['wkmp_variable_download_limit'][$var_id];
             $variation_data['_sale_price'][] = $_POST['wkmp_variable_sale_price'][$var_id];
             if ($_POST['wkmp_variable_sale_price'][$var_id] == '') {
                 $variation_data['_price'][] = $_POST['wkmp_variable_regular_price'][$var_id];
             } else {
                 $variation_data['_price'][] = $_POST['wkmp_variable_sale_price'][$var_id];
             }
             $variation_data['_regular_price'][] = $_POST['wkmp_variable_regular_price'][$var_id];
             if (isset($_POST['wkmp_variable_sale_price_dates_to'])) {
                 $variation_data['_sale_price_dates_to'][] = $_POST['wkmp_variable_sale_price_dates_to'][$var_id];
             }
             if (isset($_POST['wkmp_variable_sale_price_dates_from'])) {
                 $variation_data['_sale_price_dates_from'][] = $_POST['wkmp_variable_sale_price_dates_from'][$var_id];
             }
             $variation_data['_backorders'][] = $_POST['wkmp_variable_backorders'][$var_id];
             if (isset($_POST['wkmp_variable_manage_stock']) && isset($_POST['wkmp_variable_manage_stock'][$var_id])) {
                 $manage_stock = $_POST['wkmp_variable_manage_stock'][$var_id] == 'yes' ? 'yes' : 'no';
             } else {
                 $manage_stock = 'no';
             }
             $variation_data['_manage_stock'][] = $manage_stock;
             if ($manage_stock == 'yes') {
                 $variation_data['_stock'][] = $_POST['wkmp_variable_stock'][$var_id];
             } else {
                 $variation_data['_stock'][] = '';
             }
             $variation_data['_stock_status'][] = $_POST['wkmp_variable_stock_status'][$var_id];
             // $variation_data['_sku'][]=$_POST['wkmp_variable_sku'][$var_id];
             $variation_data['_width'][] = $_POST['wkmp_variable_width'][$var_id];
             $variation_data['_height'][] = $_POST['wkmp_variable_height'][$var_id];
             $variation_data['_length'][] = $_POST['wkmp_variable_length'][$var_id];
             $variation_data['_virtual'][] = $virtual_vari;
             $variation_data['_downloadable'][] = $downloadable_vari;
             $thumbnail_id = $_POST['upload_var_img'][$var_id];
             if ($thumbnail_id != '') {
                 $variation_data['_thumbnail_id'][] = $thumbnail_id;
             } else {
                 $variation_data['_thumbnail_id'][] = 0;
             }
             $variation_data['_weight'][] = $_POST['wkmp_variable_weight'][$var_id];
             $variation_data['_menu_order'][] = $_POST['wkmp_variation_menu_order'][$var_id];
             /* variation for download able product */
             if ($downloadable_vari == 'yes') {
                 $variation_files = $_POST['_mp_variation_downloads_files_url'][$var_id];
                 $variation_names = $_POST['_mp_variation_downloads_files_name'][$var_id];
                 $var_downloadable = array();
                 $var_down_name = array();
                 if (isset($_POST['_mp_variation_downloads_files_url'][$var_id]) && count($_POST['_mp_variation_downloads_files_url'][$var_id]) > 0) {
                     $files = array();
                     /*$file_url_size = count( $variation_files );*/
                     /*foreach ($variation_files as $key => $value) {*/
                     if (!empty($variation_files)) {
                         for ($i = 0; $i < count($variation_files); $i++) {
                             $file_url = wc_clean($variation_files[$i]);
                             if ($file_url != '') {
                                 $files[md5($file_url)] = array('name' => $variation_names[$i], 'file' => $file_url);
                             }
                         }
                     }
                     update_post_meta($var_id, '_downloadable_files', $files);
                 }
             }
         }
         $variation_data_key = array_keys($variation_data);
         $variations_values = array_values($variation_data);
         for ($i = 0; $i < count($variation_data); $i++) {
             for ($x = 0; $x < count($variation_att_id); $x++) {
                 update_post_meta($variation_att_id[$x], $variation_data_key[$i], $variations_values[$i][$x]);
                 if ($variation_data_key[$i] == '_sale_price' && $variations_values[$i][$x] == '') {
                     delete_post_meta($variation_att_id[$x], '_sale_price');
                 }
             }
         }
     }
     if (isset($_POST['pro_att'])) {
         $attrib = $_POST['pro_att'];
     } else {
         $attrib = array();
     }
     $att = array();
     if (!empty($attrib)) {
         foreach ($attrib as $attribute) {
             if (empty($attribute['name']) || empty($attribute['value'])) {
                 continue;
             }
             $rep_str = $attribute['value'];
             $rep_str = preg_replace('/\\s+/', ' ', $rep_str);
             $attribute['name'] = str_replace(' ', '-', $attribute['name']);
             $attribute['value'] = str_replace("|", "|", $rep_str);
             if (isset($attribute['is_visible'])) {
                 $attribute['is_visible'] = (int) $attribute['is_visible'];
             } else {
                 $attribute['is_visible'] = 0;
             }
             if (isset($attribute['is_variation'])) {
                 $attribute['is_variation'] = (int) $attribute['is_variation'];
             } else {
                 $attribute['is_variation'] = 0;
             }
             $attribute['is_taxonomy'] = (int) $attribute['is_taxonomy'];
             $att[str_replace(' ', '-', $attribute['name'])] = $attribute;
         }
     }
     $user_id = get_current_user_id();
     if (isset($_POST['sell_pr_id'])) {
         $product_auth = $wpdb->get_var("select post_author from {$wpdb->posts} where ID='" . $_POST['sell_pr_id'] . "'");
     }
     if (!empty($_POST['product_name']) && isset($_POST['product_name']) && isset($_POST['product_sku'])) {
         $product_name = $_POST['product_name'];
         $product_dsc = $_POST['product_desc'];
         $downloadable = isset($_POST['_ckdownloadable']) ? $_POST['_ckdownloadable'] : '';
         $virtual = $product_type == 'virtual' ? 'yes' : 'no';
         $simple = $product_type == 'simple' ? 'yes' : 'no';
         if (isset($_POST['product_type'])) {
             $protype = $_POST['product_type'];
         }
         $backorder = isset($_POST['_backorders']) ? $_POST['_backorders'] : 'no';
         $stock = isset($_POST['_stock_status']) ? $_POST['_stock_status'] : 'instock';
         $SKU = $_POST['product_sku'];
         $price = isset($_POST['regu_price']) ? $_POST['regu_price'] : '';
         if (isset($_POST['sale_price'])) {
             $sales_price = $_POST['sale_price'];
         }
         $product_short_desc = $_POST['short_desc'];
         $limit = isset($_POST['_download_limit']) ? $_POST['_download_limit'] : '';
         $expiry = isset($_POST['_download_expiry']) ? $_POST['_download_expiry'] : '';
         $mang_stock = isset($_POST['wk_stock_management']) ? $_POST['wk_stock_management'] : 'no';
         $stock_qty = $mang_stock == 'yes' ? $_POST['wk-mp-stock-qty'] : '';
         $stock_qty = intval($stock_qty);
         $usere_downloadable_file_name = isset($_POST['user_downloadable_file_name']) ? $_POST['user_downloadable_file_name'] : '';
         $seller_downloadable_file_url = isset($_POST['upload_downloadable_file_url']) ? $_POST['upload_downloadable_file_url'] : '';
         if (isset($_POST['product_image_Galary_ids'])) {
             $product_galary_images = implode(',', array_unique(explode(',', $_POST['product_image_Galary_ids'])));
         } else {
             $product_galary_images = '';
         }
         //$sale_from=$_POST['sale_from'];
         $sale_from = isset($_POST['sale_from']) ? $_POST['sale_from'] : '';
         //$sale_to=$_POST['sale_to'];
         $sale_to = isset($_POST['sale_to']) ? $_POST['sale_to'] : '';
         $product_status = isset($_POST['mp_product_status']) ? $_POST['mp_product_status'] : '';
         $product_data = array('post_author' => get_current_user_id(), 'post_date' => '', 'post_date_gmt' => '', 'post_content' => $product_dsc, 'post_content_filtered' => $product_short_desc, 'post_title' => $product_name, 'post_excerpt' => $product_short_desc, 'post_status' => $product_status, 'post_type' => 'product', 'comment_status' => 'open', 'ping_status' => 'open', 'post_password' => '', 'post_name' => wp_strip_all_tags($product_name), 'to_ping' => '', 'pinged' => '', 'post_modified' => '', 'post_modified_gmt' => '', 'post_parent' => '', 'menu_order' => '', 'guid' => '');
         if (isset($_POST['sell_pr_id']) && $product_auth == $user_id && isset($_POST['add_product_sub']) && $_POST['add_product_sub'] == 'Update' && !empty($_POST['_wpnonce'])) {
             wp_verify_nonce($_POST['_wpnonce'], 'marketplace-edid_product');
             $product_data['ID'] = $_POST['sell_pr_id'];
             if (wp_update_post($product_data)) {
                 $role = $wpdb->prefix . 'capabilities';
                 $current_user->role = array_keys($current_user->{$role});
                 $role = $current_user->role[0];
                 if ($product_status == 'publish' && $role == 'wk_marketplace_seller') {
                     update_post_meta($_POST['sell_pr_id'], '_visibility', 'visible');
                 } else {
                     update_post_meta($_POST['sell_pr_id'], '_visibility', '');
                 }
                 update_post_meta($_POST['sell_pr_id'], '_regular_price', $price);
                 if (isset($sales_price)) {
                     update_post_meta($_POST['sell_pr_id'], '_sale_price', $sales_price);
                     update_post_meta($_POST['sell_pr_id'], '_price', $sales_price);
                 } else {
                     update_post_meta($_POST['sell_pr_id'], '_sale_price', '');
                     update_post_meta($_POST['sell_pr_id'], '_price', $price);
                 }
                 update_post_meta($_POST['sell_pr_id'], '_sku', $SKU);
                 update_post_meta($_POST['sell_pr_id'], '_backorders', $backorder);
                 update_post_meta($_POST['sell_pr_id'], '_stock_status', $stock);
                 update_post_meta($_POST['sell_pr_id'], '_manage_stock', $mang_stock);
                 if ($mang_stock == 'yes') {
                     update_post_meta($_POST['sell_pr_id'], '_downloadable', $downloadable);
                 } else {
                     delete_post_meta($_POST['sell_pr_id'], '_downloadable');
                 }
                 update_post_meta($_POST['sell_pr_id'], '_virtual', $virtual);
                 update_post_meta($_POST['sell_pr_id'], '_simple', $simple);
                 update_post_meta($_POST['sell_pr_id'], '_downloadable_files', '');
                 if ($downloadable == 'yes') {
                     $dwnload_url = wc_clean($seller_downloadable_file_url);
                     $upload_file_url[md5($dwnload_url)] = array('name' => $usere_downloadable_file_name, 'file' => $dwnload_url);
                     update_post_meta($_POST['sell_pr_id'], '_downloadable_files', $upload_file_url);
                 } else {
                     update_post_meta($_POST['sell_pr_id'], '_downloadable_files', '');
                 }
                 if (isset($_FILES['wk_mp_product_downloadable'])) {
                     update_post_meta($_POST['sell_pr_id'], '_downloadable_files', $_FILES['wk_mp_product_downloadable']);
                 } else {
                     update_post_meta($_POST['sell_pr_id'], '_downloadable_files', '');
                 }
                 if (!empty($att)) {
                     update_post_meta($_POST['sell_pr_id'], '_product_attributes', $att);
                 } else {
                     update_post_meta($_POST['sell_pr_id'], '_product_attributes', array());
                 }
                 if ($stock_qty != '') {
                     update_post_meta($_POST['sell_pr_id'], '_stock', $stock_qty);
                 } else {
                     delete_post_meta($_POST['sell_pr_id'], '_stock');
                 }
                 update_post_meta($_POST['sell_pr_id'], '_download_limit', $limit);
                 update_post_meta($_POST['sell_pr_id'], '_download_expiry', $expiry);
                 update_post_meta($_POST['sell_pr_id'], '_product_image_gallery', $product_galary_images);
                 update_post_meta($_POST['sell_pr_id'], '_thumbnail_id', $_POST['product_thumb_image_mp']);
             }
             $download_product = $product_image_gal = $_FILES;
             $p_category = isset($_POST['product_cate']) ? $_POST['product_cate'] : '';
             MP_Form_Handler::update_pro_category($p_category, $_POST['sell_pr_id']);
             $product_id[0] = $_POST['sell_pr_id'];
             $product_id[1] = wp_set_object_terms($_POST['sell_pr_id'], $protype, 'product_type', false);
         } else {
             $postid = wp_insert_post($product_data);
             add_post_meta($postid, '_thumbnail_id', $_POST['product_thumb_image_mp']);
             $data = array('ID' => $postid, 'guid' => get_option('siteurl') . '/?post_type=ai1ec_event&p=' . $postid . '&instance_id=');
             if (wp_update_post($data)) {
                 add_post_meta($postid, '_sku', $SKU);
                 add_post_meta($postid, '_regular_price', $price);
                 if (isset($sales_price)) {
                     add_post_meta($postid, '_sale_price', $sales_price);
                     add_post_meta($postid, '_price', $sales_price);
                 } else {
                     add_post_meta($postid, '_sale_price', '');
                     add_post_meta($postid, '_price', $price);
                 }
                 add_post_meta($postid, '_sale_price_dates_from', $sale_from);
                 add_post_meta($postid, '_sale_price_dates_to', $sale_to);
                 add_post_meta($postid, '_downloadable', $downloadable);
                 add_post_meta($postid, '_virtual', $virtual);
                 add_post_meta($postid, '_simple', $simple);
             }
             $p_category = isset($_POST['product_cate']) ? $_POST['product_cate'] : '';
             $this->add_pro_category($p_category, $postid);
             $product_id[0] = $postid;
         }
         return $product_id;
     }
 }