sql_insert_id()]; } function update_character($ch_id, $data, $old_data) { global $g5, $ad; $sql = "UPDATE {$g5['character_table']} SET " . implode(', ', array_map(function ($k, $v) { return "{$k} = '" . sql_real_escape_string($v) . "'"; }, array_keys($data), $data)) . " WHERE ch_id = '" . sql_real_escape_string($ch_id) . "'"; sql_query($sql); $file_fields = ['thumb', 'head', 'body']; foreach ($file_fields as $field) { if ($ad["ad_use_{$field}"] && !$ad["ad_url_{$field}"] && $old_data["ch_{$field}"] != $data["ch_{$field}"]) { $prev_file_path = str_replace(G5_URL, G5_PATH, $old_data["ch_{$field}"]); @unlink($prev_file_path); } } } function update_member_character($mb_id, $ch_id) { global $g5; sql_query("UPDATE {$g5['member_table']} SET ch_id = '" . sql_real_escape_string($ch_id) . "' WHERE mb_id = '" . sql_real_escape_string($mb_id) . "'"); } function insert_default_clothes($ch_id, $ch_body) { global $g5; $sql = "INSERT INTO {$g5['closthes_table']} SET ch_id = '" . sql_real_escape_string($ch_id) . "', cl_subject = '기본의상', cl_path = '" . sql_real_escape_string($ch_body) . "', cl_use = '1', cl_type = 'default'"; sql_query($sql); } function update_or_insert_default_clothes($ch_id, $ch_body) { global $g5; $cl = sql_fetch("SELECT cl_id FROM {$g5['closthes_table']} WHERE ch_id = '" . sql_real_escape_string($ch_id) . "' AND cl_type = 'default'"); if ($cl['cl_id']) { sql_query("UPDATE {$g5['closthes_table']} SET cl_path = '" . sql_real_escape_string($ch_body) . "' WHERE cl_id = '" . sql_real_escape_string($cl['cl_id']) . "'"); } else { insert_default_clothes($ch_id, $ch_body); } } function handle_additional_profile_data($ch_id, $ar_code, $ar_theme, $av_value, $character_image_path, $character_image_url) { global $g5; if (is_array($ar_code)) { for ($i = 0; $i < count($ar_code); $i++) { $key = 'av_' . $ar_code[$i]; $prev_value = sql_fetch("SELECT av_value FROM {$g5['value_table']} WHERE ch_id = '" . sql_real_escape_string($ch_id) . "' AND ar_code = '" . sql_real_escape_string($ar_code[$i]) . "' AND ar_theme = '" . sql_real_escape_string($ar_theme[$i]) . "'"); $prev_value = $prev_value['av_value']; if (isset($_FILES['av_value_file']['name'][$i]) && $_FILES['av_value_file']['name'][$i]) { $ext = pathinfo($_FILES['av_value_file']['name'][$i], PATHINFO_EXTENSION); $image_name = "img_" . $ar_code[$i] . "_" . time() . "." . $ext; upload_file($_FILES['av_value_file']['tmp_name'][$i], $image_name, $character_image_path); $av_value[$i] = $character_image_url . "/" . $image_name; } if ($prev_value != $av_value[$i] && strstr(G5_URL, $prev_value)) { $prev_file_path = str_replace(G5_URL, G5_PATH, $prev_value); @unlink($prev_file_path); } $sql_data = [ 'ch_id' => $ch_id, 'ar_code' => $ar_code[$i], 'ar_theme' => $ar_theme[$i], 'av_value' => $av_value[$i] ]; if (isset($prev_value)) { $sql = "UPDATE {$g5['value_table']} SET " . implode(', ', array_map(function ($k, $v) { return "{$k} = '" . sql_real_escape_string($v) . "'"; }, array_keys($sql_data), $sql_data)) . " WHERE ar_code = '" . sql_real_escape_string($ar_code[$i]) . "' AND ch_id = '" . sql_real_escape_string($ch_id) . "' AND ar_theme = '" . sql_real_escape_string($ar_theme[$i]) . "'"; } else { $sql = "INSERT INTO {$g5['value_table']} SET " . implode(', ', array_map(function ($k, $v) { return "{$k} = '" . sql_real_escape_string($v) . "'"; }, array_keys($sql_data), $sql_data)); } sql_query($sql); } } } function handle_character_stats($ch_id, $st_id, $sc_max, $sc_value) { global $g5; if (is_array($st_id) && count($st_id) > 0) { for ($i = 0; $i < count($st_id); $i++) { $temp_st_id = $st_id[$i]; $old_sc = sql_fetch("SELECT * FROM {$g5['status_table']} WHERE ch_id = '" . sql_real_escape_string($ch_id) . "' AND st_id = '" . sql_real_escape_string($temp_st_id) . "'"); $sql_data = array( 'sc_max' => $sc_max[$i], 'sc_value' => $sc_value[$i] ); if ($old_sc['sc_id']) { $sql = "UPDATE {$g5['status_table']} SET " . implode(', ', array_map(function ($k, $v) { return "{$k} = '" . sql_real_escape_string($v) . "'"; }, array_keys($sql_data), $sql_data)) . " WHERE sc_id = '" . sql_real_escape_string($old_sc['sc_id']) . "'"; } else { $sql_data['st_id'] = $st_id[$i]; $sql_data['ch_id'] = $ch_id; $sql = "INSERT INTO {$g5['status_table']} SET " . implode(', ', array_map(function ($k, $v) { return "{$k} = '" . sql_real_escape_string($v) . "'"; }, array_keys($sql_data), $sql_data)); } sql_query($sql); } } } $w = isset($_POST['w']) ? $_POST['w'] : ''; $ch_id = isset($_POST['ch_id']) ? trim($_POST['ch_id']) : ''; $mb_id = isset($_POST['mb_id']) ? trim($_POST['mb_id']) : ''; if ($w == 'u') { check_demo(); } auth_check($auth[$sub_menu], 'w'); check_token(); $mb = get_member($mb_id); if (!$mb['mb_id']) { alert('존재하지 않는 회원 정보입니다.'); } $character_image_path = G5_DATA_PATH . "/character/" . $mb_id; $character_image_url = G5_DATA_URL . "/character/" . $mb_id; @mkdir($character_image_path, G5_DIR_PERMISSION); @chmod($character_image_path, G5_DIR_PERMISSION); $character_data = [ 'ch_state' => $ch_state, 'ch_type' => $ch_type, 'mb_id' => $mb_id, 'ch_side' => $ch_side, 'ch_class' => $ch_class, 'ch_name' => $ch_name, 'ch_point' => $ch_point, ]; $ad = sql_fetch("SELECT * FROM {$g5['article_default_table']}"); $file_fields = [ 'thumb' => 'ch_thumb_file', 'head' => 'ch_head_file', 'body' => 'ch_body_file' ]; foreach ($file_fields as $field => $file_key) { if ($ad["ad_use_{$field}"] && isset($_FILES[$file_key]['name']) && $_FILES[$file_key]['name']) { $ext = get_file_extension($_FILES[$file_key]['name']); $image_name = "{$field}_" . time() . "." . $ext; $upload_result = upload_file($_FILES[$file_key]['tmp_name'], $image_name, $character_image_path); if ($upload_result) { $character_data["ch_{$field}"] = $character_image_url . "/" . $image_name; } } } if ($w == '') { $result = insert_character($character_data); $ch_id = $result['ch_id']; update_member_character($mb['mb_id'], $ch_id); if (isset($character_data['ch_body'])) { insert_default_clothes($ch_id, $character_data['ch_body']); } } else { $ch = get_character($ch_id); if (!$ch['ch_id']) { alert("캐릭터 정보가 존재하지 않습니다."); } update_character($ch_id, $character_data, $ch); update_member_character($mb['mb_id'], $ch_id); if (isset($character_data['ch_body'])) { update_or_insert_default_clothes($ch_id, $character_data['ch_body']); } } // 추가 프로필 핸들링 handle_additional_profile_data($ch_id, $ar_code, $ar_theme, $av_value, $character_image_path, $character_image_url); // 캐릭터 스탯 핸들링 handle_character_stats($ch_id, $st_id, $sc_max, $sc_value); goto_url('./character_form.php?' . $qstr . '&w=u&ch_id=' . $ch_id);