This commit is contained in:
Amberstone 2024-10-10 05:34:40 +09:00
parent 8c18b8ceed
commit 24fc36bcc2
Signed by: amber
GPG key ID: 094B0E55F98D8BF1
66 changed files with 4304 additions and 87 deletions

View file

@ -46,4 +46,10 @@ $menu["member"]->getLastAddedMenu()->addSubFile("/poll_form.php");
if (Community::isInitCommunity()) {
$menu["member"]->addChildMenu("member", "접속자검색", G5_ADMIN_URL . "/visit_search.php", true, 300, "\F52A", 0);
$menu["member"]->getLastAddedMenu()->addSubFile("/visit_delete_update.php");
$menu["member"]->addChildMenu("member", "캐릭터 미등록 회원관리", G5_ADMIN_URL . "/member_nocharacter_list.php", true, 400, "\F35E", 0);
$menu["member"]->getLastAddedMenu()->addSubFile("/member_nocharacter_list_update.php");
$menu["member"]->addChildMenu("member", "활동량 관리", G5_ADMIN_URL . "/action_list.php", true, 410, "\F809", 0);
$menu["member"]->getLastAddedMenu()->addSubFile("/action_reply.php");
}

View file

@ -64,6 +64,11 @@ if (Community::isInitCommunity()) {
$menu["character"]->getLastAddedMenu()->addSubFile("/character_form.php");
$menu["character"]->getLastAddedMenu()->addSubFile("/character_form_update.php");
$menu["character"]->addChildMenu("character", "합격 관리", G5_ADMIN_URL . "/character_pass_manager.php", true, 10, "\F360", 0);
$menu["character"]->getLastAddedMenu()->addSubFile("/character_pass_manager_confirm.php");
$menu["character"]->getLastAddedMenu()->addSubFile("/character_pass_manager_delete.php");
$menu["character"]->getLastAddedMenu()->addSubFile("/character_pass_manager_update.php");
$menu["character"]->addChildMenu("character", "타이틀 관리", G5_ADMIN_URL . "/title_list.php", true, 100, "\F5B0", 0);
$menu["character"]->getLastAddedMenu()->addSubFile("/title_update.php");
$menu["character"]->getLastAddedMenu()->addSubFile("/title_list_update.php");

View file

@ -0,0 +1,28 @@
<?php
include_once "./_common.php";
check_demo();
auth_check($auth[$sub_menu], "d");
$mb = get_member($_REQUEST['mb_id']);
if (!$mb['mb_id'])
alert("회원자료가 존재하지 않습니다.");
else if ($member['mb_id'] == $mb['mb_id'])
alert("로그인 중인 관리자는 삭제 할 수 없습니다.");
else if (is_admin($mb['mb_id']) == "super")
alert("최고 관리자는 삭제할 수 없습니다.");
else if ($mb['mb_level'] >= $member['mb_level'])
alert("자신보다 권한이 높거나 같은 회원은 삭제할 수 없습니다.");
check_token();
// 회원자료 삭제
member_delete($mb['mb_id']);
if ($url)
goto_url("{$url}?{$qstr}&amp;w=u&amp;mb_id=$mb_id");
else
goto_url("./action_list.php?{$qstr}");
?>

View file

@ -0,0 +1,413 @@
<?php
/**
* @var string|int $cf_reply_cnt
* @var string|int $s_mbid
*/
include_once './_common.php';
auth_check($auth[$sub_menu], 'r');
$check_member = sql_fetch("select * from {$g5['member_table']} limit 0, 1");
if (!isset($check_member['mb_error_cnt'])) {
sql_query(" ALTER TABLE `{$g5['member_table']}`
ADD `mb_error_cnt` int(11) NOT NULL DEFAULT '0' AFTER `mb_10` ", true);
}
if (!isset($check_member['mb_error_content'])) {
sql_query(" ALTER TABLE `{$g5['member_table']}`
ADD `mb_error_content` varchar(255) NOT NULL DEFAULT '' AFTER `mb_error_cnt` ", true);
}
if (!isset($config['cf_reply_cnt'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_reply_cnt` int(11) NOT NULL DEFAULT '0' AFTER `cf_10` ", true);
sql_query("update {$g5['config_table']} set cf_reply_cnt = '3'");
$config['cf_reply_cnt'] = 3;
}
if ($cf_reply_cnt > 0) {
sql_query("update {$g5['config_table']} set cf_reply_cnt = '{$cf_reply_cnt}'");
$config['cf_reply_cnt'] = $cf_reply_cnt;
}
if (!$s_board) {
$s_board = "free";
}
if (!$sst) {
$sst = "bo.wr_logs";
$sod = "desc";
}
$sql_order = " order by {$sst} {$sod} ";
$now_board = "";
$search_board_sql = " select bo.bo_table, bo.bo_subject, gr.gr_id, gr.gr_subject from {$g5['board_table']} bo, {$g5['group_table']} gr where bo.gr_id = gr.gr_id order by gr.gr_id asc, bo.bo_subject asc ";
$search_board = sql_query($search_board_sql);
$board_select_option = "";
for ($i = 0; $row = sql_fetch_array($search_board); $i++) {
if (!$s_board) {
$s_board = $row['bo_table'];
}
if ($row['bo_table'] == $s_board) {
$s_board_select = "selected";
$now_board = $row['bo_subject'];
} else {
$s_board_select = "";
}
$board_select_option .= '<option value="' . $row['bo_table'] . '" ' . $s_board_select . '>[' . $row['gr_subject'] . '] ' . $row['bo_subject'] . '</option>';
}
$write_table = $g5['write_prefix'] . $s_board;
$qstr .= "&s_board=" . $s_board . "&s_date=" . $s_date . "&e_date=" . $e_date . "&check_manner=" . $check_manner;
if (!$s_date)
$s_date = date('Y-m-d', strtotime("last Monday"));
if (!$e_date) {
$e_date = date('Y-m-d', strtotime("next Sunday"));
}
// -- 덧글 현황 처리하는 부분부터
// 리플 매너 기록하는 필드를 각 게시판에 추가한다. (없을 경우)
if (!sql_query(" select wr_manner from {$write_table} limit 1 ", false)) {
$sql = " ALTER TABLE `{$write_table}` ADD `wr_manner` int(11) NOT NULL , ADD `wr_manner_txt` VARCHAR(255) NOT NULL ";
sql_query($sql, false);
}
$sql_common = " from {$g5['member_table']} mb
LEFT JOIN
(select *,
count(if(wr_id = wr_parent, wr_id, null)) as wr_logs,
count(if(wr_id != wr_parent, wr_id, null)) as wr_cms
from {$write_table}
where wr_datetime >= '$s_date' and
wr_datetime <= '$e_date'
group by mb_id
) bo
ON mb.mb_id = bo.mb_id ";
$sql_search = " where mb.mb_level > 1 and mb.mb_leave_date = '' and mb.mb_id != '{$config['cf_admin']}' and mb.mb_id NOT LIKE 'test%' and mb.ch_id != '0' ";
if ($s_mbid) {
$sql_search .= " and mb.mb_id = '{$s_mbid}' ";
}
$sql = " select count(*) as cnt {$sql_common} {$sql_search}";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
if ($page < 1) {
$page = 1;
} // 페이지가 없으면 첫 페이지 (1 페이지)
if ($check_manner == '1') {
$page_rows = 10;
} else if ($check_manner == '2') {
$page_rows = 1000;
} else {
$page_rows = 20;
}
$total_page = ceil($total_count / $page_rows); // 전체 페이지 계산
$from_record = ($page - 1) * $page_rows; // 시작 열을 구함
$g5['title'] = '활동량 관리';
include_once './admin.head.php';
include_once G5_PLUGIN_PATH . '/jquery-ui/datepicker.php';
$sql = " select
mb.mb_id,
mb.mb_name,
mb.ch_id,
mb.mb_today_login,
mb.mb_error_content,
bo.wr_logs, bo.wr_cms,
mb.mb_error_cnt
{$sql_common} {$sql_search} {$sql_order}
limit {$from_record}, $page_rows";
//echo $sql;
$result = sql_query($sql);
if ($check_manner || $check_manner2) {
$colspan = 10;
} else {
$colspan = 9;
}
?>
<style>
.search-box {
display: block;
position: relative;
clear: both;
margin: 20px 0;
padding-right: 90px;
background: #fafafa;
border: 1px solid #ddd;
}
.search-box .tbl {
display: table;
width: 100%;
max-width: 100%;
table-layout: fixed;
}
.search-box .row {
display: table-row;
}
.search-box .row>* {
display: table-cell;
vertical-align: middle;
padding: 10px;
}
.search-box .row * {
max-width: 100% !important;
}
.search-box .label {
width: 100px;
text-align: right;
}
.search-box .control {
position: absolute;
top: 10px;
right: 10px;
bottom: 10px;
width: 70px;
border: none;
}
.search-box .control>* {
display: block;
width: 100% !important;
height: 100% !important;
}
</style>
<div class="local_ov01 local_ov">
<?php echo $listall ?>
회원 <?php echo number_format($total_count) ?>
</div>
<form id="fsearch" name="fsearch" class="local_sch01 local_sch" method="get">
<div class="search-box">
<div class="tbl">
<div class="row">
<div class="label">
<strong>게시판 지정</strong>
</div>
<div>
<select name="s_board">
<?= $board_select_option ?>
</select>
</div>
<div class="label">
<strong>기간별검색</strong>
</div>
<div>
<input type="text" name="s_date" value="<?= $s_date ?>" style="width:100px;" />
~
<input type="text" name="e_date" value="<?= $e_date ?>" style="width:100px;" />
</div>
<div class="label">
<strong>멤버ID</strong>
</div>
<div>
<input type="text" name="s_mbid" value="<?= $s_mbid ?>" style="width:100px;" />
</div>
</div>
<div class="row">
<div class="label">
<strong>리플매너</strong>
</div>
<div>
<select name="check_manner">
<option value="">리플매너 체크하지 않음</option>
<option value="1" <?= $check_manner == '1' ? "selected" : "" ?>>10명씩 검색</option>
<option value="2" <?= $check_manner == '2' ? "selected" : "" ?>>전체 검색 (게시물이 많을 시 속도가 굉장히 느립니다.)</option>
</select>
</div>
<div class="label">
<strong>로그아래 댓글 </strong>
</div>
<div>
<input type="text" value="<?= $config['cf_reply_cnt'] ?>" name="cf_reply_cnt" style="width:30px;" />
</div>
</div>
</div>
<div class="control">
<input type="submit" class="btn_submit" value="검색">
</div>
</div>
</form>
<form name="fmemberlist" id="fmemberlist" action="./action_list_update.php" onsubmit="return fmemberlist_submit(this);"
method="post">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<div class="tbl_head01 tbl_wrap" id="actionStateList">
<table class="tbl_hover">
<caption><?php echo $g5['title']; ?> 목록</caption>
<colgroup>
<col style="width: 90px;" />
<col style="width: 100px;" />
<col style="width: 100px;" />
<col style="width: 120px;" />
<col style="width: 60px;" />
<col style="width: 60px;" />
<?php if ($check_manner || $check_manner2) { ?>
<col style="width: 80px;" />
<col style="width: 280px;" />
<?php } ?>
<col style="width: 150px;" />
<col style="width: 80px;" />
<col />
</colgroup>
<thead>
<tr>
<th scope="col" id="mb_idx">
<?php echo subject_sort_link('mb.ch_id', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>캐릭터IDX</a>
</th>
<th scope="col" id="mb_list_id">
<?php echo subject_sort_link('mb.mb_id', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>아이디</a>
</th>
<th scope="col" id="mb_list_name">
<?php echo subject_sort_link('mb.mb_nick', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>닉네임</a>
</th>
<th scope="col">
<?php echo subject_sort_link('bo.wr_subject', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>대표캐릭터</a>
</th>
<th>
<?php echo subject_sort_link('wr_logs', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>로그</a>
</th>
<th><?php echo subject_sort_link('wr_cms', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>덧글</a>
</th>
<?php if ($check_manner || $check_manner2) { ?>
<th>리플매너</th>
<th>리플 미기재 로그</th>
<?php } ?>
<th scope="col">
<?php echo subject_sort_link('mb.mb_today_login', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>최종
접속</a></th>
<th scope="col">
<?php echo subject_sort_link('mb.mb_error_cnt', 's_board=' . $s_board . '&s_date=' . $s_date . '&e_date=' . $e_date) ?>누적경고</a>
</th>
<th>경고내용</th>
</tr>
</thead>
<tbody>
<?php
for ($i = 0; $row = sql_fetch_array($result); $i++) { ?>
<tr class="<?php echo $bg; ?>" data-mbid="<?= $row['mb_id'] ?>">
<td>
<?= $row['ch_id'] ?>
</td>
<td>
<input type="hidden" name="mb_id[<?php echo $i ?>]" value="<?php echo $row['mb_id'] ?>"
id="mb_id_<?php echo $i ?>">
<input type="hidden" name="chk[]" value="<?php echo $i ?>" id="chk_<?php echo $i ?>">
<?= $row['mb_id'] ?>
</td>
<td><?= $row['mb_name'] ?></td>
<td><a href="./character_form.php?w=u&amp;ch_id=<?= $row['ch_id'] ?>"
target="_blank"><?= get_character_name($row['ch_id']) ?></a></td>
<td style="text-align: center;"><?= number_format($row['wr_logs']) ?></td>
<td style="text-align: center;"><?= number_format($row['wr_cms']) ?></td>
<?php if ($check_manner || $check_manner2) { ?>
<td>
<div class="manner-state"><span style="color:#ddd;">Loading...</span></div>
</td>
<td>
<div class="manner-link"><span style="color:#ddd;">Loading...</span></div>
</td>
<?php } ?>
<td style="text-align: center; color: #999;"><?= $row['mb_today_login'] ?></td>
<td style="text-align: center;">
<input type="text" name="mb_error_cnt[<?php echo $i ?>]" value="<?php echo $row['mb_error_cnt'] ?>" size="3"
style="width:50%;">
</td>
<td>
<input type="text" name="mb_error_content[<?php echo $i ?>]" value="<?php echo $row['mb_error_content'] ?>"
style="width: 98%;">
</td>
</tr>
<?php
}
if ($i == 0)
echo "<tr><td colspan=\"" . $colspan . "\" class=\"empty_table\">자료가 없습니다.</td></tr>";
?>
</tbody>
</table>
</div>
<div class="btn_list01 btn_list">
<input type="submit" name="act_button" value="일괄수정" onclick="document.pressed=this.value">
</div>
</form>
<?php echo get_paging(20, $page, $total_page, '?' . $qstr . '&amp;page='); ?>
<script>
function fmemberlist_submit(f) {
return true;
}
$(function () {
$("#fr_date, #to_date").datepicker({ changeMonth: true, changeYear: true, dateFormat: "yy-mm-dd", showButtonPanel: true, yearRange: "c-99:c+99", maxDate: "+0d" });
<?php if ($check_manner || $check_manner2) { ?>
$('#actionStateList tbody tr').each(function () {
_load_log(this);
});
<?php } ?>
});
function _load_log(obj) {
var s_date = '<?= $s_date ?>';
var e_date = '<?= $e_date ?>';
var s_board = '<?= $s_board ?>';
var mb_id = $(obj).attr('data-mbid');
var sendData = { s_date: s_date, e_date: e_date, s_board: s_board, mb_id: mb_id };
var url = g5_url + "/adm/action_manner_search.php";
$.ajax({
type: 'post'
, url: url
, data: sendData
, dataType: "json"
, success: function (data) {
$(obj).find('.manner-state').html(data.state);
$(obj).find('.manner-link').html(data.link);
}
});
}
</script>
<?php
include_once './admin.tail.php';
?>

View file

@ -0,0 +1,28 @@
<?php
include_once './_common.php';
check_demo();
auth_check($auth[$sub_menu], 'w');
for ($i = 0; $i < count($_POST['chk']); $i++) {
// 실제 번호를 넘김
$k = $_POST['chk'][$i];
$mb = get_member($_POST['mb_id'][$k]);
if (!$mb['mb_id']) {
$msg .= $mb['mb_id'] . ' : 회원자료가 존재하지 않습니다.\\n';
} else {
$sql = " update {$g5['member_table']}
set mb_error_cnt = '{$_POST['mb_error_cnt'][$k]}',
mb_error_content = '{$_POST['mb_error_content'][$k]}'
where mb_id = '{$_POST['mb_id'][$k]}' ";
sql_query($sql);
}
}
if ($msg)
alert($msg);
goto_url('./action_list.php?' . $qstr);
?>

View file

@ -0,0 +1,97 @@
<?php
header("Content-Type: application/json");
include_once "./_common.php";
$write_table = $g5['write_prefix'] . $s_board;
if (!$s_date || !$e_date || !$mb_id || !$s_board) {
echo json_encode([
"test" => "error",
"state" => "-",
"link" => ''
]);
} else {
$state = '';
$manner_txt = '';
$add_manner_str = '';
if ($config['cf_reply_cnt'] < 1) {
$state = '<span style="opacity:.5">준수</span>';
} else {
// 자, 작업을 시작하자. 기간 내의 로그들을 모두 검색해서 돌린다.
$log_sql = "select wr_id, mb_id, wr_num, wr_manner from {$write_table} where wr_datetime >= '$s_date' and wr_datetime <= '$e_date' and wr_is_comment=0 and mb_id = '{$mb_id}' and wr_manner < {$config['cf_reply_cnt']} order by wr_id";
$log_result = sql_query($log_sql);
for ($j = 0; $log = sql_fetch_array($log_result); $j++) {
// 리플 매너를 체크 한다.
$comment_sql = "select wr_id, wr_num, mb_id from {$write_table} where wr_id < '{$log['wr_id']}' and wr_is_comment=0 order by wr_id desc limit 0, {$config['cf_reply_cnt']}";
$comment_result = sql_query($comment_sql);
$manner_count = 0;
$manner_num = "";
$add_manner_num = "";
$prev_num = $log['wr_num'] * -1;
$is_del = '; color:#fff;';
$is_del_check = false;
for ($k = 0; $comm = sql_fetch_array($comment_result); $k++) {
$ttmmm_state = "";
if ($comm['mb_id'] == $config['cf_admin']) {
$manner_count++;
} else if ($comm['mb_id'] == $mb_id) {
$manner_count++;
} else {
// 관리자가 쓴 글도 아니고, 내가 쓴 글도 아닐때
// 해당 글의 덧글 검색한다.
$check_sql = "select count(wr_id) as cnt from {$write_table} where wr_parent = '{$comm['wr_id']}' and wr_is_comment = 1 and mb_id = '{$mb_id}'";
$check_result = sql_fetch($check_sql);
if ($check_result['cnt'] > 0) {
$manner_count++;
} else {
$ttmmm_state = "(X)";
}
}
$now_num = ($comm['wr_num'] * -1);
if ($prev_num - $now_num > 1) {
$is_del = "; color:red;";
$is_del_check = true;
}
$manner_num .= $add_manner_num . ($comm['wr_num'] * -1) . $ttmmm_state;
$add_manner_num = "/";
$prev_num = ($comm['wr_num'] * -1);
}
if ($is_del_check && $manner_count == 1) {
$manner_count = $config['cf_reply_cnt'];
}
// 덧글 단 것이 부족할 때
// 해당 글의 로그 번호를 가져온다.
if ($manner_count < $config['cf_reply_cnt']) {
$temp_link = "<a href='" . G5_BBS_URL . "/board.php?bo_table={$s_board}&amp;log=" . ($log['wr_num'] * -1) . "' target='_blabk' style='display:block; {$is_del} text-align:left; padding:.2em .5em; border-raidus:4px; margin:1px; background:#29c7c9;'>" . ($log['wr_num'] * -1) . " [" . ($config['cf_reply_cnt'] - ($manner_count * 1)) . " : {$manner_num}]</a>";
$manner_txt = $manner_txt . $add_manner_str . $temp_link;
}
$update_sql = " update {$write_table} set wr_manner = {$manner_count} where wr_id = '{$log['wr_id']}'";
sql_query($update_sql);
}
if ($manner_txt == '') {
$state = '<span style="opacity:.5">준수</span>';
} else {
$state = '<span style="color:red">경고</span>';
}
}
echo json_encode([
"test" => $comment_sql,
"state" => $state,
"link" => $manner_txt
]);
}

View file

@ -0,0 +1,83 @@
<?php
include_once './_common.php';
auth_check($auth[$sub_menu], 'r');
if (!$s_year)
$s_year = date('Y');
if (!$s_month)
$s_month = date('m');
$fr_date = $s_year . "-" . $s_month . "-" . "01";
$to_date = $s_year . "-" . $s_month . "-" . "32";
?>
<style>
html,
body {
padding: 0;
margin: 0;
}
p {
margin: 0;
padding: 0 10px;
}
p>a {
display: block;
position: relative;
color: #fff;
font-size: 12px;
text-decoration: none;
border-top: 1px dashed #666;
padding: 4px 3px;
}
p:first-child>a {
border-top: none;
}
p>a:hover {
color: yellow;
}
</style>
<?php
$reply_count = [];
$reply_index = 0;
$log = sql_query("select mu_id from g5_mmb_upload where mu_datetime > '{$fr_date}' and mu_datetime < '{$to_date}' and (mu_id > '5599' or mu_id < '5370') and (mu_id > '6576' or mu_id < '6369') and mb_id = '{$mb_id}'");
for ($j = 0; $row = sql_fetch_array($log); $j++) {
$log2 = sql_query("select mu_id from g5_mmb_upload where mu_id < '{$row['mu_id']}' order by mu_id desc limit 0, 3");
for ($k = 0; $row2 = sql_fetch_array($log2); $k++) {
$comment_log = sql_fetch("select mu_id, count(*) as cnt from g5_mmb_comment where mu_id = '{$row2['mu_id']}' and mb_id = '{$mb_id}'");
if ($comment_log['cnt'] == '0') {
if ($reply_count[$reply_index]['mc_no_count'] == "")
$reply_count[$reply_index]['mc_no_count'] = 0;
if ($reply_count[$reply_index]['mu_id'] != $row['mu_id']) {
$reply_index++;
$reply_count[$reply_index]['mu_id'] = $row['mu_id'];
}
$reply_count[$reply_index]['mc_no_count']++;
}
}
}
?>
<?php for ($i = 0; $i < count($reply_count); $i++) {
if ($reply_count[$i]['mu_id']) {
?>
<p>
<a href="/mmb/index.php?mu_id=<?= $reply_count[$i]['mu_id'] ?>" target="_blank">
<?= $reply_count[$i]['mu_id'] ?>번 로그 (<?= 3 - $reply_count[$i]['mc_no_count'] ?>/3)
</a>
</p>
<?php }
} ?>
<?php
include_once '../tail.sub.php';
?>

View file

@ -185,7 +185,7 @@ function get_theme_config_value($dir, $key = '*')
$theme_config_file = G5_PATH . '/' . G5_THEME_DIR . '/' . $dir . '/theme.config.php';
if (is_file($theme_config_file)) {
include($theme_config_file);
include $theme_config_file;
if ($key == '*') {
$tconfig = $theme_config;

View file

@ -0,0 +1,707 @@
<?php
/**
* @var string|int $s_class
* @var string|int $s_side
*/
include_once './_common.php';
auth_check($auth[$sub_menu], 'r');
// 캐릭터 합발 여부 체크 필드가 존재하지 않을 경우
$temp = sql_fetch("select * from {$g5['character_table']}");
if (!isset($temp['ch_pass_state'])) {
sql_query(" ALTER TABLE `{$g5['character_table']}` ADD `ch_pass_state` varchar(255) NOT NULL DEFAULT '' AFTER `ch_state` ");
}
$ch_si = [];
if ($config['cf_side_title']) {
$side_result = sql_query("select si_id, si_name from {$g5['side_table']} where si_auth <= '{$member['mb_level']}' order by si_id asc");
for ($i = 0; $row = sql_fetch_array($side_result); $i++) {
$ch_si[$i]['name'] = $row['si_name'];
$ch_si[$i]['id'] = $row['si_id'];
}
}
$ch_cl = [];
if ($config['cf_class_title']) {
$class_result = sql_query("select cl_id, cl_name from {$g5['class_table']} where cl_auth <= '{$member['mb_level']}' order by cl_id asc");
for ($i = 0; $row = sql_fetch_array($class_result); $i++) {
$ch_cl[$i]['name'] = $row['cl_name'];
$ch_cl[$i]['id'] = $row['cl_id'];
}
}
$sql_common = " from {$g5['character_table']} ";
$sql_search = " where ch_state = '대기' ";
if ($stx) {
$sql_search .= " and ( ";
if ($sfl == 'ch_pass_state') {
switch ($stx) {
case '미정':
$sql_search .= " ({$sfl} = '') ";
break;
default:
$sql_search .= " ({$sfl} like '{$stx}%') ";
break;
}
} else {
switch ($sfl) {
default:
$sql_search .= " ({$sfl} like '{$stx}%') ";
break;
}
}
$sql_search .= " ) ";
}
if ($s_side) {
$sql_search .= " and ch_side = '{$s_side}' ";
}
if ($s_class) {
$sql_search .= " and ch_class = '{$s_class}' ";
}
if (!$sst) {
$sst = "ch_type";
$sod = "asc";
}
$sql_order = " order by {$sst} {$sod} ";
$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$rows = 50;
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page < 1)
$page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
// 합격
$sql = " select count(*) as cnt {$sql_common} where ch_state = '대기' and ch_pass_state = '합격' {$sql_order} ";
$row = sql_fetch($sql);
$pass_count = $row['cnt'];
// 보류
$sql = " select count(*) as cnt {$sql_common} where ch_state = '대기' and ch_pass_state = '보류' {$sql_order} ";
$row = sql_fetch($sql);
$pass2_count = $row['cnt'];
// 불합격
$sql = " select count(*) as cnt {$sql_common} where ch_state = '대기' and ch_pass_state = '불합' {$sql_order} ";
$row = sql_fetch($sql);
$pass3_count = $row['cnt'];
// 미정
$sql = " select count(*) as cnt {$sql_common} where ch_state = '대기' and ch_pass_state = '' {$sql_order} ";
$row = sql_fetch($sql);
$pass4_count = $row['cnt'];
$listall = '<a href="' . $_SERVER['PHP_SELF'] . '" class="ov_listall">전체목록</a>';
$g5['title'] = '신청서 합격 관리';
include_once './admin.head.php';
$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$from_record}, {$rows} ";
$result = sql_query($sql);
$colspan = 8;
$m_background = get_style('m_background');
?>
<div class="local_ov01 local_ov">
<?php echo $listall ?>
수정완료 신청서 <?php echo number_format($total_count) ?>
<span style="float: right;">
<a href="?sfl=ch_pass_state&amp;stx=합격">합격 <?php echo number_format($pass_count) ?></a>명 |
<a href="?sfl=ch_pass_state&amp;stx=보류">보류 <?php echo number_format($pass2_count) ?></a>명 |
<a href="?sfl=ch_pass_state&amp;stx=불합">불합 <?php echo number_format($pass3_count) ?></a>명 |
<a href="?sfl=ch_pass_state&amp;stx=미정">미정 <?php echo number_format($pass4_count) ?></a>명
</span>
</div>
<form id="fsearch" name="fsearch" class="local_sch01 local_sch" method="get">
<?php
if (count($ch_si) > 0) {
?>
<select name="s_side" id="c_side">
<option value=""><?= $config['cf_side_title'] ?>선택</option>
<?php for ($i = 0; $i < count($ch_si); $i++) { ?>
<option value="<?= $ch_si[$i]['id'] ?>" <?php echo get_selected($_GET['s_side'], $ch_si[$i]['id']); ?>>
<?= $ch_si[$i]['name'] ?></option>
<?php } ?>
</select>
<?php } ?>
<?php
if (count($ch_cl) > 0) {
?>
<select name="s_class" id="c_class">
<option value=""><?= $config['cf_class_title'] ?>선택</option>
<?php for ($i = 0; $i < count($ch_cl); $i++) { ?>
<option value="<?= $ch_cl[$i]['id'] ?>" <?php echo get_selected($_GET['s_class'], $ch_cl[$i]['id']); ?>>
<?= $ch_cl[$i]['name'] ?></option>
<?php } ?>
</select>
<?php } ?>
<select name="sfl" id="sfl">
<option value="ch_name" <?php echo get_selected($_GET['sfl'], "ch_name"); ?>>캐릭터 이름</option>
<option value="mb_id" <?php echo get_selected($_GET['sfl'], "mb_id"); ?>>오너 아이디</option>
<option value="ch_pass_state" <?php echo get_selected($_GET['sfl'], "ch_pass_state"); ?>>합격여부</option>
</select>
<input type="text" name="stx" value="<?php echo $stx ?>" id="stx" class="frm_input">
<input type="submit" class="btn_submit" value="검색">
<?php if ($is_admin == 'super') { ?>
<div class="btn_add01 btn_add" style="float:right;">
<a href="./character_pass_manager_confirm.php"
onclick="return confirm('합격자 일괄 처리 시, 합격된 캐릭터들 전원 승인으로 상태가 변경됩니다.처리 하시겠습니까?');">합격자 일괄 처리</a>
<a href="./character_pass_manager_delete.php"
onclick="return confirm('불합격자 일괄 처리 시, 불합격된 캐릭터들 전원 정보가 삭제됩니다. 처리 하시겠습니까?');" style="background:red;">불합격자 일괄
처리</a>
</div>
<?php } ?>
</form>
<div class="manager-wrap">
<div class="btn_list01 btn_list btn_add" style="clear:both; text-align:left; float:none; padding:0;">
<input type="button" onclick="$('#fmemberlist').submit();" value="상태 일괄 저장" style="background:#262931;" />
</div>
<div class="left">
<form name="fmemberlist" id="fmemberlist" action="./character_pass_manager_update.php"
onsubmit="return fshoplist_submit(this);" method="post">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<ul class="calc-list">
<?php
for ($i = 0; $row = sql_fetch_array($result); $i++) {
$ch_id = $row['ch_id'];
$bg = 'bg' . ($i % 2);
$color = "";
switch ($row['ch_pass_state']) {
case "":
$color = "#999;";
break;
case "합격":
$color = "#9f9899;";
break;
case "불합":
$color = "#999;";
break;
case "보류":
$color = "#000;";
break;
}
$is_prev_complete = false;
if ($row['ch_pass_state'] != '') {
$is_prev_complete = true;
}
?>
<li class="calc-item <?= $is_prev_complete ? "complete" : "" ?>" data-type="<?= $row['ch_pass_state'] ?>">
<input type="hidden" name="ch_id[<?= $i ?>]" value="<?= $row['ch_id'] ?>" />
<div class="thumb" style="background-image:url(<?= $row['ch_thumb'] ?>);"></div>
<div class="info">
<span class="state"
data-type="<?= $row['ch_pass_state'] ?>"><?= $row['ch_pass_state'] ? $row['ch_pass_state'] : "미정" ?></span>
<span class="character">
<?= $row['ch_name'] ?>
</span>
</div>
<div class="re-content">
<div class="control">
<input type="radio" name="ch_pass_state[<?= $i ?>]" id="state_<?= $i ?>_0" value=""
<?= ($row['ch_pass_state'] == "" ? "checked" : "") ?> />
<label for="state_<?= $i ?>_0" class="ty1">미정</label>
<input type="radio" name="ch_pass_state[<?= $i ?>]" id="state_<?= $i ?>_1" value="합격"
<?= ($row['ch_pass_state'] == "합격" ? "checked" : "") ?> />
<label for="state_<?= $i ?>_1" class="ty2">합격</label>
<input type="radio" name="ch_pass_state[<?= $i ?>]" id="state_<?= $i ?>_2" value="보류"
<?= ($row['ch_pass_state'] == "보류" ? "checked" : "") ?> />
<label for="state_<?= $i ?>_2" class="ty3">보류</label>
<input type="radio" name="ch_pass_state[<?= $i ?>]" id="state_<?= $i ?>_3" value="불합"
<?= ($row['ch_pass_state'] == "불합" ? "checked" : "") ?> />
<label for="state_<?= $i ?>_3" class="ty4">불합</label>
</div>
</div>
<a href="<?= G5_URL ?>/member/viewer.php?ch_id=<?= $row['ch_id'] ?>" target="frm_preview"
onclick="check_item(this);" class="link">프로필</a>
</li>
<?php } ?>
</ul>
<?php echo get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, $_SERVER['PHP_SELF'] . '?' . $qstr); ?>
</form>
</div>
<div class="right">
<iframe src="" name="frm_preview"></iframe>
</div>
</div>
<style>
body {
min-width: 1400px;
}
#container {
position: relative;
min-height: 80vh;
height: 100%;
}
#wrapper {
height: 100vh;
}
.manager-wrap {
display: block;
position: absolute;
top: 175px;
left: 20px;
right: 20px;
bottom: 20px;
overflow: hidden;
}
.manager-wrap>.left {
display: block;
position: absolute;
top: 40px;
left: 0;
bottom: 0;
width: 500px;
overflow: auto;
}
.manager-wrap>.right {
display: block;
position: relative;
height: 100%;
width: auto;
margin-left: 520px;
border: 1px solid #ddd;
max-width: 1000px;
box-sizing: border-box;
margin-top: -40px;
}
.manager-wrap iframe {
border: none;
width: 100%;
height: 100%;
<?php if ($m_background['cs_value']) { ?>
background-image: url('<?= $m_background['cs_value'] ?>');
<?php } else { ?>
background-image: none;
<?php }
if ($m_background['cs_etc_1']) { ?>
background-color:
<?= $m_background['cs_etc_1'] ?>
;
<?php }
if ($m_background['cs_etc_2']) { ?>
background-repeat:
<?= $m_background['cs_etc_2'] ?>
;
<?php }
if ($m_background['cs_etc_3']) { ?>
background-position:
<?= $m_background['cs_etc_3'] ?>
;
<?php }
if ($m_background['cs_etc_4']) { ?>
background-size:
<?= $m_background['cs_etc_4'] ?>
;
<?php }
if ($m_background['cs_etc_5']) { ?>
background-attachment:
<?= $m_background['cs_etc_5'] ?>
;
<?php } ?>
}
.calc-list {
display: block;
position: relative;
margin: 0 0 20px;
padding: 0;
clear: both;
}
.calc-item {
display: block;
position: relative;
border: 1px solid #dadada;
margin: 0;
padding: 10px;
padding-left: 70px;
padding-right: 70px;
}
.calc-item>.thumb {
position: absolute;
width: 50px;
height: 50px;
top: 10px;
left: 10px;
overflow: hidden;
background: no-repeat 50% 50%;
background-size: cover;
}
.calc-item+.calc-item {
margin-top: 5px;
}
.calc-list .calc-item:nth-child(even) {
background: #f1f1f1;
}
.calc-item .link {
display: block;
position: absolute;
top: 10px;
right: 10px;
width: 50px;
height: 50px;
background: #29c7c9;
line-height: 50px;
text-align: center;
color: #fff;
}
.calc-item:hover {
background: #ffdddd !important;
border-color: #e2a0a0;
}
.calc-item.focus {
background: #fff8d4 !important;
border-color: #e0d184;
}
.calc-item.over {
background: #608fca !important;
border-color: #2f7ad8;
}
.calc-item.over * {
color: #fff;
}
.calc-item.complete:before {
content: "";
display: block;
position: absolute;
top: -1px;
left: -1px;
bottom: -1px;
width: 4px;
background: red;
}
.calc-item.complete[data-type="합격"]:before {
background: #2e4893;
}
.calc-item.complete[data-type="보류"]:before {
background: #999;
}
.calc-item.complete[data-type="불합"]:before {
background: #000000;
}
.calc-item .info {
display: table;
width: 100%;
table-layout: fixed;
}
.calc-item .info>* {
display: table-cell;
vertical-align: middle;
font-size: 12px;
}
.calc-item .info .state {
width: 50px;
}
.calc-item .info .state[data-type=""] {
color: #cc5959;
}
.calc-item .info .state[data-type="합격"] {
color: #2e4893;
}
.calc-item .info .state[data-type="보류"] {
color: #999;
}
.calc-item .info .state[data-type="불합"] {
color: #000000;
}
.calc-item .info .num {
opacity: .6;
width: 70px;
text-align: center;
}
.calc-item .info .type {
text-align: center;
width: 80px;
}
.calc-item .info .tit em {
display: inline-block;
font-style: normal;
font-size: 11px;
background: rgba(0, 0, 0, .4);
padding: 2px 3px;
color: #fff;
font-weight: 300;
font-family: 'dotum';
}
.calc-item .calc {
display: table;
width: 100%;
table-layout: fixed;
margin-top: 10px;
}
.calc-item .calc>* {
display: table-cell;
vertical-align: middle;
font-size: 12px;
margin: 0;
}
.calc-item .calc .ty1 {
width: 220px;
}
.calc-item .calc .ty2 {
width: 230px;
}
.calc-item .calc .ty3 {
width: 230px;
}
.calc-item .calc .ty4 {
width: auto;
}
.calc-item .calc dl {
display: table;
width: 100%;
table-layout: fixed;
margin: 0;
}
.calc-item .calc dt,
.calc-item .calc dd {
display: table-cell;
margin: 0;
padding: 0;
}
.calc-item .calc dt {
white-space: nowrap;
text-align: right;
box-sizing: border-box;
padding-right: 5px;
}
.calc-item .calc dt input {
display: none;
}
.calc-item .calc dt span,
.calc-item .calc dt label {
display: block;
position: relative;
text-align: center;
height: 25px;
line-height: 22px;
box-sizing: border-box;
border: 1px solid rgba(0, 0, 0, .5);
background: rgba(0, 0, 0, .3);
color: #fff;
border-radius: 3px;
}
.calc-item .calc dt input:checked+label {
background: #29c7c9;
}
.calc-item .calc .ty1 dt {
width: 60px;
}
.calc-item .calc .ty2 dt {
width: 65px;
}
.calc-item .calc .ty3 dt {
width: 65px;
}
.calc-item .calc .ty4 dt {
width: 50px;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
.calc-item .calc input[type="number"],
.calc-item .calc input[type="text"],
.calc-item .calc input[type="number"] {
background: transparent;
border: none;
border-bottom: 1px solid rgba(0, 0, 0, .5);
;
height: 25px;
padding: 0;
width: 100px;
outline: 0;
}
.calc-item .calc input[type="number"] {
appearance: none;
-webkit-appearance: none;
}
.calc-item .calc input[type="text"].error,
.calc-item .calc input[type="number"].error {
color: red;
font-weight: 800;
}
.calc-item .calc .small {
width: 30px !important;
}
.calc-item .calc .ty4 input[type="text"] {
width: 100%;
}
.calc-item .re-content {
display: table;
width: 100%;
table-layout: fixed;
margin-top: 10px;
}
.calc-item .re-content>* {
display: table-cell;
vertical-align: middle;
font-size: 12px;
margin: 0;
}
.calc-item .re-content input[type="text"] {
border: none;
width: 100%;
border-bottom: 1px solid rgba(0, 0, 0, .5);
background: transparent;
outline: 0;
padding: 0;
}
.calc-item .re-content .control {
width: 190px;
text-align: right;
}
.calc-item .re-content .control input {
display: none;
}
.calc-item .re-content .control label {
display: inline-block;
position: relative;
vertical-align: middle;
width: 60px;
text-align: center;
height: 25px;
line-height: 22px;
box-sizing: border-box;
border: 1px solid rgba(0, 0, 0, .3);
color: #333;
border-radius: 0px;
}
.calc-item .re-content .control label.ty1 {
color: red;
}
.calc-item .re-content .control label.ty2 {
color: #2e4893;
}
.calc-item .re-content .control label.ty3 {
color: #999;
}
.calc-item .re-content .control label.ty4 {
color: #000000;
}
.calc-item .re-content .control input:checked+label.ty1 {
background: #cc5959;
color: #fff;
}
.calc-item .re-content .control input:checked+label.ty2 {
background: #2e4893;
color: #fff;
}
.calc-item .re-content .control input:checked+label.ty3 {
background: #999;
color: #fff;
}
.calc-item .re-content .control input:checked+label.ty4 {
background: #000000;
color: #fff;
}
</style>
<script>
function fshoplist_submit(f) {
return true;
}
function check_item(obj) {
$(obj).closest('li').addClass('over').siblings().removeClass('over');
}
function reset_item() {
$('.calc-list').find('li').removeClass('hover');
}
$('.calc-list *').on('focus', function () {
$(this).closest('.calc-item').addClass('focus');
}).on('focusout', function () {
$(this).closest('.calc-item').removeClass('focus');
});
</script>
<?php
include_once './admin.tail.php';

View file

@ -0,0 +1,7 @@
<?php
ini_set("display_errors", 1);
include_once './_common.php';
sql_query("update {$g5['character_table']} set ch_state = '승인' where ch_pass_state = '합격' and ch_state = '대기'");
goto_url('./character_pass_manager.php?' . $qstr);

View file

@ -0,0 +1,9 @@
<?php
ini_set("display_errors", 1);
include_once './_common.php';
sql_query(" delete from {$g5['character_table']} where ch_pass_state != '합격' and ch_state != '승인' ");
goto_url('./character_pass_manager.php?' . $qstr);

View file

@ -0,0 +1,14 @@
<?php
ini_set("display_errors", 1);
include_once './_common.php';
$sql = "";
for ($i = 0; $i < count($ch_id); $i++) {
// 내역 업데이트
sql_query("update {$g5['character_table']} set ch_pass_state = '{$ch_pass_state[$i]}' where ch_id = '{$ch_id[$i]}'");
}
goto_url('./character_pass_manager.php?' . $qstr);

View file

@ -177,7 +177,7 @@ unlink($file_path);
$f = @fopen($file, 'a');
ob_start();
include("./design_form_css.php");
include "./design_form_css.php";
$css = ob_get_contents();
ob_end_flush();
fwrite($f, $css);

View file

@ -34,11 +34,11 @@ include_once G5_ADMIN_PATH . '/admin.head.php';
<tr>
<th scope="row" rowspan="2">인트로 이미지</th>
<td rowspan="2" class="txt-center bo-right ">
<? if ($bn['bn_img']) { ?>
<?php if ($bn['bn_img']) { ?>
<img src="<?= $bn['bn_img'] ?>" class="prev_thumb" />
<? } else { ?>
<?php } else { ?>
이미지 없음
<? } ?>
<?php } ?>
</td>
<td>
직접등록&nbsp;&nbsp; <input type="file" name="bn_img_file" size="50" />
@ -52,11 +52,11 @@ include_once G5_ADMIN_PATH . '/admin.head.php';
<tr>
<th scope="row" rowspan="2">인트로 모바일 이미지</th>
<td rowspan="2" class="txt-center bo-right ">
<? if ($bn['bn_img']) { ?>
<?php if ($bn['bn_img']) { ?>
<img src="<?= $bn['bn_m_img'] ?>" class="prev_thumb" />
<? } else { ?>
<?php } else { ?>
이미지 없음
<? } ?>
<?php } ?>
</td>
<td>
직접등록&nbsp;&nbsp; <input type="file" name="bn_m_img_file" size="50" />

View file

@ -184,17 +184,11 @@ $colspan = 10;
</table>
</div>
<div class="btn_confirm">
<div class="btn ty3">
<span class="material-icons">build</span>
<input type="submit" name="act_button" value="선택수정" title="선택수정" onclick="document.pressed=this.value">
</div>
<div class="btn ty2">
<span class="material-icons">delete</span>
<input type="submit" name="act_button" value="완전삭제" title="완전삭제" onclick="document.pressed=this.value">
</div>
<div class="list_confirm">
<input type="submit" name="act_button" value="선택수정" title="선택수정" onclick="document.pressed=this.value">
<input type="submit" name="act_button" value="완전삭제" title="완전삭제" onclick="document.pressed=this.value">
<?php if ($is_admin == 'super') { ?>
<a href="./member_form.php" title="회원추가" class="btn"><span class="material-icons">add</span></a>
<a href="./member_form.php" title="회원추가" class="btn">회원 추가</a>
<?php } ?>
</div>

View file

@ -0,0 +1,197 @@
<?php
include_once './_common.php';
auth_check($auth[$sub_menu], 'r');
$sql_common = " from {$g5['member_table']} ";
$sql_search = " where ch_id = '0' and mb_id != '{$config['cf_admin']}' ";
if (!$sst) {
$sst = "mb_datetime";
$sod = "desc";
}
$sql_order = " order by {$sst} {$sod} ";
$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$rows = $config['cf_page_rows'];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page < 1)
$page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
// 탈퇴회원수
$sql = " select count(*) as cnt {$sql_common} {$sql_search} and mb_leave_date <> '' {$sql_order} ";
$row = sql_fetch($sql);
$leave_count = $row['cnt'];
// 차단회원수
$sql = " select count(*) as cnt {$sql_common} {$sql_search} and mb_intercept_date <> '' {$sql_order} ";
$row = sql_fetch($sql);
$intercept_count = $row['cnt'];
$listall = '<a href="' . $_SERVER['SCRIPT_NAME'] . '" class="ov_listall">전체목록</a>';
$g5['title'] = '캐릭터 미등록 회원관리';
include_once './admin.head.php';
$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$from_record}, {$rows} ";
$result = sql_query($sql);
$colspan = 9;
?>
<div class="local_ov01 local_ov">
<?php echo $listall ?>
캐릭터 미등록 멤버 <?php echo number_format($total_count) ?>명 중,
<a href="?sst=mb_intercept_date&amp;sod=desc&amp;sfl=<?php echo $sfl ?>&amp;stx=<?php echo $stx ?>">차단
<?php echo number_format($intercept_count) ?></a>명,
<a href="?sst=mb_leave_date&amp;sod=desc&amp;sfl=<?php echo $sfl ?>&amp;stx=<?php echo $stx ?>">탈퇴
<?php echo number_format($leave_count) ?></a>명
</div>
<div class="local_desc01 local_desc">
<p>
회원 자료를 완전히 삭제합니다.
</p>
</div>
<form name="fmemberlist" id="fmemberlist" action="./member_nocharacter_list_update.php"
onsubmit="return fmemberlist_submit(this);" method="post">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="token" value="">
<div class="tbl_head01 tbl_wrap">
<table>
<caption><?php echo $g5['title']; ?> 목록</caption>
<thead>
<tr>
<th>
<input type="checkbox" name="chkall" value="1" id="chkall" onclick="check_all(this.form)">
</th>
<th>아이디</a></th>
<th>이름</a></th>
<th>생년</a></th>
<th>보유캐릭터</a></th>
<th>상태</th>
<th>권한</th>
<th>가입일</a></th>
<th>최종접속</a></th>
</tr>
</thead>
<tbody>
<?php
for ($i = 0; $row = sql_fetch_array($result); $i++) {
$s_mod = '<a href="./member_form.php?' . $qstr . '&amp;w=u&amp;mb_id=' . $row['mb_id'] . '">수정</a>';
$leave_date = $row['mb_leave_date'] ? $row['mb_leave_date'] : date('Ymd', G5_SERVER_TIME);
$intercept_date = $row['mb_intercept_date'] ? $row['mb_intercept_date'] : date('Ymd', G5_SERVER_TIME);
$mb_nick = get_sideview($row['mb_id'], get_text($row['mb_nick']), $row['mb_email'], $row['mb_homepage']);
$mb_id = $row['mb_id'];
$leave_msg = '';
$intercept_msg = '';
$intercept_title = '';
if ($row['mb_leave_date']) {
$leave_msg = '<span class="mb_leave_msg">탈퇴함</span>';
} else if ($row['mb_intercept_date']) {
$intercept_msg = '<span class="mb_intercept_msg">차단됨</span>';
$intercept_title = '차단해제';
}
if ($intercept_title == '')
$intercept_title = '차단하기';
$bg = 'bg' . ($i % 2);
?>
<tr class="<?php echo $bg; ?>">
<td>
<input type="hidden" name="mb_id[<?php echo $i ?>]" value="<?php echo $row['mb_id'] ?>"
id="mb_id_<?php echo $i ?>">
<label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['mb_name']); ?>
<?php echo get_text($row['mb_nick']); ?>님</label>
<input type="checkbox" name="chk[]" value="<?php echo $i ?>" id="chk_<?php echo $i ?>">
</td>
<td><?php echo $mb_id ?></td>
<td><?php echo get_text($row['mb_name']); ?></td>
<td><?php echo get_text($row['mb_birth']); ?></td>
<td class="txt-left">
<?php
// 해당 멤버의 캐릭터 검색
$add_character_str = "";
$ch_result = sql_query("select ch_name, ch_id from {$g5['character_table']} where mb_id = '{$row['mb_id']}'");
for ($j = 0; $ch = sql_fetch_array($ch_result); $j++) {
?>
<?= $add_character_str ?>
<a href="./character_form.php?w=u&amp;ch_id=<?= $ch['ch_id'] ?>"><?= $ch['ch_name'] ?></a>
<?php
$add_character_str = " / ";
}
if ($j == 0) {
?>
<span style="color:#bbb;">보유중인 캐릭터가 없습니다.</span>
<?php } ?>
</td>
<td>
<?php
if ($leave_msg || $intercept_msg)
echo $leave_msg . ' ' . $intercept_msg;
else
echo "정상";
?>
</td>
<td>
<?php echo get_member_level_select("mb_level[$i]", 1, $member['mb_level'], $row['mb_level']) ?>
</td>
<td><?php echo substr($row['mb_datetime'], 2, 8); ?></td>
<td><?php echo substr($row['mb_today_login'], 2, 8); ?></td>
</tr>
<?php
}
if ($i == 0)
echo "<tr><td colspan=\"" . $colspan . "\" class=\"empty_table\">자료가 없습니다.</td></tr>";
?>
</tbody>
</table>
</div>
<div class="list_confirm">
<input type="submit" name="act_button" value="선택삭제" onclick="document.pressed=this.value">
<input type="submit" name="act_button" value="전체삭제" onclick="document.pressed=this.value">
</div>
</form>
<?php echo get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, '?' . $qstr . '&amp;page='); ?>
<script>
function fmemberlist_submit(f) {
if (!is_checked("chk[]")) {
alert(document.pressed + " 하실 항목을 하나 이상 선택하세요.");
return false;
}
if (document.pressed == "선택삭제") {
if (!confirm("선택한 자료를 정말 삭제하시겠습니까? 완전삭제시 복구는 불가능합니다.")) {
return false;
}
}
if (document.pressed == "전체삭제") {
if (!confirm("캐릭터 미등록 회원 자료를 정말 삭제하시겠습니까? 완전삭제시 복구는 불가능합니다.")) {
return false;
}
}
return true;
}
</script>
<?php
include_once './admin.tail.php';
?>

View file

@ -0,0 +1,57 @@
<?php
include_once "./_common.php";
check_demo();
auth_check($auth[$sub_menu], "d");
check_admin_token();
$msg = "";
if ($_POST['act_button'] == "선택삭제") {
for ($i = 0; $i < count($chk); $i++) {
// 실제 번호를 넘김
$k = $_POST['chk'][$i];
$mb = get_member($_POST['mb_id'][$k]);
if (!$mb['mb_id']) {
$msg .= "{$mb['mb_id']} : 회원자료가 존재하지 않습니다.\\n";
} else if ($member['mb_id'] == $mb['mb_id']) {
$msg .= "{$mb['mb_id']} : 로그인 중인 관리자는 삭제 할 수 없습니다.\\n";
} else if (is_admin($mb['mb_id']) == "super") {
$msg .= "{$mb['mb_id']} : 최고 관리자는 삭제할 수 없습니다.\\n";
} else if ($is_admin != "super" && $mb['mb_level'] >= $member['mb_level']) {
$msg .= "{$mb['mb_id']} : 자신보다 권한이 높거나 같은 회원은 삭제할 수 없습니다.\\n";
} else {
// 회원자료 삭제
sql_query(" delete from {$g5['member_table']} where mb_id = '{$_POST['mb_id'][$k]}' ");
}
}
} else if ($_POST['act_button'] == "전체삭제") {
$sql_common = " from {$g5['member_table']} ";
$sql_search = " where ch_id = '0' and mb_id != '{$config['cf_admin']}' ";
$sql = " select * {$sql_common} {$sql_search}";
$result = sql_query($sql);
for ($i = 0; $mb = sql_fetch_array($result); $i++) {
if (!$mb['mb_id']) {
$msg .= "{$mb['mb_id']} : 회원자료가 존재하지 않습니다.\\n";
} else if ($member['mb_id'] == $mb['mb_id']) {
$msg .= "{$mb['mb_id']} : 로그인 중인 관리자는 삭제 할 수 없습니다.\\n";
} else if (is_admin($mb['mb_id']) == "super") {
$msg .= "{$mb['mb_id']} : 최고 관리자는 삭제할 수 없습니다.\\n";
} else if ($is_admin != "super" && $mb['mb_level'] >= $member['mb_level']) {
$msg .= "{$mb['mb_id']} : 자신보다 권한이 높거나 같은 회원은 삭제할 수 없습니다.\\n";
} else {
// 회원자료 삭제
sql_query(" delete from {$g5['member_table']} where mb_id = '{$mb['mb_id']}' ");
}
}
}
if ($msg)
echo "<script type='text/javascript'> alert('$msg'); </script>";
goto_url("./member_nocharacter_list.php");

View file

@ -55,13 +55,13 @@ include_once G5_PATH . '/head.sub.php';
<?php
switch ($mode) {
case 'list':
include(G5_PATH . '/member/index.php');
include G5_PATH . '/member/index.php';
break;
case 'view':
include(G5_PATH . '/member/viewer.php');
include G5_PATH . '/member/viewer.php';
break;
default:
include(G5_PATH . '/main.php');
include G5_PATH . '/main.php';
break;
}
?>

View file

@ -73,7 +73,7 @@ if (is_file($skin_file)) {
if (file_exists($himg)) // 상단 이미지
echo '<div id="ctt_himg" class="ctt_img"><img src="' . G5_DATA_URL . '/content/' . $co_id . '_h" alt=""></div>';
include($skin_file);
include $skin_file;
$timg = G5_DATA_PATH . '/content/' . $co_id . '_t';
if (file_exists($timg)) // 하단 이미지

View file

@ -7,7 +7,7 @@ $qa_skin_url = get_skin_url('qa', $qaconfig['qa_skin']);
if (is_include_path_check($qaconfig['qa_include_head']))
@include($qaconfig['qa_include_head']);
@include $qaconfig['qa_include_head'];
else
include('./_head.php');
include './_head.php';

View file

@ -9,7 +9,7 @@ if (G5_IS_MOBILE) {
} else {
echo conv_content($qaconfig['qa_content_tail'], 1);
if (is_include_path_check($qaconfig['qa_include_tail']))
@include($qaconfig['qa_include_tail']);
@include $qaconfig['qa_include_tail'];
else
include('./_tail.php');
include './_tail.php';
}

View file

@ -121,7 +121,7 @@ class Item extends Module
return false;
}
public static function giveItem($character_id, $item_id, $item = null, $count = 1, $type = "획득")
public static function giveItem($character_id, $item_id, $item = null, $count = 1, $type = "획득", $isorder = false)
{
global $g5;
@ -138,6 +138,9 @@ class Item extends Module
it_id = '{$item['it_id']}',
it_name = '{$item['it_name']}',
ch_name = '{$ch['ch_name']}'";
if ($isorder) {
self::insertOrderLog($character_id, $item_id);
}
self::addGetLog($item_id, $character_id, $item, $type);
sql_query($inven_sql);
}
@ -145,6 +148,20 @@ class Item extends Module
return $count;
}
public static function insertOrderLog($character_id, $item_id)
{
global $g5;
$member_id = Character::getMemberID($character_id);
if ($member_id) {
$time = G5_TIME_YMDHIS;
sql_query("INSERT INTO {$g5['order_table']}
set ch_id = '{$character_id}',
it_id = '{$item_id}',
or_datetime = '{$time}',
mb_id = '{$member_id}'");
}
}
/**
* @param int $inventory_id
* @param int $delete

View file

@ -27,6 +27,7 @@ class Module
$escapedValue = sql_real_escape_string($value);
$setParts[] = "{$key} = '{$escapedValue}'";
}
return implode(', ', $setParts);
}

View file

@ -46,9 +46,9 @@ $g5['title'] = "커플";
include_once './_head.php';
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/couple/list.skin.php")) {
include(G5_THEME_PATH . "/couple/list.skin.php");
include G5_THEME_PATH . "/couple/list.skin.php";
} else {
include(G5_PATH . "/couple/skin/list.skin.php");
include G5_PATH . "/couple/skin/list.skin.php";
}
include_once G5_PATH . '/tail.php';

2078
AvocadoAmber/css/bootstrap-icons.css vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -13,14 +13,12 @@
****************************************/
@import url(./swiper.css);
@import url(./bootstrap-icons.css);
@font-face {
font-family: 'icon';
src: url('./fonts/icomoon.eot?y5isk6');
src: url('./fonts/icomoon.eot?y5isk6#iefix') format('embedded-opentype'),
url('./fonts/icomoon.ttf?y5isk6') format('truetype'),
url('./fonts/icomoon.woff?y5isk6') format('woff'),
url('./fonts/icomoon.svg?y5isk6#icomoon') format('svg');
src: url("./fonts/bootstrap-icons.woff2") format("woff2"),
url("./fonts/bootstrap-icons.woff") format("woff");
font-weight: normal;
font-style: normal;
}

View file

@ -11,9 +11,9 @@ if (!$in['in_id']) {
} else {
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/inventory/item.skin.php")) {
include(G5_THEME_PATH . "/inventory/item.skin.php");
include G5_THEME_PATH . "/inventory/item.skin.php";
} else {
include(G5_PATH . "/inventory/skin/item.skin.php");
include G5_PATH . "/inventory/skin/item.skin.php";
}
}

View file

@ -1,4 +1,7 @@
<?php
/**
* @var string|int $in_id
*/
include_once './_common.php';
$ch = get_character($ch_id);

View file

@ -1,4 +1,7 @@
<?php
/**
* @var string|int $in_id
*/
include_once './_common.php';
if ($url) {

View file

@ -1,4 +1,7 @@
<?php
/**
* @var string|int $in_id
*/
include_once './_common.php';
$in = sql_fetch("select * from {$g5['inventory_table']} inven, {$g5['item_table']} item where inven.in_id = '{$in_id}' and inven.it_id = item.it_id");
@ -11,5 +14,5 @@ if (!$in['in_id']) {
$ch = get_character($in['ch_id']);
}
include('./inc/send_item_form.php');
include './inc/send_item_form.php';
}

View file

@ -1,4 +1,7 @@
<?php
/**
* @var string|int $in_id
*/
include_once './_common.php';
function location_url($url)
@ -29,7 +32,7 @@ if (!$in['in_id']) {
echo location_url(G5_URL . "/mypage/character/character_form.php?w=u&ch_id=" . $in['ch_id'] . "&in_id=" . $in['in_id'] . "&url=" . $url);
}
if ($inven_function == "아이템추가") {
include('./inc/add_item_form.php');
include './inc/add_item_form.php';
}
if ($inven_function == "스탯회복") {
set_status($ch['ch_id'], $in['st_id'], ($in['it_value'] * -1));

View file

@ -31,7 +31,7 @@ function latest($skin_dir = '', $bo_table, $rows = 10, $subject_len = 40, $cache
}
if (!$cache_fwrite)
include($cache_file);
include $cache_file;
}
}

View file

@ -27,9 +27,9 @@ $g5['title'] = "멤버란";
include_once G5_PATH . '/head.php';
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/member/list.skin.php")) {
include(G5_THEME_PATH . "/member/list.skin.php");
include G5_THEME_PATH . "/member/list.skin.php";
} else {
include(G5_PATH . "/member/skin/list.skin.php");
include G5_PATH . "/member/skin/list.skin.php";
}
unset($ch);

View file

@ -1,4 +1,8 @@
<?php
/**
* @var string|int $s_class
* @var string|int $s_side
*/
include_once './_common.php';
$g5['title'] = "신청자 대기 목록";
include_once './_head.php';
@ -145,9 +149,9 @@ for ($i = 0; $i < count($ch_si); $i++) {
}
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/member/ready_list.skin.php")) {
include(G5_THEME_PATH . "/member/ready_list.skin.php");
include G5_THEME_PATH . "/member/ready_list.skin.php";
} else {
include(G5_PATH . "/member/skin/ready_list.skin.php");
include G5_PATH . "/member/skin/ready_list.skin.php";
}
unset($rank_result);

View file

@ -2,28 +2,27 @@
if (!defined('_GNUBOARD_'))
exit;
add_stylesheet('<link rel="stylesheet" href="' . G5_CSS_URL . '/member.css">', 0);
add_stylesheet('<link rel="stylesheet" href="' . G5_CSS_URL . '/bootstrap-icons.css">', 0);
?>
<div id="character_profile">
<hr class="padding" />
<nav id="profile_menu">
<?php if ($article['ad_use_closet'] && $article['ad_use_body']) { ?>
<a href="<?= G5_URL ?>/member/closet.php?ch_id=<?= $ch['ch_id'] ?>"
onclick="window.open(this.href, 'big_viewer', 'width=800 height=800 menubar=no status=no toolbar=no location=no scrollbars=yes resizable=yes'); return false;"
class="ui-btn ico point camera circle big">
옷장보기
class="ui-btn point circle big">
<i class="bi bi-box-seam" style="pointer-events: none"></i>
</a>
<?php } ?>
<?php if ($article['ad_use_exp']) { ?>
<a href="<?= G5_URL ?>/member/exp.php?ch_id=<?= $ch['ch_id'] ?>"
onclick="popup_window(this.href, 'exp', 'width=400, height=500'); return false;"
class="ui-btn ico point exp circle big">
경험치 내역 보기
class="ui-btn point circle big">
<i class="bi bi-coin" style="pointer-events: none"></i>
</a>
<?php } ?>
</nav>
<!-- 캐릭터 비쥬얼 (이미지) 출력 영역 -->
<div class="visual-area">
<?php if ($article['ad_use_body'] && $ch['ch_body']) { ?>
@ -198,7 +197,7 @@ add_stylesheet('<link rel="stylesheet" href="' . G5_CSS_URL . '/member.css">', 0
<?php } ?>
</h3>
<div class="theme-box">
<?php include(G5_PATH . "/inventory/list.inc.php"); ?>
<?php include G5_PATH . "/inventory/list.inc.php"; ?>
</div>
<?php } ?>

View file

@ -82,9 +82,9 @@ $g5['title'] = $ch['ch_name'] . " 프로필";
include_once G5_PATH . '/head.php';
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/member/viewer.skin.php")) {
include(G5_THEME_PATH . "/member/viewer.skin.php");
include G5_THEME_PATH . "/member/viewer.skin.php";
} else {
include(G5_PATH . "/member/skin/viewer.skin.php");
include G5_PATH . "/member/skin/viewer.skin.php";
}
include_once G5_PATH . '/tail.php';

View file

@ -309,7 +309,7 @@ if (!$tabs) {
<div class="tab-box" id="relation_area" <?= $tabs == 'r' ? "" : "style='display:none;'" ?>>
<?php if ($ch['ch_state'] == "승인") { ?>
<div class="mypage-box relation-box">
<?php include(G5_PATH . '/mypage/character/relation_list.php'); ?>
<?php include G5_PATH . '/mypage/character/relation_list.php'; ?>
</div>
<?php } ?>
</div>

View file

@ -45,7 +45,7 @@ if ($total > 0) {
}
$last_me_id = $last_me_id > $me['me_id'] ? $last_me_id : $me['me_id'];
// 템플릿 불러오기
include('../memo_view.skin.php');
include '../memo_view.skin.php';
}
?>
<i id="last_idx" style="display: none;"><?= $last_me_id ?></i>

View file

@ -49,5 +49,5 @@ for ($i = ($max_count - 1); $i >= 0; $i--) {
$last_me_id = $me['me_id'];
// 템플릿 불러오기
include('../memo_view.skin.php');
include '../memo_view.skin.php';
}

View file

@ -78,7 +78,7 @@ for ($i = 0; $row = sql_fetch_array($result); $i++) {
}
// 템플릿 불러오기
include('./memo_view.skin.php');
include './memo_view.skin.php';
} ?>
</div>

View file

@ -1,2 +1,2 @@
<?php
require(dirname(__FILE__).'/kcaptcha.lib.php');
require dirname(__FILE__).'/kcaptcha.lib.php';

View file

@ -22,7 +22,7 @@ class KCAPTCHA{
// generates keystring and image
function image(){
require(dirname(__FILE__).'/kcaptcha_config.php');
require dirname(__FILE__).'/kcaptcha_config.php';
$fonts=array();
$fontsdir_absolute=dirname(__FILE__).'/'.$fontsdir;

View file

@ -19,4 +19,4 @@ if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_
$content = '<a href="./redirect.php"><img src="./images/lighter.png" alt="Sign in with Twitter"/></a>';
/* Include HTML to display on the page. */
include('html.inc');
include 'html.inc';

View file

@ -32,4 +32,4 @@ $content = $connection->get('account/verify_credentials');
//$connection->post('friendships/destroy', array('id' => 9436992));
/* Include HTML to display on the page */
include('html.inc');
include 'html.inc';

View file

@ -0,0 +1,39 @@
<?php
/**
* @var string|int $sh_id
*/
include_once "./_common.php";
$item = sql_fetch("select * from {$g5['shop_table']} shop, {$g5['item_table']} item where shop.it_id = item.it_id and shop.sh_id = '{$sh_id}'");
if ($item['sh_id']) {
$money = "";
$add_str = "";
if ($item['sh_money'] && $item['sh_use_money']) {
$money .= $add_str . $item['sh_money'] . ' ' . $config['cf_money_pice'];
$add_str = ", ";
}
if ($item['sh_exp'] && $item['sh_use_exp']) {
$money .= $add_str . $item['sh_exp'] . ' ' . $config['cf_exp_pice'];
$add_str = ", ";
}
if ($item['sh_has_item'] && $item['sh_use_has_item']) {
$item['sh_has_item_count'] = ($item['sh_has_item_count'] == '' || $item['sh_has_item_count'] == '0') ? 1 : $item['sh_has_item_count'];
$money .= $add_str . get_item_name($item['sh_has_item']) . ' ' . $item['sh_has_item_count'] . '개';
$add_str = ", ";
}
if ($item['it_content2']) {
$item['it_content'] .= "<br />(" . $item['it_content2'] . ")";
}
}
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/shop/shop.item.skin.php")) {
include G5_THEME_PATH . "/shop/shop.item.skin.php";
} else {
include G5_PATH . "/shop/skin/shop.item.skin.php";
}

View file

@ -0,0 +1,165 @@
<?php
/**
* @var string|int $sh_id
*/
include_once "./_common.php";
if ($character['ch_id'] && $character['ch_state'] == '승인') {
$msg = "";
$item = sql_fetch("select * from {$g5['shop_table']} shop, {$g5['item_table']} item where shop.it_id = item.it_id and shop.sh_id = '{$sh_id}'");
if ($item['sh_id']) {
// 구매 가능한 아이템인지 체크한다.
// -- 체크 항목 : 각 구매 가격 및 교환 아이템/타이틀
// -- 구매 갯수 및 재고, 세력, 진영 제한 체크
//------------------
// 구매가격 체크
//------------------
$use_point = 0;
$use_exp_point = 0;
$use_inventory_item = 0;
$use_has_title = 0;
$is_able_buy = true;
if ($item['sh_money']) {
// 구매가격이 존재 시
if ($member['mb_point'] < $item['sh_money']) {
// 소지금 부족
$msg .= $config['cf_money'] . " 부족합니다.<br />";
$is_able_buy = false;
} else if ($item['sh_use_money']) {
// 소지금 소모
$use_point += $item['sh_money'];
}
}
if ($item['sh_exp']) {
// 구매 경험치 존재 시
if ($character['ch_exp'] < $item['sh_exp']) {
// 경험치 부족
$msg .= $config['cf_exp_name'] . " 부족합니다.<br />";
$is_able_buy = false;
} else if ($item['sh_use_exp']) {
// 경험치 소모
$use_exp_point += $item['sh_exp'];
}
}
if ($item['sh_has_item']) {
// 구매 아이템 존재 시
$item['sh_has_item_count'] = $item['sh_has_item_count'] == 0 ? 1 : $item['sh_has_item_count'];
$in = sql_fetch("select count(in_id) as cnt, in_id from {$g5['inventory_table']} where ch_id = '{$character['ch_id']}' and it_id = '{$item['sh_has_item']}'");
if ($in['cnt'] < $item['sh_has_item_count']) {
// 필요 아이템 미소유
$has_item_name = get_item_name($item['sh_has_item']);
$msg .= $has_item_name . j($has_item_name, '이') . " " . $item['sh_has_item_count'] . "개 있어야 살 수 있습니다.<br />";
$is_able_buy = false;
} else if ($item['sh_use_has_item']) {
// 아이템 소모
$use_inventory_item = $item['sh_has_item'];
$use_inventory_item_count = $item['sh_has_item_count'];
}
}
if ($item['sh_has_title']) {
// 구매 타이틀 존재 시
$ti = sql_fetch("select hi_id from {$g5['title_has_table']} where ch_id = '{$character['ch_id']}' and ti_id = '{$item['sh_has_title']}'");
if (!$ti['hi_id']) {
// 필요 타이틀 미소유
$has_title = get_title($item['sh_has_item']);
$msg .= $has_title['ti_title'] . j($has_title['ti_title'], '이') . " 있어야 살 수 있습니다.<br />";
$is_able_buy = false;
} else if ($item['sh_use_has_title']) {
// 타이틀 소모
$use_has_title = $ti['hi_id'];
}
}
//-------------------------------------------------
// 구매 가능 여부 체크
//-------------------------------------------------
if ($item['sh_limit']) {
// 구매 갯수 제한이 존재 시
// 구매 내역 정보를 가져온다
$order = sql_fetch("select count(*) as cnt from {$g5['order_table']} where ch_id = '{$character['ch_id']}' and it_id = '{$item['it_id']}'");
if ($order['cnt'] >= $item['sh_limit']) {
$msg .= "너무 많이 구매했습니다. 더이상 구매할 수 없습니다.<br />";
$is_able_buy = false;
}
}
if ($item['sh_qty']) {
// 재고가 존재시
// 구매 내역 정보를 가져온다
$order = sql_fetch("select count(*) as cnt from {$g5['order_table']} where it_id = '{$item['it_id']}'");
if ($order['cnt'] >= $item['sh_qty']) {
$msg .= "재고가 모두 소진되었습니다. 더이상 구매할 수 없습니다.<br />";
$is_able_buy = false;
}
}
if ($item['sh_class']) {
// 종족 구매 제한이 존재시
if (!strstr($item['sh_class'], '||' . $character['ch_class'] . '||')) {
$msg .= "구매할 수 없는 " . $config['cf_class_title'] . "입니다.<br />";
$is_able_buy = false;
}
}
if ($item['sh_side']) {
// 세력 구매 제한이 존재시
if (!strstr($item['sh_side'], '||' . $character['ch_side'] . '||')) {
$msg .= "구매할 수 없는 " . $config['cf_side_title'] . "입니다.<br />";
$is_able_buy = false;
}
}
if ($is_able_buy) {
Item::giveItem($character['ch_id'], $item['it_id'], $item, 1, "구매", true);
if ($use_point) {
// 소지금 차감
$insert_point = $use_point * -1;
insert_point($member['mb_id'], $insert_point, $item['it_name'] . ' 구매 ( ' . $use_point . $config['cf_money_pice'] . ' 소모 )', 'shop', time(), '구매');
}
if ($use_exp_point) {
// 경험치 차감
$action = '차감';
$ex_content = $item['it_name'] . ' 구매 ( ' . $use_exp_point . $config['cf_exp_pice'] . ' 소모 )';
$ex_point = $use_exp_point * -1;
insert_exp($character['ch_id'], $ex_point, $ex_content, $action);
}
if ($use_inventory_item) {
// 아이템 제거
$item_result = sql_query("select in_id from {$g5['inventory_table']} where ch_id = '{$character['ch_id']}' and it_id = '{$use_inventory_item}' order by se_ch_name asc, in_id asc limit 0, {$use_inventory_item_count}");
for ($k = 0; $in = sql_fetch_array($item_result); $k++) {
// 인벤에서 제거
delete_inventory($in['in_id'], 0);
}
}
if ($use_has_title) {
// 타이틀 제거
sql_query("delete from {$g5['title_has_table']} where hi_id = '{$use_has_title}'");
}
$msg = "" . $item['it_name'] . " 》 구매 되었습니다.";
}
}
} else {
$msg = "<p style='color:red; padding-top:5px;'>부정사용 적발 시, 접근 차단이 될 수 있습니다.</p>";
}
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/shop/shop.result.skin.php")) {
include G5_THEME_PATH . "/shop/shop.result.skin.php";
} else {
include G5_PATH . "/shop/skin/shop.result.skin.php";
}

View file

@ -0,0 +1,2 @@
<?php
include_once '../common.php';

View file

@ -0,0 +1,4 @@
<?php
if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
include_once G5_PATH . '/_head.php';

View file

@ -0,0 +1,4 @@
<?php
if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
include_once G5_PATH . '/head.sub.php';

View file

@ -0,0 +1,4 @@
<?php
if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
include_once G5_PATH . '/_tail.php';

View file

@ -0,0 +1,5 @@
<?php
if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
include_once G5_PATH . '/tail.sub.php';

144
AvocadoAmber/shop/index.php Normal file
View file

@ -0,0 +1,144 @@
<?php
include_once './_common.php';
$g5['title'] = "상점";
include_once './_head.php';
$shop_cate = explode("||", $config['cf_shop_category']);
if (!$cate) {
$cate = $shop_cate[0];
}
$sql_common = " from {$g5['shop_table']} ";
$sql_search = " where sh_use = '1' and ca_name = '{$cate}' ";
$sql_order = " order by sh_order asc ";
$sql_limit = "";
$sql_search .= " AND (sh_date_s <= '" . date('Ymd') . "' OR sh_date_s = '') ";
$sql_search .= " AND (sh_date_e >= '" . date('Ymd') . "' OR sh_date_e = '') ";
$sql_search .= " AND (sh_time_s <= '" . DATE('H') . "' OR sh_time_s = '') ";
$sql_search .= " AND (sh_time_e >= '" . DATE('H') . "' OR sh_time_e = '') ";
$sql_search .= " AND (sh_week LIKE '%||" . DATE('w') . "||%' OR sh_week = '') ";
$sql_search .= " AND ((sh_side LIKE '%||" . $character['ch_side'] . "||%' AND sh_use_side = '1') OR sh_use_side = '0') ";
$sql_search .= " AND ((sh_class LIKE '%||" . $character['ch_class'] . "||%' AND sh_use_class = '1') OR sh_use_class = '0') ";
$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$page_rows = 10;
$total_page = ceil($total_count / $page_rows);
if ($page < 1) {
$page = 1;
}
$from_record = ($page - 1) * $page_rows;
$sql_limit = " limit {$from_record}, {$page_rows} ";
$write_pages = get_paging(5, $page, $total_page, './index.php?cate=' . $cate . $qstr . '&amp;page=');
$shop_sql = " select * {$sql_common} {$sql_search} {$sql_order} {$sql_limit} ";
$shop_result = sql_query($shop_sql);
$shop_list = [];
for ($i = 0; $shop = sql_fetch_array($shop_result); $i++) {
$shop_list[$i] = $shop;
$shop_list[$i]['item'] = get_item($shop['it_id']);
}
if (defined('G5_THEME_PATH') && is_file(G5_THEME_PATH . "/shop/shop.skin.php")) {
include G5_THEME_PATH . "/shop/shop.skin.php";
} else {
include G5_PATH . "/shop/skin/shop.skin.php";
}
?>
<script>
function view_shop_item(shop_idx) {
var h_link = "./_ajax.shop_item.php?sh_id=" + shop_idx;
$.ajax({
async: true
, url: h_link
, beforeSend: function() {}
, success: function(data) {
// Toss
var response = data;
$('#item_info').empty().append(response);
view_shop_item_complete();
}
, error: function(data, status, err) {
$('#item_info').empty();
}
, complete: function() {
// Complete
}
});
}
function fn_buy_item(shop_idx){
var h_link = "./_ajax.shop_update.php?sh_id=" + shop_idx;
$.ajax({
async: true
, url: h_link
, beforeSend: function() {}
, success: function(data) {
// Toss
var response = data;
$('#item_info').empty().append(response);
view_shop_item_buy();
}
, error: function(data, status, err) {
$('#item_info').empty();
}
, complete: function() {
// Complete
}
});
}
$('.ajax-link a').on('click', function() {
$(this).addClass('point').parent().siblings().find('a').removeClass('point');
ajax_shop_link_url($(this).attr('href'), '#shop_item_list');
return false;
});
function ajax_shop_link_url(url, obj_id) {
var h_link = url;
if(typeof(history.pushState) != "undefined") {
$.ajax({
async: true
, url: h_link
, beforeSend: function() {}
, success: function(data) {
// Toss
var response = data;
var temp_content = $(response).find(obj_id).clone();
$(obj_id).fadeOut(300, function(){$(this).empty().append(temp_content.html());}).fadeIn(300, function() {
var link = url;
var link_obj = { Title: '', Url: link};
history.pushState(link_obj, link_obj.Title, link_obj.Url);
$(obj_id).find('.ajax-link').find('a').on('click', function() {
$(this).parents('li').addClass('on').siblings().removeClass('on');
ajax_shop_link_url($(this).attr('href'), '#shop_item_list');
return false;
});
});
}
, error: function(data, status, err) {
$(obj_id).fadeOut(300, function(){$(this).empty(); });
}
, complete: function() {
// Complete
}
});
} else {
location.href=url;
}
}
</script>
<?php
include_once './_tail.php';

View file

@ -0,0 +1,38 @@
<?php
if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
if ($item['sh_id']) {
// 상품 진열 정보가 있을 경우
?>
<div class="type-item theme-box">
<div id="item_talk">
<div id="item_simple_viewer">
<div id="buy_item_data">
<div class="item-thumb">
<img src="<?= $item['it_img'] ?>" />
</div>
<div class="item-name"><?= $item['it_name'] ?> <sup><?= $money ?></sup></div>
<div class="item-content"><?= $item['it_content'] ?></div>
</div>
</div>
<div class="item_talk"><?= $item['sh_content'] ?></div>
<br />
</div>
<?php if ($character['ch_id'] && $character['ch_state'] == '승인') { ?>
<a href="javascript:fn_buy_item('<?= $item['sh_id'] ?>');" id="btn_buy" class="ui-btn full point">
구매하기
</a>
<?php } ?>
</div>
<?php } else {
// 상품 진열 정보가 없을 경우
?>
<div id="default_talk">
<p>
오류가 발생했습니다. 다시 한번 선택해 주시길 바랍니다.
</p>
</div>
<?php
}

View file

@ -0,0 +1,7 @@
<?php
if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
?>
<div id="default_talk">
<p><?= $msg ?></p>
</div>

View file

@ -0,0 +1,52 @@
<?php
if (!defined('_GNUBOARD_'))
exit; // 개별 페이지 접근 불가
add_stylesheet('<link rel="stylesheet" href="' . G5_CSS_URL . '/shop.css">', 0);
?>
<div id="shop_page">
<div id="shop_npc">
<img src="<?= G5_IMG_URL ?>/shop/npc.png" />
</div>
<div id="item_info">
<div id="default_talk"></div>
</div>
<div id="item_list_box">
<div id="shop_cate" class="ajax-link">
<ul>
<?php for ($i = 0; $i < count($shop_cate); $i++) { ?>
<li>
<a href="?cate=<?= $shop_cate[$i] ?>"
class='ui-btn <?= $cate == $shop_cate[$i] ? 'point' : '' ?>'><?= $shop_cate[$i] ?></a>
</li>
<?php } ?>
</ul>
</div>
<div id="shop_item_list">
<ul>
<?php for ($i = 0; $i < count($shop_list); $i++) {
$shop = $shop_list[$i];
?>
<li>
<a href="javascript:view_shop_item('<?= $shop['sh_id'] ?>');">
<img src="<?= $shop['item']['it_img'] ?>" />
<span><?= $shop['item']['it_name'] ?></span>
</a>
</li>
<?php } ?>
</ul>
<div id="shop_paging" class="ajax-link">
<?= $write_pages ?>
</div>
</div>
</div>
</div>
<script>
function view_shop_item_complete() {
// 아이템 상세 팝업 창 실행 종료 후 실행할 코드
};
function view_shop_item_buy() {
// 아이템 구매 완료 후 실행할 코드
};
</script>

View file

@ -38,7 +38,7 @@ $comment_action_url = https_url(G5_BBS_DIR) . "/write_comment_update.php";
<span class="bo_vc_hdinfo"><time
datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo date('m/d H:i', strtotime($list[$i]['datetime'])) ?></time></span>
<?php
include(G5_SNS_PATH . '/view_comment_list.sns.skin.php');
include G5_SNS_PATH . '/view_comment_list.sns.skin.php';
?>
</header>

View file

@ -60,13 +60,13 @@ $is_notice = false;
for ($i = 0; $i < count($list); $i++) {
if ($list[$i]['is_notice']) {
include($board_skin_path . "/list.couple.skin.php");
include $board_skin_path . "/list.couple.skin.php";
$is_notice = true;
} else {
if ($is_notice) {
break;
}
include($board_skin_path . "/list.character.skin.php");
include $board_skin_path . "/list.character.skin.php";
}
}

View file

@ -38,7 +38,7 @@ $comment_action_url = https_url(G5_BBS_DIR) . "/write_comment_update.php";
<span class="bo_vc_hdinfo"><time
datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo date('m/d H:i', strtotime($list[$i]['datetime'])) ?></time></span>
<?php
include(G5_SNS_PATH . '/view_comment_list.sns.skin.php');
include G5_SNS_PATH . '/view_comment_list.sns.skin.php';
?>
</header>

View file

@ -19,11 +19,11 @@ $log_type = $data_log[0];
$item_log = explode("||", $item_log);
if ($log_type) {
include($board_skin_path . "/action/log.{$log_type}.skin.php");
include $board_skin_path . "/action/log.{$log_type}.skin.php";
}
if ($item_log[0]) {
/** 아이템 사용시 **/
include($board_skin_path . "/action/log.item.skin.php");
include $board_skin_path . "/action/log.item.skin.php";
}

View file

@ -167,10 +167,10 @@ sql_query("UPDATE {$g5['call_table']} SET bc_check = 1 where re_mb_id = '{$membe
<div class="ui-comment">
<?php if ($is_viewer) { ?>
<div class="item-comment-box">
<?php include($board_skin_path . "/view_comment.php"); ?>
<?php include $board_skin_path . "/view_comment.php"; ?>
</div>
<div class="item-comment-form-box">
<?php include($board_skin_path . "/write_comment.php"); ?>
<?php include $board_skin_path . "/write_comment.php"; ?>
</div>
<?php } else { ?>
멤버 공개용 로그 입니다.

View file

@ -54,7 +54,7 @@ $owner_behind = $owner_behind['cs_etc_4'];
<?php
for ($i = 0; $i < count($list); $i++) {
$list_item = $list[$i];
include($board_skin_path . "/list.log.skin.php");
include $board_skin_path . "/list.log.skin.php";
}
if (count($list) == 0) {
echo "<div class=\"empty_list\">등록된 로그가 없습니다.</div>";

View file

@ -103,4 +103,4 @@ if ($is_admin) {
}
//array_unshift($comment, $list_item);
include($board_skin_path . '/view_comment.skin.php');
include $board_skin_path . '/view_comment.skin.php';

View file

@ -197,7 +197,7 @@ if ($month == "12")
$moonday="";
}
include($file_index."/lunar.txt"); ### 음력 기념일 파일 지정
include $file_index."/lunar.txt"; ### 음력 기념일 파일 지정
if ($annivmoonday&&$daycont) $blank="<br />"; // 음력절기와 양력기념일이 동시에 있으면 한칸 띔
else $blank="";

View file

@ -88,7 +88,7 @@ if ($logo_data)
</a>
</li>
</ul>
<?php include(G5_PATH . "/templete/txt.bgm.php"); ?>
<?php include G5_PATH . "/templete/txt.bgm.php"; ?>
<?php } ?>
</div>

View file

@ -2,28 +2,27 @@
if (!defined('_GNUBOARD_'))
exit;
add_stylesheet('<link rel="stylesheet" href="' . G5_CSS_URL . '/member.css">', 0);
add_stylesheet('<link rel="stylesheet" href="' . G5_CSS_URL . '/bootstrap-icons.css">', 0);
?>
<div id="character_profile">
<hr class="padding" />
<nav id="profile_menu">
<?php if ($article['ad_use_closet'] && $article['ad_use_body']) { ?>
<a href="<?= G5_URL ?>/member/closet.php?ch_id=<?= $ch['ch_id'] ?>"
onclick="window.open(this.href, 'big_viewer', 'width=800 height=800 menubar=no status=no toolbar=no location=no scrollbars=yes resizable=yes'); return false;"
class="ui-btn ico point camera circle big">
옷장보기
class="ui-btn point circle big">
<i class="bi bi-box-seam" style="pointer-events: none"></i>
</a>
<?php } ?>
<?php if ($article['ad_use_exp']) { ?>
<a href="<?= G5_URL ?>/member/exp.php?ch_id=<?= $ch['ch_id'] ?>"
onclick="popup_window(this.href, 'exp', 'width=400, height=500'); return false;"
class="ui-btn ico point exp circle big">
경험치 내역 보기
class="ui-btn point circle big">
<i class="bi bi-coin" style="pointer-events: none"></i>
</a>
<?php } ?>
</nav>
<!-- 캐릭터 비쥬얼 (이미지) 출력 영역 -->
<div class="visual-area">
<?php if ($article['ad_use_body'] && $ch['ch_body']) { ?>
@ -198,7 +197,7 @@ add_stylesheet('<link rel="stylesheet" href="' . G5_CSS_URL . '/member.css">', 0
<?php } ?>
</h3>
<div class="theme-box">
<?php include(G5_PATH . "/inventory/list.inc.php"); ?>
<?php include G5_PATH . "/inventory/list.inc.php"; ?>
</div>
<?php } ?>

View file

@ -45,7 +45,7 @@ if (!defined('_GNUBOARD_'))
<span class="bo_vc_hdinfo"><i class="fa fa-clock-o" aria-hidden="true"></i> <time
datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo $list[$i]['datetime'] ?></time></span>
<?php
include(G5_SNS_PATH . '/view_comment_list.sns.skin.php');
include G5_SNS_PATH . '/view_comment_list.sns.skin.php';
?>
</header>
<!-- 댓글 출력 -->