<?php
include_once('./_common.php');

if (!function_exists('apms_partner_detect_item_scope_for_update')) {
    function apms_partner_detect_item_scope_for_update($post)
    {
        $sales_type = isset($post['it_spec_sales_type']) ? trim((string)$post['it_spec_sales_type']) : '';
        $ca_id = isset($post['ca_id']) ? trim((string)$post['ca_id']) : '';

        if ($sales_type === 'vpn-mall') {
            return 'vpn';
        }
        if ($sales_type !== '' && stripos($sales_type, '원격제어컴퓨터') !== false) {
            return 'rpc';
        }

        if ($ca_id !== '') {
            if (preg_match('/^(30|40)/', $ca_id)) {
                return 'vpn';
            }
            if (preg_match('/^(10|20)/', $ca_id)) {
                return 'rpc';
            }
        }

        $it_id = isset($post['it_id']) ? trim((string)$post['it_id']) : '';
        if ($it_id !== '') {
            global $g5;
            $it_id_sql = preg_replace('/[^0-9A-Za-z_\-]/', '', $it_id);
            $row = sql_fetch(" select it_spec_sales_type, ca_id, it_name from {$g5['g5_shop_item_table']} where it_id = '{$it_id_sql}' ");
            if ($row) {
                if (trim((string)$row['it_spec_sales_type']) === 'vpn-mall') {
                    return 'vpn';
                }
                if (stripos(trim((string)$row['it_spec_sales_type']), '원격제어컴퓨터') !== false) {
                    return 'rpc';
                }
                if (preg_match('/^(30|40)/', trim((string)$row['ca_id']))) {
                    return 'vpn';
                }
                if (preg_match('/^(10|20)/', trim((string)$row['ca_id']))) {
                    return 'rpc';
                }
                if (stripos(trim((string)$row['it_name']), 'VPN-') === 0) {
                    return 'vpn';
                }
                if (stripos(trim((string)$row['it_name']), 'RPC-') === 0) {
                    return 'rpc';
                }
            }
        }

        return 'rpc';
    }
}

$__apms_item_scope = apms_partner_detect_item_scope_for_update($_POST);
if ($__apms_item_scope === 'vpn') {
    include_once('./itemformupdate_vpn.php');
    return;
}

if($is_guest) {
	alert('판매자센터만 이용가능합니다.', APMS_PARTNER_URL.'/login.php');
}

$is_auth = ($is_admin == 'super') ? true : false;
$is_partner = (IS_SELLER) ? true : false;

if($is_auth || $is_partner) {
	; // 통과
} else {
	alert('판매자(셀러) 판매자센터만 이용가능합니다.', APMS_PARTNER_URL);
}

@mkdir(G5_DATA_PATH."/item", G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH."/item", G5_DIR_PERMISSION);

// input vars 체크
check_input_vars();

if (!$_POST['pt_it']) {
    vpnlink_redirect_with_restore_draft("서비스종류를 선택해 주십시오.", $_POST);
}

if(in_array($pt_it, $g5['apms_automation'])) {
	$it_sc_type = 0;
	$it_sc_method = 0;
	$it_sc_price = 0;
	$it_sc_minimum = 0;
	$it_sc_qty = 0;
}

$upload_max_filesize = number_format($default['pt_upload_size']) . ' Bytes';

//판매자센터 등록정보
$pt = array();
$pt = apms_partner($member['mb_id']);

// ca_id 가 101020 전체코드 형태의 6자리 이므로 하위 ca_id3 은 101020 으로, ca_id2 는 1010 으로, ca_id 는 10 으로 재설정 시킴 JSLEE
if ($auction_on == '1') {
    if (substr($ca_id, 0, 2) === "10") { // 10으로 시작하면 경매상품은 20으로 시작해야 하므로...
        $ca_id = "20" . substr($ca_id, 2);
    }
    $ca_id_tmp = $ca_id;
    $ca_id = substr($ca_id_tmp,0,2);
    $ca_id2 = substr($ca_id_tmp,0,4);
    $ca_id3 = $ca_id_tmp;
} else {
    $ca_id_tmp = $ca_id;
    $ca_id = substr($ca_id_tmp,0,2);
    $ca_id2 = substr($ca_id_tmp,0,4);
    $ca_id3 = $ca_id_tmp;
}

// 등록제한 체크
$is_regit = 0;
$new_upoint = 0;
if(!$is_auth && $w != "u") {

	$upoint_where = "";
	if($ca_id) {
		$upoint_where .= " ca_id = '{$ca_id}' ";
	}
	if($upoint_where && $ca_id2) {
		$upoint_where .= " or ";
	}
	if($ca_id2) {
		$upoint_where .= " ca_id = '{$ca_id2}' ";
	}
	if($upoint_where && $ca_id3) {
		$upoint_where .= " or ";
	}
	if($ca_id3) {
		$upoint_where .= " ca_id = '{$ca_id3}' ";
	}
	if($upoint_where) {
		$upoint_where = "and (".$upoint_where.")";
	}

	// 등록제한 체크 - 가장 작은 등록제한설정을 가져옴
	$row = sql_fetch("select ca_id, ca_name, pt_limit from {$g5['g5_shop_category_table']} where pt_limit > 0 $upoint_where order by pt_limit");
	$uplimit = ($pt['pt_limit']) ? (int)$pt['pt_limit'] : $row['pt_limit'];
	$uplimit_ca = $row['ca_id'];
	$uplimit_name = $row['ca_name'];

	if($uplimit) { // 제한값이 있으면...
		$row = sql_fetch(" select count(*) as cnt from {$g5['g5_shop_item_table']} where pt_id = '{$member['mb_id']}' and date_format(it_time, '%Y-%m-%d') = '".G5_TIME_YMD."' and (ca_id = '{$uplimit_ca}' or ca_id2 = '{$uplimit_ca}' or ca_id3 = '{$uplimit_ca}') ");
		if($row['cnt'] && $row['cnt'] >= $uplimit) {
            vpnlink_redirect_with_restore_draft("선택하신 분류 중 ".$uplimit_name." 분류는 하루 최대 ".$uplimit."개까지만 등록이 가능합니다.\\n\\n등록갯수 초과로 오늘은 더이상 등록할 수 없습니다.", $_POST);
		}
	}

	// 등록비 체크	-가장 큰 등록비를 가져옴
	$row1 = sql_fetch(" select ca_id, pt_point from {$g5['g5_shop_category_table']} where pt_point > 0 $upoint_where order by pt_point desc ");

	$upoint = (int)$pt['pt_point'] + (int)$row1['pt_point'];

	if($upoint) {
		$new_upoint = $upoint * (-1); //부호 전환
		if($w == "u") {
			//기존 내역
			$row2 = sql_fetch(" select po_point from {$g5['point_table']} where mb_id = '{$member['mb_id']}' and po_rel_table = '@regit' and po_rel_id = '{$member['mb_id']}' and po_rel_action = '$it_id' order by po_id desc ");
			$old_upoint = $row2['po_point'];
			if($old_upoint) {
				if($new_upoint != $old_upoint) { // 서로 값이 다르면...
					$now_point = $member['mb_point'] - $old_upoint + $new_upoint;
					if($now_point < 0) { //포인트가 부족하면
						$now_point = $now_point * (-1);
                        vpnlink_redirect_with_restore_draft("보유포인트 부족으로 등록할 수 없습니다.\\n\\n{$now_point} 포인트가 더 있어야 등록할 수 있습니다.", $_POST);
					}
					$is_regit = 2;
				}
			} else {
				$now_point = $member['mb_point'] + $new_upoint;
				if($now_point < 0) { //포인트가 부족하면
					$now_point = $now_point * (-1);
                    vpnlink_redirect_with_restore_draft("보유포인트 부족으로 등록할 수 없습니다.\\n\\n{$now_point} 포인트가 더 있어야 등록할 수 있습니다.", $_POST);
				}
				$is_regit = 1;
			}
		} else {
			$now_point = $member['mb_point'] + $new_upoint;
			if($now_point < 0) { //포인트가 부족하면
				$now_point = $now_point * (-1);
                vpnlink_redirect_with_restore_draft("보유포인트 부족으로 등록할 수 없습니다.\\n\\n{$now_point} 포인트가 더 있어야 등록할 수 있습니다.", $_POST);
			}
			$is_regit = 1;
		}
	}
}

// 파일정보
if($w == "u") {
    $sql = " select it_img1, it_img2, it_img3, it_img4, it_img5, it_img6, it_img7, it_img8, it_img9, it_img10
                from {$g5['g5_shop_item_table']}
                where it_id = '$it_id' ";
    $file = sql_fetch($sql);

    $it_img1    = $file['it_img1'];
    $it_img2    = $file['it_img2'];
    $it_img3    = $file['it_img3'];
    $it_img4    = $file['it_img4'];
    $it_img5    = $file['it_img5'];
    $it_img6    = $file['it_img6'];
    $it_img7    = $file['it_img7'];
    $it_img8    = $file['it_img8'];
    $it_img9    = $file['it_img9'];
    $it_img10   = $file['it_img10'];
}

$it_img_dir = G5_DATA_PATH.'/item';

// 파일삭제
if ($it_img1_del) {
    $file_img1 = $it_img_dir.'/'.clean_relative_paths($it_img1);
    @unlink($file_img1);
    delete_item_thumbnail(dirname($file_img1), basename($file_img1));
    $it_img1 = '';
}
if ($it_img2_del) {
    $file_img2 = $it_img_dir.'/'.clean_relative_paths($it_img2);
    @unlink($file_img2);
    delete_item_thumbnail(dirname($file_img2), basename($file_img2));
    $it_img2 = '';
}
if ($it_img3_del) {
    $file_img3 = $it_img_dir.'/'.clean_relative_paths($it_img3);
    @unlink($file_img3);
    delete_item_thumbnail(dirname($file_img3), basename($file_img3));
    $it_img3 = '';
}
if ($it_img4_del) {
    $file_img4 = $it_img_dir.'/'.clean_relative_paths($it_img4);
    @unlink($file_img4);
    delete_item_thumbnail(dirname($file_img4), basename($file_img4));
    $it_img4 = '';
}
if ($it_img5_del) {
    $file_img5 = $it_img_dir.'/'.clean_relative_paths($it_img5);
    @unlink($file_img5);
    delete_item_thumbnail(dirname($file_img5), basename($file_img5));
    $it_img5 = '';
}
if ($it_img6_del) {
    $file_img6 = $it_img_dir.'/'.clean_relative_paths($it_img6);
    @unlink($file_img6);
    delete_item_thumbnail(dirname($file_img6), basename($file_img6));
    $it_img6 = '';
}
if ($it_img7_del) {
    $file_img7 = $it_img_dir.'/'.clean_relative_paths($it_img7);
    @unlink($file_img7);
    delete_item_thumbnail(dirname($file_img7), basename($file_img7));
    $it_img7 = '';
}
if ($it_img8_del) {
    $file_img8 = $it_img_dir.'/'.clean_relative_paths($it_img8);
    @unlink($file_img8);
    delete_item_thumbnail(dirname($file_img8), basename($file_img8));
    $it_img8 = '';
}
if ($it_img9_del) {
    $file_img9 = $it_img_dir.'/'.clean_relative_paths($it_img9);
    @unlink($file_img9);
    delete_item_thumbnail(dirname($file_img9), basename($file_img9));
    $it_img9 = '';
}
if ($it_img10_del) {
    $file_img10 = $it_img_dir.'/'.clean_relative_paths($it_img10);
    @unlink($file_img10);
    delete_item_thumbnail(dirname($file_img10), basename($file_img10));
    $it_img10 = '';
}

// 이미지업로드
// it_img1 이미지는 사용자가 임의로 업로드 시킨 경우에는 그 이미지 파일을 사용하고 그렇지 않을 경우 ca_id3 의 코드를 참고하여 미리 설정된 이미지 사용하도록 else 추가하여 수정함 JSLEE
if ($_FILES['it_img1']['name']) {
    if($w == 'u' && $it_img1) {
        $file_img1 = $it_img_dir.'/'.clean_relative_paths($it_img1);
        @unlink($file_img1);
        delete_item_thumbnail(dirname($file_img1), basename($file_img1));
    }
    $it_img1 = it_img_upload($_FILES['it_img1']['tmp_name'], $_FILES['it_img1']['name'], $it_img_dir.'/'.$it_id);
} else {
    $row_ca_name = sql_fetch(" SELECT ca_name FROM {$g5['g5_shop_category_table']} WHERE ca_id = '{$ca_id3}' ");
    $ca_name = $row_ca_name['ca_name'];
    if(strpos($ca_name, "Windows 7") !== false) {
        $it_img1 = 'img_os/Windows7.png';
    }
    else if(strpos($ca_name, "Windows 10") !== false) {
        $it_img1 = 'img_os/Windows10.png';
    }
    else if(strpos($ca_name, "Windows 11") !== false) {
        $it_img1 = 'img_os/Windows11.png';
    }
    else if(strpos($ca_name, "Windows 12") !== false) {
        $it_img1 = 'img_os/Windows12.png';
    }
    else if(strpos($ca_name, "Windows Server 2012") !== false) {
        $it_img1 = 'img_os/WindowsServer2012.png';
    }
    else if(strpos($ca_name, "Windows Server 2016") !== false) {
        $it_img1 = 'img_os/WindowsServer2016.png';
    }
    else if(strpos($ca_name, "CentOS 7") !== false) {
        $it_img1 = 'img_os/CentOS7.png';
    }
    else if(strpos($ca_name, "Centos 8") !== false) {
        $it_img1 = 'img_os/CentOS8.png';
    }
    else if(strpos($ca_name, "Ubuntu 18") !== false) {
        $it_img1 = 'img_os/Ubuntu18.png';
    }
    else if(strpos($ca_name, "Ubuntu 20") !== false) {
        $it_img1 = 'img_os/Ubuntu20.png';
    }
    else if(strpos($ca_name, "Ubuntu 21") !== false) {
        $it_img1 = 'img_os/Ubuntu21.png';
    }
    else if(strpos($ca_name, "Ubuntu 22") !== false) {
        $it_img1 = 'img_os/Ubuntu22.png';
    }
    else  {
        $it_img1 = 'img_os/Etc_OS.png';
    }
}

if ($_FILES['it_img2']['name']) {
    if($w == 'u' && $it_img2) {
        $file_img2 = $it_img_dir.'/'.clean_relative_paths($it_img2);
        @unlink($file_img2);
        delete_item_thumbnail(dirname($file_img2), basename($file_img2));
    }
    $it_img2 = it_img_upload($_FILES['it_img2']['tmp_name'], $_FILES['it_img2']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img3']['name']) {
    if($w == 'u' && $it_img3) {
        $file_img3 = $it_img_dir.'/'.clean_relative_paths($it_img3);
        @unlink($file_img3);
        delete_item_thumbnail(dirname($file_img3), basename($file_img3));
    }
    $it_img3 = it_img_upload($_FILES['it_img3']['tmp_name'], $_FILES['it_img3']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img4']['name']) {
    if($w == 'u' && $it_img4) {
        $file_img4 = $it_img_dir.'/'.clean_relative_paths($it_img4);
        @unlink($file_img4);
        delete_item_thumbnail(dirname($file_img4), basename($file_img4));
    }
    $it_img4 = it_img_upload($_FILES['it_img4']['tmp_name'], $_FILES['it_img4']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img5']['name']) {
    if($w == 'u' && $it_img5) {
        $file_img5 = $it_img_dir.'/'.clean_relative_paths($it_img5);
        @unlink($file_img5);
        delete_item_thumbnail(dirname($file_img5), basename($file_img5));
    }
    $it_img5 = it_img_upload($_FILES['it_img5']['tmp_name'], $_FILES['it_img5']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img6']['name']) {
    if($w == 'u' && $it_img6) {
        $file_img6 = $it_img_dir.'/'.clean_relative_paths($it_img6);
        @unlink($file_img6);
        delete_item_thumbnail(dirname($file_img6), basename($file_img6));
    }
    $it_img6 = it_img_upload($_FILES['it_img6']['tmp_name'], $_FILES['it_img6']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img7']['name']) {
    if($w == 'u' && $it_img7) {
        $file_img7 = $it_img_dir.'/'.clean_relative_paths($it_img7);
        @unlink($file_img7);
        delete_item_thumbnail(dirname($file_img7), basename($file_img7));
    }
    $it_img7 = it_img_upload($_FILES['it_img7']['tmp_name'], $_FILES['it_img7']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img8']['name']) {
    if($w == 'u' && $it_img8) {
        $file_img8 = $it_img_dir.'/'.clean_relative_paths($it_img8);
        @unlink($file_img8);
        delete_item_thumbnail(dirname($file_img8), basename($file_img8));
    }
    $it_img8 = it_img_upload($_FILES['it_img8']['tmp_name'], $_FILES['it_img8']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img9']['name']) {
    if($w == 'u' && $it_img9) {
        $file_img9 = $it_img_dir.'/'.clean_relative_paths($it_img9);
        @unlink($file_img9);
        delete_item_thumbnail(dirname($file_img9), basename($file_img9));
    }
    $it_img9 = it_img_upload($_FILES['it_img9']['tmp_name'], $_FILES['it_img9']['name'], $it_img_dir.'/'.$it_id);
}
if ($_FILES['it_img10']['name']) {
    if($w == 'u' && $it_img10) {
        $file_img10 = $it_img_dir.'/'.clean_relative_paths($it_img10);
        @unlink($file_img10);
        delete_item_thumbnail(dirname($file_img10), basename($file_img10));
    }
    $it_img10 = it_img_upload($_FILES['it_img10']['tmp_name'], $_FILES['it_img10']['name'], $it_img_dir.'/'.$it_id);
}

if ($w == "" || $w == "u")
{
    // 다음 입력을 위해서 옵션값을 쿠키로 한달동안 저장함
    //@setcookie("ck_ca_id",  $ca_id,  time() + 86400*31, $default[de_cookie_dir], $default[de_cookie_domain]);
    //@setcookie("ck_maker",  stripslashes($it_maker),  time() + 86400*31, $default[de_cookie_dir], $default[de_cookie_domain]);
    //@setcookie("ck_origin", stripslashes($it_origin), time() + 86400*31, $default[de_cookie_dir], $default[de_cookie_domain]);
    @set_cookie("ck_ca_id", $ca_id, time() + 86400*31);
    @set_cookie("ck_ca_id2", $ca_id2, time() + 86400*31);
    @set_cookie("ck_ca_id3", $ca_id3, time() + 86400*31);
    @set_cookie("ck_maker", stripslashes($it_maker), time() + 86400*31);
    @set_cookie("ck_origin", stripslashes($it_origin), time() + 86400*31);
}


// 관련상품을 우선 삭제함
sql_query(" delete from {$g5['g5_shop_item_relation_table']} where it_id = '$it_id' ");

// 관련상품의 반대도 삭제
sql_query(" delete from {$g5['g5_shop_item_relation_table']} where it_id2 = '$it_id' ");

if($is_auth) {
	// 이벤트상품을 우선 삭제함
	sql_query(" delete from {$g5['g5_shop_event_item_table']} where it_id = '$it_id' ");
}

// 선택옵션
sql_query(" delete from {$g5['g5_shop_item_option_table']} where io_type = '0' and it_id = '$it_id' "); // 기존선택옵션삭제

$option_count = (isset($_POST['opt_id']) && is_array($_POST['opt_id'])) ? count($_POST['opt_id']) : array();
if($option_count) {
    // 옵션명
    $opt1_cnt = $opt2_cnt = $opt3_cnt = 0;
    for($i=0; $i<$option_count; $i++) {
        $_POST['opt_id'][$i] = preg_replace(G5_OPTION_ID_FILTER, '', strip_tags($_POST['opt_id'][$i]));

		$opt_val = explode(chr(30), $_POST['opt_id'][$i]);
        if($opt_val[0])
            $opt1_cnt++;
        if($opt_val[1])
            $opt2_cnt++;
        if($opt_val[2])
            $opt3_cnt++;
    }

    if($opt1_subject && $opt1_cnt) {
        $it_option_subject = $opt1_subject;
        if($opt2_subject && $opt2_cnt)
            $it_option_subject .= ','.$opt2_subject;
        if($opt3_subject && $opt3_cnt)
            $it_option_subject .= ','.$opt3_subject;
    }
}

// 추가옵션
sql_query(" delete from {$g5['g5_shop_item_option_table']} where io_type = '1' and it_id = '$it_id' "); // 기존추가옵션삭제

$supply_count = (isset($_POST['spl_id']) && is_array($_POST['spl_id'])) ? count($_POST['spl_id']) : array();
if($supply_count) {
    // 추가옵션명
    $arr_spl = array();
    for($i=0; $i<$supply_count; $i++) {
        $_POST['spl_id'][$i] = preg_replace(G5_OPTION_ID_FILTER, '', strip_tags($_POST['spl_id'][$i]));

		$spl_val = explode(chr(30), $_POST['spl_id'][$i]);
        if(!in_array($spl_val[0], $arr_spl))
            $arr_spl[] = $spl_val[0];
    }

    $it_supply_subject = implode(',', $arr_spl);
}

// 상품요약정보
$value_array = array();
for($i=0; $i<count($_POST['ii_article']); $i++) {
    $key = $_POST['ii_article'][$i];
    $val = $_POST['ii_value'][$i];
    $value_array[$key] = $val;
}
$it_info_value = addslashes(serialize($value_array));

// 포인트 비율 값 체크
if(($it_point_type == 1 || $it_point_type == 2) && $it_point > 99)
    vpnlink_redirect_with_restore_draft("포인트 비율을 0과 99 사이의 값으로 입력해 주십시오.", $_POST);

$it_name = strip_tags(clean_xss_attributes(trim($_POST['it_name'])));

// KVE-2019-0708
$check_sanitize_keys = array(
'it_order',             // 출력순서
'it_maker',             // 제조사
'it_origin',            // 원산지
'it_brand',             // 브랜드
'it_model',             // 모델
'it_tel_inq',           // 전화문의
'it_use',               // 판매가능
'it_nocoupon',          // 쿠폰적용안함
'ec_mall_pid',          // 네이버쇼핑 상품ID
'it_sell_email',        // 판매자 e-mail
'it_price',             // 판매가격
'it_cust_price',        // 시중가격
'it_point_type',        // 포인트 유형
'it_point',             // 포인트
'it_supply_point',      // 추가옵션상품 포인트
'it_soldout',           // 상품품절
'it_stock_sms',         // 재입고SMS 알림
'it_stock_qty',         // 재고수량
'it_noti_qty',          // 재고 통보수량
'it_buy_min_qty',       // 최소계약일수
'it_buy_max_qty',       // 최대계약시간
'it_notax',             // 상품과세 유형
'it_billing_plan',      // 요금제 방식 (1: 월정액, 2: 종량제)
'it_billing_traffic_cost', // 트래픽 요금 (종량제)
'it_billing_time_cost',    // 시간 요금 (종량제)
'it_sc_type',           // 배송비 유형
'it_sc_method',         // 배송비 결제
'it_sc_price',          // 기본배송비
'it_sc_minimum',        // 배송비 상세조건
'it_spec_grade',        // 상품등급 (BASIC/PLUS/PRO/ULTRA/MAX)
'it_spec_vpn_type',     // 상품종류 (IKEv2/PPTP/OpenVPN/WireGuard/L2TP/RPC 등)
);

foreach( $check_sanitize_keys as $key ){
    $$key = isset($_POST[$key]) ? strip_tags(clean_xss_attributes($_POST[$key])) : '';
}

// 판매허용 요금제 플래그는 POST 기준으로 명시 파싱(환경 전역변수 영향 차단)
$it_is_hour_sale = (isset($_POST['it_is_hour_sale']) && (string)$_POST['it_is_hour_sale'] === '1') ? '1' : '0';
$it_1 = (isset($_POST['it_1']) && (string)$_POST['it_1'] === '1') ? '1' : '0';
$it_2 = (isset($_POST['it_2']) && (string)$_POST['it_2'] === '1') ? '1' : '0';
$it_3 = (isset($_POST['it_3']) && (string)$_POST['it_3'] === '1') ? '1' : '0';
$it_7 = (isset($_POST['it_7']) && (string)$_POST['it_7'] === '1') ? '1' : '0';

$it_basic = preg_replace('#<script(.*?)>(.*?)<\/script>#is', '', $it_basic);

if ($it_name == "")
    vpnlink_redirect_with_restore_draft("제목 또는 상품명을 입력해 주십시오.", $_POST);

// 추가값
$is_reserve = ($default['pt_reserve_end'] > 0 && $default['pt_reserve_day'] > 0 && $default['pt_reserve_cache'] > 0) ? true : false;
$is_reserve = ($is_reserve && ($is_admin == 'super' || $default['pt_reserve_use'] == "1")) ? true : false;

if($pt_reserve_use && $is_reserve) {
	if(!$pt_reserve) {
		$pt_reserve_time = "{$pt_reserve_date} {$pt_reserve_hour}:{$pt_reserve_minute}:00";
		$pt_reserve = strtotime($pt_reserve_time);
		$it_use = 0;
	}
} else {
	$pt_reserve_use = 0;
	$pt_reserve = 0;
}

if($pt_end_date && $default['pt_reserve_cache'] > 0) {
	$pt_end_time = "{$pt_end_date} {$pt_end_hour}:{$pt_end_minute}:00";
	$pt_end = strtotime($pt_end_time);
} else {
	$pt_end = 0;
}

$pt_review_sql = ($is_auth || $default['pt_review_use']) ? " pt_review_use = '$pt_review_use', " : "";
$pt_comment_sql = ($is_auth || $default['pt_comment_use']) ? " pt_comment_use = '$pt_comment_use', " : "";
$pt_syndi_sql = ($is_admin == 'super') ? " pt_syndi = '$pt_syndi', pt_commission = '$pt_commission', pt_incentive = '$pt_incentive', " : "";

$admin_sql = '';
if($is_auth) {
	$admin_sql =  " it_type1			= '$it_type1',
					it_type2			= '$it_type2',
					it_type3			= '$it_type3',
					it_type4			= '$it_type4',
					it_type5			= '$it_type5',
					it_sell_email		= '$it_sell_email',
		            it_head_html        = '$it_head_html',
		            it_tail_html        = '$it_tail_html',
		            it_mobile_head_html = '$it_mobile_head_html',
		            it_mobile_tail_html = '$it_mobile_tail_html',
		            it_order            = '$it_order',
		            it_tel_inq          = '$it_tel_inq',
		            it_nocoupon         = '$it_nocoupon',
		            it_cust_price       = '$it_cust_price',
                    it_stock_sms		= '$it_stock_sms',
					";
}

// 원격접속정보를 JSON 포맷으로 변환 시킴 JSLEE {
// $remotePrograms = strip_tags(clean_xss_attributes($_POST['remoteProgram']));
// $remoteIps = strip_tags(clean_xss_attributes($_POST['remoteIp']));
// $remoteIds = strip_tags(clean_xss_attributes($_POST['remoteId']));
// $remotePasswords = strip_tags(clean_xss_attributes($_POST['remotePassword']));
// $remoteData = array();
// for ($i = 0; $i < count($remotePrograms); $i++) {
//     if ($i == 0) {
//         $remoteData[] = array(
//             'RemoteIP' => $remoteIps[$i],
//             'RemoteIP_Country' => '-',
//             'Program_'.$i => $remotePrograms[$i],
//             $remotePrograms[$i].'_ID' => $remoteIds[$i],
//             $remotePrograms[$i].'_PWD' => $remotePasswords[$i]
//         );
//     } else {
//         $remoteData[] = array(
//             'Program_'.$i => $remotePrograms[$i],
//             $remotePrograms[$i].'_ID' => $remoteIds[$i],
//             $remotePrograms[$i].'_PWD' => $remotePasswords[$i]
//         );
//     }
// }
// $jsonData_for_it_spec_remote_sw = json_encode($remoteData, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

function clean_input($data) {
    return strip_tags(clean_xss_attributes($data));
}

function clean_input_recursive($data) {
    if (is_array($data)) {
        $cleaned = array();
        foreach ($data as $k => $v) {
            $cleaned[$k] = clean_input_recursive($v);
        }
        return $cleaned;
    }

    return clean_input((string)$data);
}

function vpnlink_restore_back_url_for_rpc_itemform() {
    $backUrl = '';

    if (isset($_SERVER['HTTP_REFERER'])) {
        $backUrl = trim((string)$_SERVER['HTTP_REFERER']);
        $backUrl = str_replace('&amp;', '&', $backUrl);
        if ($backUrl !== '' && strpos($backUrl, '/shop/partner/') === false) {
            $backUrl = '';
        }
    }

    if ($backUrl === '') {
        $wParam = isset($_POST['w']) ? trim((string)$_POST['w']) : '';
        $itIdParam = isset($_POST['it_id']) ? trim((string)$_POST['it_id']) : '';

        $backUrl = './?ap=item';
        if ($wParam === 'u' && $itIdParam !== '') {
            $backUrl .= '&w=u&it_id=' . rawurlencode($itIdParam);
        }
    }

    $sep = (strpos($backUrl, '?') !== false) ? '&' : '?';
    return $backUrl . $sep . 'restore_draft=1';
}

function vpnlink_merge_hour_split_post_fields($postData) {
    if (!is_array($postData)) {
        return $postData;
    }

    $fieldMap = array(
        array('hidden' => 'rpc_rental_days', 'day' => 'rpc_rental_days_day', 'hour' => 'rpc_rental_days_hour', 'max_hours' => 365 * 24),
        array('hidden' => 'it_10', 'day' => 'it_10_day', 'hour' => 'it_10_hour', 'max_hours' => 3650 * 24),
        array('hidden' => 'it_buy_min_qty', 'day' => 'it_buy_min_qty_day', 'hour' => 'it_buy_min_qty_hour', 'max_hours' => 365 * 24),
        array('hidden' => 'it_buy_max_qty', 'day' => 'it_buy_max_qty_day', 'hour' => 'it_buy_max_qty_hour', 'max_hours' => 365 * 24)
    );

    foreach ($fieldMap as $map) {
        $hasDay = isset($postData[$map['day']]);
        $hasHour = isset($postData[$map['hour']]);
        if (!$hasDay && !$hasHour) {
            continue;
        }

        $day = $hasDay ? (int)$postData[$map['day']] : 0;
        $hour = $hasHour ? (int)$postData[$map['hour']] : 0;

        if ($day < 0) {
            $day = 0;
        }
        if ($hour < 0) {
            $hour = 0;
        }
        if ($hour > 23) {
            $hour = 23;
        }

        $hours = ($day * 24) + $hour;

        if (isset($map['max_hours']) && (int)$map['max_hours'] > 0 && $hours > (int)$map['max_hours']) {
            $hours = (int)$map['max_hours'];
        }

        $postData[$map['hidden']] = (string)$hours;
    }

    return $postData;
}

function vpnlink_normalize_checkbox_post_fields($postData) {
    if (!is_array($postData)) {
        return $postData;
    }

    // 체크 해제 시 POST에서 key 자체가 누락되는 필드는 0으로 보정
    // (최근 설정/오류 복원 시 원래 선택 상태를 유지하기 위함)
    $checkboxDefaults = array(
        'it_is_hour_sale' => '0',
        'it_1' => '0',
        'it_2' => '0',
        'it_3' => '0',
        'it_7' => '0',
        'auction_on' => '0',
        'it_use' => '0',
        'it_soldout' => '0'
    );

    foreach ($checkboxDefaults as $fieldName => $defaultValue) {
        if (!array_key_exists($fieldName, $postData)) {
            $postData[$fieldName] = $defaultValue;
        }
    }

    return $postData;
}

function vpnlink_redirect_with_restore_draft($message, $postData = array(), $context = array()) {
    global $member;

    $postData = vpnlink_normalize_checkbox_post_fields($postData);
    $postData = vpnlink_merge_hour_split_post_fields($postData);

    $mbId = isset($member['mb_id']) ? trim((string)$member['mb_id']) : '';
    if ($mbId !== '') {
        $restoreFile = G5_DATA_PATH . '/item/itemform_restore_rpc_' . $mbId . '.json';
        $restorePayload = array(
            'saved_at' => G5_TIME_YMDHIS,
            'scope' => 'rpc-mall',
            'message' => (string)$message,
            'values' => clean_input_recursive($postData),
            'context' => clean_input_recursive($context)
        );
        @file_put_contents($restoreFile, json_encode($restorePayload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
    }

    goto_url(vpnlink_restore_back_url_for_rpc_itemform());
    exit;
}

function vpnlink_norm_conn_value($value) {
    $value = trim((string)$value);
    if($value === '') {
        return '';
    }

    if(function_exists('mb_strtolower')) {
        return mb_strtolower($value, 'UTF-8');
    }

    return strtolower($value);
}

function vpnlink_extract_conn_keys($jsonText) {
    $keys = array();
    $rows = json_decode((string)$jsonText, true);
    if(!is_array($rows)) {
        return $keys;
    }

    foreach ($rows as $row) {
        if(!is_array($row)) {
            continue;
        }

        $protocol = '';
        $server = '';
        $vpnId = '';

        foreach ($row as $k => $v) {
            if(strpos($k, 'Program__') === 0 && $protocol === '') {
                $protocol = trim((string)$v);
                continue;
            }

            if(preg_match('/^RemoteIP__\\d+$/', $k) && $server === '') {
                $server = trim((string)$v);
                continue;
            }

            if(preg_match('/_ID__\\d+$/', $k) && $vpnId === '') {
                $vpnId = trim((string)$v);
                continue;
            }
        }

        $normProtocol = vpnlink_norm_conn_value($protocol);
        $normServer = vpnlink_norm_conn_value($server);
        $normId = vpnlink_norm_conn_value($vpnId);

        if($normProtocol === '' || $normServer === '' || $normId === '') {
            continue;
        }

        $keys[] = $normProtocol . '|' . $normServer . '|' . $normId;
    }

    return array_values(array_unique($keys));
}

function build_recent_itemform_summary($values, $item_name = '') {
    $parts = array();

    $item_name_text = trim((string)$item_name);
    if ($item_name_text === '' && isset($values['__recent_item_name'])) {
        $item_name_text = trim((string)$values['__recent_item_name']);
    }

    if ($item_name_text !== '') {
        $parts[] = $item_name_text;
    }

    if ($item_name_text === '' && isset($values['ca_id']) && $values['ca_id'] !== '') {
        $parts[] = 'OS분류:' . $values['ca_id'];
    }
    if (isset($values['it_spec_cpu']) && $values['it_spec_cpu'] !== '') {
        $parts[] = 'CPU:' . $values['it_spec_cpu'];
    }
    if (isset($values['it_spec_gpu']) && $values['it_spec_gpu'] !== '') {
        $parts[] = 'GPU:' . $values['it_spec_gpu'];
    }
    if (isset($values['it_spec_ram']) && $values['it_spec_ram'] !== '') {
        $parts[] = 'RAM:' . $values['it_spec_ram'];
    }
    if (isset($values['it_price']) && $values['it_price'] !== '') {
        $parts[] = '시간요금:' . $values['it_price'];
    }
    if (isset($values['auction_on']) && (string)$values['auction_on'] === '1') {
        $parts[] = '경매:예';
    }

    if (!count($parts)) {
        return '최근 입력 설정';
    }

    return implode(' | ', $parts);
}

// POST 데이터 수집 및 정리
$remotePrograms = array_map('clean_input', $_POST['remoteProgram']);
$remoteIps = array_map('clean_input', $_POST['remoteIp']);
$remoteIpCountries = array_map('clean_input', '');
$remoteIpCities = array_map('clean_input', '');
$remoteIpLatitudes = array_map('clean_input', '');
$remoteIplongitudes = array_map('clean_input', '');
$remoteIds = array_map('clean_input', $_POST['remoteId']);
$remotePasswords = array_map('clean_input', $_POST['remotePassword']);
$remoteIpCountryCodes = array();

// VPN 접속정보 중복 강제 차단: (프로토콜 + 서버주소 + ID) 동일 조합 금지
$submittedConnMap = array();
$submittedConnMeta = array();
for ($i = 0; $i < count($remotePrograms); $i++) {
    $normProtocol = vpnlink_norm_conn_value(isset($remotePrograms[$i]) ? $remotePrograms[$i] : '');
    $normServer = vpnlink_norm_conn_value(isset($remoteIps[$i]) ? $remoteIps[$i] : '');
    $normId = vpnlink_norm_conn_value(isset($remoteIds[$i]) ? $remoteIds[$i] : '');

    if($normProtocol === '' || $normServer === '' || $normId === '') {
        continue;
    }

    $connKey = $normProtocol . '|' . $normServer . '|' . $normId;
    if(isset($submittedConnMap[$connKey])) {
        vpnlink_redirect_with_restore_draft(
            "입력하신 VPN 접속정보(프로토콜/서버주소/ID)가 같은 상품 내에 중복되어 저장될 수 없습니다.\n중복된 항목만 수정하신 뒤 다시 적용해 주세요.",
            $_POST
        );
    }

    $submittedConnMap[$connKey] = true;
    $submittedConnMeta[$connKey] = array(
        'protocol' => isset($remotePrograms[$i]) ? trim((string)$remotePrograms[$i]) : '',
        'server' => isset($remoteIps[$i]) ? trim((string)$remoteIps[$i]) : '',
        'vpn_id' => isset($remoteIds[$i]) ? trim((string)$remoteIds[$i]) : ''
    );
}

if(count($submittedConnMap) > 0) {
    $rawOwnerId = isset($_POST['it_spec_partner_id']) ? clean_input($_POST['it_spec_partner_id']) : '';
    if($rawOwnerId === '') {
        $rawOwnerId = isset($_POST['pt_id']) ? clean_input($_POST['pt_id']) : '';
    }
    if($rawOwnerId === '') {
        $rawOwnerId = $member['mb_id'];
    }

    if($is_admin != 'super' && $rawOwnerId !== $member['mb_id']) {
        $rawOwnerId = $member['mb_id'];
    }

    $currentItId = isset($_POST['it_id']) ? clean_input($_POST['it_id']) : '';
    $ownerIdSql = sql_real_escape_string($rawOwnerId);
    $currentItIdSql = sql_real_escape_string($currentItId);

    $whereCurrent = '';
    if($currentItIdSql !== '') {
        $whereCurrent = " and it_id <> '{$currentItIdSql}' ";
    }

    $dupSql = " select it_id, it_name, it_spec_remote_sw
                  from {$g5['g5_shop_item_table']}
                 where (pt_id = '{$ownerIdSql}' or it_spec_partner_id = '{$ownerIdSql}')
                   and it_spec_remote_sw <> ''
                   {$whereCurrent} ";

    $dupRes = sql_query($dupSql);
    $dupFoundItemLabel = '';
    while ($dupRow = sql_fetch_array($dupRes)) {
        $existingKeys = vpnlink_extract_conn_keys(isset($dupRow['it_spec_remote_sw']) ? $dupRow['it_spec_remote_sw'] : '');
        if(!count($existingKeys)) {
            continue;
        }

        $hitKey = '';
        foreach ($existingKeys as $existingKey) {
            if(isset($submittedConnMap[$existingKey])) {
                $hitKey = $existingKey;
                break;
            }
        }

        if($hitKey === '') {
            continue;
        }

        $dupItemId = isset($dupRow['it_id']) ? $dupRow['it_id'] : '';
        $dupItemName = isset($dupRow['it_name']) ? trim($dupRow['it_name']) : '';
        if($dupItemName !== '') {
            $dupFoundItemLabel = $dupItemId . ' (' . $dupItemName . ')';
        } else {
            $dupFoundItemLabel = $dupItemId;
        }

        $meta = isset($submittedConnMeta[$hitKey]) ? $submittedConnMeta[$hitKey] : array('protocol' => '', 'server' => '', 'vpn_id' => '');
        vpnlink_redirect_with_restore_draft(
            "입력하신 VPN 접속정보(프로토콜/서버주소/ID)와 동일한 조합이 이미 등록되어 있어 저장할 수 없습니다.\n\n중복 항목: "
            . $meta['protocol'] . ' / ' . $meta['server'] . ' / ' . $meta['vpn_id']
            . "\n기존 등록 상품: " . $dupFoundItemLabel
            . "\n\n중복 항목만 수정하신 후 다시 적용해 주세요.",
            $_POST,
            array(
                'focus_remote_conn' => array(
                    'protocol' => $meta['protocol'],
                    'server' => $meta['server'],
                    'vpn_id' => $meta['vpn_id']
                )
            )
        );
    }
}

// JSON 데이터 준비
$remoteData = array();
for ($i = 0; $i < count($remotePrograms); $i++) {
    // db에서 국가정보 , 시티정보, 지도좌표 가져오기 { JSLEE
    if ($i==0) {
        $result_geoip = sql_query("
            SELECT
                blocks.latitude,
                blocks.longitude,
                locations.city_name,
                locations.country_name,
                locations.country_iso_code
            FROM
                geoip_city_blocks_ipv4 AS blocks
            JOIN
                geoip_city_locations AS locations
            ON
                blocks.geoname_id = locations.geoname_id
            WHERE
                INET6_ATON('{$remoteIps[$i]}') BETWEEN blocks.start_ip AND blocks.end_ip;
        ");

        if ($result_geoip->num_rows > 0) {
            $row_geoip = $result_geoip->fetch_assoc();
            $remoteIpCountries[$i] = $row_geoip['country_name'];
            $remoteIpCountryCodes[$i] = $row_geoip['country_iso_code'];
            $remoteIpCities[$i] = $row_geoip['city_name'];
            $remoteIpLatitudes[$i] = $row_geoip['latitude'];
            $remoteIplongitudes[$i] = $row_geoip['longitude'];
        } else {
            $remoteIpCountries[$i] = '';
            $remoteIpCountryCodes[$i] = '';
            $remoteIpCities[$i] = '';
            $remoteIpLatitudes[$i] = '';
            $remoteIplongitudes[$i] = '';
        }
        $remoteData[] = array(
            'RemoteIP__'.$i => $remoteIps[$i],
            'RemoteIP_CountryName__'.$i => $remoteIpCountries[$i],  // IP 국가명
            'RemoteIP_CountryCode__'.$i => $remoteIpCountryCodes[$i],  // IP 국가명
            'RemoteIP_City__'.$i => $remoteIpCities[$i],  // IP city 명
            'RemoteIP_Latitude__'.$i => $remoteIpLatitudes[$i],  // IP 지도상 위도
            'RemoteIP_Longitude__'.$i => $remoteIplongitudes[$i],  // IP 지도상 경도
            'Program__'.$i => $remotePrograms[$i],
            $remotePrograms[$i].'_ID__'.$i => $remoteIds[$i],
            $remotePrograms[$i].'_PWD__'.$i => $remotePasswords[$i]
        );
    } else {
        $remoteData[] = array(
            'RemoteIP__'.$i => $remoteIps[0],
            'RemoteIP_CountryName__'.$i => $remoteIpCountries[0],  // IP 국가명
            'RemoteIP_CountryCode__'.$i => $remoteIpCountryCodes[0],  // IP 국가명
            'RemoteIP_City__'.$i => $remoteIpCities[0],  // IP city 명
            'RemoteIP_Latitude__'.$i => $remoteIpLatitudes[0],  // IP 지도상 위도
            'RemoteIP_Longitude__'.$i => $remoteIplongitudes[0],  // IP 지도상 경도
            'Program__'.$i => $remotePrograms[$i],
            $remotePrograms[$i].'_ID__'.$i => $remoteIds[$i],
            $remotePrograms[$i].'_PWD__'.$i => $remotePasswords[$i]
        );
    }
    // db에서 국가정보 , 시티정보, 지도좌표 가져오기 } JSLEE

}

// JSON 데이터 변환
$jsonData_for_it_spec_remote_sw = json_encode($remoteData, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

// 원격접속정보를 JSON 포맷으로 변환 시킴 JSLEE }

// 입력 기본단위: 1시간 요금
// 내부 저장 기본단위: 1일 요금 (기존 호환)
$it_hourly_price = (int)$it_price;
if($it_hourly_price < 0) {
    $it_hourly_price = 0;
}
$it_is_hour_sale_price = $it_hourly_price;
$it_price = $it_hourly_price * 24;

// 개통비/설치비 규칙 (it_8~it_10 사용)
$it_8 = isset($_POST['it_8']) ? (int)$_POST['it_8'] : (int)$it_8; // 할인 적용 시작시간
$it_9 = isset($_POST['it_9']) ? (int)$_POST['it_9'] : (int)$it_9; // 할인시 개통비
$it_10 = isset($_POST['it_10']) ? (int)$_POST['it_10'] : (int)$it_10; // 면제 적용 시작시간
$it_11 = (isset($_POST['it_11']) && $_POST['it_11'] === '1') ? '1' : '0'; // 기간 연장 가능 여부
if($it_8 < 0) $it_8 = 0;
if($it_9 < 0) $it_9 = 0;
if($it_10 < 0) $it_10 = 0;

// Debugging: Log POST data (disabled)

// Manual extraction to ensure these vars are set
$it_billing_plan = isset($_POST['it_billing_plan']) ? strip_tags(clean_xss_attributes($_POST['it_billing_plan'])) : '';
$it_billing_traffic_cost = isset($_POST['it_billing_traffic_cost']) ? strip_tags(clean_xss_attributes($_POST['it_billing_traffic_cost'])) : 0;
$it_billing_time_cost = isset($_POST['it_billing_time_cost']) ? strip_tags(clean_xss_attributes($_POST['it_billing_time_cost'])) : 0;

// 판매자 소유자ID 보정: pt_id는 공란 저장되지 않도록 강제
$it_spec_partner_id = isset($_POST['it_spec_partner_id']) ? strip_tags(clean_xss_attributes($_POST['it_spec_partner_id'])) : '';
$pt_id = isset($_POST['pt_id']) ? strip_tags(clean_xss_attributes($_POST['pt_id'])) : '';
$it_spec_partner_id = trim($it_spec_partner_id);
$pt_id = trim($pt_id);

// owner_id 단일값 확정: pt_id 와 it_spec_partner_id 는 항상 동일하게 저장
$owner_id_final = $it_spec_partner_id;
if($owner_id_final === '') {
    $owner_id_final = $pt_id;
}
if($owner_id_final === '') {
    $owner_id_final = $member['mb_id'];
}
if($is_admin != 'super') {
    $owner_id_final = $member['mb_id'];
}

$it_spec_partner_id = $owner_id_final;
$pt_id = $owner_id_final;


if ($it_is_hour_sale == "1") { // 1시간 단위판매 허용 체크된 경우 (기본단위: 시간)
    $it_buy_min_qty = 1;
}

$it_buy_min_qty = (int)$it_buy_min_qty;
$it_buy_max_qty = (int)$it_buy_max_qty;

if($it_buy_min_qty < 1) {
    $it_buy_min_qty = 1;
}

if($it_buy_max_qty <= 0) {
    $it_buy_max_qty = 8760;
}

if($it_buy_max_qty > 8760) {
    $it_buy_max_qty = 8760;
}

if($it_buy_min_qty > $it_buy_max_qty) {
    $it_buy_min_qty = $it_buy_max_qty;
}


$spec_sql =  "  it_spec_sales_type		= '$it_spec_sales_type',
                it_spec_partner_id		= '$it_spec_partner_id',
                it_spec_app_ver			= '$it_spec_app_ver',
                it_spec_mgr_nickname	= '$it_spec_mgr_nickname',
                it_spec_os			    = '$it_spec_os',
                it_spec_os_disp_lang	= '$it_spec_os_disp_lang',
                it_spec_cpu			    = '$it_spec_cpu',
                it_spec_ram			    = '$it_spec_ram',
                it_spec_ram_type		= '$it_spec_ram_type',
                it_spec_gpu			    = '$it_spec_gpu',
                it_spec_ssd			    = '$it_spec_ssd',
                it_spec_ssd_type		= '$it_spec_ssd_type',
                it_spec_hdd			    = '$it_spec_hdd',
                it_spec_hdd_type		= '$it_spec_hdd_type',
                it_spec_remote_sw		= '$jsonData_for_it_spec_remote_sw',
                it_spec_remote_ip_country_code = '$remoteIpCountryCodes[0]',
                it_install_price		= '$it_install_price',
                it_is_hour_sale		    = '$it_is_hour_sale',
                it_is_hour_sale_price   = '$it_is_hour_sale_price',
                it_billing_plan         = '$it_billing_plan',
                it_billing_traffic_cost = '$it_billing_traffic_cost',
                it_billing_time_cost    = '$it_billing_time_cost',
                it_is_vm                = '$it_is_vm',
                it_shop_memo			= '$it_shop_memo',
                it_spec_keyboard	    = '$it_spec_keyboard',
                it_spec_mouse			= '$it_spec_mouse',
                auction_on			    = '$auction_on',
                it_spec_grade           = '". (in_array(strtoupper($it_spec_grade), ['', 'BASIC', 'PLUS', 'PRO', 'ULTRA', 'MAX']) ? strtoupper($it_spec_grade) : '') ."',
                it_spec_vpn_type        = '". (in_array($it_spec_vpn_type, ['', 'IKEv2', 'PPTP', 'OpenVPN', 'WireGuard', 'L2TP', 'RPC']) ? $it_spec_vpn_type : '') ."',
";

$sql_common = " ca_id               = '$ca_id',
                ca_id2              = '$ca_id2',
                ca_id3              = '$ca_id3',
                pt_id               = '$pt_id',
                it_name             = '$it_name',
                it_maker            = '$it_maker',
                it_origin           = '$it_origin',
                it_brand            = '$it_brand',
                it_model            = '$it_model',
                it_option_subject   = '$it_option_subject',
                it_supply_subject   = '$it_supply_subject',
				it_basic            = '$it_basic',
                it_explan           = '$it_explan',
                it_explan2          = '".strip_tags(clean_xss_attributes(trim($_POST['it_explan'])))."',
                it_mobile_explan    = '$it_mobile_explan',
                it_price            = '$it_price',
                it_point            = '$it_point',
                it_point_type       = '$it_point_type',
                it_supply_point     = '$it_supply_point',
                it_notax            = '$it_notax',
                it_use              = '$it_use',
                it_soldout          = '$it_soldout',
                it_stock_qty        = '$it_stock_qty',
                it_noti_qty         = '$it_noti_qty',
                it_sc_type          = '$it_sc_type',
                it_sc_method        = '$it_sc_method',
                it_sc_price         = '$it_sc_price',
                it_sc_minimum       = '$it_sc_minimum',
                it_sc_qty           = '$it_sc_qty',
                it_buy_min_qty      = '$it_buy_min_qty',
                it_buy_max_qty      = '$it_buy_max_qty',
                it_ip               = '{$_SERVER['REMOTE_ADDR']}',
                it_info_gubun       = '$it_info_gubun',
                it_info_value       = '$it_info_value',
                it_img1             = '$it_img1',
                it_img2             = '$it_img2',
                it_img3             = '$it_img3',
                it_img4             = '$it_img4',
                it_img5             = '$it_img5',
                it_img6             = '$it_img6',
                it_img7             = '$it_img7',
                it_img8             = '$it_img8',
                it_img9             = '$it_img9',
                it_img10            = '$it_img10',
                it_1_subj           = '$it_1_subj',
                it_2_subj           = '$it_2_subj',
                it_3_subj           = '$it_3_subj',
                it_4_subj           = '$it_4_subj',
                it_5_subj           = '$it_5_subj',
                it_6_subj           = '$it_6_subj',
                it_7_subj           = '$it_7_subj',
                it_8_subj           = '$it_8_subj',
                it_9_subj           = '$it_9_subj',
                it_10_subj          = '$it_10_subj',
                it_1                = '$it_1',
                it_2                = '$it_2',
                it_3                = '$it_3',
                it_4                = '$it_4',
                it_5                = '$it_5',
                it_6                = '$it_6',
                it_7                = '$it_7',
                it_8                = '$it_8',
                it_9                = '$it_9',
                it_10               = '$it_10',
                it_11               = '$it_11',
				$admin_sql
                $spec_sql
				pt_it				= '$pt_it',
                pt_img				= '$pt_img',
                pt_ccl				= '$pt_ccl',
				pt_order			= '$pt_order',
				pt_show				= '$pt_show',
				pt_tag				= '$pt_tag',
                pt_link1			= '$pt_link1',
                pt_link2			= '$pt_link2',
				$pt_review_sql
				$pt_comment_sql
				pt_day				= '$pt_day',
				pt_end				= '$pt_end',
				pt_reserve			= '$pt_reserve',
				pt_reserve_use		= '$pt_reserve_use',
				$pt_syndi_sql
				pt_explan	        = '$pt_explan',
                pt_mobile_explan    = '$pt_mobile_explan',
				pt_msg1			    = '$pt_msg1',
                pt_msg2			    = '$pt_msg2',
                pt_msg3			    = '$pt_msg3'
				";

if ($w == "")
{
    $it_id = $_POST['it_id'];

    if (!trim($it_id)) {
        vpnlink_redirect_with_restore_draft('코드가 없으므로 추가하실 수 없습니다.', $_POST);
    }

    $t_it_id = preg_replace("/[A-Za-z0-9\-_]/", "", $it_id);
    if($t_it_id)
        vpnlink_redirect_with_restore_draft('코드는 영문자, 숫자, -, _ 만 사용할 수 있습니다.', $_POST);

	$pt_num = time();
    $sql_common .= " , it_time = '".G5_TIME_YMDHIS."' ";
    $sql_common .= " , it_update_time = '".G5_TIME_YMDHIS."' ";
    $sql = " insert {$g5['g5_shop_item_table']}
                set it_id = '$it_id',
					pt_num = '$pt_num',
					$sql_common	";
    sql_query($sql);





}
else if ($w == "u")
{
    $sql_common .= " , it_update_time = '".G5_TIME_YMDHIS."' ";
    $sql = " update {$g5['g5_shop_item_table']}
                set $sql_common
              where it_id = '$it_id' ";
    sql_query($sql);
}
/*
else if ($w == "d")
{
    if ($is_admin != 'super')
    {
        $sql = " select it_id from {$g5['g5_shop_item_table']} a, {$g5['g5_shop_category_table']} b
                  where a.it_id = '$it_id'
                    and a.ca_id = b.ca_id
                    and b.ca_mb_id = '{$member['mb_id']}' ";
        $row = sql_fetch($sql);
        if (!$row['it_id'])
            alert("\'{$member['mb_id']}\' 님께서 삭제 할 권한이 없는 상품입니다.");
    }

    itemdelete($it_id);
}
*/


// 경매노출 체크되어 있다면 경매상품 테이블에 등록 {
// rpc_rental_days 컬럼명은 기존 유지, 저장값은 시간 단위로 사용
$rpc_rental_hours = isset($_POST['rpc_rental_days']) ? (int)$_POST['rpc_rental_days'] : 1;
if ($rpc_rental_hours < 1) {
    $rpc_rental_hours = 1;
}
if ($rpc_rental_hours > (365 * 24)) {
    $rpc_rental_hours = 365 * 24;
}

if (isset($_POST['auction_on']) && $auction_on == '1') {

    $sql_auction = "SELECT * FROM {$g5['write_auction_table']} WHERE pcnum = '$it_id'";
    $row_auction = sql_fetch($sql_auction);

    // $row_auction이 null이거나, 'wr_id'가 빈 문자열인 경우를 처리하는 코드
    if (is_null($row_auction) || $row_auction['wr_id'] == '') {
        // $wr_num = get_next_num($g5['write_auction_table']);
        $wr_reply = '';
        $html = '';
        $secret = '';
        $mail = '';
        $wr_content = '';
        $wr_link1 = '';
        $wr_link2 = '';


        $tender_unit = $_POST['tender_unit']; // [입찰금액단위] 1, 10, 100, 1000, 10000 ...
        $tender_method = $_POST['tender_method']; // [입찰방식] 공개, 비공개
        $auction_off_method = $_POST['auction_off_method']; // [낙찰방식] 최저가, 최고가
        $tender_possible_count = $_POST['tender_possible_count']; // [전체 입찰참여가능횟수] 한사람이 총 입찰참여 가능한 회수
        $wr_6 = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $rpc_rental_days = $rpc_rental_hours; // [경매선택시 RPC대여시간]

        $auction_off_member_count = $_POST['auction_off_member_count']; // [낙찰위한 위한 최소 입찰자수] 입찰 후 낙찰되기 위한 최소 입찰자 수(입찰횟수가 아니라 입찰한 사람(회원)수)
        $delivery_method = $_POST['delivery_method']; // 배송방법
        $delivery_price = $_POST['delivery_price']; // 배송비용

        $write = array();
        //$write[wr_1] = date("Y-m-d 00:00:00", G5_SERVER_TIME + 86400 * 1);  // 내일 0시부터 시작할 때
        $write[wr_1] = $_POST['wr_1']; // [경매개시일시] 등록즉시 시작할 때는 date("Y-m-d H:i:s", G5_SERVER_TIME);
        $write[wr_2] = $_POST['wr_2']; //경매종료일시 $write[wr_2] = date("Y-m-d H:i:s", strtotime($write[wr_1]) + 86400 * 7);

        //$write[wr_3] = $board[bo_1]; // 참여 포인트 기본값 - wr_3은 사용하면 안됨. 판매자센터/서버실ID로 대체했음
        $write[wr_3] = $pt_it;

        //$write[wr_4] = $board[bo_2]; // 입찰 최소 포인트 기본값
        $write[wr_4] = $_POST['wr_4']; // 입찰 최소 포인트 기본값 // 시작가를 판매가의 30%로 시작 설정 (이 기본값은 등록자가 임의로 수정가능함)
        //$write[wr_4] = "10000"; // 입찰 최소 포인트 기본값

        //$write[wr_5] = $board[bo_3]; // 입찰 최대 포인트 기본값
        $write[wr_5] = $_POST['wr_5']; // 입찰 최대 포인트 기본값

        //$write[wr_6] = $board[bo_4]; // 하루 참여 횟수 기본값
        $write[wr_6] = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $write[wr_7] = "0"; // 입찰된 횟수
        $write[wr_8] = "0"; // 경매결과 (td_status) 0, 1,2,3과 같은 숫자임
        $write[wr_9] = ""; // 낙찰금액
        $write[wr_10] = ""; // 낙찰자ID

        // $wr_subject = "RnD서버실|[OS]Windows 11 Pro (64Bit) [CPU]Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz 4 Cores [RAM]8GB [SSD]480GB [HDD]0GB [GPU]NVIDIA GeForce GTX 750 Ti (2GB)|1000|공개|최고가|20|2|기타|0"
        $wr_subject = "{$member['mb_nick']} ({$member['mb_id']})|[OS]{$it_spec_os} [CPU]{$it_spec_cpu} [RAM]{$it_spec_ram} [SSD]{$it_spec_ssd} [HDD]{$it_spec_hdd} [GPU]{$it_spec_gpu}|{$tender_unit}|{$tender_method}|{$auction_off_method}|{$tender_possible_count}|{$auction_off_member_count}|{$delivery_method}|{$delivery_price}";
        $sql_write_auction_insert = " INSERT INTO {$g5['write_auction_table']}
                                        SET wr_reply = '$wr_reply',
                                            wr_comment = 0,
                                            ca_id = '$ca_id',
                                            ca_id2 = '$ca_id2',
                                            ca_id3 = '$ca_id3',
                                            ca_name = '$ca_name',
                                            wr_option = '$html,$secret,$mail',
                                            wr_subject = '$wr_subject',
                                            wr_content = '$wr_content',
                                            wr_link1 = '$wr_link1',
                                            wr_link2 = '$wr_link2',
                                            wr_link1_hit = 0,
                                            wr_link2_hit = 0,
                                            wr_hit = 0,
                                            wr_good = 0,
                                            wr_nogood = 0,
                                            mb_id = '{$member['mb_id']}',
                                            wr_password = '{$member['mb_password']}',
                                            wr_name = '{$member['mb_nick']}',
                                            wr_email = '{$member['mb_email']}',
                                            wr_homepage = '{$member['mb_homepage']}',
                                            wr_datetime = '".G5_TIME_YMDHIS."',
                                            wr_last = '".G5_TIME_YMDHIS."',
                                            wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                                            wr_1 = '{$write[wr_1]}',
                                            wr_2 = '{$write[wr_2]}',
                                            wr_3 = '{$write[wr_3]}',
                                            wr_4 = '{$write[wr_4]}',
                                            wr_5 = '{$write[wr_5]}',
                                            wr_6 = '{$write[wr_6]}',
                                            wr_7 = '{$write[wr_7]}',
                                            wr_8 = '{$write[wr_8]}',
                                            wr_9 = '{$write[wr_9]}',
                                            wr_10 = '{$write[wr_10]}',
                                            pcnum = '{$it_id}',
                                            auction_on = '{$auction_on}',
                                            rpc_rental_days = '{$rpc_rental_days}' ";
        sql_query($sql_write_auction_insert);
    } else {
        $wr_reply = '';
        $html = '';
        $secret = '';
        $mail = '';
        $wr_content = '';
        $wr_link1 = '';
        $wr_link2 = '';


        $tender_unit = $_POST['tender_unit']; // [입찰금액단위] 1, 10, 100, 1000, 10000 ...
        $tender_method = $_POST['tender_method']; // [입찰방식] 공개, 비공개
        $auction_off_method = $_POST['auction_off_method']; // [낙찰방식] 최저가, 최고가
        $tender_possible_count = $_POST['tender_possible_count']; // [전체 입찰참여가능횟수] 한사람이 총 입찰참여 가능한 회수
        $wr_6 = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $rpc_rental_days = $rpc_rental_hours; // [경매선택시 RPC대여시간]

        $auction_off_member_count = $_POST['auction_off_member_count']; // [낙찰위한 위한 최소 입찰자수] 입찰 후 낙찰되기 위한 최소 입찰자 수(입찰횟수가 아니라 입찰한 사람(회원)수)
        $delivery_method = $_POST['delivery_method']; // 배송방법
        $delivery_price = $_POST['delivery_price']; // 배송비용

        $write = array();
        //$write[wr_1] = date("Y-m-d 00:00:00", G5_SERVER_TIME + 86400 * 1);  // 내일 0시부터 시작할 때
        $write[wr_1] = $_POST['wr_1']; // [경매개시일시] 등록즉시 시작할 때는 date("Y-m-d H:i:s", G5_SERVER_TIME);
        $write[wr_2] = $_POST['wr_2']; //경매종료일시 $write[wr_2] = date("Y-m-d H:i:s", strtotime($write[wr_1]) + 86400 * 7);

        //$write[wr_3] = $board[bo_1]; // 참여 포인트 기본값 - wr_3은 사용하면 안됨. 판매자센터/서버실ID로 대체했음
        $write[wr_3] = $pt_it;

        //$write[wr_4] = $board[bo_2]; // 입찰 최소 포인트 기본값
        $write[wr_4] = $_POST['wr_4']; // 입찰 최소 포인트 기본값 // 시작가를 판매가의 30%로 시작 설정 (이 기본값은 등록자가 임의로 수정가능함)
        //$write[wr_4] = "10000"; // 입찰 최소 포인트 기본값

        //$write[wr_5] = $board[bo_3]; // 입찰 최대 포인트 기본값
        $write[wr_5] = $_POST['wr_5']; // 입찰 최대 포인트 기본값

        //$write[wr_6] = $board[bo_4]; // 하루 참여 횟수 기본값
        $write[wr_6] = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $write[wr_7] = "0"; // 입찰된 횟수
        $write[wr_8] = "0"; // 경매결과 (td_status) // 0:"시작전" 1:"진행중" 2:"종료[낙찰]" 3:"종료[유찰]"
        $write[wr_9] = ""; // 낙찰금액
        $write[wr_10] = ""; // 낙찰자ID

        // $wr_subject = "RnD서버실|[OS]Windows 11 Pro (64Bit) [CPU]Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz 4 Cores [RAM]8GB [SSD]480GB [HDD]0GB [GPU]NVIDIA GeForce GTX 750 Ti (2GB)|1000|공개|최고가|20|2|기타|0"
        $wr_subject = "{$member['mb_nick']} ({$member['mb_id']})|[OS]{$it_spec_os} [CPU]{$it_spec_cpu} [RAM]{$it_spec_ram} [SSD]{$it_spec_ssd} [HDD]{$it_spec_hdd} [GPU]{$it_spec_gpu}|{$tender_unit}|{$tender_method}|{$auction_off_method}|{$tender_possible_count}|{$auction_off_member_count}|{$delivery_method}|{$delivery_price}";
        $sql_write_auction_update = " UPDATE {$g5['write_auction_table']}
                                        SET ca_id = '$ca_id',
                                            ca_id2 = '$ca_id2',
                                            ca_id3 = '$ca_id3',
                                            ca_name = '$ca_name',
                                            wr_option = '$html,$secret,$mail',
                                            wr_subject = '$wr_subject',
                                            wr_content = '$wr_content',
                                            wr_name = '{$member['mb_nick']}',
                                            wr_email = '{$member['mb_email']}',
                                            wr_homepage = '{$member['mb_homepage']}',
                                            wr_last = '".G5_TIME_YMDHIS."',
                                            wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                                            wr_1 = '{$write[wr_1]}',
                                            wr_2 = '{$write[wr_2]}',
                                            wr_3 = '{$write[wr_3]}',
                                            wr_4 = '{$write[wr_4]}',
                                            wr_5 = '{$write[wr_5]}',
                                            wr_6 = '{$write[wr_6]}',
                                            wr_7 = '{$write[wr_7]}',
                                            wr_8 = '{$write[wr_8]}',
                                            wr_9 = '{$write[wr_9]}',
                                            wr_10 = '{$write[wr_10]}',
                                            auction_on = '{$auction_on}',
                                            rpc_rental_days = '{$rpc_rental_days}'
                                        WHERE mb_id = '{$member['mb_id']}' AND pcnum = '{$it_id}' ";
        sql_query($sql_write_auction_update);
    }

    // 데이터 추출
    $sql_auction2 = "SELECT * FROM {$g5['write_auction_table']} WHERE pcnum = '$it_id'";
    $row_auction2 = sql_fetch($sql_auction2);

    if ($row_auction2) {
        // 컬럼 이름을 가져오기 위해 배열의 키를 사용
        $columns = array_keys($row_auction2);
        $columns_list = implode(", ", $columns);

        // 값들을 가져오기 위해 배열의 값을 사용
        $values = array_map(function($value) {
            return "'" . addslashes($value) . "'";
        }, array_values($row_auction2));
        $values_list = implode(", ", $values);

        // 데이터 삽입
        $sql_write_auction_off_insert = "INSERT INTO {$g5['write_auction_off_table']} ($columns_list) VALUES ($values_list)";
        sql_query($sql_write_auction_off_insert);
    }

} else { // 경매노출 체크가 해제되어 있다면 경매상품 테이블에서 삭제

    $sql_auction = "SELECT * FROM {$g5['write_auction_table']} WHERE pcnum = '$it_id'";
    $row_auction = sql_fetch($sql_auction);

    // $row_auction이 null이거나, 'wr_id'가 빈 문자열인 경우를 처리하는 코드
    if (is_null($row_auction) || $row_auction['wr_id'] == '') {
        // $wr_num = get_next_num($g5['write_auction_table']);
        $wr_reply = '';
        $html = '';
        $secret = '';
        $mail = '';
        $wr_content = '';
        $wr_link1 = '';
        $wr_link2 = '';


        $tender_unit = $_POST['tender_unit']; // [입찰금액단위] 1, 10, 100, 1000, 10000 ...
        $tender_method = $_POST['tender_method']; // [입찰방식] 공개, 비공개
        $auction_off_method = $_POST['auction_off_method']; // [낙찰방식] 최저가, 최고가
        $tender_possible_count = $_POST['tender_possible_count']; // [전체 입찰참여가능횟수] 한사람이 총 입찰참여 가능한 회수
        $wr_6 = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $rpc_rental_days = $rpc_rental_hours; // [경매선택시 RPC대여시간]

        $auction_off_member_count = $_POST['auction_off_member_count']; // [낙찰위한 위한 최소 입찰자수] 입찰 후 낙찰되기 위한 최소 입찰자 수(입찰횟수가 아니라 입찰한 사람(회원)수)
        $delivery_method = $_POST['delivery_method']; // 배송방법
        $delivery_price = $_POST['delivery_price']; // 배송비용

        $write = array();
        //$write[wr_1] = date("Y-m-d 00:00:00", G5_SERVER_TIME + 86400 * 1);  // 내일 0시부터 시작할 때
        $write[wr_1] = $_POST['wr_1']; // [경매개시일시] 등록즉시 시작할 때는 date("Y-m-d H:i:s", G5_SERVER_TIME);
        $write[wr_2] = $_POST['wr_2']; //경매종료일시 $write[wr_2] = date("Y-m-d H:i:s", strtotime($write[wr_1]) + 86400 * 7);

        //$write[wr_3] = $board[bo_1]; // 참여 포인트 기본값 - wr_3은 사용하면 안됨. 판매자센터/서버실ID로 대체했음
        $write[wr_3] = $pt_it;

        //$write[wr_4] = $board[bo_2]; // 입찰 최소 포인트 기본값
        $write[wr_4] = $_POST['wr_4']; // 입찰 최소 포인트 기본값 // 시작가를 판매가의 30%로 시작 설정 (이 기본값은 등록자가 임의로 수정가능함)
        //$write[wr_4] = "10000"; // 입찰 최소 포인트 기본값

        //$write[wr_5] = $board[bo_3]; // 입찰 최대 포인트 기본값
        $write[wr_5] = $_POST['wr_5']; // 입찰 최대 포인트 기본값

        //$write[wr_6] = $board[bo_4]; // 하루 참여 횟수 기본값
        $write[wr_6] = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $write[wr_7] = "0"; // 입찰된 횟수
        $write[wr_8] = "0"; // 경매결과 (td_status) 0, 1,2,3과 같은 숫자임
        $write[wr_9] = ""; // 낙찰금액
        $write[wr_10] = ""; // 낙찰자ID

        // $wr_subject = "RnD서버실|[OS]Windows 11 Pro (64Bit) [CPU]Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz 4 Cores [RAM]8GB [SSD]480GB [HDD]0GB [GPU]NVIDIA GeForce GTX 750 Ti (2GB)|1000|공개|최고가|20|2|기타|0"
        $wr_subject = "{$member['mb_nick']} ({$member['mb_id']})|[OS]{$it_spec_os} [CPU]{$it_spec_cpu} [RAM]{$it_spec_ram} [SSD]{$it_spec_ssd} [HDD]{$it_spec_hdd} [GPU]{$it_spec_gpu}|{$tender_unit}|{$tender_method}|{$auction_off_method}|{$tender_possible_count}|{$auction_off_member_count}|{$delivery_method}|{$delivery_price}";
        $sql_write_auction_insert = " INSERT INTO {$g5['write_auction_table']}
                                        SET wr_reply = '$wr_reply',
                                            wr_comment = 0,
                                            ca_id = '$ca_id',
                                            ca_id2 = '$ca_id2',
                                            ca_id3 = '$ca_id3',
                                            ca_name = '$ca_name',
                                            wr_option = '$html,$secret,$mail',
                                            wr_subject = '$wr_subject',
                                            wr_content = '$wr_content',
                                            wr_link1 = '$wr_link1',
                                            wr_link2 = '$wr_link2',
                                            wr_link1_hit = 0,
                                            wr_link2_hit = 0,
                                            wr_hit = 0,
                                            wr_good = 0,
                                            wr_nogood = 0,
                                            mb_id = '{$member['mb_id']}',
                                            wr_password = '{$member['mb_password']}',
                                            wr_name = '{$member['mb_nick']}',
                                            wr_email = '{$member['mb_email']}',
                                            wr_homepage = '{$member['mb_homepage']}',
                                            wr_datetime = '".G5_TIME_YMDHIS."',
                                            wr_last = '".G5_TIME_YMDHIS."',
                                            wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                                            wr_1 = '{$write[wr_1]}',
                                            wr_2 = '{$write[wr_2]}',
                                            wr_3 = '{$write[wr_3]}',
                                            wr_4 = '{$write[wr_4]}',
                                            wr_5 = '{$write[wr_5]}',
                                            wr_6 = '{$write[wr_6]}',
                                            wr_7 = '{$write[wr_7]}',
                                            wr_8 = '{$write[wr_8]}',
                                            wr_9 = '{$write[wr_9]}',
                                            wr_10 = '{$write[wr_10]}',
                                            pcnum = '{$it_id}',
                                            auction_on = '{$auction_on}',
                                            rpc_rental_days = '{$rpc_rental_days}' ";
        sql_query($sql_write_auction_insert);
    } else {
        $wr_reply = '';
        $html = '';
        $secret = '';
        $mail = '';
        $wr_content = '';
        $wr_link1 = '';
        $wr_link2 = '';


        $tender_unit = $_POST['tender_unit']; // [입찰금액단위] 1, 10, 100, 1000, 10000 ...
        $tender_method = $_POST['tender_method']; // [입찰방식] 공개, 비공개
        $auction_off_method = $_POST['auction_off_method']; // [낙찰방식] 최저가, 최고가
        $tender_possible_count = $_POST['tender_possible_count']; // [전체 입찰참여가능횟수] 한사람이 총 입찰참여 가능한 회수
        $wr_6 = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $rpc_rental_days = $rpc_rental_hours; // [경매선택시 RPC대여시간]

        $auction_off_member_count = $_POST['auction_off_member_count']; // [낙찰위한 위한 최소 입찰자수] 입찰 후 낙찰되기 위한 최소 입찰자 수(입찰횟수가 아니라 입찰한 사람(회원)수)
        $delivery_method = $_POST['delivery_method']; // 배송방법
        $delivery_price = $_POST['delivery_price']; // 배송비용

        $write = array();
        //$write[wr_1] = date("Y-m-d 00:00:00", G5_SERVER_TIME + 86400 * 1);  // 내일 0시부터 시작할 때
        $write[wr_1] = $_POST['wr_1']; // [경매개시일시] 등록즉시 시작할 때는 date("Y-m-d H:i:s", G5_SERVER_TIME);
        $write[wr_2] = $_POST['wr_2']; //경매종료일시 $write[wr_2] = date("Y-m-d H:i:s", strtotime($write[wr_1]) + 86400 * 7);

        //$write[wr_3] = $board[bo_1]; // 참여 포인트 기본값 - wr_3은 사용하면 안됨. 판매자센터/서버실ID로 대체했음
        $write[wr_3] = $pt_it;

        //$write[wr_4] = $board[bo_2]; // 입찰 최소 포인트 기본값
        $write[wr_4] = $_POST['wr_4']; // 입찰 최소 포인트 기본값 // 시작가를 판매가의 30%로 시작 설정 (이 기본값은 등록자가 임의로 수정가능함)
        //$write[wr_4] = "10000"; // 입찰 최소 포인트 기본값

        //$write[wr_5] = $board[bo_3]; // 입찰 최대 포인트 기본값
        $write[wr_5] = $_POST['wr_5']; // 입찰 최대 포인트 기본값

        //$write[wr_6] = $board[bo_4]; // 하루 참여 횟수 기본값
        $write[wr_6] = $_POST['wr_6']; // [1일 입찰참여가능횟수]

        $write[wr_7] = "0"; // 입찰된 횟수
        $write[wr_8] = "0"; // 경매결과 (td_status) // 0:"시작전" 1:"진행중" 2:"종료[낙찰]" 3:"종료[유찰]"
        $write[wr_9] = ""; // 낙찰금액
        $write[wr_10] = ""; // 낙찰자ID

        // $wr_subject = "RnD서버실|[OS]Windows 11 Pro (64Bit) [CPU]Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz 4 Cores [RAM]8GB [SSD]480GB [HDD]0GB [GPU]NVIDIA GeForce GTX 750 Ti (2GB)|1000|공개|최고가|20|2|기타|0"
        $wr_subject = "{$member['mb_nick']} ({$member['mb_id']})|[OS]{$it_spec_os} [CPU]{$it_spec_cpu} [RAM]{$it_spec_ram} [SSD]{$it_spec_ssd} [HDD]{$it_spec_hdd} [GPU]{$it_spec_gpu}|{$tender_unit}|{$tender_method}|{$auction_off_method}|{$tender_possible_count}|{$auction_off_member_count}|{$delivery_method}|{$delivery_price}";
        $sql_write_auction_update = " UPDATE {$g5['write_auction_table']}
                                        SET ca_id = '$ca_id',
                                            ca_id2 = '$ca_id2',
                                            ca_id3 = '$ca_id3',
                                            ca_name = '$ca_name',
                                            wr_option = '$html,$secret,$mail',
                                            wr_subject = '$wr_subject',
                                            wr_content = '$wr_content',
                                            wr_name = '{$member['mb_nick']}',
                                            wr_email = '{$member['mb_email']}',
                                            wr_homepage = '{$member['mb_homepage']}',
                                            wr_last = '".G5_TIME_YMDHIS."',
                                            wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                                            wr_1 = '{$write[wr_1]}',
                                            wr_2 = '{$write[wr_2]}',
                                            wr_3 = '{$write[wr_3]}',
                                            wr_4 = '{$write[wr_4]}',
                                            wr_5 = '{$write[wr_5]}',
                                            wr_6 = '{$write[wr_6]}',
                                            wr_7 = '{$write[wr_7]}',
                                            wr_8 = '{$write[wr_8]}',
                                            wr_9 = '{$write[wr_9]}',
                                            wr_10 = '{$write[wr_10]}',
                                            auction_on = '{$auction_on}',
                                            rpc_rental_days = '{$rpc_rental_days}'
                                        WHERE mb_id = '{$member['mb_id']}' AND pcnum = '{$it_id}' ";
        sql_query($sql_write_auction_update);
    }

    // 데이터 추출
    $sql_auction2 = "SELECT * FROM {$g5['write_auction_table']} WHERE pcnum = '$it_id'";
    $row_auction2 = sql_fetch($sql_auction2);

    if ($row_auction2) {
        // 컬럼 이름을 가져오기 위해 배열의 키를 사용
        $columns = array_keys($row_auction2);
        $columns_list = implode(", ", $columns);

        // 값들을 가져오기 위해 배열의 값을 사용
        $values = array_map(function($value) {
            return "'" . addslashes($value) . "'";
        }, array_values($row_auction2));
        $values_list = implode(", ", $values);

        // 데이터 삽입
        $sql_write_auction_off_insert = "INSERT INTO {$g5['write_auction_off_table']} ($columns_list) VALUES ($values_list)";
        sql_query($sql_write_auction_off_insert);

        // 경매노출 체크가 해제되어 있다면 경매상품 테이블에서 삭제
        $sql_write_auction_delete = " DELETE FROM {$g5['write_auction_table']} WHERE wr_id = '{$row_auction2['wr_id']}' AND mb_id = '{$member['mb_id']}' AND pcnum = '{$it_id}' ";
        sql_query($sql_write_auction_delete);
    }

}
// 경매노출 체크되어 있다면 경매상품 테이블에 등록 }



if ($w == "" || $w == "u")
{
    // 관련상품 등록
    $it_id2 = explode(",", $it_list);
    for ($i=0; $i<count($it_id2); $i++)
    {
        if (trim($it_id2[$i]))
        {
            $sql = " insert into {$g5['g5_shop_item_relation_table']}
                        set it_id  = '$it_id',
                            it_id2 = '$it_id2[$i]',
                            ir_no = '$i' ";
            sql_query($sql, false);

            // 관련상품의 반대로도 등록
            $sql = " insert into {$g5['g5_shop_item_relation_table']}
                        set it_id  = '$it_id2[$i]',
                            it_id2 = '$it_id',
                            ir_no = '$i' ";
            sql_query($sql, false);
        }
    }

    // 이벤트상품 등록
	if($is_auth) {
		$ev_id = explode(",", $ev_list);
		for ($i=0; $i<count($ev_id); $i++)
		{
			if (trim($ev_id[$i]))
			{
				$sql = " insert into {$g5['g5_shop_event_item_table']}
							set ev_id = '$ev_id[$i]',
								it_id = '$it_id' ";
				sql_query($sql, false);
			}
		}
	}
}

// 선택옵션등록
if($option_count) {
    $comma = '';
    $sql = " INSERT INTO {$g5['g5_shop_item_option_table']}
                    ( `io_id`, `io_type`, `it_id`, `io_price`, `io_stock_qty`, `io_noti_qty`, `io_use` )
                VALUES ";
    for($i=0; $i<$option_count; $i++) {
        $sql .= $comma . " ( '{$_POST['opt_id'][$i]}', '0', '$it_id', '{$_POST['opt_price'][$i]}', '{$_POST['opt_stock_qty'][$i]}', '{$_POST['opt_noti_qty'][$i]}', '{$_POST['opt_use'][$i]}' )";
        $comma = ' , ';
    }

    sql_query($sql);
}

// 추가옵션등록
if($supply_count) {
    $comma = '';
    $sql = " INSERT INTO {$g5['g5_shop_item_option_table']}
                    ( `io_id`, `io_type`, `it_id`, `io_price`, `io_stock_qty`, `io_noti_qty`, `io_use` )
                VALUES ";
    for($i=0; $i<$supply_count; $i++) {
        $sql .= $comma . " ( '{$_POST['spl_id'][$i]}', '1', '$it_id', '{$_POST['spl_price'][$i]}', '{$_POST['spl_stock_qty'][$i]}', '{$_POST['spl_noti_qty'][$i]}', '{$_POST['spl_use'][$i]}' )";
        $comma = ' , ';
    }

    sql_query($sql);
}

// 태그 및 파일 등록
$file_upload_msg = '';
if ($w == "" || $w == "u") {
	//태그등록
	$it_time = G5_TIME_YMDHIS;
	if($w == "u") {
		$row = sql_fetch("select it_time from {$g5['g5_shop_item_table']} where it_id = '{$it_id}' ");
		$it_time = $row['it_time'];
	}

	apms_add_tag($it_id, $pt_tag, $it_time);

	//파일등록
	$file_upload_msg = apms_upload_file('item', $it_id);

	// 네이버 신디
	if ($is_admin == 'super' && $it_use && $pt_syndi) {
		apms_naver_syndi_ping($it_id);
	}
}

// 등록비 기존 삭제
if($is_regit = "2") {
	if(!delete_point($member['mb_id'], '@regit', $member['mb_id'], $it_id)) {
		insert_point($member['mb_id'], $old_upoint * (-1), "{$it_id} 등록 취소");
	}
}

// 등록비 신규 등록
if($is_regit) {
	insert_point($member['mb_id'], $new_upoint, "{$it_id} 등록", "@regit", $member['mb_id'], $it_id);
}

// 썸네일 업데이트
$it = apms_it($it_id);
$it['chk_img'] = true;
$it_thumb = apms_it_thumbnail($it, 0, 0, false, true);
$it_thumb = ($it_thumb) ? $it_thumb : 1;
sql_query(" update {$g5['g5_shop_item_table']} set pt_thumb = '".addslashes($it_thumb)."' where it_id = '{$it_id}' ", false);

// 신규등록 화면에서 재사용할 최근 설정 100세트 저장 (상품코드/상품명 등 유니크 필드 제외)
$recent_preset_exclude = array(
    'it_id',
    'it_name',
    'w',
    'token',
    'codedup',
    'x',
    'y',
    'qstr',
    'fn',
    'sca',
    'sst',
    'sod',
    'sfl',
    'stx',
    'page'
);

$recent_preset_values = array();
$recent_preset_html_keys = array(
    'it_explan',
    'it_mobile_explan',
    'pt_explan',
    'pt_mobile_explan',
    'it_head_html',
    'it_tail_html',
    'it_mobile_head_html',
    'it_mobile_tail_html'
);

foreach ($_POST as $key => $value) {
    if (in_array($key, $recent_preset_exclude, true)) {
        continue;
    }

    if (in_array($key, $recent_preset_html_keys, true)) {
        if (is_array($value)) {
            $recent_preset_values[$key] = clean_input_recursive($value);
        } else {
            $recent_preset_values[$key] = clean_xss_attributes((string)$value);
        }
        continue;
    }

    $recent_preset_values[$key] = clean_input_recursive($value);
}

$recent_preset_values = vpnlink_normalize_checkbox_post_fields($recent_preset_values);
$recent_preset_values = vpnlink_merge_hour_split_post_fields($recent_preset_values);

if (!isset($recent_preset_values['__recent_item_name']) || trim((string)$recent_preset_values['__recent_item_name']) === '') {
    $recent_preset_values['__recent_item_name'] = trim((string)$it_name);
}

$recent_preset_entry = array(
    'saved_at' => G5_TIME_YMDHIS,
    'saved_ts' => time(),
    'preset_scope' => 'rpc-mall',
    'summary'  => build_recent_itemform_summary($recent_preset_values, $it_name),
    'values'   => $recent_preset_values
);

$recent_preset_file_rpc = G5_DATA_PATH . '/item/recent_itemform_configs_rpc_' . $member['mb_id'] . '.json';
$recent_preset_list_rpc = array();

if (is_file($recent_preset_file_rpc)) {
    $recent_raw_rpc = @file_get_contents($recent_preset_file_rpc);
    $recent_decoded_rpc = json_decode($recent_raw_rpc, true);
    if (is_array($recent_decoded_rpc)) {
        $recent_preset_list_rpc = $recent_decoded_rpc;
    }
}

array_unshift($recent_preset_list_rpc, $recent_preset_entry);
$recent_preset_list_rpc = array_slice($recent_preset_list_rpc, 0, 100);
@file_put_contents($recent_preset_file_rpc, json_encode($recent_preset_list_rpc, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));

$qstr = "$qstr&amp;sca=$sca&amp;page=$page";

if ($w == "u") {
    //goto_url("./itemform.php?w=u&amp;it_id=$it_id&amp;$qstr");
    goto_url("./?ap=item&amp;w=u&amp;it_id=$it_id&amp;fn=$fn&amp;$qstr");
}


echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">";
?>
<style>
#after-save-confirm-layer {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.52);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    z-index: 20000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 1;
    transition: opacity .2s ease;
}
#after-save-confirm-layer .confirm-box {
    width: min(620px, calc(100vw - 28px));
    background: linear-gradient(180deg, #ffffff 0%, #f9fbff 100%);
    border: 1px solid #d7e3ff;
    border-radius: 14px;
    box-shadow: 0 18px 38px rgba(15, 23, 42, 0.28);
    padding: 18px 18px 14px;
    transform: translateY(0) scale(1);
}
#after-save-confirm-layer .confirm-title {
    font-size: 18px;
    font-weight: 700;
    color: #1f2937;
    margin-bottom: 8px;
}
#after-save-confirm-layer .confirm-message {
    font-size: 15px;
    line-height: 1.55;
    color: #111827;
}
#after-save-confirm-layer .confirm-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 16px;
}
#after-save-confirm-layer .confirm-actions button {
    border-radius: 999px;
    padding: 10px 20px;
    border: 1px solid transparent;
    font-size: 16px;
    cursor: pointer;
    min-width: 88px;
    transition: transform .15s ease, filter .15s ease;
}
#after-save-confirm-layer .btn-cancel {
    background: #eef2ff;
    color: #4338ca;
    border-color: #c7d2fe;
}
#after-save-confirm-layer .btn-ok {
    background: #4f46e5;
    color: #fff;
    border-color: #4338ca;
}
#after-save-confirm-layer .btn-cancel:hover,
#after-save-confirm-layer .btn-ok:hover {
    transform: translateY(-1px);
    filter: brightness(0.98);
}
</style>
<div id="after-save-confirm-layer" aria-hidden="false">
    <div class="confirm-box" role="dialog" aria-modal="true" aria-labelledby="after-save-confirm-title">
        <div class="confirm-title" id="after-save-confirm-title">저장이 완료되었습니다.</div>
        <div class="confirm-message">계속 입력하시겠습니까?</div>
        <div class="confirm-actions">
            <button type="button" class="btn-cancel" id="after-save-cancel">취소</button>
            <button type="button" class="btn-ok" id="after-save-ok">확인</button>
        </div>
    </div>
</div>
<script>
    (function() {
        var nextUrl = "<?php echo "./?ap=item&".str_replace('&amp;', '&', $qstr); ?>";
        var listUrl = "<?php echo "./?ap=list&".str_replace('&amp;', '&', $qstr); ?>";

        var layer = document.getElementById('after-save-confirm-layer');
        var okBtn = document.getElementById('after-save-ok');
        var cancelBtn = document.getElementById('after-save-cancel');

        function goNext() {
            location.href = nextUrl;
        }

        function goList() {
            location.href = listUrl;
        }

        if (okBtn) {
            okBtn.addEventListener('click', goNext);
            try { okBtn.focus(); } catch (e) {}
        }

        if (cancelBtn) {
            cancelBtn.addEventListener('click', goList);
        }

        if (layer) {
            layer.addEventListener('click', function(e) {
                if (e.target === layer) {
                    goList();
                }
            });
        }

        document.addEventListener('keydown', function(e) {
            if (e.key === 'Escape') {
                goList();
            }
        });
    })();
</script>
