203 lines
7.4 KiB
PHP
203 lines
7.4 KiB
PHP
<?php
|
|
include_once "./_common.php";
|
|
|
|
function insert_character($data)
|
|
{
|
|
global $g5;
|
|
$sql = "INSERT INTO {$g5['character_table']} SET " . implode(', ', array_map(function ($k, $v) {
|
|
return "{$k} = '" . sql_real_escape_string($v) . "'";
|
|
}, array_keys($data), $data));
|
|
sql_query($sql);
|
|
return ['ch_id' => 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);
|