Compare commits
127
Commits
v5.5.8.2.5
...
v5.5.10
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5605b539f4 | ||
|
|
a8baa8dd7d | ||
|
|
16051b3049 | ||
|
|
db1d56e07b | ||
|
|
4455f7d3c9 | ||
|
|
398967f804 | ||
|
|
ee75b32b3c | ||
|
|
c869f29f0d | ||
|
|
c95168fb0c | ||
|
|
b8ffd99362 | ||
|
|
64e1fbe786 | ||
|
|
91715ff830 | ||
|
|
1fb9e28510 | ||
|
|
babbc9afdb | ||
|
|
04030f9274 | ||
|
|
3085703c61 | ||
|
|
20dc211a82 | ||
|
|
a773839338 | ||
|
|
84b22909c5 | ||
|
|
28bfcea9c2 | ||
|
|
8cd1df0f43 | ||
|
|
cf2a8ab282 | ||
|
|
941f3e135a | ||
|
|
4b9b1af01e | ||
|
|
41d48891f4 | ||
|
|
616f5b8d46 | ||
|
|
a96460948c | ||
|
|
337ee4e68f | ||
|
|
7af4888458 | ||
|
|
fdc695d08c | ||
|
|
9fe34dae1d | ||
|
|
4364058313 | ||
|
|
0642c48106 | ||
|
|
d74c7b24bf | ||
|
|
fec5569c71 | ||
|
|
876534a440 | ||
|
|
5d4ba1030e | ||
|
|
e43e424d80 | ||
|
|
5036254b69 | ||
|
|
2ae4046d29 | ||
|
|
ccdbdebdec | ||
|
|
1c4465a692 | ||
|
|
bcbabf50f2 | ||
|
|
3da5145bef | ||
|
|
6868cee8d1 | ||
|
|
870dcec68d | ||
|
|
4735d62770 | ||
|
|
2c88ef6d13 | ||
|
|
12ce06c2d2 | ||
|
|
3a7d06b19e | ||
|
|
641656047d | ||
|
|
3becc03d23 | ||
|
|
6eaa6ee22a | ||
|
|
a8524eb070 | ||
|
|
db9b4ffd50 | ||
|
|
9416b7dd9a | ||
|
|
1634065870 | ||
|
|
14af11d0fa | ||
|
|
ec3fdce5c7 | ||
|
|
79ce9ec984 | ||
|
|
8eb1d46be1 | ||
|
|
cbdaccbdec | ||
|
|
ff6b160774 | ||
|
|
f96ff445b9 | ||
|
|
6e684e80f2 | ||
|
|
ffc8706a76 | ||
|
|
8ec09b0059 | ||
|
|
af64737b63 | ||
|
|
81792d2595 | ||
|
|
bbbc568db8 | ||
|
|
4eba618a82 | ||
|
|
accf20044f | ||
|
|
aaadf1487d | ||
|
|
44798a4ef5 | ||
|
|
992641dfad | ||
|
|
451ece8d8c | ||
|
|
bcda18cbd5 | ||
|
|
2a8f5f6035 | ||
|
|
f4821aa49a | ||
|
|
476b06792a | ||
|
|
9489254bbf | ||
|
|
8bcac60bda | ||
|
|
fe03163cce | ||
|
|
8ecc5ba241 | ||
|
|
4204f7970e | ||
|
|
9cd2841006 | ||
|
|
4b92543c61 | ||
|
|
b01adc51c7 | ||
|
|
bfdc48b021 | ||
|
|
10b3a9c841 | ||
|
|
3f27a5e32d | ||
|
|
a904c5c634 | ||
|
|
d603f2d5b3 | ||
|
|
275f7e5d8a | ||
|
|
2595a7a45d | ||
|
|
cb346b08c1 | ||
|
|
3db2dc8be3 | ||
|
|
b3451f1cc2 | ||
|
|
b557483e1d | ||
|
|
d28be44108 | ||
|
|
f61d6cc09a | ||
|
|
6fa0f0e704 | ||
|
|
66039a4b37 | ||
|
|
aca4733b12 | ||
|
|
85b97f4b29 | ||
|
|
724a4e4bf6 | ||
|
|
9cf8804611 | ||
|
|
8f3893bb43 | ||
|
|
7617aba611 | ||
|
|
d99641d122 | ||
|
|
7516424989 | ||
|
|
1cb12d9f2c | ||
|
|
dbcb6a2cb6 | ||
|
|
18c42a648e | ||
|
|
f5e2252997 | ||
|
|
6fd339174e | ||
|
|
1891b5eb38 | ||
|
|
3fcc1f2d5f | ||
|
|
4958cc9e35 | ||
|
|
1750e957d2 | ||
|
|
abfeee5e92 | ||
|
|
c3272f9170 | ||
|
|
df176c6ad9 | ||
|
|
22bfc5e9bb | ||
|
|
4e0cd0d911 | ||
|
|
25091a201b | ||
|
|
3706ef99d3 |
+3
-4
@@ -617,13 +617,12 @@ if (!$member['mb_id']) {
|
||||
}
|
||||
}
|
||||
|
||||
// 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.
|
||||
$admin_key = md5($member['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']);
|
||||
if (get_session('ss_mb_key') !== $admin_key) {
|
||||
|
||||
// 관리자의 클라이언트를 검증하여 일치하지 않으면 세션을 끊고 관리자에게 메일을 보낸다.
|
||||
if (!verify_mb_key($member)) {
|
||||
session_destroy();
|
||||
|
||||
include_once G5_LIB_PATH . '/mailer.lib.php';
|
||||
|
||||
// 메일 알림
|
||||
mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'] . ' 아이피로 XSS 공격이 있었습니다.<br><br>관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.<br><br>해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.' . G5_URL, 0);
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ if (!defined('_GNUBOARD_')) {
|
||||
|
||||
// 그누보드5.4.5.5 버전과 영카트5.4.5.5.1 버전이 통합됨에 따라 그누보드 버전만 표시
|
||||
// $print_version = defined('G5_YOUNGCART_VER') ? 'YoungCart Version '.G5_YOUNGCART_VER : 'Version '.G5_GNUBOARD_VER;
|
||||
$print_version = 'Version ' . G5_GNUBOARD_VER;
|
||||
$print_version = ($is_admin == 'super') ? 'Version ' . G5_GNUBOARD_VER : '';
|
||||
?>
|
||||
|
||||
<noscript>
|
||||
|
||||
@@ -191,7 +191,6 @@ if ($copy_case == 'schema_data_both') {
|
||||
sql_query($sql, false);
|
||||
|
||||
// 4.00.01
|
||||
// 위의 코드는 같은 테이블명을 사용하였다는 오류가 발생함. (희한하네 ㅡㅡ;)
|
||||
$sql = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' ";
|
||||
$result = sql_query($sql, false);
|
||||
for ($i = 0; $row = sql_fetch_array($result); $i++) {
|
||||
|
||||
@@ -113,17 +113,20 @@ if ($w == "") {
|
||||
set co_id = '$co_id',
|
||||
$sql_common ";
|
||||
sql_query($sql);
|
||||
run_event('admin_content_created', $co_id);
|
||||
} elseif ($w == "u") {
|
||||
$sql = " update {$g5['content_table']}
|
||||
set $sql_common
|
||||
where co_id = '$co_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_content_updated', $co_id);
|
||||
} elseif ($w == "d") {
|
||||
@unlink(G5_DATA_PATH . "/content/{$co_id}_h");
|
||||
@unlink(G5_DATA_PATH . "/content/{$co_id}_t");
|
||||
|
||||
$sql = " delete from {$g5['content_table']} where co_id = '$co_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_content_deleted', $co_id);
|
||||
}
|
||||
|
||||
if (function_exists('get_admin_captcha_by')) {
|
||||
|
||||
@@ -207,6 +207,18 @@ if (defined('G5_USE_SHOP') && G5_USE_SHOP) {
|
||||
}
|
||||
}
|
||||
|
||||
// auth.au_menu 컬럼 크기 조정
|
||||
$sql = " SHOW COLUMNS FROM `{$g5['auth_table']}` LIKE 'au_menu' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (
|
||||
stripos($row['Type'], 'varchar') !== false
|
||||
&& (int) preg_replace('/[^0-9]/', '', $row['Type']) <= 50
|
||||
) {
|
||||
sql_query(" ALTER TABLE `{$g5['auth_table']}` CHANGE `au_menu` `au_menu` VARCHAR(50) NOT NULL; ", true);
|
||||
|
||||
$is_check = true;
|
||||
}
|
||||
|
||||
$is_check = run_replace('admin_dbupgrade', $is_check);
|
||||
|
||||
$db_upgrade_msg = $is_check ? 'DB 업그레이드가 완료되었습니다.' : '더 이상 업그레이드 할 내용이 없습니다.<br>현재 DB 업그레이드가 완료된 상태입니다.';
|
||||
|
||||
@@ -30,6 +30,7 @@ if ($w == "")
|
||||
sql_query($sql);
|
||||
|
||||
$fa_id = sql_insert_id();
|
||||
run_event('admin_faq_item_created', $fa_id, $fm_id);
|
||||
}
|
||||
else if ($w == "u")
|
||||
{
|
||||
@@ -37,11 +38,14 @@ else if ($w == "u")
|
||||
set $sql_common
|
||||
where fa_id = '$fa_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_faq_item_updated', $fa_id, $fm_id);
|
||||
|
||||
}
|
||||
else if ($w == "d")
|
||||
{
|
||||
$sql = " delete from {$g5['faq_table']} where fa_id = '$fa_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_faq_item_deleted', $fa_id, $fm_id);
|
||||
}
|
||||
|
||||
if ($w == 'd')
|
||||
|
||||
@@ -49,9 +49,13 @@ if ($w == "") {
|
||||
sql_query($sql);
|
||||
|
||||
$fm_id = sql_insert_id();
|
||||
run_event('admin_faq_master_created', $fm_id);
|
||||
|
||||
} elseif ($w == "u") {
|
||||
$sql = " update {$g5['faq_master_table']} $sql_common where fm_id = '$fm_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_faq_master_updated', $fm_id);
|
||||
|
||||
} elseif ($w == "d") {
|
||||
@unlink(G5_DATA_PATH . "/faq/{$fm_id}_h");
|
||||
@unlink(G5_DATA_PATH . "/faq/{$fm_id}_t");
|
||||
@@ -63,6 +67,8 @@ if ($w == "") {
|
||||
// FAQ상세삭제
|
||||
$sql = " delete from {$g5['faq_table']} where fm_id = '$fm_id' ";
|
||||
sql_query($sql);
|
||||
|
||||
run_event('admin_faq_master_deleted', $fm_id);
|
||||
}
|
||||
|
||||
if ($w == "" || $w == "u") {
|
||||
|
||||
+298
-277
@@ -3,8 +3,10 @@ $sub_menu = '100000';
|
||||
require_once './_common.php';
|
||||
|
||||
@require_once './safe_check.php';
|
||||
|
||||
if (function_exists('social_log_file_delete')) {
|
||||
social_log_file_delete(86400); //소셜로그인 디버그 파일 24시간 지난것은 삭제
|
||||
//소셜로그인 디버그 파일 24시간 지난것은 삭제
|
||||
social_log_file_delete(86400);
|
||||
}
|
||||
|
||||
$g5['title'] = '관리자메인';
|
||||
@@ -14,304 +16,323 @@ $new_member_rows = 5;
|
||||
$new_point_rows = 5;
|
||||
$new_write_rows = 5;
|
||||
|
||||
$sql_common = " from {$g5['member_table']} ";
|
||||
|
||||
$sql_search = " where (1) ";
|
||||
|
||||
if ($is_admin != 'super') {
|
||||
$sql_search .= " and mb_level <= '{$member['mb_level']}' ";
|
||||
$addtional_content_before = run_replace('adm_index_addtional_content_before', '', $is_admin, $auth, $member);
|
||||
if ($addtional_content_before) {
|
||||
echo $addtional_content_before;
|
||||
}
|
||||
|
||||
if (!$sst) {
|
||||
$sst = "mb_datetime";
|
||||
$sod = "desc";
|
||||
}
|
||||
if (!auth_check_menu($auth, '200100', 'r', true)) {
|
||||
$sql_common = " from {$g5['member_table']} ";
|
||||
|
||||
$sql_order = " order by {$sst} {$sod} ";
|
||||
$sql_search = " where (1) ";
|
||||
|
||||
$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
// 탈퇴회원수
|
||||
$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'];
|
||||
|
||||
$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$new_member_rows} ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$colspan = 12;
|
||||
?>
|
||||
|
||||
<section>
|
||||
<h2>신규가입회원 <?php echo $new_member_rows ?>건 목록</h2>
|
||||
<div class="local_desc02 local_desc">
|
||||
총회원수 <?php echo number_format($total_count) ?>명 중 차단 <?php echo number_format($intercept_count) ?>명, 탈퇴 : <?php echo number_format($leave_count) ?>명
|
||||
</div>
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption>신규가입회원</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">회원아이디</th>
|
||||
<th scope="col">이름</th>
|
||||
<th scope="col">닉네임</th>
|
||||
<th scope="col">권한</th>
|
||||
<th scope="col">포인트</th>
|
||||
<th scope="col">수신</th>
|
||||
<th scope="col">공개</th>
|
||||
<th scope="col">인증</th>
|
||||
<th scope="col">차단</th>
|
||||
<th scope="col">그룹</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for ($i = 0; $row = sql_fetch_array($result); $i++) {
|
||||
// 접근가능한 그룹수
|
||||
$sql2 = " select count(*) as cnt from {$g5['group_member_table']} where mb_id = '{$row['mb_id']}' ";
|
||||
$row2 = sql_fetch($sql2);
|
||||
$group = "";
|
||||
if ($row2['cnt']) {
|
||||
$group = '<a href="./boardgroupmember_form.php?mb_id=' . $row['mb_id'] . '">' . $row2['cnt'] . '</a>';
|
||||
}
|
||||
|
||||
if ($is_admin == 'group') {
|
||||
$s_mod = '';
|
||||
$s_del = '';
|
||||
} else {
|
||||
$s_mod = '<a href="./member_form.php?$qstr&w=u&mb_id=' . $row['mb_id'] . '">수정</a>';
|
||||
$s_del = '<a href="./member_delete.php?' . $qstr . '&w=d&mb_id=' . $row['mb_id'] . '&url=' . $_SERVER['SCRIPT_NAME'] . '" onclick="return delete_confirm(this);">삭제</a>';
|
||||
}
|
||||
$s_grp = '<a href="./boardgroupmember_form.php?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'];
|
||||
?>
|
||||
<tr>
|
||||
<td class="td_mbid"><?php echo $mb_id ?></td>
|
||||
<td class="td_mbname"><?php echo get_text($row['mb_name']); ?></td>
|
||||
<td class="td_mbname sv_use">
|
||||
<div><?php echo $mb_nick ?></div>
|
||||
</td>
|
||||
<td class="td_num"><?php echo $row['mb_level'] ?></td>
|
||||
<td><a href="./point_list.php?sfl=mb_id&stx=<?php echo $row['mb_id'] ?>"><?php echo number_format($row['mb_point']) ?></a></td>
|
||||
<td class="td_boolean"><?php echo $row['mb_mailling'] ? '예' : '아니오'; ?></td>
|
||||
<td class="td_boolean"><?php echo $row['mb_open'] ? '예' : '아니오'; ?></td>
|
||||
<td class="td_boolean"><?php echo preg_match('/[1-9]/', $row['mb_email_certify']) ? '예' : '아니오'; ?></td>
|
||||
<td class="td_boolean"><?php echo $row['mb_intercept_date'] ? '예' : '아니오'; ?></td>
|
||||
<td class="td_category"><?php echo $group ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
if ($i == 0) {
|
||||
echo '<tr><td colspan="' . $colspan . '" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="btn_list03 btn_list">
|
||||
<a href="./member_list.php">회원 전체보기</a>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<?php
|
||||
$sql_common = " from {$g5['board_new_table']} a, {$g5['board_table']} b, {$g5['group_table']} c where a.bo_table = b.bo_table and b.gr_id = c.gr_id ";
|
||||
|
||||
if ($gr_id) {
|
||||
$sql_common .= " and b.gr_id = '$gr_id' ";
|
||||
}
|
||||
if (isset($view) && $view) {
|
||||
if ($view == 'w') {
|
||||
$sql_common .= " and a.wr_id = a.wr_parent ";
|
||||
} elseif ($view == 'c') {
|
||||
$sql_common .= " and a.wr_id <> a.wr_parent ";
|
||||
if ($is_admin != 'super') {
|
||||
$sql_search .= " and mb_level <= '{$member['mb_level']}' ";
|
||||
}
|
||||
}
|
||||
$sql_order = " order by a.bn_id desc ";
|
||||
|
||||
$sql = " select count(*) as cnt {$sql_common} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
if (!$sst) {
|
||||
$sst = "mb_datetime";
|
||||
$sod = "desc";
|
||||
}
|
||||
|
||||
$colspan = 5;
|
||||
?>
|
||||
$sql_order = " order by {$sst} {$sod} ";
|
||||
|
||||
<section>
|
||||
<h2>최근게시물</h2>
|
||||
$sql = " SELECT count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption>최근게시물</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">그룹</th>
|
||||
<th scope="col">게시판</th>
|
||||
<th scope="col">제목</th>
|
||||
<th scope="col">이름</th>
|
||||
<th scope="col">일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$sql = " select a.*, b.bo_subject, c.gr_subject, c.gr_id {$sql_common} {$sql_order} limit {$new_write_rows} ";
|
||||
$result = sql_query($sql);
|
||||
for ($i = 0; $row = sql_fetch_array($result); $i++) {
|
||||
$tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
|
||||
// 탈퇴회원수
|
||||
$sql = " select count(*) as cnt {$sql_common} {$sql_search} and mb_leave_date <> '' {$sql_order} ";
|
||||
$row = sql_fetch($sql);
|
||||
$leave_count = $row['cnt'];
|
||||
|
||||
// 원글
|
||||
if ($row['wr_id'] == $row['wr_parent']) {
|
||||
$comment = "";
|
||||
$comment_link = "";
|
||||
$row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '{$row['wr_id']}' ");
|
||||
// 차단회원수
|
||||
$sql = " SELECT count(*) as cnt {$sql_common} {$sql_search} and mb_intercept_date <> '' {$sql_order} ";
|
||||
$row = sql_fetch($sql);
|
||||
$intercept_count = $row['cnt'];
|
||||
|
||||
$name = get_sideview($row2['mb_id'], get_text(cut_str($row2['wr_name'], $config['cf_cut_name'])), $row2['wr_email'], $row2['wr_homepage']);
|
||||
// 당일인 경우 시간으로 표시함
|
||||
$datetime = substr($row2['wr_datetime'], 0, 10);
|
||||
$datetime2 = $row2['wr_datetime'];
|
||||
if ($datetime == G5_TIME_YMD) {
|
||||
$datetime2 = substr($datetime2, 11, 5);
|
||||
} else {
|
||||
$datetime2 = substr($datetime2, 5, 5);
|
||||
}
|
||||
} else // 코멘트
|
||||
{
|
||||
$comment = '댓글. ';
|
||||
$comment_link = '#c_' . $row['wr_id'];
|
||||
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_parent']}' ");
|
||||
$row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");
|
||||
$sql = " SELECT * {$sql_common} {$sql_search} {$sql_order} limit {$new_member_rows} ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$name = get_sideview($row3['mb_id'], get_text(cut_str($row3['wr_name'], $config['cf_cut_name'])), $row3['wr_email'], $row3['wr_homepage']);
|
||||
// 당일인 경우 시간으로 표시함
|
||||
$datetime = substr($row3['wr_datetime'], 0, 10);
|
||||
$datetime2 = $row3['wr_datetime'];
|
||||
if ($datetime == G5_TIME_YMD) {
|
||||
$datetime2 = substr($datetime2, 11, 5);
|
||||
} else {
|
||||
$datetime2 = substr($datetime2, 5, 5);
|
||||
}
|
||||
}
|
||||
?>
|
||||
$colspan = 12;
|
||||
?>
|
||||
|
||||
<section>
|
||||
<h2>신규가입회원 <?php echo $new_member_rows ?>건 목록</h2>
|
||||
<div class="local_desc02 local_desc">
|
||||
총회원수 <?php echo number_format($total_count) ?>명 중 차단 <?php echo number_format($intercept_count) ?>명, 탈퇴 : <?php echo number_format($leave_count) ?>명
|
||||
</div>
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption>신규가입회원</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_category"><a href="<?php echo G5_BBS_URL ?>/new.php?gr_id=<?php echo $row['gr_id'] ?>"><?php echo cut_str($row['gr_subject'], 10) ?></a></td>
|
||||
<td class="td_category"><a href="<?php echo get_pretty_url($row['bo_table']) ?>"><?php echo cut_str($row['bo_subject'], 20) ?></a></td>
|
||||
<td><a href="<?php echo get_pretty_url($row['bo_table'], $row2['wr_id']); ?><?php echo $comment_link ?>"><?php echo $comment ?><?php echo conv_subject($row2['wr_subject'], 100) ?></a></td>
|
||||
<td class="td_mbname">
|
||||
<div><?php echo $name ?></div>
|
||||
</td>
|
||||
<td class="td_datetime"><?php echo $datetime ?></td>
|
||||
<th scope="col">회원아이디</th>
|
||||
<th scope="col">이름</th>
|
||||
<th scope="col">닉네임</th>
|
||||
<th scope="col">권한</th>
|
||||
<th scope="col">포인트</th>
|
||||
<th scope="col">수신</th>
|
||||
<th scope="col">공개</th>
|
||||
<th scope="col">인증</th>
|
||||
<th scope="col">차단</th>
|
||||
<th scope="col">그룹</th>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
}
|
||||
if ($i == 0) {
|
||||
echo '<tr><td colspan="' . $colspan . '" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="btn_list03 btn_list">
|
||||
<a href="<?php echo G5_BBS_URL ?>/new.php">최근게시물 더보기</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
$sql_common = " from {$g5['point_table']} ";
|
||||
$sql_search = " where (1) ";
|
||||
$sql_order = " order by po_id desc ";
|
||||
|
||||
$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$new_point_rows} ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$colspan = 7;
|
||||
?>
|
||||
|
||||
<section>
|
||||
<h2>최근 포인트 발생내역</h2>
|
||||
<div class="local_desc02 local_desc">
|
||||
전체 <?php echo number_format($total_count) ?> 건 중 <?php echo $new_point_rows ?>건 목록
|
||||
</div>
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption>최근 포인트 발생내역</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">회원아이디</th>
|
||||
<th scope="col">이름</th>
|
||||
<th scope="col">닉네임</th>
|
||||
<th scope="col">일시</th>
|
||||
<th scope="col">포인트 내용</th>
|
||||
<th scope="col">포인트</th>
|
||||
<th scope="col">포인트합</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$row2['mb_id'] = '';
|
||||
for ($i = 0; $row = sql_fetch_array($result); $i++) {
|
||||
if ($row2['mb_id'] != $row['mb_id']) {
|
||||
$sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for ($i = 0; $row = sql_fetch_array($result); $i++) {
|
||||
// 접근가능한 그룹수
|
||||
$sql2 = " SELECT count(*) as cnt from {$g5['group_member_table']} where mb_id = '{$row['mb_id']}' ";
|
||||
$row2 = sql_fetch($sql2);
|
||||
$group = "";
|
||||
if ($row2['cnt']) {
|
||||
$group = '<a href="./boardgroupmember_form.php?mb_id=' . $row['mb_id'] . '">' . $row2['cnt'] . '</a>';
|
||||
}
|
||||
|
||||
if ($is_admin == 'group') {
|
||||
$s_mod = '';
|
||||
$s_del = '';
|
||||
} else {
|
||||
$s_mod = '<a href="./member_form.php?$qstr&w=u&mb_id=' . $row['mb_id'] . '">수정</a>';
|
||||
$s_del = '<a href="./member_delete.php?' . $qstr . '&w=d&mb_id=' . $row['mb_id'] . '&url=' . $_SERVER['SCRIPT_NAME'] . '" onclick="return delete_confirm(this);">삭제</a>';
|
||||
}
|
||||
$s_grp = '<a href="./boardgroupmember_form.php?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'];
|
||||
?>
|
||||
<tr>
|
||||
<td class="td_mbid"><?php echo $mb_id ?></td>
|
||||
<td class="td_mbname"><?php echo get_text($row['mb_name']); ?></td>
|
||||
<td class="td_mbname sv_use">
|
||||
<div><?php echo $mb_nick ?></div>
|
||||
</td>
|
||||
<td class="td_num"><?php echo $row['mb_level'] ?></td>
|
||||
<td><a href="./point_list.php?sfl=mb_id&stx=<?php echo $row['mb_id'] ?>"><?php echo number_format($row['mb_point']) ?></a></td>
|
||||
<td class="td_boolean"><?php echo $row['mb_mailling'] ? '예' : '아니오'; ?></td>
|
||||
<td class="td_boolean"><?php echo $row['mb_open'] ? '예' : '아니오'; ?></td>
|
||||
<td class="td_boolean"><?php echo preg_match('/[1-9]/', $row['mb_email_certify']) ? '예' : '아니오'; ?></td>
|
||||
<td class="td_boolean"><?php echo $row['mb_intercept_date'] ? '예' : '아니오'; ?></td>
|
||||
<td class="td_category"><?php echo $group ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
|
||||
$mb_nick = get_sideview($row['mb_id'], $row2['mb_nick'], $row2['mb_email'], $row2['mb_homepage']);
|
||||
|
||||
$link1 = $link2 = "";
|
||||
if (!preg_match("/^\@/", $row['po_rel_table']) && $row['po_rel_table']) {
|
||||
$link1 = '<a href="' . get_pretty_url($row['po_rel_table'], $row['po_rel_id']) . '" target="_blank">';
|
||||
$link2 = '</a>';
|
||||
if ($i == 0) {
|
||||
echo '<tr><td colspan="' . $colspan . '" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
}
|
||||
?>
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="btn_list03 btn_list">
|
||||
<a href="./member_list.php">회원 전체보기</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
} //endif 최신 회원
|
||||
|
||||
if (!auth_check_menu($auth, '300100', 'r', true)) {
|
||||
|
||||
$sql_common = " from {$g5['board_new_table']} a, {$g5['board_table']} b, {$g5['group_table']} c where a.bo_table = b.bo_table and b.gr_id = c.gr_id ";
|
||||
|
||||
if ($gr_id) {
|
||||
$sql_common .= " and b.gr_id = '{$gr_id}' ";
|
||||
}
|
||||
if (isset($view) && $view) {
|
||||
if ($view == 'w') {
|
||||
$sql_common .= " and a.wr_id = a.wr_parent ";
|
||||
} elseif ($view == 'c') {
|
||||
$sql_common .= " and a.wr_id <> a.wr_parent ";
|
||||
}
|
||||
}
|
||||
$sql_order = " order by a.bn_id desc ";
|
||||
|
||||
$sql = " SELECT count(*) as cnt {$sql_common} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$colspan = 5;
|
||||
?>
|
||||
|
||||
<section>
|
||||
<h2>최근게시물</h2>
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption>최근게시물</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="td_mbid"><a href="./point_list.php?sfl=mb_id&stx=<?php echo $row['mb_id'] ?>"><?php echo $row['mb_id'] ?></a></td>
|
||||
<td class="td_mbname"><?php echo get_text($row2['mb_name']); ?></td>
|
||||
<td class="td_name sv_use">
|
||||
<div><?php echo $mb_nick ?></div>
|
||||
</td>
|
||||
<td class="td_datetime"><?php echo $row['po_datetime'] ?></td>
|
||||
<td><?php echo $link1 . $row['po_content'] . $link2 ?></td>
|
||||
<td class="td_numbig"><?php echo number_format($row['po_point']) ?></td>
|
||||
<td class="td_numbig"><?php echo number_format($row['po_mb_point']) ?></td>
|
||||
<th scope="col">그룹</th>
|
||||
<th scope="col">게시판</th>
|
||||
<th scope="col">제목</th>
|
||||
<th scope="col">이름</th>
|
||||
<th scope="col">일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$sql = " SELECT a.*, b.bo_subject, c.gr_subject, c.gr_id {$sql_common} {$sql_order} limit {$new_write_rows} ";
|
||||
$result = sql_query($sql);
|
||||
for ($i = 0; $row = sql_fetch_array($result); $i++) {
|
||||
$tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
|
||||
|
||||
<?php
|
||||
}
|
||||
if ($row['wr_id'] == $row['wr_parent']) {
|
||||
// 원글
|
||||
$comment = "";
|
||||
$comment_link = "";
|
||||
$row2 = sql_fetch(" SELECT * from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");
|
||||
|
||||
if ($i == 0) {
|
||||
echo '<tr><td colspan="' . $colspan . '" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
$name = get_sideview($row2['mb_id'], get_text(cut_str($row2['wr_name'], $config['cf_cut_name'])), $row2['wr_email'], $row2['wr_homepage']);
|
||||
// 당일인 경우 시간으로 표시함
|
||||
$datetime = substr($row2['wr_datetime'], 0, 10);
|
||||
$datetime2 = $row2['wr_datetime'];
|
||||
if ($datetime == G5_TIME_YMD) {
|
||||
$datetime2 = substr($datetime2, 11, 5);
|
||||
} else {
|
||||
$datetime2 = substr($datetime2, 5, 5);
|
||||
}
|
||||
} else {
|
||||
// 코멘트
|
||||
$comment = '댓글. ';
|
||||
$comment_link = '#c_' . $row['wr_id'];
|
||||
$row2 = sql_fetch(" SELECT * from {$tmp_write_table} where wr_id = '{$row['wr_parent']}' ");
|
||||
$row3 = sql_fetch(" SELECT mb_id, wr_name, wr_email, wr_homepage, wr_datetime from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");
|
||||
|
||||
<div class="btn_list03 btn_list">
|
||||
<a href="./point_list.php">포인트내역 전체보기</a>
|
||||
</div>
|
||||
</section>
|
||||
$name = get_sideview($row3['mb_id'], get_text(cut_str($row3['wr_name'], $config['cf_cut_name'])), $row3['wr_email'], $row3['wr_homepage']);
|
||||
// 당일인 경우 시간으로 표시함
|
||||
$datetime = substr($row3['wr_datetime'], 0, 10);
|
||||
$datetime2 = $row3['wr_datetime'];
|
||||
if ($datetime == G5_TIME_YMD) {
|
||||
$datetime2 = substr($datetime2, 11, 5);
|
||||
} else {
|
||||
$datetime2 = substr($datetime2, 5, 5);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
require_once './admin.tail.php';
|
||||
<tr>
|
||||
<td class="td_category"><a href="<?php echo G5_BBS_URL ?>/new.php?gr_id=<?php echo $row['gr_id'] ?>"><?php echo cut_str($row['gr_subject'], 10) ?></a></td>
|
||||
<td class="td_category"><a href="<?php echo get_pretty_url($row['bo_table']) ?>"><?php echo cut_str($row['bo_subject'], 20) ?></a></td>
|
||||
<td><a href="<?php echo get_pretty_url($row['bo_table'], $row2['wr_id']); ?><?php echo $comment_link ?>"><?php echo $comment ?><?php echo conv_subject($row2['wr_subject'], 100) ?></a></td>
|
||||
<td class="td_mbname">
|
||||
<div><?php echo $name ?></div>
|
||||
</td>
|
||||
<td class="td_datetime"><?php echo $datetime ?></td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
}
|
||||
if ($i == 0) {
|
||||
echo '<tr><td colspan="' . $colspan . '" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="btn_list03 btn_list">
|
||||
<a href="<?php echo G5_BBS_URL ?>/new.php">최근게시물 더보기</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
} //endif 최근게시물
|
||||
|
||||
if (!auth_check_menu($auth, '200200', 'r', true)) {
|
||||
|
||||
$sql_common = " from {$g5['point_table']} ";
|
||||
$sql_search = " where (1) ";
|
||||
$sql_order = " order by po_id desc ";
|
||||
|
||||
$sql = " SELECT count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$sql = " SELECT * {$sql_common} {$sql_search} {$sql_order} limit {$new_point_rows} ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$colspan = 7;
|
||||
?>
|
||||
|
||||
<section>
|
||||
<h2>최근 포인트 발생내역</h2>
|
||||
<div class="local_desc02 local_desc">
|
||||
전체 <?php echo number_format($total_count) ?> 건 중 <?php echo $new_point_rows ?>건 목록
|
||||
</div>
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption>최근 포인트 발생내역</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">회원아이디</th>
|
||||
<th scope="col">이름</th>
|
||||
<th scope="col">닉네임</th>
|
||||
<th scope="col">일시</th>
|
||||
<th scope="col">포인트 내용</th>
|
||||
<th scope="col">포인트</th>
|
||||
<th scope="col">포인트합</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$row2['mb_id'] = '';
|
||||
for ($i = 0; $row = sql_fetch_array($result); $i++) {
|
||||
if ($row2['mb_id'] != $row['mb_id']) {
|
||||
$sql2 = " SELECT mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
|
||||
$row2 = sql_fetch($sql2);
|
||||
}
|
||||
|
||||
$mb_nick = get_sideview($row['mb_id'], $row2['mb_nick'], $row2['mb_email'], $row2['mb_homepage']);
|
||||
|
||||
$link1 = $link2 = "";
|
||||
if (!preg_match("/^\@/", $row['po_rel_table']) && $row['po_rel_table']) {
|
||||
$link1 = '<a href="' . get_pretty_url($row['po_rel_table'], $row['po_rel_id']) . '" target="_blank">';
|
||||
$link2 = '</a>';
|
||||
}
|
||||
?>
|
||||
|
||||
<tr>
|
||||
<td class="td_mbid"><a href="./point_list.php?sfl=mb_id&stx=<?php echo $row['mb_id'] ?>"><?php echo $row['mb_id'] ?></a></td>
|
||||
<td class="td_mbname"><?php echo get_text($row2['mb_name']); ?></td>
|
||||
<td class="td_name sv_use">
|
||||
<div><?php echo $mb_nick ?></div>
|
||||
</td>
|
||||
<td class="td_datetime"><?php echo $row['po_datetime'] ?></td>
|
||||
<td><?php echo $link1 . $row['po_content'] . $link2 ?></td>
|
||||
<td class="td_numbig"><?php echo number_format($row['po_point']) ?></td>
|
||||
<td class="td_numbig"><?php echo number_format($row['po_mb_point']) ?></td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
if ($i == 0) {
|
||||
echo '<tr><td colspan="' . $colspan . '" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="btn_list03 btn_list">
|
||||
<a href="./point_list.php">포인트내역 전체보기</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
} //endif
|
||||
|
||||
$addtional_content_after = run_replace('adm_index_addtional_content_after', '', $is_admin, $auth, $member);
|
||||
if ($addtional_content_after) {
|
||||
echo $addtional_content_after;
|
||||
}
|
||||
require_once './admin.tail.php';
|
||||
@@ -19,6 +19,7 @@ for ($i = 0; $i < $post_count_chk; $i++) {
|
||||
|
||||
$sql = " delete from {$g5['mail_table']} where ma_id = '$ma_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_mail_deleted', $ma_id);
|
||||
}
|
||||
|
||||
goto_url('./mail_list.php');
|
||||
|
||||
@@ -21,6 +21,10 @@ if ($w == '') {
|
||||
ma_time = '" . G5_TIME_YMDHIS . "',
|
||||
ma_ip = '{$_SERVER['REMOTE_ADDR']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
$ma_id = sql_insert_id();
|
||||
run_event('admin_mail_created', $ma_id);
|
||||
|
||||
} elseif ($w == 'u') {
|
||||
$sql = " update {$g5['mail_table']}
|
||||
set ma_subject = '{$ma_subject}',
|
||||
@@ -29,9 +33,12 @@ if ($w == '') {
|
||||
ma_ip = '{$_SERVER['REMOTE_ADDR']}'
|
||||
where ma_id = '{$ma_id}' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_mail_updated', $ma_id);
|
||||
|
||||
} elseif ($w == 'd') {
|
||||
$sql = " delete from {$g5['mail_table']} where ma_id = '{$ma_id}' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_mail_deleted', $ma_id);
|
||||
}
|
||||
|
||||
goto_url('./mail_list.php');
|
||||
|
||||
@@ -59,14 +59,16 @@ $sql_common = " nw_device = '{$posts['nw_device']}',
|
||||
if ($w == "") {
|
||||
$sql = " insert {$g5['new_win_table']} set $sql_common ";
|
||||
sql_query($sql);
|
||||
|
||||
$nw_id = sql_insert_id();
|
||||
run_event('admin_newwin_created', $nw_id);
|
||||
} elseif ($w == "u") {
|
||||
$sql = " update {$g5['new_win_table']} set $sql_common where nw_id = '$nw_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_newwin_updated', $nw_id);
|
||||
} elseif ($w == "d") {
|
||||
$sql = " delete from {$g5['new_win_table']} where nw_id = '$nw_id' ";
|
||||
sql_query($sql);
|
||||
run_event('admin_newwin_deleted', $nw_id);
|
||||
}
|
||||
|
||||
if ($w == "d") {
|
||||
|
||||
@@ -108,6 +108,8 @@ $sql = " update {$g5['qa_config_table']}
|
||||
qa_5 = '{$_POST['qa_5']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
run_event('admin_qa_config_updated');
|
||||
|
||||
if (function_exists('get_admin_captcha_by')) {
|
||||
get_admin_captcha_by('remove');
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ $ca = array(
|
||||
'ca_name'=>'',
|
||||
'ca_order'=>'',
|
||||
'ca_mb_id'=>'',
|
||||
'ca_skin_dir'=>'',
|
||||
'ca_cert_use'=>0,
|
||||
'ca_adult_use'=>0,
|
||||
'ca_sell_email'=>'',
|
||||
|
||||
@@ -193,6 +193,7 @@ if ($w == "")
|
||||
ca_name = '$ca_name',
|
||||
$sql_common ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_category_created', $ca_id);
|
||||
}
|
||||
else if ($w == "u")
|
||||
{
|
||||
@@ -212,6 +213,7 @@ else if ($w == "u")
|
||||
$sql .= " and ca_mb_id = '{$member['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
run_event('shop_admin_category_updated', $ca_id);
|
||||
}
|
||||
else if ($w == "d")
|
||||
{
|
||||
@@ -243,6 +245,7 @@ else if ($w == "d")
|
||||
// 분류 삭제
|
||||
$sql = " delete from {$g5['g5_shop_category_table']} where ca_id = '$ca_id' ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_category_deleted', $ca_id);
|
||||
}
|
||||
|
||||
if(function_exists('get_admin_captcha_by'))
|
||||
|
||||
@@ -17,7 +17,7 @@ if ($stx != "") {
|
||||
$sql_search .= " $where $sfl like '%$stx%' ";
|
||||
$where = " and ";
|
||||
}
|
||||
if ($save_stx && ($save_stx != $stx))
|
||||
if (isset($save_stx) && $save_stx && ($save_stx != $stx))
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,8 +13,6 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
||||
$userinfo = get_icode_userinfo($config['cf_icode_id'], $config['cf_icode_pw']);
|
||||
}
|
||||
|
||||
check_log_folder(G5_SHOP_PATH.'/inicis/key', false);
|
||||
|
||||
$g5['title'] = '쇼핑몰설정';
|
||||
include_once (G5_ADMIN_PATH.'/admin.head.php');
|
||||
|
||||
@@ -68,8 +66,7 @@ if(!isset($default['de_pg_service'])) {
|
||||
// inicis 필드 추가
|
||||
if(!isset($default['de_inicis_mid'])) {
|
||||
sql_query(" ALTER TABLE `{$g5['g5_shop_default_table']}`
|
||||
ADD `de_inicis_mid` varchar(255) NOT NULL DEFAULT '' AFTER `de_kcp_site_key`,
|
||||
ADD `de_inicis_admin_key` varchar(255) NOT NULL DEFAULT '' AFTER `de_inicis_mid` ", true);
|
||||
ADD `de_inicis_mid` varchar(255) NOT NULL DEFAULT '' AFTER `de_kcp_site_key` ", true);
|
||||
}
|
||||
|
||||
// 모바일 초기화면 이미지 줄 수 필드 추가
|
||||
@@ -137,7 +134,7 @@ if(!isset($default['de_kakaopay_mid'])) {
|
||||
// 이니시스 웹결제 사인키 필드 추가
|
||||
if(!isset($default['de_inicis_sign_key'])) {
|
||||
sql_query(" ALTER TABLE `{$g5['g5_shop_default_table']}`
|
||||
ADD `de_inicis_sign_key` varchar(255) NOT NULL DEFAULT '' AFTER `de_inicis_admin_key` ", true);
|
||||
ADD `de_inicis_sign_key` varchar(255) NOT NULL DEFAULT '' ", true);
|
||||
}
|
||||
|
||||
// 네이버페이 필드추가
|
||||
@@ -202,6 +199,14 @@ if( ! isset($default['de_easy_pay_services']) ){
|
||||
sql_query($sql, false);
|
||||
}
|
||||
|
||||
// KG 이니시스 iniapi_key 추가
|
||||
if( ! isset($default['de_inicis_iniapi_key']) ){
|
||||
$sql = "ALTER TABLE `{$g5['g5_shop_default_table']}`
|
||||
ADD COLUMN `de_inicis_iniapi_key` VARCHAR(30) NOT NULL DEFAULT '' AFTER `de_inicis_sign_key`,
|
||||
ADD COLUMN `de_inicis_iniapi_iv` VARCHAR(30) NOT NULL DEFAULT '' AFTER `de_inicis_iniapi_key`; ";
|
||||
sql_query($sql, false);
|
||||
}
|
||||
|
||||
if( function_exists('pg_setting_check') ){
|
||||
pg_setting_check(true);
|
||||
}
|
||||
@@ -781,10 +786,11 @@ if(!$default['de_kakaopay_cancelpwd']){
|
||||
<tr class="pg_info_fld kcp_info_fld">
|
||||
<th scope="row"><label for="de_kcp_easy_pays">NHN KCP 간편결제</label></th>
|
||||
<td>
|
||||
<?php echo help("체크시 NHN KCP 간편결제들을 활성화 합니다.\nNHN_KCP > 네이버페이, 카카오페이는 테스트결제가 되지 않습니다."); ?>
|
||||
<?php echo help("체크시 NHN KCP 간편결제들을 활성화 합니다.\nNHN_KCP > 네이버페이, 카카오페이는 테스트결제가 되지 않습니다.\n애플페이는 IOS 기기에 모바일결제만 가능합니다."); ?>
|
||||
<input type="checkbox" id="de_easy_nhnkcp_payco" name="de_easy_pays[]" value="nhnkcp_payco" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_payco') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_payco" disabled>PAYCO (페이코)</label><br>
|
||||
<input type="checkbox" id="de_easy_nhnkcp_naverpay" name="de_easy_pays[]" value="nhnkcp_naverpay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_naverpay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_naverpay">NAVERPAY (네이버페이)</label><br>
|
||||
<input type="checkbox" id="de_easy_nhnkcp_kakaopay" name="de_easy_pays[]" value="nhnkcp_kakaopay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_kakaopay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_kakaopay">KAKAOPAY (카카오페이)</label>
|
||||
<input type="checkbox" id="de_easy_nhnkcp_kakaopay" name="de_easy_pays[]" value="nhnkcp_kakaopay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_kakaopay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_kakaopay">KAKAOPAY (카카오페이)</label><br>
|
||||
<input type="checkbox" id="de_easy_nhnkcp_applepay" name="de_easy_pays[]" value="nhnkcp_applepay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_applepay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_applepay">APPLEPAY (애플페이)</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="pg_info_fld kcp_info_fld">
|
||||
@@ -829,17 +835,24 @@ if(!$default['de_kakaopay_cancelpwd']){
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="pg_info_fld inicis_info_fld">
|
||||
<th scope="row"><label for="de_inicis_admin_key">KG이니시스 키패스워드</label></th>
|
||||
<th scope="row"><label for="de_inicis_sign_key">KG이니시스 웹결제 사인키</label></th>
|
||||
<td>
|
||||
<?php echo help("KG이니시스에서 발급받은 4자리 상점 키패스워드를 입력합니다.\nKG이니시스 상점관리자 패스워드와 관련이 없습니다.\n키패스워드 값을 확인하시려면 상점측에 발급된 키파일 안의 readme.txt 파일을 참조해 주십시오"); ?>
|
||||
<input type="text" name="de_inicis_admin_key" value="<?php echo get_sanitize_input($default['de_inicis_admin_key']); ?>" id="de_inicis_admin_key" class="frm_input" size="5" maxlength="4">
|
||||
<?php echo help("KG이니시스에서 발급받은 웹결제 사인키를 입력합니다.\n<a href='https://iniweb.inicis.com/' target='_blank'>KG이니시스 가맹점관리자</a> > 상점정보 > 계약정보 > 부가정보의 웹결제 signkey생성 조회 버튼 클릭, 팝업창에서 생성 버튼 클릭 후 해당 값을 입력합니다."); ?>
|
||||
<input type="text" name="de_inicis_sign_key" value="<?php echo get_sanitize_input($default['de_inicis_sign_key']); ?>" id="de_inicis_sign_key" class="frm_input" size="40" maxlength="50">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="pg_info_fld inicis_info_fld">
|
||||
<th scope="row"><label for="de_inicis_sign_key">KG이니시스 웹결제 사인키</label></th>
|
||||
<th scope="row"><label for="de_inicis_iniapi_key">KG이니시스 INIAPI KEY</label></th>
|
||||
<td>
|
||||
<?php echo help("KG이니시스에서 발급받은 웹결제 사인키를 입력합니다.\nKG이니시스 상점관리자 > 상점정보 > 계약정보 > 부가정보의 웹결제 signkey생성 조회 버튼 클릭, 팝업창에서 생성 버튼 클릭 후 해당 값을 입력합니다."); ?>
|
||||
<input type="text" name="de_inicis_sign_key" value="<?php echo get_sanitize_input($default['de_inicis_sign_key']); ?>" id="de_inicis_sign_key" class="frm_input" size="40" maxlength="50">
|
||||
<?php echo help("<a href='https://iniweb.inicis.com/' target='_blank'>KG이니시스 가맹점관리자</a> > 상점정보 > 계약정보 > 부가정보 > INIAPI key 생성 조회 하여 KEY를 여기에 입력합니다.\n이 항목은 영카트 주문에서 kg이니시스 PG 결제 취소, 부분취소, 에스크로 배송등록, 현금영수증 발급에 필요합니다."); ?>
|
||||
<input type="text" name="de_inicis_iniapi_key" value="<?php echo get_sanitize_input($default['de_inicis_iniapi_key']); ?>" id="de_inicis_iniapi_key" class="frm_input" size="30" maxlength="30">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="pg_info_fld inicis_info_fld">
|
||||
<th scope="row"><label for="de_inicis_iniapi_iv">KG이니시스 INIAPI IV</label></th>
|
||||
<td>
|
||||
<?php echo help("<a href='https://iniweb.inicis.com/' target='_blank'>KG이니시스 가맹점관리자</a> > 상점정보 > 계약정보 > 부가정보 > INIAPI IV 생성 조회 하여 KEY를 여기에 입력합니다.\n이 항목은 영카트 주문에서 kg이니시스 현금영수증 발급에 필요합니다."); ?>
|
||||
<input type="text" name="de_inicis_iniapi_iv" value="<?php echo get_sanitize_input($default['de_inicis_iniapi_iv']); ?>" id="de_inicis_iniapi_iv" class="frm_input" size="30" maxlength="30">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="pg_info_fld inicis_info_fld">
|
||||
@@ -848,7 +861,7 @@ if(!$default['de_kakaopay_cancelpwd']){
|
||||
<a href="http://sir.kr/main/service/samsungpay.php" target="_blank" class="kg_btn">삼성페이 서비스신청하기</a>
|
||||
</th>
|
||||
<td>
|
||||
<?php echo help("KG이니시스와 별도로 <strong>삼성페이 사용 계약을 하신 경우</strong>에만 체크해주세요. (모바일 주문서 결제수단에 삼성페이가 노출됩니다.) <br >실결제시 반드시 결제대행사 KG이니시스 항목에 상점 아이디와 키패스워드를 입력해 주세요.", 50); ?>
|
||||
<?php echo help("KG이니시스와 별도로 <strong>삼성페이 사용 계약을 하신 경우</strong>에만 체크해주세요. (모바일 주문서 결제수단에 삼성페이가 노출됩니다.) <br >실결제시 반드시 결제대행사 KG이니시스 항목에 상점 아이디와 웹결제 사인키를 입력해 주세요.", 50); ?>
|
||||
<input type="checkbox" name="de_samsung_pay_use" value="1" id="de_samsung_pay_use"<?php echo $default['de_samsung_pay_use']?' checked':''; ?>> <label for="de_samsung_pay_use">사용</label>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -857,7 +870,7 @@ if(!$default['de_kakaopay_cancelpwd']){
|
||||
<label for="de_inicis_lpay_use">KG이니시스 L.pay 사용</label>
|
||||
</th>
|
||||
<td>
|
||||
<?php echo help("체크시 KG이니시스 L.pay를 사용합니다. <br >실결제시 반드시 결제대행사 KG이니시스 항목의 상점 정보( 아이디, 키패스워드, 웹결제 사인키 )를 입력해 주세요.", 50); ?>
|
||||
<?php echo help("체크시 KG이니시스 L.pay를 사용합니다. <br >실결제시 반드시 결제대행사 KG이니시스 항목의 상점 정보( 아이디, 웹결제 사인키 )를 입력해 주세요.", 50); ?>
|
||||
<input type="checkbox" name="de_inicis_lpay_use" value="1" id="de_inicis_lpay_use"<?php echo $default['de_inicis_lpay_use']?' checked':''; ?>> <label for="de_inicis_lpay_use">사용</label>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -866,7 +879,7 @@ if(!$default['de_kakaopay_cancelpwd']){
|
||||
<label for="de_inicis_kakaopay_use">KG이니시스 카카오페이 사용</label>
|
||||
</th>
|
||||
<td>
|
||||
<?php echo help("체크시 KG이니시스 결제의 카카오페이를 사용합니다. 주문서 결제수단에 카카오페이가 노출됩니다. <br>실결제시 반드시 결제대행사 KG이니시스 항목의 상점 정보( 아이디, 키패스워드, 웹결제 사인키 )를 입력해 주세요.", 50); ?>
|
||||
<?php echo help("체크시 KG이니시스 결제의 카카오페이를 사용합니다. 주문서 결제수단에 카카오페이가 노출됩니다. <br>실결제시 반드시 결제대행사 KG이니시스 항목의 상점 정보( 아이디, 웹결제 사인키 )를 입력해 주세요.", 50); ?>
|
||||
<input type="checkbox" name="de_inicis_kakaopay_use" value="1" id="de_inicis_kakaopay_use"<?php echo $default['de_inicis_kakaopay_use']?' checked':''; ?>> <label for="de_inicis_kakaopay_use">사용</label>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2011,20 +2024,8 @@ if($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use']
|
||||
} catch(Exception $e) {
|
||||
}
|
||||
|
||||
if(!is_dir($log_path)) {
|
||||
echo '<script>'.PHP_EOL;
|
||||
echo 'alert("'.str_replace(G5_PATH.'/', '', G5_SHOP_PATH).'/inicis 폴더 안에 log 폴더를 생성하신 후 쓰기권한을 부여해 주십시오.\n> mkdir log\n> chmod 707 log");'.PHP_EOL;
|
||||
echo '</script>'.PHP_EOL;
|
||||
} else {
|
||||
if(!is_writable($log_path)) {
|
||||
echo '<script>'.PHP_EOL;
|
||||
echo 'alert("'.str_replace(G5_PATH.'/', '',$log_path).' 폴더에 쓰기권한을 부여해 주십시오.\n> chmod 707 log");'.PHP_EOL;
|
||||
echo '</script>'.PHP_EOL;
|
||||
} else {
|
||||
if( function_exists('check_log_folder') && is_writable($log_path) ){
|
||||
check_log_folder($log_path);
|
||||
}
|
||||
}
|
||||
if( function_exists('check_log_folder') && is_writable($log_path) ){
|
||||
check_log_folder($log_path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -160,7 +160,8 @@ $check_sanitize_keys = array(
|
||||
'cf_lg_mid', //LG유플러스 상점아이디
|
||||
'cf_lg_mert_key', //LG유플러스 MERT KEY
|
||||
'de_inicis_mid', //KG이니시스 상점아이디
|
||||
'de_inicis_admin_key', //KG이니시스 키패스워드
|
||||
'de_inicis_iniapi_key', //KG이니시스 INIAPI KEY
|
||||
'de_inicis_iniapi_iv', //KG이니시스 INIAPI IV
|
||||
'de_inicis_sign_key', //KG이니시스 웹결제 사인키
|
||||
'de_samsung_pay_use', //KG이니시스 삼성페이 사용
|
||||
'de_inicis_lpay_use', //KG이니시스 Lpay 사용
|
||||
@@ -399,7 +400,8 @@ $sql = " update {$g5['g5_shop_default_table']}
|
||||
de_kcp_mid = '{$de_kcp_mid}',
|
||||
de_kcp_site_key = '{$de_kcp_site_key}',
|
||||
de_inicis_mid = '{$de_inicis_mid}',
|
||||
de_inicis_admin_key = '{$de_inicis_admin_key}',
|
||||
de_inicis_iniapi_key = '{$de_inicis_iniapi_key}',
|
||||
de_inicis_iniapi_iv = '{$de_inicis_iniapi_iv}',
|
||||
de_inicis_sign_key = '{$de_inicis_sign_key}',
|
||||
de_iche_use = '{$de_iche_use}',
|
||||
de_sms_cont1 = '{$_POST['de_sms_cont1']}',
|
||||
|
||||
@@ -45,7 +45,7 @@ $qstr1 = 'mb_name='.urlencode($mb_name);
|
||||
<form name="fmember" method="get">
|
||||
<div id="scp_list_find">
|
||||
<label for="mb_name">회원이름</label>
|
||||
<input type="text" name="mb_name" id="mb_name" value="<?php echo get_text($mb_name); ?>" class="frm_input required" required size="20">
|
||||
<input type="text" name="mb_name" id="mb_name" value="<?php echo get_text($mb_name); ?>" class="frm_input" size="20">
|
||||
<input type="submit" value="검색" class="btn_frmline">
|
||||
</div>
|
||||
<div class="tbl_head01 tbl_wrap new_win_con">
|
||||
|
||||
+62
-60
@@ -112,7 +112,7 @@ function get_max_value($arr)
|
||||
return array_pop($arr);
|
||||
}
|
||||
?>
|
||||
|
||||
<?php if (! auth_check_menu($auth, '400400', 'r', true)) { ?>
|
||||
<div class="sidx">
|
||||
<section id="anc_sidx_ord">
|
||||
<h2>주문현황</h2>
|
||||
@@ -368,6 +368,66 @@ function get_max_value($arr)
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
graph_draw();
|
||||
|
||||
$("#sidx_graph_area div").hover(
|
||||
function() {
|
||||
if($(this).is(":animated"))
|
||||
return false;
|
||||
|
||||
var title = $(this).attr("title");
|
||||
if(title && $(this).data("title") == undefined)
|
||||
$(this).data("title", title);
|
||||
var left = parseInt($(this).css("left")) + 10;
|
||||
var bottom = $(this).height() + 5;
|
||||
|
||||
$(this)
|
||||
.attr("title", "")
|
||||
.append("<div id=\"price_tooltip\"><div></div></div>");
|
||||
$("#price_tooltip")
|
||||
.find("div")
|
||||
.html(title)
|
||||
.end()
|
||||
// .css({ left: left+"px", bottom: bottom+"px" })
|
||||
.show(200);
|
||||
},
|
||||
function() {
|
||||
if($(this).is(":animated"))
|
||||
return false;
|
||||
|
||||
$(this).attr("title", $(this).data("title"));
|
||||
$("#price_tooltip").remove();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
function graph_draw()
|
||||
{
|
||||
var g_h1 = new Array("<?php echo implode('", "', $h_val['order']); ?>");
|
||||
var g_h2 = new Array("<?php echo implode('", "', $h_val['cancel']); ?>");
|
||||
var duration = 600;
|
||||
|
||||
var $el = $("#sidx_graph_area li");
|
||||
var h1, h2;
|
||||
var $g1, $g2;
|
||||
|
||||
$el.each(function(index) {
|
||||
h1 = g_h1[index];
|
||||
h2 = g_h2[index];
|
||||
|
||||
$g1 = $(this).find(".order");
|
||||
$g2 = $(this).find(".cancel");
|
||||
|
||||
$g1.animate({ height: h1+"px" }, duration);
|
||||
$g2.animate({ height: h2+"px" }, duration);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php } //endif ?>
|
||||
<?php if ($is_admin === 'super') { ?>
|
||||
<div class="sidx sidx_cs">
|
||||
<section id="anc_sidx_oneq">
|
||||
<h2>1:1문의</h2>
|
||||
@@ -480,64 +540,6 @@ function get_max_value($arr)
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
graph_draw();
|
||||
|
||||
$("#sidx_graph_area div").hover(
|
||||
function() {
|
||||
if($(this).is(":animated"))
|
||||
return false;
|
||||
|
||||
var title = $(this).attr("title");
|
||||
if(title && $(this).data("title") == undefined)
|
||||
$(this).data("title", title);
|
||||
var left = parseInt($(this).css("left")) + 10;
|
||||
var bottom = $(this).height() + 5;
|
||||
|
||||
$(this)
|
||||
.attr("title", "")
|
||||
.append("<div id=\"price_tooltip\"><div></div></div>");
|
||||
$("#price_tooltip")
|
||||
.find("div")
|
||||
.html(title)
|
||||
.end()
|
||||
// .css({ left: left+"px", bottom: bottom+"px" })
|
||||
.show(200);
|
||||
},
|
||||
function() {
|
||||
if($(this).is(":animated"))
|
||||
return false;
|
||||
|
||||
$(this).attr("title", $(this).data("title"));
|
||||
$("#price_tooltip").remove();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
function graph_draw()
|
||||
{
|
||||
var g_h1 = new Array("<?php echo implode('", "', $h_val['order']); ?>");
|
||||
var g_h2 = new Array("<?php echo implode('", "', $h_val['cancel']); ?>");
|
||||
var duration = 600;
|
||||
|
||||
var $el = $("#sidx_graph_area li");
|
||||
var h1, h2;
|
||||
var $g1, $g2;
|
||||
|
||||
$el.each(function(index) {
|
||||
h1 = g_h1[index];
|
||||
h2 = g_h2[index];
|
||||
|
||||
$g1 = $(this).find(".order");
|
||||
$g2 = $(this).find(".cancel");
|
||||
|
||||
$g1.animate({ height: h1+"px" }, duration);
|
||||
$g2.animate({ height: h2+"px" }, duration);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
} //end if
|
||||
include_once (G5_ADMIN_PATH.'/admin.tail.php');
|
||||
@@ -53,6 +53,7 @@ $opt_sql = " insert ignore into {$g5['g5_shop_item_option_table']} ( io_id, io_t
|
||||
sql_query($opt_sql);
|
||||
|
||||
// html 에디터로 첨부된 이미지 파일 복사
|
||||
$copied_editor_images = array();
|
||||
if($cp['it_explan']) {
|
||||
$matchs = get_editor_image($cp['it_explan'], false);
|
||||
$count_matchs = (isset($matchs[1]) && is_array($matchs[1])) ? count($matchs[1]) : 0;
|
||||
@@ -73,7 +74,13 @@ if($cp['it_explan']) {
|
||||
|
||||
$newfile = preg_replace("/\.([^\.]+)$/", "_".$new_it_id.".\\1", $matchs[1][$i]);
|
||||
$cp['it_explan'] = str_replace($matchs[1][$i], $newfile, $cp['it_explan']);
|
||||
|
||||
$copied_editor_images[] = array(
|
||||
'original' => $srcfile,
|
||||
'new' => $dstfile
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$sql = " update {$g5['g5_shop_item_table']} set it_explan = '".addslashes($cp['it_explan'])."' where it_id = '$new_it_id' ";
|
||||
@@ -100,6 +107,11 @@ if($cp['it_mobile_explan']) {
|
||||
|
||||
$newfile = preg_replace("/\.([^\.]+)$/", "_".$new_it_id.".\\1", $matchs[1][$i]);
|
||||
$cp['it_mobile_explan'] = str_replace($matchs[1][$i], $newfile, $cp['it_mobile_explan']);
|
||||
|
||||
$copied_editor_images[] = array(
|
||||
'original' => $srcfile,
|
||||
'new' => $dstfile
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,6 +152,7 @@ function copy_directory($src_dir, $dest_dir)
|
||||
}
|
||||
|
||||
// 파일복사
|
||||
$copied_item_files = array();
|
||||
$dest_path = G5_DATA_PATH.'/item/'.$new_it_id;
|
||||
@mkdir($dest_path, G5_DIR_PERMISSION);
|
||||
@chmod($dest_path, G5_DIR_PERMISSION);
|
||||
@@ -155,6 +168,11 @@ for($i=1; $i<=10; $i++) {
|
||||
copy($file, $dstfile);
|
||||
@chmod($dstfile, G5_FILE_PERMISSION);
|
||||
$new_img = $new_it_id.'/'.basename($file);
|
||||
|
||||
$copied_item_files[] = array(
|
||||
'original' => $file,
|
||||
'new' => $dstfile,
|
||||
);
|
||||
}
|
||||
|
||||
$sql_img .= $comma." it_img{$i} = '$new_img' ";
|
||||
@@ -166,6 +184,22 @@ $sql = " update {$g5['g5_shop_item_table']}
|
||||
where it_id = '$new_it_id' ";
|
||||
sql_query($sql);
|
||||
|
||||
/**
|
||||
* 아이템 복사 처리 후 Event Hook
|
||||
* @var string $it_id 원본 아이템 ID
|
||||
* @var string $new_it_id 복사한 새로운 아이템 ID
|
||||
* @var array $cp 복사한 아이템 정보
|
||||
* @var array $copied_item_files 복사한 파일 목록
|
||||
* @var array $copied_editor_images 복사한 에디터 이미지 목록
|
||||
*/
|
||||
run_event('shop_admin_itemcopy', array(
|
||||
'it_id' => (string) $it_id,
|
||||
'new_it_id' => (string) $new_it_id,
|
||||
'cp' => $cp,
|
||||
'copied_item_files' => $copied_item_files,
|
||||
'copied_editor_images' => $copied_editor_images
|
||||
));
|
||||
|
||||
$qstr = "ca_id=$ca_id&sfl=$sfl&sca=$sca&page=$page&stx=".urlencode($stx);
|
||||
|
||||
goto_url("itemlist.php?$qstr");
|
||||
@@ -75,6 +75,7 @@ if ($w == "")
|
||||
$sql_common
|
||||
, ev_id = '$ev_id' ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_event_created', $ev_id);
|
||||
}
|
||||
else if ($w == "u")
|
||||
{
|
||||
@@ -82,6 +83,7 @@ else if ($w == "u")
|
||||
$sql_common
|
||||
where ev_id = '$ev_id' ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_event_updated', $ev_id);
|
||||
}
|
||||
else if ($w == "d")
|
||||
{
|
||||
@@ -92,6 +94,7 @@ else if ($w == "d")
|
||||
// 이벤트상품삭제
|
||||
$sql = " delete from {$g5['g5_shop_event_item_table']} where ev_id = '$ev_id' ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_event_deleted', $ev_id);
|
||||
|
||||
$sql = " delete from {$g5['g5_shop_event_table']} where ev_id = '$ev_id' ";
|
||||
sql_query($sql);
|
||||
|
||||
@@ -19,6 +19,7 @@ if ($w == "u")
|
||||
iq_answer = '$iq_answer'
|
||||
where iq_id = '$iq_id' ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_item_qa_updated', $iq_id);
|
||||
|
||||
if(trim($iq_answer)) {
|
||||
$sql = " select a.iq_email, a.iq_hp, b.it_name
|
||||
|
||||
@@ -23,6 +23,7 @@ if ($_POST['act_button'] == "선택삭제") {
|
||||
|
||||
$sql = "delete from {$g5['g5_shop_item_qa_table']} where iq_id = '{$iiq_id}' ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_item_qa_deleted', $iiq_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ if ($w == "u")
|
||||
is_reply_name = '".$member['mb_nick']."'
|
||||
where is_id = '".$posts['is_id']."'";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_item_use_updated', $posts['is_id']);
|
||||
|
||||
if( isset($_POST['it_id']) ) {
|
||||
update_use_cnt($_POST['it_id']);
|
||||
|
||||
@@ -40,6 +40,7 @@ for ($i=0; $i<$count_post_chk; $i++)
|
||||
{
|
||||
$sql = "delete from {$g5['g5_shop_item_use_table']} where is_id = '{$iis_id}' ";
|
||||
sql_query($sql);
|
||||
run_event('shop_admin_item_use_deleted', $iis_id);
|
||||
}
|
||||
|
||||
if($iit_id){
|
||||
|
||||
@@ -222,46 +222,27 @@ if (in_array($_POST['ct_status'], $status_cancel)) {
|
||||
break;
|
||||
case 'inicis':
|
||||
include_once(G5_SHOP_PATH.'/settle_inicis.inc.php');
|
||||
$cancel_msg = iconv_euckr('쇼핑몰 운영자 승인 취소');
|
||||
$cancel_msg = '쇼핑몰 운영자 승인 취소';
|
||||
|
||||
$args = array(
|
||||
'paymethod' => get_type_inicis_paymethod($od['od_settle_case']),
|
||||
'tid' => $od['od_tno'],
|
||||
'msg' => $cancel_msg
|
||||
);
|
||||
|
||||
/*********************
|
||||
* 3. 취소 정보 설정 *
|
||||
*********************/
|
||||
$inipay->SetField("type", "cancel"); // 고정 (절대 수정 불가)
|
||||
$inipay->SetField("mid", $default['de_inicis_mid']); // 상점아이디
|
||||
/**************************************************************************************************
|
||||
* admin 은 키패스워드 변수명입니다. 수정하시면 안됩니다. 1111의 부분만 수정해서 사용하시기 바랍니다.
|
||||
* 키패스워드는 상점관리자 페이지(https://iniweb.inicis.com)의 비밀번호가 아닙니다. 주의해 주시기 바랍니다.
|
||||
* 키패스워드는 숫자 4자리로만 구성됩니다. 이 값은 키파일 발급시 결정됩니다.
|
||||
* 키패스워드 값을 확인하시려면 상점측에 발급된 키파일 안의 readme.txt 파일을 참조해 주십시오.
|
||||
**************************************************************************************************/
|
||||
$inipay->SetField("admin", $default['de_inicis_admin_key']); //비대칭 사용키 키패스워드
|
||||
$inipay->SetField("tid", $od['od_tno']); // 취소할 거래의 거래아이디
|
||||
$inipay->SetField("cancelmsg", $cancel_msg); // 취소사유
|
||||
$response = inicis_tid_cancel($args);
|
||||
$result = json_decode($response, true);
|
||||
|
||||
/****************
|
||||
* 4. 취소 요청 *
|
||||
****************/
|
||||
$inipay->startAction();
|
||||
|
||||
/****************************************************************
|
||||
* 5. 취소 결과 *
|
||||
* *
|
||||
* 결과코드 : $inipay->getResult('ResultCode') ("00"이면 취소 성공) *
|
||||
* 결과내용 : $inipay->getResult('ResultMsg') (취소결과에 대한 설명) *
|
||||
* 취소날짜 : $inipay->getResult('CancelDate') (YYYYMMDD) *
|
||||
* 취소시각 : $inipay->getResult('CancelTime') (HHMMSS) *
|
||||
* 현금영수증 취소 승인번호 : $inipay->getResult('CSHR_CancelNum') *
|
||||
* (현금영수증 발급 취소시에만 리턴됨) *
|
||||
****************************************************************/
|
||||
|
||||
$res_cd = $inipay->getResult('ResultCode');
|
||||
$res_msg = $inipay->getResult('ResultMsg');
|
||||
|
||||
if($res_cd != '00') {
|
||||
$pg_res_cd = $res_cd;
|
||||
$pg_res_msg = iconv_utf8($res_msg);
|
||||
if (isset($result['resultCode'])) {
|
||||
if ($result['resultCode'] != '00') {
|
||||
$pg_res_cd = $result['resultCode'];
|
||||
$pg_res_msg = $result['resultMsg'];
|
||||
}
|
||||
} else {
|
||||
$pg_res_cd = '';
|
||||
$pg_res_msg = 'curl 로 데이터를 받지 못했습니다.';
|
||||
}
|
||||
|
||||
break;
|
||||
case 'KAKAOPAY':
|
||||
include_once(G5_SHOP_PATH.'/settle_kakaopay.inc.php');
|
||||
|
||||
@@ -222,7 +222,7 @@ if( function_exists('pg_setting_check') ){
|
||||
<input type="radio" name="od_settle_case" value="신용카드" id="od_settle_case06" <?php echo get_checked($od_settle_case, '신용카드'); ?>>
|
||||
<label for="od_settle_case06">신용카드</label>
|
||||
<input type="radio" name="od_settle_case" value="간편결제" id="od_settle_case07" <?php echo get_checked($od_settle_case, '간편결제'); ?>>
|
||||
<label for="od_settle_case07" data-tooltip-text="NHN_KCP 간편결제 : PAYCO, 네이버페이, 카카오페이(NHN_KCP) 
LG유플러스 간편결제 : PAYNOW 
KG 이니시스 간편결제 : KPAY, 삼성페이, LPAY, 카카오페이(KG이니시스)">PG간편결제</label>
|
||||
<label for="od_settle_case07" data-tooltip-text="NHN_KCP 간편결제 : PAYCO, 네이버페이, 카카오페이(NHN_KCP), 애플페이(NHN_KCP) 
LG유플러스 간편결제 : PAYNOW 
KG 이니시스 간편결제 : KPAY, 삼성페이, LPAY, 카카오페이(KG이니시스)">PG간편결제</label>
|
||||
<input type="radio" name="od_settle_case" value="KAKAOPAY" id="od_settle_case08" <?php echo get_checked($od_settle_case, 'KAKAOPAY'); ?>>
|
||||
<label for="od_settle_case08">KAKAOPAY</label>
|
||||
</div>
|
||||
|
||||
@@ -33,7 +33,16 @@ if ($w == 'u' && is_numeric($bk_no)) {
|
||||
$g5['title'] .= '수정';
|
||||
}
|
||||
else {
|
||||
$write = array('bg_no' => (int) $bg_no);
|
||||
$write = array(
|
||||
'bg_no' => (int) $bg_no,
|
||||
'bk_no' => 0,
|
||||
'mb_id' => '',
|
||||
'bk_name' => '',
|
||||
'bk_hp' => '',
|
||||
'bk_memo' => '',
|
||||
'bk_receipt' => 1,
|
||||
'bk_datetime' => ''
|
||||
);
|
||||
$g5['title'] .= '추가';
|
||||
}
|
||||
|
||||
|
||||
@@ -71,18 +71,16 @@ if( count($save_group) ){ //그룹테이블 업데이트
|
||||
|
||||
$msg = '해당 번호를 선택한 그룹으로 '.$act.' 하였습니다.';
|
||||
$opener_href = './num_book.php?page='.$page;
|
||||
|
||||
echo <<<HEREDOC
|
||||
?>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<script>
|
||||
alert("$msg");
|
||||
opener.document.location.href = "$opener_href";
|
||||
alert("<?php echo $msg; ?>");
|
||||
opener.document.location.href = "<?php echo $opener_href; ?>";
|
||||
window.close();
|
||||
</script>
|
||||
<noscript>
|
||||
<p>
|
||||
"$msg"
|
||||
<?php echo $msg; ?>
|
||||
</p>
|
||||
<a href="$opener_href">돌아가기</a>
|
||||
</noscript>
|
||||
HEREDOC;
|
||||
<a href="<?php echo $opener_href; ?>">돌아가기</a>
|
||||
</noscript>
|
||||
+3
-3
@@ -16,13 +16,13 @@ if( ! $is_admin ){
|
||||
}
|
||||
}
|
||||
|
||||
run_event('admin_request_handler_'.$call, $arr_query, $token);
|
||||
|
||||
$sub_menu = admin_menu_find_by($call, 'sub_menu');
|
||||
$g5['title'] = admin_menu_find_by($call, 'title');
|
||||
|
||||
run_event('admin_request_handler_'.$call, $arr_query, $token);
|
||||
|
||||
include_once ('./admin.head.php');
|
||||
|
||||
run_event('admin_get_page_'.$call, $arr_query, $token);
|
||||
|
||||
include_once ('./admin.tail.php');
|
||||
include_once ('./admin.tail.php');
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
if (G5_IS_MOBILE) {
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once(G5_BBS_PATH.'/_head.php');
|
||||
echo html_purifier(stripslashes($board['bo_mobile_content_head']));
|
||||
echo run_replace('board_mobile_content_head', html_purifier(stripslashes($board['bo_mobile_content_head'])), $board);
|
||||
} else {
|
||||
// 상단 파일 경로를 입력하지 않았다면 기본 상단 파일도 include 하지 않음
|
||||
if (trim($board['bo_include_head'])) {
|
||||
@@ -15,5 +15,5 @@ if (G5_IS_MOBILE) {
|
||||
include_once(G5_BBS_PATH.'/_head.php');
|
||||
}
|
||||
}
|
||||
echo html_purifier(stripslashes($board['bo_content_head']));
|
||||
echo run_replace('board_content_head', html_purifier(stripslashes($board['bo_content_head'])), $board);
|
||||
}
|
||||
+2
-2
@@ -3,11 +3,11 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 게시판 관리의 하단 파일 경로
|
||||
if (G5_IS_MOBILE) {
|
||||
echo html_purifier(stripslashes($board['bo_mobile_content_tail']));
|
||||
echo run_replace('board_mobile_content_tail', html_purifier(stripslashes($board['bo_mobile_content_tail'])), $board);
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once(G5_BBS_PATH.'/_tail.php');
|
||||
} else {
|
||||
echo html_purifier(stripslashes($board['bo_content_tail']));
|
||||
echo run_replace('board_content_tail', html_purifier(stripslashes($board['bo_content_tail'])), $board);
|
||||
// 하단 파일 경로를 입력하지 않았다면 기본 하단 파일도 include 하지 않음
|
||||
if (trim($board['bo_include_tail'])) {
|
||||
if (is_include_path_check($board['bo_include_tail'])) { //파일경로 체크
|
||||
|
||||
+3
-3
@@ -81,20 +81,20 @@ $content_skin_url = get_skin_url('content', $co['co_skin']);
|
||||
$skin_file = $content_skin_path.'/content.skin.php';
|
||||
|
||||
if ($is_admin)
|
||||
echo '<div class="ctt_admin"><a href="'.G5_ADMIN_URL.'/contentform.php?w=u&co_id='.$co_id.'" class="btn_admin btn"><span class="sound_only">내용 수정</span><i class="fa fa-cog fa-spin fa-fw"></i></a></div>';
|
||||
echo run_replace('content_admin_button_html', '<div class="ctt_admin"><a href="'.G5_ADMIN_URL.'/contentform.php?w=u&co_id='.$co_id.'" class="btn_admin btn"><span class="sound_only">내용 수정</span><i class="fa fa-cog fa-spin fa-fw"></i></a></div>', $co);
|
||||
?>
|
||||
|
||||
<?php
|
||||
if(is_file($skin_file)) {
|
||||
$himg = G5_DATA_PATH.'/content/'.$co_id.'_h';
|
||||
if (file_exists($himg)) // 상단 이미지
|
||||
echo '<div id="ctt_himg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_h" alt=""></div>';
|
||||
echo run_replace('content_head_image_html', '<div id="ctt_himg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_h" alt=""></div>', $co);
|
||||
|
||||
include($skin_file);
|
||||
|
||||
$timg = G5_DATA_PATH.'/content/'.$co_id.'_t';
|
||||
if (file_exists($timg)) // 하단 이미지
|
||||
echo '<div id="ctt_timg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_t" alt=""></div>';
|
||||
echo run_replace('content_tail_image_html', '<div id="ctt_timg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_t" alt=""></div>', $co);
|
||||
} else {
|
||||
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
|
||||
}
|
||||
|
||||
+4
-2
@@ -17,13 +17,15 @@ while ($row=sql_fetch_array($result))
|
||||
$faq_master_list[$key] = $row;
|
||||
}
|
||||
|
||||
$fm = array();
|
||||
if (isset($fm_id) && $fm_id){
|
||||
$fm_id = (int) $fm_id;
|
||||
$qstr .= '&fm_id=' . $fm_id; // 마스터faq key_id
|
||||
|
||||
$fm = $faq_master_list[$fm_id];
|
||||
}
|
||||
|
||||
$fm = $faq_master_list[$fm_id];
|
||||
if (!$fm['fm_id'])
|
||||
if (! (isset($fm['fm_id']) && $fm['fm_id']))
|
||||
alert('등록된 내용이 없습니다.');
|
||||
|
||||
$g5['title'] = $fm['fm_subject'];
|
||||
|
||||
+2
-2
@@ -62,7 +62,7 @@ if(isset($_POST['js']) && $_POST['js'] === "on") {
|
||||
and mb_id = '{$member['mb_id']}'
|
||||
and bg_flag in ('good', 'nogood') ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['bg_flag'])
|
||||
if (isset($row['bg_flag']) && $row['bg_flag'])
|
||||
{
|
||||
if ($row['bg_flag'] == 'good')
|
||||
$status = '추천';
|
||||
@@ -127,7 +127,7 @@ if(isset($_POST['js']) && $_POST['js'] === "on") {
|
||||
and mb_id = '{$member['mb_id']}'
|
||||
and bg_flag in ('good', 'nogood') ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['bg_flag'])
|
||||
if (isset($row['bg_flag']) && $row['bg_flag'])
|
||||
{
|
||||
if ($row['bg_flag'] == 'good')
|
||||
$status = '추천';
|
||||
|
||||
@@ -104,6 +104,13 @@ if (!$is_search_bbs) {
|
||||
|
||||
$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
|
||||
$list[$i]['is_notice'] = true;
|
||||
$list[$i]['list_content'] = $list[$i]['wr_content'];
|
||||
|
||||
// 비밀글인 경우 리스트에서 내용이 출력되지 않게 글 내용을 지웁니다.
|
||||
if (strstr($list[$i]['wr_option'], "secret")) {
|
||||
$list[$i]['wr_content'] = '';
|
||||
}
|
||||
|
||||
$list[$i]['num'] = 0;
|
||||
$i++;
|
||||
$notice_count++;
|
||||
@@ -197,6 +204,13 @@ if($page_rows > 0) {
|
||||
$list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
|
||||
}
|
||||
$list[$i]['is_notice'] = false;
|
||||
$list[$i]['list_content'] = $list[$i]['wr_content'];
|
||||
|
||||
// 비밀글인 경우 리스트에서 내용이 출력되지 않게 글 내용을 지웁니다.
|
||||
if (strstr($list[$i]['wr_option'], "secret")) {
|
||||
$list[$i]['wr_content'] = '';
|
||||
}
|
||||
|
||||
$list_num = $total_count - ($page - 1) * $list_page_rows - $notice_count;
|
||||
$list[$i]['num'] = $list_num - $k;
|
||||
|
||||
|
||||
+10
-2
@@ -62,10 +62,18 @@ run_event('login_session_before', $mb, $is_social_login);
|
||||
|
||||
@include_once($member_skin_path.'/login_check.skin.php');
|
||||
|
||||
if (! (defined('SKIP_SESSION_REGENERATE_ID') && SKIP_SESSION_REGENERATE_ID)) {
|
||||
session_regenerate_id(false);
|
||||
if (function_exists('session_start_samesite')) {
|
||||
session_start_samesite();
|
||||
}
|
||||
}
|
||||
|
||||
// 회원아이디 세션 생성
|
||||
set_session('ss_mb_id', $mb['mb_id']);
|
||||
// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
|
||||
set_session('ss_mb_key', md5($mb['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']));
|
||||
// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함
|
||||
generate_mb_key($mb);
|
||||
|
||||
// 회원의 토큰키를 세션에 저장한다. /common.php 에서 해당 회원의 토큰값을 검사한다.
|
||||
if(function_exists('update_auth_session_token')) update_auth_session_token($mb['mb_datetime']);
|
||||
|
||||
|
||||
+9
-2
@@ -49,7 +49,9 @@ while ($row = sql_fetch_array($result))
|
||||
$count_write = 0;
|
||||
$count_comment = 0;
|
||||
|
||||
$next_wr_num = get_next_num($move_write_table);
|
||||
// get_next_num 함수는 mysql 지연시 중복이 될수 있는 문제로 더 이상 사용하지 않습니다.
|
||||
// $next_wr_num = get_next_num($move_write_table);
|
||||
$next_wr_num = 0;
|
||||
|
||||
$sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_is_comment, wr_comment desc, wr_id ";
|
||||
$result2 = sql_query($sql2);
|
||||
@@ -78,7 +80,7 @@ while ($row = sql_fetch_array($result))
|
||||
}
|
||||
|
||||
$sql = " insert into $move_write_table
|
||||
set wr_num = '$next_wr_num',
|
||||
set wr_num = " . ($next_wr_num ? "'$next_wr_num'" : "(SELECT IFNULL(MIN(wr_num) - 1, -1) FROM $move_write_table sq) ") . ",
|
||||
wr_reply = '{$row2['wr_reply']}',
|
||||
wr_is_comment = '{$row2['wr_is_comment']}',
|
||||
wr_comment = '{$row2['wr_comment']}',
|
||||
@@ -116,6 +118,11 @@ while ($row = sql_fetch_array($result))
|
||||
sql_query($sql);
|
||||
|
||||
$insert_id = sql_insert_id();
|
||||
|
||||
if ($next_wr_num === 0) {
|
||||
$tmp = sql_fetch("select wr_num from $move_write_table where wr_id = '$insert_id'");
|
||||
$next_wr_num = $tmp['wr_num'];
|
||||
}
|
||||
|
||||
// 코멘트가 아니라면
|
||||
if (!$row2['wr_is_comment'])
|
||||
|
||||
+19
-8
@@ -15,6 +15,7 @@ if (!($token && $delete_token === $token))
|
||||
alert('토큰 에러로 삭제 불가합니다.');
|
||||
|
||||
$tmp_array = array();
|
||||
$deleted = array();
|
||||
if ($qa_id) // 건별삭제
|
||||
$tmp_array[0] = $qa_id;
|
||||
else // 일괄삭제
|
||||
@@ -56,21 +57,23 @@ for($i=0; $i<$count; $i++) {
|
||||
delete_editor_thumbnail($row['qa_content']);
|
||||
|
||||
// 답변이 있는 질문글이라면 답변글 삭제
|
||||
if(!$row['qa_type'] && $row['qa_status']) {
|
||||
$row2 = sql_fetch(" select qa_content, qa_file1, qa_file2 from {$g5['qa_content_table']} where qa_parent = '$qa_id' ");
|
||||
if (!$row['qa_type'] && $row['qa_status']) {
|
||||
$answer = sql_fetch(" SELECT qa_id, qa_content, qa_file1, qa_file2 from {$g5['qa_content_table']} where qa_type = 1 AND qa_parent = {$qa_id} ");
|
||||
// 첨부파일 삭제
|
||||
for($k=1; $k<=2; $k++) {
|
||||
@unlink(G5_DATA_PATH.'/qa/'.clean_relative_paths($row2['qa_file'.$k]));
|
||||
for ($k = 1; $k <= 2; $k++) {
|
||||
@unlink(G5_DATA_PATH . '/qa/' . clean_relative_paths($answer['qa_file' . $k]));
|
||||
// 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row2['qa_file'.$k])) {
|
||||
delete_qa_thumbnail($row2['qa_file'.$k]);
|
||||
if (preg_match("/\.({$config['cf_image_extension']})$/i", $answer['qa_file' . $k])) {
|
||||
delete_qa_thumbnail($answer['qa_file' . $k]);
|
||||
}
|
||||
}
|
||||
|
||||
// 에디터 썸네일 삭제
|
||||
delete_editor_thumbnail($row2['qa_content']);
|
||||
delete_editor_thumbnail($answer['qa_content']);
|
||||
|
||||
sql_query(" delete from {$g5['qa_content_table']} where qa_type = '1' and qa_parent = '$qa_id' ");
|
||||
// 답변글 삭제
|
||||
sql_query(" DELETE from {$g5['qa_content_table']} where qa_type = 1 and qa_parent = {$qa_id} ");
|
||||
$deleted[] = (int) $answer['qa_id'];
|
||||
}
|
||||
|
||||
// 답변글 삭제시 질문글의 상태변경
|
||||
@@ -80,6 +83,14 @@ for($i=0; $i<$count; $i++) {
|
||||
|
||||
// 글삭제
|
||||
sql_query(" delete from {$g5['qa_content_table']} where qa_id = '$qa_id' ");
|
||||
$deleted[] = $qa_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* QA 글 삭제 후 Event Hook
|
||||
* @var array $tmp_array 삭제 요청된 qa_id 목록. 소유자 확인, 답변글 존재 여부 등의 이유로 실제로 삭제처리가 안 된 ID가 포함될 수 있으며, 삭제처리 되었더라도 답변글은 이 목록에 포함되지 않음
|
||||
* @var array $deleted 답변글을 포함한 삭제가 완료된 qa_id 목록
|
||||
*/
|
||||
run_event('qa_delete', $tmp_array, $deleted);
|
||||
|
||||
goto_url(G5_BBS_URL.'/qalist.php'.preg_replace('/^&/', '?', $qstr));
|
||||
+2
-2
@@ -7,11 +7,11 @@ $qa_skin_url = get_skin_url('qa', (G5_IS_MOBILE ? $qaconfig['qa_mobile_skin'] :
|
||||
if (G5_IS_MOBILE) {
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once('./_head.php');
|
||||
echo conv_content($qaconfig['qa_mobile_content_head'], 1);
|
||||
echo run_replace('qa_mobile_content_head', conv_content($qaconfig['qa_mobile_content_head'], 1), $qaconfig);
|
||||
} else {
|
||||
if($qaconfig['qa_include_head'] && is_include_path_check($qaconfig['qa_include_head']))
|
||||
@include ($qaconfig['qa_include_head']);
|
||||
else
|
||||
include ('./_head.php');
|
||||
echo conv_content($qaconfig['qa_content_head'], 1);
|
||||
echo run_replace('qa_content_head', conv_content($qaconfig['qa_content_head'], 1), $qaconfig);
|
||||
}
|
||||
+2
-2
@@ -2,11 +2,11 @@
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
if (G5_IS_MOBILE) {
|
||||
echo conv_content($qaconfig['qa_mobile_content_tail'], 1);
|
||||
echo run_replace('qa_mobile_content_tail', conv_content($qaconfig['qa_mobile_content_tail'], 1), $qaconfig);
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once('./_tail.php');
|
||||
} else {
|
||||
echo conv_content($qaconfig['qa_content_tail'], 1);
|
||||
echo run_replace('qa_content_tail', conv_content($qaconfig['qa_content_tail'], 1), $qaconfig);
|
||||
if($qaconfig['qa_include_tail'] && is_include_path_check($qaconfig['qa_include_tail']))
|
||||
@include ($qaconfig['qa_include_tail']);
|
||||
else
|
||||
|
||||
@@ -135,6 +135,32 @@ if(is_file($skin_file)) {
|
||||
$answer_update_href = G5_BBS_URL.'/qawrite.php?w=u&qa_id='.$answer['qa_id'].$qstr;
|
||||
$answer_delete_href = G5_BBS_URL.'/qadelete.php?qa_id='.$answer['qa_id'].'&token='.$token.$qstr;
|
||||
}
|
||||
|
||||
$ss_name = 'ss_qa_view_'.$answer['qa_id'];
|
||||
if(!get_session($ss_name))
|
||||
set_session($ss_name, TRUE);
|
||||
|
||||
// 답변 첨부파일
|
||||
$answer['img_file'] = array();
|
||||
$answer['download_href'] = array();
|
||||
$answer['download_source'] = array();
|
||||
$answer['img_count'] = 0;
|
||||
$answer['download_count'] = 0;
|
||||
|
||||
for ($i=1; $i<=2; $i++) {
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $answer['qa_file'.$i])) {
|
||||
$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?fn='.urlencode('/'.G5_DATA_DIR.'/qa/'.$answer['qa_file'.$i]), '/'.G5_DATA_DIR.'/qa/'.$answer['qa_file'.$i], '', '', '', '');
|
||||
$answer['img_file'][] = '<a href="'.$attr_href.'" target="_blank" class="view_image"><img src="'.G5_DATA_URL.'/qa/'.$answer['qa_file'.$i].'"></a>';
|
||||
$answer['img_count']++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($answer['qa_file'.$i]) {
|
||||
$answer['download_href'][] = G5_BBS_URL.'/qadownload.php?qa_id='.$answer['qa_id'].'&no='.$i;
|
||||
$answer['download_source'][] = $answer['qa_source'.$i];
|
||||
$answer['download_count']++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$stx = get_text(stripslashes($stx));
|
||||
|
||||
+11
-1
@@ -86,6 +86,7 @@ $qa_related = 0;
|
||||
$qa_email_recv = (isset($_POST['qa_email_recv']) && $_POST['qa_email_recv']) ? 1 : 0;
|
||||
$qa_sms_recv = (isset($_POST['qa_sms_recv']) && $_POST['qa_sms_recv']) ? 1 : 0;
|
||||
$qa_status = 0;
|
||||
$answer_id = null;
|
||||
|
||||
for ($i=1; $i<=5; $i++) {
|
||||
$var = "qa_$i";
|
||||
@@ -301,6 +302,7 @@ if($w == '' || $w == 'a' || $w == 'r') {
|
||||
}
|
||||
|
||||
if($w == 'a') {
|
||||
$answer_id = (int) sql_insert_id();
|
||||
$sql = " update {$g5['qa_content_table']}
|
||||
set qa_status = '1'
|
||||
where qa_id = '{$write['qa_parent']}' ";
|
||||
@@ -339,7 +341,15 @@ if($w == '' || $w == 'a' || $w == 'r') {
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
run_event('qawrite_update', $qa_id, $write, $w, $qaconfig);
|
||||
/**
|
||||
* 1:1 문의/답변의 변경 시 Event Hook
|
||||
* @var int $qa_id 삽입/수정 또는 답글/추가질문 대상 글의 ID
|
||||
* @var array $write 삽입/수정 또는 답글/추가질문 대상 글의 데이터
|
||||
* @var string $w 동작 모드 ('': 질문글 작성, 'a': 답변글 작성, 'u': 질문/답변 수정, 'r': 추가(관련) 질문)
|
||||
* @var array $qaconfig 1:1 문의 설정
|
||||
* @var ?int $answer_id 답변글 작성($w = 'a') 시 답변글의 ID
|
||||
*/
|
||||
run_event('qawrite_update', $qa_id, $write, $w, $qaconfig, ($w === 'a') ? $answer_id : null);
|
||||
|
||||
// SMS 알림
|
||||
if($config['cf_sms_use'] == 'icode' && $qaconfig['qa_use_sms']) {
|
||||
|
||||
+6
-4
@@ -49,9 +49,7 @@ echo '<?xml version="1.0" encoding="utf-8" ?>'."\n";
|
||||
<channel>
|
||||
<title><?php echo specialchars_replace($config['cf_title'].' > '.$subj1.' > '.$subj2); ?></title>
|
||||
<link><?php echo specialchars_replace(get_pretty_url($bo_table)); ?></link>
|
||||
<description>테스트 버전 0.2 (2004-04-26)</description>
|
||||
<language>ko</language>
|
||||
|
||||
<?php
|
||||
$sql = " select wr_id, wr_subject, wr_content, wr_name, wr_datetime, wr_option
|
||||
from {$g5['write_prefix']}$bo_table
|
||||
@@ -66,6 +64,10 @@ for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$html = 1;
|
||||
else
|
||||
$html = 0;
|
||||
|
||||
if ($i === 0) {
|
||||
echo '<description>'. specialchars_replace($subj2). ' ('. $row['wr_datetime'] .')</description>'.PHP_EOL;
|
||||
}
|
||||
?>
|
||||
|
||||
<item>
|
||||
@@ -76,8 +78,8 @@ for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
<?php
|
||||
$date = $row['wr_datetime'];
|
||||
// rss 리더 스킨으로 호출하면 날짜가 제대로 표시되지 않음
|
||||
//$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
|
||||
$date = date('r', strtotime($date));
|
||||
$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
|
||||
//$date = date('r', strtotime($date)); // 구글 서치 콘솔에서 오류가 난다
|
||||
?>
|
||||
<dc:date><?php echo $date ?></dc:date>
|
||||
</item>
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ if ($stx) {
|
||||
$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
|
||||
if ($gr_id)
|
||||
$sql .= " and gr_id = '{$gr_id}' ";
|
||||
$onetable = isset($onetable) ? $onetable : "";
|
||||
$onetable = isset($onetable) ? preg_replace('/[^a-z0-9_]/i', '', $onetable) : '';
|
||||
if ($onetable) // 하나의 게시판만 검색한다면
|
||||
$sql .= " and bo_table = '{$onetable}' ";
|
||||
$sql .= " order by bo_order, gr_id, bo_table ";
|
||||
|
||||
+12
-4
@@ -252,12 +252,14 @@ if ($w == '' || $w == 'r') {
|
||||
$wr_num = $write['wr_num'];
|
||||
$wr_reply = $reply;
|
||||
} else {
|
||||
$wr_num = get_next_num($write_table);
|
||||
// get_next_num 함수는 mysql 지연시 중복이 될수 있는 문제로 더 이상 사용하지 않습니다.
|
||||
// $wr_num = get_next_num($write_table);
|
||||
$wr_num = 0;
|
||||
$wr_reply = '';
|
||||
}
|
||||
|
||||
|
||||
$sql = " insert into $write_table
|
||||
set wr_num = '$wr_num',
|
||||
set wr_num = " . ($w == 'r' ? "'$wr_num'" : "(SELECT IFNULL(MIN(wr_num) - 1, -1) FROM $write_table sq) ") . ",
|
||||
wr_reply = '$wr_reply',
|
||||
wr_comment = 0,
|
||||
ca_name = '$ca_name',
|
||||
@@ -676,8 +678,14 @@ sql_query(" delete from {$g5['autosave_table']} where as_uid = '{$uid}' ");
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// 비밀글이라면 세션에 비밀글의 아이디를 저장한다. 자신의 글은 다시 비밀번호를 묻지 않기 위함
|
||||
if ($secret)
|
||||
if ($secret) {
|
||||
if (! $wr_num) {
|
||||
$write = get_write($write_table, $wr_id, true);
|
||||
$wr_num = $write['wr_num'];
|
||||
}
|
||||
|
||||
set_session("ss_secret_{$bo_table}_{$wr_num}", TRUE);
|
||||
}
|
||||
|
||||
// 메일발송 사용 (수정글은 발송하지 않음)
|
||||
if (!($w == 'u' || $w == 'cu') && $config['cf_email_use'] && $board['bo_use_email']) {
|
||||
|
||||
+25
-11
@@ -62,6 +62,11 @@ if(! isset($_SERVER['SERVER_ADDR'])) {
|
||||
$_SERVER['SERVER_ADDR'] = isset($_SERVER['LOCAL_ADDR']) ? $_SERVER['LOCAL_ADDR'] : '';
|
||||
}
|
||||
|
||||
// Cloudflare 환경을 고려한 https 사용여부
|
||||
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") {
|
||||
$_SERVER['HTTPS'] = 'on';
|
||||
}
|
||||
|
||||
// multi-dimensional array에 사용자지정 함수적용
|
||||
function array_map_deep($fn, $array)
|
||||
{
|
||||
@@ -221,7 +226,12 @@ ini_set("session.gc_maxlifetime", 10800); // session data의 garbage collection
|
||||
ini_set("session.gc_probability", 1); // session.gc_probability는 session.gc_divisor와 연계하여 gc(쓰레기 수거) 루틴의 시작 확률을 관리합니다. 기본값은 1입니다. 자세한 내용은 session.gc_divisor를 참고하십시오.
|
||||
ini_set("session.gc_divisor", 100); // session.gc_divisor는 session.gc_probability와 결합하여 각 세션 초기화 시에 gc(쓰레기 수거) 프로세스를 시작할 확률을 정의합니다. 확률은 gc_probability/gc_divisor를 사용하여 계산합니다. 즉, 1/100은 각 요청시에 GC 프로세스를 시작할 확률이 1%입니다. session.gc_divisor의 기본값은 100입니다.
|
||||
|
||||
session_set_cookie_params(0, '/');
|
||||
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
|
||||
session_set_cookie_params(0, '/', null, true, true);
|
||||
} else {
|
||||
session_set_cookie_params(0, '/', null, false, true);
|
||||
}
|
||||
|
||||
ini_set("session.cookie_domain", G5_COOKIE_DOMAIN);
|
||||
|
||||
function chrome_domain_session_name(){
|
||||
@@ -366,8 +376,7 @@ if( $config['cf_cert_use'] || (defined('G5_YOUNGCART_VER') && G5_YOUNGCART_VER)
|
||||
|| preg_match('/(iPhone|iPod|iPad).*AppleWebKit.*Safari/i', $_SERVER['HTTP_USER_AGENT'])
|
||||
|| preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT'])
|
||||
|| preg_match('~Trident/7.0(; Touch)?; rv:11.0~',$_SERVER['HTTP_USER_AGENT'])
|
||||
|| !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on')
|
||||
|| !(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == "https")){
|
||||
|| !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on')) {
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
@@ -377,7 +386,7 @@ if( $config['cf_cert_use'] || (defined('G5_YOUNGCART_VER') && G5_YOUNGCART_VER)
|
||||
$cookie_session_name = method_exists('XenoPostToForm', 'g5_session_name') ? XenoPostToForm::g5_session_name() : 'PHPSESSID';
|
||||
foreach ($headers as $header) {
|
||||
if (!preg_match('~^Set-Cookie: '.$cookie_session_name.'=~', $header)) continue;
|
||||
$header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
|
||||
$header = preg_replace('~(; secure; HttpOnly)?$~', '; secure; HttpOnly; SameSite=None', $header);
|
||||
header($header, false);
|
||||
$g5['session_cookie_samesite'] = 'none';
|
||||
break;
|
||||
@@ -480,6 +489,7 @@ if (isset($_REQUEST['w'])) {
|
||||
$w = '';
|
||||
}
|
||||
|
||||
/** @var int $wr_id 게시판 글의 ID */
|
||||
if (isset($_REQUEST['wr_id'])) {
|
||||
$wr_id = (int)$_REQUEST['wr_id'];
|
||||
} else {
|
||||
@@ -502,7 +512,8 @@ if (isset($_REQUEST['url'])) {
|
||||
$urlencode = urlencode($_SERVER['REQUEST_URI']);
|
||||
if (G5_DOMAIN) {
|
||||
$p = @parse_url(G5_DOMAIN);
|
||||
$urlencode = G5_DOMAIN.urldecode(preg_replace("/^".urlencode($p['path'])."/", "", $urlencode));
|
||||
$p['path'] = isset($p['path']) ? $p['path'] : '/';
|
||||
$urlencode = rtrim(G5_DOMAIN, '%2F').'%2F'.ltrim(urldecode(preg_replace("/^".urlencode($p['path'])."/", "", $urlencode)), '%2F');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -576,27 +587,30 @@ if (isset($_SESSION['ss_mb_id']) && $_SESSION['ss_mb_id']) { // 로그인중이
|
||||
}
|
||||
|
||||
|
||||
/** @var array $write 글 데이터 */
|
||||
$write = array();
|
||||
/** @var string $write_table 게시판 테이블 전체이름 */
|
||||
$write_table = '';
|
||||
if ($bo_table) {
|
||||
$board = get_board_db($bo_table, true);
|
||||
if (isset($board['bo_table']) && $board['bo_table']) {
|
||||
set_cookie("ck_bo_table", $board['bo_table'], 86400 * 1);
|
||||
$gr_id = $board['gr_id'];
|
||||
$write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
|
||||
// 게시판 테이블 전체이름
|
||||
$write_table = $g5['write_prefix'] . $bo_table;
|
||||
|
||||
if (isset($wr_id) && $wr_id) {
|
||||
$write = get_write($write_table, $wr_id);
|
||||
} else if (isset($wr_seo_title) && $wr_seo_title) {
|
||||
$write = get_content_by_field($write_table, 'bbs', 'wr_seo_title', generate_seo_title($wr_seo_title));
|
||||
if( isset($write['wr_id']) ){
|
||||
$wr_id = $write['wr_id'];
|
||||
if (isset($write['wr_id'])) {
|
||||
$wr_id = (int) $write['wr_id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 게시판에서
|
||||
if (isset($board['bo_select_editor']) && $board['bo_select_editor']){
|
||||
|
||||
// 게시판에서 사용하는 에디터를 설정
|
||||
if (isset($board['bo_select_editor']) && $board['bo_select_editor']) {
|
||||
$config['cf_editor'] = $board['bo_select_editor'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -799,7 +799,7 @@ box-shadow: 1px 2px 2px #eee;}
|
||||
#od_tot_price strong{font-size:1.5em;color:#ff006c}
|
||||
#sod_frm #sod_frm_pt_alert {margin:5px 0;color:#38b2bb }
|
||||
#od_pay_sl h3{font-size:1.167em;margin:20px 0 5px}
|
||||
#od_pay_sl input[type="radio"]{position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left: 0;z-index: -1px;}
|
||||
#od_pay_sl input[type="radio"]{position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left: 0;z-index: -1;}
|
||||
#od_pay_sl .lb_icon {display: inline-block;float:left;width:50%;background:#fff;border:1px solid #eceff4;margin:-1px 0 0 -1px;cursor: pointer;height:60px;position:relative;padding-left:65px;padding-top:20px;z-index:1}
|
||||
#od_pay_sl input[type="radio"]:checked+.lb_icon {border:1px solid #ff006c;z-index:3}
|
||||
#sod_frm_paysel {}
|
||||
@@ -1148,6 +1148,7 @@ box-shadow: 1px 2px 2px #eee;}
|
||||
.sod_frm_mobile #m_sod_frm_paysel .inicis_lpay{background:url(../img/lpay_logo.png) no-repeat;width:35px;height:12px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%}
|
||||
.sod_frm_mobile #m_sod_frm_paysel .inicis_kakaopay{background:url(../img/kakao.png) no-repeat 50% 50% #f4dc34;border-radius:30px;height:22px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
|
||||
.sod_frm_mobile #m_sod_frm_paysel .kakaopay_icon{background:url(../img/kakao.png) no-repeat 50% 50% #f4dc34;border-radius:30px;height:22px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
|
||||
.sod_frm_mobile #m_sod_frm_paysel .applepay_icon{background:url(../img/ico-mobile-applepay.png) no-repeat 50% 50% #fff;border-radius:30px;height:23px;width:50px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
|
||||
.sod_frm_mobile #m_sod_frm_paysel .samsung_pay{margin-left:-23px;background:url(../img/samsungpay.png) no-repeat 24px 3px;height:25px;width:106px;display:inline-block;overflow:hidden;text-indent:-999px}
|
||||
.sod_frm_mobile #sod_frm_pay{border-top:1px solid #f3f3f3}
|
||||
.sod_frm_mobile #sod_frm_pay h2{margin:10px 0;font-size:1.25em}
|
||||
|
||||
+12
-11
@@ -84,8 +84,8 @@ input[type=radio] {-webkit-appearance: radio}
|
||||
/*카테고리*/
|
||||
.menu {display:none;position:fixed;top:0;height:100%;z-index:99999;-webkit-backface-visibility:hidden;width:100%;background:#efefef}
|
||||
.menu .menu_wr{width:100%;height:100%;overflow-y:auto;background:#eee;position:relative;z-index:199919;
|
||||
-webkit-box-shadow: 0 0 5px rgba(55,55,5,0.4));
|
||||
-moz-box-shadow: 0 0 5px rgba(55,55,5,0.4));
|
||||
-webkit-box-shadow: 0 0 5px rgba(55,55,5,0.4);
|
||||
-moz-box-shadow: 0 0 5px rgba(55,55,5,0.4);
|
||||
box-shadow: 0 0 5px rgba(55,55,5,0.4);}
|
||||
.menu .menu_close {position:absolute;top:50%;right:0px;width:40px;height:40px;background:none;color:#fff;font-size:20px;margin-top:-20px;border:0;z-index:199999}
|
||||
|
||||
@@ -220,14 +220,15 @@ box-shadow: 0 0 6px rgba(0,0,0,0.2);}
|
||||
#m_sod_frm_paysel h3{background:#fff;padding:15px 10px ;border:1px solid #e3e5e8;border-bottom:0}
|
||||
#m_sod_frm_paysel ul {margin:0 0 ;background:#fff;padding:10px;border:1px solid #e3e5e8}
|
||||
#m_sod_frm_paysel ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#m_sod_frm_paysel li {float:left;padding:5px ;width:46%;height:25px}
|
||||
#m_sod_frm_paysel li {float:left;padding:5px;width:46%;height:35px}
|
||||
#m_sod_frm_paysel .KPAY{background:url('../img/kpay.png') no-repeat;width:37px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%}
|
||||
#m_sod_frm_paysel .PAYNOW{background:url('../img/paynow.png') no-repeat;width:46px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%;}
|
||||
#m_sod_frm_paysel .PAYCO{background:url('../img/payco.png') no-repeat 1px;width:46px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%;}
|
||||
#m_sod_frm_paysel .PAYCO{background:url('../img/payco.png') no-repeat 1px;width:50px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%}
|
||||
#m_sod_frm_paysel .inicis_lpay{background:url('../img/lpay_logo.png') no-repeat;width:35px;height:12px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%;}
|
||||
#m_sod_frm_paysel .inicis_kakaopay{background:url('../img/kakao.png') no-repeat 50% 50% #ffeb00;border-radius:30px;height:22px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
|
||||
#m_sod_frm_paysel .kakaopay_icon{background:url('../img/ico-mobile-kakaopay.png') no-repeat #fff;height:15px;width:43px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
|
||||
#m_sod_frm_paysel .naverpay_icon{background:url('../img/ico-mobile-naverpay.png') no-repeat #fff;height:15px;width:40px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
|
||||
#m_sod_frm_paysel .inicis_kakaopay{background:url('../img/kakao.png') no-repeat 50% 50% #ffeb00;border-radius:30px;height:26px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:36px auto}
|
||||
#m_sod_frm_paysel .kakaopay_icon{background:url('../img/ico-mobile-kakaopay.png') no-repeat #fff;height:23px;width:63px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:45px auto;background-position: 10% 40%}
|
||||
#m_sod_frm_paysel .naverpay_icon{background:url('../img/ico-mobile-naverpay.png') no-repeat #fff;height:23px;width:60px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:45px auto;background-position: 0% 30%}
|
||||
#m_sod_frm_paysel .applepay_icon{background:url('../img/ico-mobile-applepay.png') no-repeat #fff;height:30px;width:60px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:43px auto}
|
||||
#m_sod_frm_paysel .samsung_pay{margin-left:-23px;background:url('../img/samsungpay.png') no-repeat 24px 3px;height:25px;width:106px;display:inline-block;overflow:hidden;text-indent:-999px}
|
||||
|
||||
#sod_frm_pay{padding:10px;;border-top:1px solid #f3f3f3}
|
||||
@@ -358,7 +359,7 @@ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
#sod_addr .addr_btn:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#sod_addr .sel_address {width:32%;float:left;margin-right:1%;height:30px;background:none;border:1px solid #333;color:#333;padding:0 5px}
|
||||
#sod_addr .del_address {display:block;width:32%;text-align:center;float:left;margin-right:1%;border:1px solid #aaa;background:none;color:#888;padding:0 5px;height:30px;line-height:28px;vertical-align:middle}
|
||||
#sod_addr input[type="radio"] {position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left:0;z-index:-1px}
|
||||
#sod_addr input[type="radio"] {position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left:0;z-index:-1}
|
||||
#sod_addr .add_lb {display:inline-block;float:left;width:32%;text-align:center;border:1px solid #4162ff;color:#4162ff;height:30px;line-height:28px}
|
||||
#sod_addr input[type="radio"]:checked+.add_lb {z-index:3;background:#4162ff;color:#fff}
|
||||
|
||||
@@ -578,7 +579,7 @@ a.btn02 {display:inline-block;padding:8px 7px 7px;border:1px solid #3b3c3f;backg
|
||||
a.btn02:focus, .btn02:hover {text-decoration:none}
|
||||
button.btn02 {display:inline-block;margin:0;padding:7px;border:1px solid #3b3c3f;background:#4b545e;color:#fff;text-decoration:none}
|
||||
.btn_confirm {text-align:center} /* 서식단계 진행 */
|
||||
.btn_submit {padding:0 5px;border:0;background:#3a8afd;border:1px solid #1c70e9;color:#fff;letter-spacing:-0.1em;border-radius:3px}}
|
||||
.btn_submit {padding:0 5px;border:0;background:#3a8afd;border:1px solid #1c70e9;color:#fff;letter-spacing:-0.1em;border-radius:3px}
|
||||
fieldset .btn_submit {padding:0 7px;height:24px;line-height:1em}
|
||||
a.btn_cancel {display:inline-block;padding:8px 7px 7px;border:1px solid #ccc;background:#fff;color:#000;text-decoration:none;vertical-align:middle}
|
||||
button.btn_cancel {display:inline-block;padding:7px;border:1px solid #ccc;background:#fafafa;color:#000;vertical-align:top;text-decoration:none}
|
||||
@@ -820,7 +821,7 @@ box-shadow:0 0 8px rgba(65,98,255,0.8)}
|
||||
.sod_right #sod_bsk_tot{margin:10px}
|
||||
#sod_frm_taker textarea{width:100%;height:80px}
|
||||
|
||||
#od_pay_sl input[type="radio"] {position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left:0;z-index:-1px}
|
||||
#od_pay_sl input[type="radio"] {position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left:0;z-index:-1}
|
||||
#od_pay_sl .lb_icon {display:inline-block;float:left;width:150px;background:#fff;border:1px solid #eceff4;margin:-1px 0 0 -1px;cursor:pointer;height:60px;position:relative;padding-left:65px;padding-top:20px;z-index:1}
|
||||
#od_pay_sl input[type="radio"]:checked+.lb_icon {border:1px solid #ff006c;z-index:3}
|
||||
|
||||
@@ -899,7 +900,7 @@ box-shadow:0 0 8px rgba(65,98,255,0.8)}
|
||||
#od_tot_price span{float:left;font-weight:bold}
|
||||
#od_tot_price strong{font-size:1.5em;color:#ff006c}
|
||||
#od_pay_sl h3{font-size:1.167em;margin:20px 0 5px}
|
||||
#od_pay_sl input[type="radio"]{position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left: 0;z-index: -1px;}
|
||||
#od_pay_sl input[type="radio"]{position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;text-indent:-999px;left: 0;z-index: -1;}
|
||||
#od_pay_sl .lb_icon {display: inline-block;float:left;width:50%;background:#fff;border:1px solid #eceff4;margin:-1px 0 0 -1px;cursor: pointer;height:60px;position:relative;padding-left:65px;padding-top:20px;z-index:1}
|
||||
#od_pay_sl input[type="radio"]:checked+.lb_icon {border:1px solid #ff006c;z-index:3}
|
||||
#sod_frm_paysel {}
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가;
|
||||
@@ -4,5 +4,5 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
// 자바스크립트와 CSS 파일을 새로 다운로드 하도록 파일의 끝에 년월일 지정
|
||||
// 예) https://도메인/css/default.css?ver=220620
|
||||
// 예) https://도메인/js/common.js?ver=220620
|
||||
define('G5_CSS_VER', '220620');
|
||||
define('G5_JS_VER', '221017');
|
||||
define('G5_CSS_VER', '2303229');
|
||||
define('G5_JS_VER', '2304171');
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
@@ -7,7 +7,7 @@
|
||||
DROP TABLE IF EXISTS `g5_auth`;
|
||||
CREATE TABLE IF NOT EXISTS `g5_auth` (
|
||||
`mb_id` varchar(20) NOT NULL default '',
|
||||
`au_menu` varchar(20) NOT NULL default '',
|
||||
`au_menu` varchar(50) NOT NULL default '',
|
||||
`au_auth` set('r','w','d') NOT NULL default '',
|
||||
PRIMARY KEY (`mb_id`,`au_menu`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
@@ -349,7 +349,8 @@ CREATE TABLE IF NOT EXISTS `g5_shop_default` (
|
||||
`de_kcp_mid` varchar(255) NOT NULL DEFAULT '',
|
||||
`de_kcp_site_key` varchar(255) NOT NULL DEFAULT '',
|
||||
`de_inicis_mid` varchar(255) NOT NULL DEFAULT '',
|
||||
`de_inicis_admin_key` varchar(255) NOT NULL DEFAULT '',
|
||||
`de_inicis_iniapi_key` varchar(30) NOT NULL DEFAULT '',
|
||||
`de_inicis_iniapi_iv` varchar(30) NOT NULL DEFAULT '',
|
||||
`de_inicis_sign_key` varchar(255) NOT NULL DEFAULT '',
|
||||
`de_iche_use` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`de_easy_pay_use` tinyint(4) NOT NULL DEFAULT '0',
|
||||
|
||||
+16
-4
@@ -268,6 +268,18 @@ if ($g5_install || $is_install === false) {
|
||||
|
||||
$bo_skin = ($tmp_bo_table[$i] === 'gallery') ? 'gallery' : 'basic';
|
||||
|
||||
if (in_array($tmp_bo_table[$i], array('gallery', 'qa'))) {
|
||||
$read_bo_point = -1;
|
||||
$write_bo_point = 5;
|
||||
$comment_bo_point = 1;
|
||||
$download_bo_point = -20;
|
||||
} else {
|
||||
$read_bo_point = $read_point;
|
||||
$write_bo_point = $write_point;
|
||||
$comment_bo_point = $comment_point;
|
||||
$download_bo_point = $download_point;
|
||||
}
|
||||
|
||||
$sql = " insert into `{$table_prefix}board`
|
||||
set bo_table = '$tmp_bo_table[$i]',
|
||||
gr_id = '$tmp_gr_id',
|
||||
@@ -285,10 +297,10 @@ if ($g5_install || $is_install === false) {
|
||||
bo_count_delete = '1',
|
||||
bo_upload_level = '1',
|
||||
bo_download_level = '1',
|
||||
bo_read_point = '-1',
|
||||
bo_write_point = '5',
|
||||
bo_comment_point = '1',
|
||||
bo_download_point = '-20',
|
||||
bo_read_point = '$read_bo_point',
|
||||
bo_write_point = '$write_bo_point',
|
||||
bo_comment_point = '$comment_bo_point',
|
||||
bo_download_point = '$download_bo_point',
|
||||
bo_use_category = '0',
|
||||
bo_category_list = '',
|
||||
bo_use_sideview = '0',
|
||||
|
||||
+10
-2
@@ -19,9 +19,17 @@ function certify_win_open(type, url, event) {
|
||||
if($("input[name=veri_up_hash]").length < 1)
|
||||
$("input[name=cert_no]").after('<input type="hidden" name="veri_up_hash" value="">');
|
||||
|
||||
if( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 )
|
||||
// iframe에서 세션공유 문제가 있어서 더 이상 iframe 을 사용하지 않습니다.
|
||||
var use_iframe = false;
|
||||
|
||||
if(use_iframe && (navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1))
|
||||
{
|
||||
var $frm = $(event.target.form);
|
||||
|
||||
if($frm.length < 1){
|
||||
$frm = $(event.target).parent();
|
||||
}
|
||||
|
||||
if($("#kcp_cert").length < 1) {
|
||||
$frm.wrap('<div id="cert_info"></div>');
|
||||
|
||||
@@ -31,7 +39,7 @@ function certify_win_open(type, url, event) {
|
||||
}
|
||||
|
||||
$("#cert_info")
|
||||
.after('<iframe id="kcp_cert" name="kcp_cert" width="100%" height="700" frameborder="0" scrolling="no" style="display:none"></iframe>');
|
||||
.after('<iframe id="kcp_cert" name="kcp_cert" width="100%" height="700" frameborder="0" scrolling="yes" style="display:none"></iframe>');
|
||||
|
||||
var temp_form = document.form_temp;
|
||||
temp_form.target = "kcp_cert";
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
+2
-2
@@ -40,7 +40,7 @@ $(function() {
|
||||
});
|
||||
|
||||
if(isAndroid) {
|
||||
$(document).on("touchend", "select.it_option", function() {
|
||||
$(document).on("touchend mouseup", "select.it_option", function() {
|
||||
option_add = true;
|
||||
});
|
||||
} else {
|
||||
@@ -151,7 +151,7 @@ $(function() {
|
||||
});
|
||||
|
||||
if(isAndroid) {
|
||||
$(document).on("touchend", "select.it_supply", function() {
|
||||
$(document).on("touchend mouseup", "select.it_supply", function() {
|
||||
supply_add = true;
|
||||
});
|
||||
} else {
|
||||
|
||||
+19
-10
@@ -61,29 +61,38 @@ Class G5_object_cache {
|
||||
$this->contents[$group][$key] = $data;
|
||||
break;
|
||||
default :
|
||||
$datas = $this->etcs[$group][$key] = $data;
|
||||
$this->etcs[$group][$key] = $data;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* cache 데이터 제거
|
||||
* @param string $type
|
||||
* @param string $key
|
||||
* @param string $group
|
||||
* @return bool
|
||||
*/
|
||||
function delete($type, $key, $group = 'default')
|
||||
{
|
||||
if (!$this->exists($type, $key, $group)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function delete($key, $group='default') {
|
||||
switch ($key) {
|
||||
switch ($type) {
|
||||
case 'bbs':
|
||||
$datas = $this->writes;
|
||||
$datas = &$this->writes;
|
||||
break;
|
||||
case 'content':
|
||||
$datas = $this->contents;
|
||||
$datas = &$this->contents;
|
||||
break;
|
||||
default :
|
||||
$datas = $this->etcs;
|
||||
default:
|
||||
$datas = &$this->etcs;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( ! $this->exists('bbs', $key, $group) )
|
||||
return false;
|
||||
unset($datas[$group][$key]);
|
||||
|
||||
unset( $datas[$group][$key] );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Class GML_Hook extends Hook {
|
||||
|
||||
$args = $this->getArguments($argsNumber, $args);
|
||||
|
||||
if (! ($class && $method) && function_exists($function)) {
|
||||
if (! ($class && $method) && is_callable($function)) {
|
||||
return call_user_func_array($function, $args);
|
||||
} elseif ($obj = call_user_func(array($class, $this->singleton))) {
|
||||
if ($obj !== false) {
|
||||
@@ -161,4 +161,4 @@ Class GML_Hook extends Hook {
|
||||
}
|
||||
}
|
||||
|
||||
// end Hook Class;
|
||||
// end Hook Class;
|
||||
|
||||
+235
-82
@@ -9,11 +9,14 @@ include_once(dirname(__FILE__) .'/pbkdf2.compat.php');
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
// 마이크로 타임을 얻어 계산 형식으로 만듦
|
||||
/**
|
||||
* 마이크로타임을 반환
|
||||
* @return float
|
||||
* @deprecated use `microtime(true)`
|
||||
*/
|
||||
function get_microtime()
|
||||
{
|
||||
list($usec, $sec) = explode(" ",microtime());
|
||||
return ((float)$usec + (float)$sec);
|
||||
return microtime(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +26,7 @@ function get_paging($write_pages, $cur_page, $total_page, $url, $add="")
|
||||
//$url = preg_replace('#&page=[0-9]*(&page=)$#', '$1', $url);
|
||||
$url = preg_replace('#(&)?page=[0-9]*#', '', $url);
|
||||
$url .= substr($url, -1) === '?' ? 'page=' : '&page=';
|
||||
$url = preg_replace('|[^\w\-~+_.?#=!&;,/:%@$\|*\'()\[\]\\x80-\\xff]|i', '', clean_xss_tags($url));
|
||||
|
||||
$str = '';
|
||||
if ($cur_page > 1) {
|
||||
@@ -96,6 +100,8 @@ function print_r2($var)
|
||||
// header("location:URL") 을 대체
|
||||
function goto_url($url)
|
||||
{
|
||||
run_event('goto_url', $url);
|
||||
|
||||
$url = str_replace("&", "&", $url);
|
||||
//echo "<script> location.replace('$url'); </script>";
|
||||
|
||||
@@ -149,6 +155,10 @@ function set_cookie($cookie_name, $value, $expire, $path='/', $domain=G5_COOKIE_
|
||||
global $g5;
|
||||
|
||||
$c = run_replace('set_cookie_params', array('path'=>$path, 'domain'=>$domain, 'secure'=>$secure, 'httponly'=>$httponly), $cookie_name);
|
||||
|
||||
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
|
||||
$c['secure'] = true;
|
||||
}
|
||||
|
||||
setcookie(md5($cookie_name), base64_encode($value), G5_SERVER_TIME + $expire, $c['path'], $c['domain'], $c['secure'], $c['httponly']);
|
||||
}
|
||||
@@ -599,46 +609,70 @@ function check_html_link_nofollow($type=''){
|
||||
return true;
|
||||
}
|
||||
|
||||
// http://htmlpurifier.org/
|
||||
// Standards-Compliant HTML Filtering
|
||||
// Safe : HTML Purifier defeats XSS with an audited whitelist
|
||||
// Clean : HTML Purifier ensures standards-compliant output
|
||||
// Open : HTML Purifier is open-source and highly customizable
|
||||
/**
|
||||
* HTMLPurifier 필터를 거친 HTML 코드를 반환
|
||||
*
|
||||
* http://htmlpurifier.org/
|
||||
* Standards-Compliant HTML Filtering
|
||||
* Safe : HTML Purifier defeats XSS with an audited whitelist
|
||||
* Clean : HTML Purifier ensures standards-compliant output
|
||||
* Open : HTML Purifier is open-source and highly customizable
|
||||
*
|
||||
* @param string $html
|
||||
* @return string
|
||||
*/
|
||||
function html_purifier($html)
|
||||
{
|
||||
global $is_admin, $write;
|
||||
|
||||
$f = file(G5_PLUGIN_PATH.'/htmlpurifier/safeiframe.txt');
|
||||
$f = file(G5_PLUGIN_PATH . '/htmlpurifier/safeiframe.txt');
|
||||
$domains = array();
|
||||
foreach($f as $domain){
|
||||
foreach ($f as $domain) {
|
||||
// 첫행이 # 이면 주석 처리
|
||||
if (!preg_match("/^#/", $domain)) {
|
||||
$domain = trim($domain);
|
||||
if ($domain)
|
||||
if ($domain) {
|
||||
array_push($domains, $domain);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 글쓴이가 관리자인 경우에만 현재 사이트 도메인을 허용
|
||||
if (isset($write['mb_id']) && $write['mb_id'] && is_admin($write['mb_id'])) array_push($domains, $_SERVER['HTTP_HOST'].'/');
|
||||
if (isset($write['mb_id']) && $write['mb_id'] && is_admin($write['mb_id'])) {
|
||||
array_push($domains, $_SERVER['HTTP_HOST'] . '/');
|
||||
}
|
||||
$safeiframe = implode('|', run_replace('html_purifier_safeiframes', $domains, $html));
|
||||
|
||||
include_once(G5_PLUGIN_PATH.'/htmlpurifier/HTMLPurifier.standalone.php');
|
||||
include_once(G5_PLUGIN_PATH.'/htmlpurifier/extend.video.php');
|
||||
include_once(G5_PLUGIN_PATH . '/htmlpurifier/HTMLPurifier.standalone.php');
|
||||
include_once(G5_PLUGIN_PATH . '/htmlpurifier/extend.video.php');
|
||||
|
||||
$config = HTMLPurifier_Config::createDefault();
|
||||
// data/cache 디렉토리에 CSS, HTML, URI 디렉토리 등을 만든다.
|
||||
$config->set('Cache.SerializerPath', G5_DATA_PATH.'/cache');
|
||||
$config->set('Cache.SerializerPath', G5_DATA_PATH . '/cache');
|
||||
$config->set('HTML.SafeEmbed', false);
|
||||
$config->set('HTML.SafeObject', false);
|
||||
$config->set('Output.FlashCompat', false);
|
||||
$config->set('HTML.SafeIframe', true);
|
||||
if( (function_exists('check_html_link_nofollow') && check_html_link_nofollow('html_purifier')) ){
|
||||
$config->set('HTML.Nofollow', true); // rel=nofollow 으로 스팸유입을 줄임
|
||||
if ((function_exists('check_html_link_nofollow') && check_html_link_nofollow('html_purifier'))) {
|
||||
$config->set('HTML.Nofollow', true); // rel=nofollow 으로 스팸유입을 줄임
|
||||
}
|
||||
$config->set('URI.SafeIframeRegexp','%^(https?:)?//('.$safeiframe.')%');
|
||||
$config->set('URI.SafeIframeRegexp', '%^(https?:)?//(' . $safeiframe . ')%');
|
||||
$config->set('Attr.AllowedFrameTargets', array('_blank'));
|
||||
//유튜브, 비메오 전체화면 가능하게 하기
|
||||
$config->set('Filter.Custom', array(new HTMLPurifier_Filter_Iframevideo()));
|
||||
|
||||
/*
|
||||
* HTMLPurifier 설정을 변경할 수 있는 Event hook
|
||||
* 리스너에서는 첫번째 인자($config)로 `HTMLPurifier_Config` 객체를 받을 수 있다
|
||||
*/
|
||||
run_event('html_purifier_config', $config, array(
|
||||
'html' => $html,
|
||||
'write' => $write,
|
||||
'is_admin' => $is_admin
|
||||
)
|
||||
);
|
||||
|
||||
$purifier = new HTMLPurifier($config);
|
||||
|
||||
return run_replace('html_purifier_result', $purifier->purify($html), $purifier, $html);
|
||||
}
|
||||
|
||||
@@ -766,7 +800,7 @@ function get_next_num($table)
|
||||
$sql = " select min(wr_num) as min_wr_num from $table ";
|
||||
$row = sql_fetch($sql);
|
||||
// 가장 작은 번호에 1을 빼서 넘겨줌
|
||||
return (int)($row['min_wr_num'] - 1);
|
||||
return isset($row['min_wr_num']) ? (int)($row['min_wr_num'] - 1) : -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -863,7 +897,10 @@ function subject_sort_link($col, $query_string='', $flag='asc')
|
||||
$arr_query[] = 'page='.$page;
|
||||
$qstr = implode("&", $arr_query);
|
||||
|
||||
return "<a href=\"{$_SERVER['SCRIPT_NAME']}?{$qstr}\">";
|
||||
parse_str(html_entity_decode($qstr), $qstr_array);
|
||||
$url = short_url_clean(get_params_merge_url($qstr_array));
|
||||
|
||||
return '<a href="'.$url.'">';
|
||||
}
|
||||
|
||||
|
||||
@@ -1327,87 +1364,138 @@ function get_sideview($mb_id, $name='', $email='', $homepage='')
|
||||
global $g5;
|
||||
global $bo_table, $sca, $is_admin, $member;
|
||||
|
||||
$email = get_string_encrypt($email);
|
||||
$homepage = set_http(clean_xss_tags($homepage));
|
||||
static $cache = array();
|
||||
|
||||
$name = get_text($name, 0, true);
|
||||
$email = get_text($email);
|
||||
$name = get_text($name, 0, true);
|
||||
|
||||
if (isset($cache['id:' . $mb_id]) && $cache['id:' . $mb_id]) {
|
||||
return $cache['id:' . $mb_id];
|
||||
} else if (
|
||||
isset($name)
|
||||
&& isset($cache['name:' . $name])
|
||||
&& $cache['name:' . $name]
|
||||
) {
|
||||
return $cache['name:' . $name];
|
||||
}
|
||||
|
||||
$email = get_string_encrypt($email);
|
||||
$email = get_text($email);
|
||||
|
||||
$homepage = set_http(clean_xss_tags($homepage));
|
||||
$homepage = get_text($homepage);
|
||||
|
||||
$tmp_name = "";
|
||||
$en_mb_id = $mb_id;
|
||||
|
||||
$name_tag = array();
|
||||
$menus = array();
|
||||
|
||||
if ($mb_id) {
|
||||
//$tmp_name = "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" class=\"sv_member\" title=\"$name 자기소개\" rel="nofollow" target=\"_blank\" onclick=\"return false;\">$name</a>";
|
||||
$tmp_name = '<a href="'.G5_BBS_URL.'/profile.php?mb_id='.$mb_id.'" class="sv_member" title="'.$name.' 자기소개" target="_blank" rel="nofollow" onclick="return false;">';
|
||||
// $tmp_name = "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" class=\"sv_member\" title=\"$name 자기소개\" rel="nofollow" target=\"_blank\" onclick=\"return false;\">$name</a>";
|
||||
$name_tag_open = '<a href="' . G5_BBS_URL . '/profile.php?mb_id=' . $mb_id . '" class="sv_member" title="' . $name . ' 자기소개" target="_blank" rel="nofollow" onclick="return false;">';
|
||||
|
||||
if ($config['cf_use_member_icon']) {
|
||||
$mb_dir = substr($mb_id,0,2);
|
||||
$icon_file = G5_DATA_PATH.'/member/'.$mb_dir.'/'.get_mb_icon_name($mb_id).'.gif';
|
||||
$mb_dir = substr($mb_id, 0, 2);
|
||||
$icon_file = G5_DATA_PATH . '/member/' . $mb_dir . '/' . get_mb_icon_name($mb_id) . '.gif';
|
||||
|
||||
if (file_exists($icon_file)) {
|
||||
$icon_filemtile = (defined('G5_USE_MEMBER_IMAGE_FILETIME') && G5_USE_MEMBER_IMAGE_FILETIME) ? '?'.filemtime($icon_file) : '';
|
||||
$icon_filemtile = (defined('G5_USE_MEMBER_IMAGE_FILETIME') && G5_USE_MEMBER_IMAGE_FILETIME) ? '?' . filemtime($icon_file) : '';
|
||||
$width = $config['cf_member_icon_width'];
|
||||
$height = $config['cf_member_icon_height'];
|
||||
$icon_file_url = G5_DATA_URL.'/member/'.$mb_dir.'/'.get_mb_icon_name($mb_id).'.gif'.$icon_filemtile;
|
||||
$tmp_name .= '<span class="profile_img"><img src="'.$icon_file_url.'" width="'.$width.'" height="'.$height.'" alt=""></span>';
|
||||
$icon_file_url = G5_DATA_URL . '/member/' . $mb_dir . '/' . get_mb_icon_name($mb_id) . '.gif' . $icon_filemtile;
|
||||
$name_tag['profile_image'] = '<span class="profile_img"><img src="' . $icon_file_url . '" width="' . $width . '" height="' . $height . '" alt=""></span>';
|
||||
|
||||
if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름
|
||||
$tmp_name = $tmp_name.' '.$name;
|
||||
// 회원아이콘+이름
|
||||
if ($config['cf_use_member_icon'] == 2) {
|
||||
$name_tag['name'] = $name;
|
||||
}
|
||||
} else {
|
||||
if( defined('G5_THEME_NO_PROFILE_IMG') ){
|
||||
$tmp_name .= G5_THEME_NO_PROFILE_IMG;
|
||||
} else if( defined('G5_NO_PROFILE_IMG') ){
|
||||
$tmp_name .= G5_NO_PROFILE_IMG;
|
||||
if (defined('G5_THEME_NO_PROFILE_IMG')) {
|
||||
$name_tag['profile_image'] = G5_THEME_NO_PROFILE_IMG;
|
||||
} else if (defined('G5_NO_PROFILE_IMG')) {
|
||||
$name_tag['profile_image'] = G5_NO_PROFILE_IMG;
|
||||
}
|
||||
|
||||
// 회원아이콘+이름
|
||||
if ($config['cf_use_member_icon'] == 2) {
|
||||
$name_tag['name'] = $name;
|
||||
}
|
||||
if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름
|
||||
$tmp_name = $tmp_name.' '.$name;
|
||||
}
|
||||
} else {
|
||||
$tmp_name = $tmp_name.' '.$name;
|
||||
$name_tag['name'] = $name;
|
||||
}
|
||||
$tmp_name .= '</a>';
|
||||
|
||||
$title_mb_id = '['.$mb_id.']';
|
||||
} else {
|
||||
if(!$bo_table)
|
||||
if (!$bo_table) {
|
||||
return $name;
|
||||
}
|
||||
|
||||
$tmp_name = '<a href="'.get_pretty_url($bo_table, '', 'sca='.$sca.'&sfl=wr_name,1&stx='.$name).'" title="'.$name.' 이름으로 검색" class="sv_guest" rel="nofollow" onclick="return false;">'.$name.'</a>';
|
||||
$title_mb_id = '[비회원]';
|
||||
$name_tag_open = '<a href="' . get_pretty_url($bo_table, '', 'sca=' . $sca . '&sfl=wr_name,1&stx=' . $name) . '" title="' . $name . ' 이름으로 검색" class="sv_guest" rel="nofollow" onclick="return false;">';
|
||||
$name_tag['name'] = $name;
|
||||
}
|
||||
|
||||
$str = "<span class=\"sv_wrap\">\n";
|
||||
$str .= $tmp_name."\n";
|
||||
if ($mb_id) {
|
||||
$menus['memo'] = '<a href="' . G5_BBS_URL . '/memo_form.php?me_recv_mb_id=' . $mb_id . '" rel="nofollow" onclick="win_memo(this.href); return false;">쪽지보내기</a>';
|
||||
}
|
||||
|
||||
$str2 = "<span class=\"sv\">\n";
|
||||
if($mb_id)
|
||||
$str2 .= "<a href=\"".G5_BBS_URL."/memo_form.php?me_recv_mb_id=".$mb_id."\" onclick=\"win_memo(this.href); return false;\">쪽지보내기</a>\n";
|
||||
if($email)
|
||||
$str2 .= "<a href=\"".G5_BBS_URL."/formmail.php?mb_id=".$mb_id."&name=".urlencode($name)."&email=".$email."\" onclick=\"win_email(this.href); return false;\">메일보내기</a>\n";
|
||||
if($homepage)
|
||||
$str2 .= "<a href=\"".$homepage."\" target=\"_blank\">홈페이지</a>\n";
|
||||
if($mb_id)
|
||||
$str2 .= "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" onclick=\"win_profile(this.href); return false;\">자기소개</a>\n";
|
||||
if($bo_table) {
|
||||
if($mb_id) {
|
||||
$str2 .= "<a href=\"".get_pretty_url($bo_table, '', "sca=".$sca."&sfl=mb_id,1&stx=".$en_mb_id)."\">아이디로 검색</a>\n";
|
||||
if ($email) {
|
||||
$menus['email'] = '<a href="' . G5_BBS_URL . '/formmail.php?mb_id=' . $mb_id . '&name=' . urlencode($name) . '&email=' . $email . '" onclick="win_email(this.href); return false;" rel="nofollow">메일보내기</a>';
|
||||
}
|
||||
|
||||
if ($homepage) {
|
||||
$menus['homepage'] = '<a href="' . $homepage . '" rel="nofollow noopener" target="_blank">홈페이지</a>';
|
||||
}
|
||||
|
||||
if ($mb_id) {
|
||||
$menus['profile'] = '<a href="' . G5_BBS_URL . '/profile.php?mb_id=' . $mb_id . '" onclick="win_profile(this.href); return false;" rel="nofollow">자기소개</a>';
|
||||
}
|
||||
|
||||
if ($bo_table) {
|
||||
if ($mb_id) {
|
||||
$menus['search_id'] = '<a href="' . get_pretty_url($bo_table, '', 'sca=' . $sca . '&sfl=mb_id,1&stx=' . $en_mb_id) . '" rel="nofollow">아이디로 검색</a>';
|
||||
} else {
|
||||
$str2 .= "<a href=\"".get_pretty_url($bo_table, '', "sca=".$sca."&sfl=wr_name,1&stx=".$name)."\">이름으로 검색</a>\n";
|
||||
$menus['search_name'] = '<a href="' . get_pretty_url($bo_table, '', 'sca=' . $sca . '&sfl=wr_name,1&stx=' . $name) . '" rel="nofollow">이름으로 검색</a>';
|
||||
}
|
||||
}
|
||||
if($mb_id)
|
||||
$str2 .= "<a href=\"".G5_BBS_URL."/new.php?mb_id=".$mb_id."\" class=\"link_new_page\" onclick=\"check_goto_new(this.href, event);\">전체게시물</a>\n";
|
||||
if($is_admin == "super" && $mb_id) {
|
||||
$str2 .= "<a href=\"".G5_ADMIN_URL."/member_form.php?w=u&mb_id=".$mb_id."\" target=\"_blank\">회원정보변경</a>\n";
|
||||
$str2 .= "<a href=\"".G5_ADMIN_URL."/point_list.php?sfl=mb_id&stx=".$mb_id."\" target=\"_blank\">포인트내역</a>\n";
|
||||
}
|
||||
$str2 .= "</span>\n";
|
||||
$str .= $str2;
|
||||
$str .= "\n<noscript class=\"sv_nojs\">".$str2."</noscript>";
|
||||
|
||||
if ($mb_id) {
|
||||
$menus['search_all'] = '<a href="' . G5_BBS_URL . '/new.php?mb_id=' . $mb_id . '" class="link_new_page" onclick="check_goto_new(this.href, event);" rel="nofollow">전체게시물</a>';
|
||||
|
||||
if ($is_admin == 'super') {
|
||||
$menus['admin_member_modify'] = '<a href="' . G5_ADMIN_URL . '/member_form.php?w=u&mb_id=' . $mb_id . '" target="_blank" rel="nofollow">회원정보변경</a>';
|
||||
$menus['admin_member_point'] = '<a href="' . G5_ADMIN_URL . '/point_list.php?sfl=mb_id&stx=' . $mb_id . '" target="_blank" rel="nofollow">포인트내역</a>';
|
||||
}
|
||||
}
|
||||
|
||||
$name_tag_close = '</a>';
|
||||
|
||||
$items = run_replace('member_sideview_items', array(
|
||||
'name_tag_open' => $name_tag_open,
|
||||
'name_tag_close' => $name_tag_close,
|
||||
'name_tag' => $name_tag,
|
||||
'menus' => $menus
|
||||
), array(
|
||||
'mb_id' => $mb_id,
|
||||
'name' => $name,
|
||||
'bo_table' => $bo_table,
|
||||
)
|
||||
);
|
||||
|
||||
$str = '<span class="sv_wrap">';
|
||||
$str .= $items['name_tag_open'] . implode(' ', $items['name_tag']) . $items['name_tag_close'];
|
||||
|
||||
$str2 = '<span class="sv">';
|
||||
$str2 .= implode("\n", $items['menus']);
|
||||
$str2 .= '</span>';
|
||||
|
||||
$str .= $str2;
|
||||
$str .= '<noscript class="sv_nojs">' . $str2 . '</noscript>';
|
||||
$str .= "</span>";
|
||||
|
||||
if ($mb_id) {
|
||||
$cache['id:' . $mb_id] = $str;
|
||||
} else {
|
||||
$cache['name:' . $name] = $str;
|
||||
}
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
@@ -1648,21 +1736,21 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
|
||||
$end_time = ($is_debug || G5_COLLECT_QUERY) ? get_microtime() : 0;
|
||||
|
||||
$error = null;
|
||||
$source = array();
|
||||
if ($is_debug || G5_COLLECT_QUERY) {
|
||||
if(function_exists('mysqli_error') && G5_MYSQLI_USE) {
|
||||
$error = array(
|
||||
'error_code' => mysqli_errno($g5['connect_db']),
|
||||
'error_message' => mysqli_error($g5['connect_db']),
|
||||
'error_code' => mysqli_errno($link),
|
||||
'error_message' => mysqli_error($link),
|
||||
);
|
||||
} else {
|
||||
$error = array(
|
||||
'error_code' => mysql_errno($g5['connect_db']),
|
||||
'error_message' => mysql_error($g5['connect_db']),
|
||||
'error_code' => mysql_errno($link),
|
||||
'error_message' => mysql_error($link),
|
||||
);
|
||||
}
|
||||
|
||||
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
$source = array();
|
||||
$found = false;
|
||||
|
||||
foreach ($stack as $index => $trace) {
|
||||
@@ -1706,7 +1794,7 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
|
||||
);
|
||||
}
|
||||
|
||||
run_event('sql_query_after', $result, $sql, $start_time, $end_time, $error);
|
||||
run_event('sql_query_after', $result, $sql, $start_time, $end_time, $error, $source);
|
||||
|
||||
return $result;
|
||||
}
|
||||
@@ -1759,11 +1847,22 @@ function sql_free_result($result)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* MySQL PASSWORD() 함수로 생성된 비밀번호의 hash 값을 반환
|
||||
*
|
||||
* MySQL 버전에 따라 결과가 다르게 나올 수 있음.
|
||||
* MySQL 8.0.11 버전 이상에서는 오류 발생(PASSWORD 함수가 제거됨)으로 사용할 수 없음.
|
||||
*
|
||||
* @deprecated 이 함수는 안전하지 않으므로 사용하지 않는 것을 권장 함
|
||||
* @see get_encrypt_string() and check_password()
|
||||
* @param string $value
|
||||
* @return string
|
||||
*/
|
||||
function sql_password($value)
|
||||
{
|
||||
// mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
|
||||
// mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
|
||||
$row = sql_fetch(" select password('$value') as pass ");
|
||||
$row = sql_fetch(" SELECT password('{$value}') as pass ");
|
||||
|
||||
return $row['pass'];
|
||||
}
|
||||
@@ -2171,6 +2270,53 @@ function check_token()
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 브라우저 검증을 위한 세션 반환 및 재생성
|
||||
* @param array $member 로그인 된 회원의 정보. 가입일시(mb_datetime)를 반드시 포함해야 한다.
|
||||
* @param bool $regenerate true 이면 재생성
|
||||
* @return string
|
||||
*/
|
||||
function ss_mb_key($member, $regenerate = false)
|
||||
{
|
||||
$client_key = ($regenerate) ? null : get_cookie('mb_client_key');
|
||||
|
||||
if (!$client_key) {
|
||||
$client_key = get_random_token_string(16);
|
||||
set_cookie('mb_client_key', $client_key, G5_SERVER_TIME * -1);
|
||||
}
|
||||
|
||||
$mb_key = md5($member['mb_datetime'] . $client_key) . run_replace('ss_mb_key_user_agent', md5($_SERVER['HTTP_USER_AGENT']));
|
||||
|
||||
return $mb_key;
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원의 클라이언트 검증
|
||||
* @param array $member 로그인 된 회원의 정보. 가입일시(mb_datetime)를 반드시 포함해야 한다.
|
||||
* @return bool
|
||||
*/
|
||||
function verify_mb_key($member)
|
||||
{
|
||||
$mb_key = ss_mb_key($member);
|
||||
$verified = get_session('ss_mb_key') === $mb_key;
|
||||
|
||||
if (!$verified) {
|
||||
ss_mb_key($member, true);
|
||||
}
|
||||
|
||||
return $verified;
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원의 클라이언트 검증 키 생성
|
||||
* 클라이언트 키를 다시 생성하여 생성된 키는 `ss_mb_key` 세션에 저장됨
|
||||
* @param array $member 로그인 된 회원의 정보. 가입일시(mb_datetime)를 반드시 포함해야 한다.
|
||||
*/
|
||||
function generate_mb_key($member)
|
||||
{
|
||||
$mb_key = ss_mb_key($member, true);
|
||||
set_session('ss_mb_key', $mb_key);
|
||||
}
|
||||
|
||||
// 문자열에 utf8 문자가 들어 있는지 검사하는 함수
|
||||
// 코드 : http://in2.php.net/manual/en/function.mb-check-encoding.php#95289
|
||||
@@ -2380,14 +2526,19 @@ function check_device($device)
|
||||
}
|
||||
|
||||
|
||||
// 게시판 최신글 캐시 파일 삭제
|
||||
/**
|
||||
* 게시판 최신글 캐시 파일 삭제
|
||||
* @param string $bo_table 게시판 ID
|
||||
*/
|
||||
function delete_cache_latest($bo_table)
|
||||
{
|
||||
if (!preg_match("/^([A-Za-z0-9_]{1,20})$/", $bo_table)) {
|
||||
return;
|
||||
}
|
||||
|
||||
g5_delete_cache_by_prefix('latest-'.$bo_table.'-');
|
||||
run_event('delete_cache_latest', $bo_table);
|
||||
|
||||
g5_delete_cache_by_prefix('latest-' . $bo_table . '-');
|
||||
}
|
||||
|
||||
// 게시판 첨부파일 썸네일 삭제
|
||||
@@ -2765,6 +2916,8 @@ class html_process {
|
||||
$buffer = preg_replace('#(<title[^>]*>.*?</title>)#', "$meta_tag{$nl}$1", $buffer);
|
||||
}
|
||||
|
||||
$buffer = run_replace('html_process_buffer', $buffer);
|
||||
|
||||
return $buffer;
|
||||
}
|
||||
}
|
||||
@@ -3718,7 +3871,7 @@ function check_vaild_callback($callback){
|
||||
class str_encrypt
|
||||
{
|
||||
var $salt;
|
||||
var $lenght;
|
||||
var $length;
|
||||
|
||||
function __construct($salt='')
|
||||
{
|
||||
@@ -4071,7 +4224,7 @@ function get_random_token_string($length=6)
|
||||
}
|
||||
|
||||
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
$output = substr(str_shuffle($characters), 0, $length); // jihan001 님 제안코드로 수정
|
||||
$output = substr(str_shuffle($characters), 0, $length);
|
||||
|
||||
return bin2hex($output);
|
||||
}
|
||||
|
||||
+2
-2
@@ -65,7 +65,7 @@ function run_event($tag, $arg = ''){
|
||||
}
|
||||
}
|
||||
|
||||
function add_replace($tag, $func, $priority=G5_HOOK_DEFAULT_PRIORITY, $args=0){
|
||||
function add_replace($tag, $func, $priority=G5_HOOK_DEFAULT_PRIORITY, $args=1){
|
||||
|
||||
if( $hook = get_hook_class() ){
|
||||
return $hook->addFilter($tag, $func, $priority, $args);
|
||||
@@ -130,4 +130,4 @@ function get_hook_datas($type='', $is_callback=''){
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,6 +195,7 @@ class LMS {
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
$gets = '';
|
||||
while(!$gets) { $gets = fgets($fsocket,32); }
|
||||
$json = json_decode(substr($puts,6), true);
|
||||
|
||||
@@ -206,7 +207,6 @@ class LMS {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
if(substr($gets,6,2) >= "80") break;
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
|
||||
fclose($fsocket);
|
||||
@@ -217,6 +217,7 @@ class LMS {
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
$gets = '';
|
||||
while(!$gets) { $gets = fgets($fsocket,30); }
|
||||
$dest = substr($puts,26,11);
|
||||
if (substr($gets,0,19) == "0223 00".$dest) {
|
||||
@@ -224,7 +225,6 @@ class LMS {
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
|
||||
fclose($fsocket);
|
||||
|
||||
@@ -198,6 +198,7 @@ class SMS {
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
$gets = '';
|
||||
while(!$gets) { $gets = fgets($fsocket,32); }
|
||||
$json = json_decode(substr($puts,6), true);
|
||||
|
||||
@@ -209,7 +210,6 @@ class SMS {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
if(substr($gets,6,2) >= "80") break;
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
fclose($fsocket);
|
||||
|
||||
@@ -226,10 +226,10 @@ class SMS {
|
||||
foreach($this->Data as $puts) {
|
||||
$dest = substr($puts,26,11);
|
||||
fputs($fp,$puts);
|
||||
$gets = '';
|
||||
while(!$gets) { $gets=fgets($fp,30); }
|
||||
if (substr($gets,0,19)=="0223 00".$dest) $this->Result[]=$dest.":".substr($gets,19,10);
|
||||
else $this->Result[$dest]=$dest.":Error";
|
||||
$gets="";
|
||||
}
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
+17
-8
@@ -1943,8 +1943,9 @@ function is_soldout($it_id, $is_cache=false)
|
||||
// 상품정보
|
||||
$it = get_shop_item($it_id, $is_cache);
|
||||
|
||||
if($it['it_soldout'] || $it['it_stock_qty'] <= 0)
|
||||
if ($it['it_soldout']) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
$soldout = false;
|
||||
@@ -1953,7 +1954,7 @@ function is_soldout($it_id, $is_cache=false)
|
||||
$sql = " select count(*) as cnt from {$g5['g5_shop_item_option_table']} where it_id = '$it_id' and io_type = '0' ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
if($row['cnt']) {
|
||||
if (isset($row['cnt']) && $row['cnt']) {
|
||||
$sql = " select io_id, io_type, io_stock_qty
|
||||
from {$g5['g5_shop_item_option_table']}
|
||||
where it_id = '$it_id'
|
||||
@@ -1972,12 +1973,18 @@ function is_soldout($it_id, $is_cache=false)
|
||||
// 모든 선택옵션 품절이면 상품 품절
|
||||
if($i == $count)
|
||||
$soldout = true;
|
||||
} else {
|
||||
// 상품 재고수량
|
||||
$stock_qty = get_it_stock_qty($it_id);
|
||||
|
||||
if($stock_qty <= 0)
|
||||
} else {
|
||||
|
||||
if ($it['it_stock_qty'] <= 0) {
|
||||
$soldout = true;
|
||||
} else {
|
||||
// 상품 재고수량
|
||||
$stock_qty = get_it_stock_qty($it_id);
|
||||
|
||||
if($stock_qty <= 0)
|
||||
$soldout = true;
|
||||
}
|
||||
}
|
||||
|
||||
$cache[$key] = $soldout;
|
||||
@@ -2625,10 +2632,10 @@ function make_order_field($data, $exclude)
|
||||
|
||||
if(is_array($value)) {
|
||||
foreach($value as $k=>$v) {
|
||||
$field .= '<input type="hidden" name="'.$key.'['.$k.']" value="'.$v.'">'.PHP_EOL;
|
||||
$field .= '<input type="hidden" name="'.$key.'['.$k.']" value="'.get_text($v).'">'.PHP_EOL;
|
||||
}
|
||||
} else {
|
||||
$field .= '<input type="hidden" name="'.$key.'" value="'.$value.'">'.PHP_EOL;
|
||||
$field .= '<input type="hidden" name="'.$key.'" value="'.get_text($value).'">'.PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2769,6 +2776,8 @@ function check_pay_name_replace($payname, $od=array(), $is_client=0){
|
||||
return '네이버페이_NHNKCP'.$add_str;
|
||||
} else if( isset($od['od_other_pay_type']) && ($od['od_other_pay_type'] === 'OT13' || $od['od_other_pay_type'] === 'NHNKCP_KAKAOMONEY') ){
|
||||
return '카카오페이_NHNKCP'.$add_str;
|
||||
} else if( isset($od['od_other_pay_type']) && $od['od_other_pay_type'] === 'OT21' ){
|
||||
return '애플페이_NHNKCP'.$add_str;
|
||||
}
|
||||
|
||||
return 'PAYCO'.$add_str;
|
||||
|
||||
@@ -142,6 +142,7 @@ function shop_short_url_clean($string_url, $url, $page_name, $array_page_names){
|
||||
$add_param .= $add_param ? '&'.$add_qry : '?'.$add_qry;
|
||||
}
|
||||
|
||||
$return_url = '';
|
||||
foreach($s as $k => $v) { $return_url .= '/'.$v; }
|
||||
|
||||
return $host.$return_url.$add_param.$fragment;
|
||||
|
||||
+10
-3
@@ -10,15 +10,22 @@ function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_
|
||||
$filename = $alt = $data_path = '';
|
||||
$edt = false;
|
||||
|
||||
$row = get_thumbnail_find_cache($bo_table, $wr_id, 'file');
|
||||
$empty_array = array('src'=>'', 'ori'=>'', 'alt'=>'');
|
||||
|
||||
if(isset($row['bf_file']) && $row['bf_file']) {
|
||||
$write = get_thumbnail_find_cache($bo_table, $wr_id, 'content');
|
||||
|
||||
// 비밀글이면 썸네일을 노출하지 않습니다.
|
||||
if (isset($write['wr_option']) && strstr($write['wr_option'], "secret")) {
|
||||
return run_replace('is_secret_list_thumbnail', $empty_array, $bo_table, $write);
|
||||
}
|
||||
|
||||
$row = get_thumbnail_find_cache($bo_table, $wr_id, 'file');
|
||||
|
||||
if (isset($row['bf_file']) && $row['bf_file']) {
|
||||
$filename = $row['bf_file'];
|
||||
$filepath = G5_DATA_PATH.'/file/'.$bo_table;
|
||||
$alt = get_text($row['bf_content']);
|
||||
} else {
|
||||
$write = get_thumbnail_find_cache($bo_table, $wr_id, 'content');
|
||||
$edt = true;
|
||||
|
||||
if( $matches = get_editor_image($write['wr_content'], false) ){
|
||||
|
||||
+38
-32
@@ -298,63 +298,69 @@ function seo_title_update($db_table, $pk_id, $type='bbs'){
|
||||
}
|
||||
}
|
||||
|
||||
function get_nginx_conf_rules($return_string=false){
|
||||
|
||||
function get_nginx_conf_rules($return_string = false)
|
||||
{
|
||||
$get_path_url = parse_url(G5_URL);
|
||||
|
||||
$base_path = isset($get_path_url['path']) ? $get_path_url['path'].'/' : '/';
|
||||
$base_path = isset($get_path_url['path']) ? $get_path_url['path'] . '/' : '/';
|
||||
|
||||
$rules = array();
|
||||
|
||||
$rules[] = '#### '.G5_VERSION.' nginx rules BEGIN #####';
|
||||
$rules[] = 'if (!-e $request_filename){';
|
||||
$rules[] = '#### ' . G5_VERSION . ' nginx rules BEGIN #####';
|
||||
|
||||
if( $add_rules = run_replace('add_nginx_conf_rules', '', $get_path_url, $base_path, $return_string) ){
|
||||
if ($add_rules = run_replace('add_nginx_conf_pre_rules', '', $get_path_url, $base_path, $return_string)) {
|
||||
$rules[] = $add_rules;
|
||||
}
|
||||
|
||||
$rules[] = "rewrite ^{$base_path}content/([0-9a-zA-Z_]+)$ {$base_path}".G5_BBS_DIR."/content.php?co_id=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}content/([^/]+)/$ {$base_path}".G5_BBS_DIR."/content.php?co_seo_title=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}rss/([0-9a-zA-Z_]+)$ {$base_path}".G5_BBS_DIR."/rss.php?bo_table=$1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)$ {$base_path}".G5_BBS_DIR."/board.php?bo_table=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/write$ {$base_path}".G5_BBS_DIR."/write.php?bo_table=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([^/]+)/$ {$base_path}".G5_BBS_DIR."/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([0-9]+)$ {$base_path}".G5_BBS_DIR."/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;";
|
||||
$rules[] = 'if (!-e $request_filename) {';
|
||||
|
||||
if ($add_rules = run_replace('add_nginx_conf_rules', '', $get_path_url, $base_path, $return_string)) {
|
||||
$rules[] = $add_rules;
|
||||
}
|
||||
|
||||
$rules[] = "rewrite ^{$base_path}content/([0-9a-zA-Z_]+)$ {$base_path}" . G5_BBS_DIR . "/content.php?co_id=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}content/([^/]+)/$ {$base_path}" . G5_BBS_DIR . "/content.php?co_seo_title=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}rss/([0-9a-zA-Z_]+)$ {$base_path}" . G5_BBS_DIR . "/rss.php?bo_table=$1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)$ {$base_path}" . G5_BBS_DIR . "/board.php?bo_table=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/write$ {$base_path}" . G5_BBS_DIR . "/write.php?bo_table=$1&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([^/]+)/$ {$base_path}" . G5_BBS_DIR . "/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;";
|
||||
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([0-9]+)$ {$base_path}" . G5_BBS_DIR . "/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;";
|
||||
$rules[] = '}';
|
||||
$rules[] = '#### '.G5_VERSION.' nginx rules END #####';
|
||||
$rules[] = '#### ' . G5_VERSION . ' nginx rules END #####';
|
||||
|
||||
return $return_string ? implode("\n", $rules) : $rules;
|
||||
}
|
||||
|
||||
function get_mod_rewrite_rules($return_string=false){
|
||||
|
||||
function get_mod_rewrite_rules($return_string = false)
|
||||
{
|
||||
$get_path_url = parse_url(G5_URL);
|
||||
|
||||
$base_path = isset($get_path_url['path']) ? $get_path_url['path'].'/' : '/';
|
||||
$base_path = isset($get_path_url['path']) ? $get_path_url['path'] . '/' : '/';
|
||||
|
||||
$rules = array();
|
||||
|
||||
$rules[] = '#### '.G5_VERSION.' rewrite BEGIN #####';
|
||||
$rules[] = '#### ' . G5_VERSION . ' rewrite BEGIN #####';
|
||||
$rules[] = '<IfModule mod_rewrite.c>';
|
||||
$rules[] = 'RewriteEngine On';
|
||||
$rules[] = 'RewriteBase '.$base_path;
|
||||
$rules[] = 'RewriteBase ' . $base_path;
|
||||
|
||||
if ($add_rules = run_replace('add_mod_rewrite_pre_rules', '', $get_path_url, $base_path, $return_string)) {
|
||||
$rules[] = $add_rules;
|
||||
}
|
||||
|
||||
$rules[] = 'RewriteCond %{REQUEST_FILENAME} -f [OR]';
|
||||
$rules[] = 'RewriteCond %{REQUEST_FILENAME} -d';
|
||||
$rules[] = 'RewriteRule ^ - [L]';
|
||||
|
||||
if( $add_rules = run_replace('add_mod_rewrite_rules', '', $get_path_url, $base_path, $return_string) ){
|
||||
if ($add_rules = run_replace('add_mod_rewrite_rules', '', $get_path_url, $base_path, $return_string)) {
|
||||
$rules[] = $add_rules;
|
||||
}
|
||||
|
||||
$rules[] = 'RewriteRule ^content/([0-9a-zA-Z_]+)$ '.G5_BBS_DIR.'/content.php?co_id=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^content/([^/]+)/$ '.G5_BBS_DIR.'/content.php?co_seo_title=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^rss/([0-9a-zA-Z_]+)$ '.G5_BBS_DIR.'/rss.php?bo_table=$1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)$ '.G5_BBS_DIR.'/board.php?bo_table=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([^/]+)/$ '.G5_BBS_DIR.'/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/write$ '.G5_BBS_DIR.'/write.php?bo_table=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([0-9]+)$ '.G5_BBS_DIR.'/board.php?bo_table=$1&wr_id=$2&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^content/([0-9a-zA-Z_]+)$ ' . G5_BBS_DIR . '/content.php?co_id=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^content/([^/]+)/$ ' . G5_BBS_DIR . '/content.php?co_seo_title=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^rss/([0-9a-zA-Z_]+)$ ' . G5_BBS_DIR . '/rss.php?bo_table=$1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)$ ' . G5_BBS_DIR . '/board.php?bo_table=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([^/]+)/$ ' . G5_BBS_DIR . '/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/write$ ' . G5_BBS_DIR . '/write.php?bo_table=$1&rewrite=1 [QSA,L]';
|
||||
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([0-9]+)$ ' . G5_BBS_DIR . '/board.php?bo_table=$1&wr_id=$2&rewrite=1 [QSA,L]';
|
||||
$rules[] = '</IfModule>';
|
||||
$rules[] = '#### '.G5_VERSION.' rewrite END #####';
|
||||
$rules[] = '#### ' . G5_VERSION . ' rewrite END #####';
|
||||
|
||||
return $return_string ? implode("\n", $rules) : $rules;
|
||||
}
|
||||
|
||||
@@ -36,8 +36,8 @@ $result = sql_query($sql);
|
||||
$cart_count = sql_num_rows($result);
|
||||
?>
|
||||
|
||||
<script src="<?php echo G5_JS_URL; ?>/shop.js"></script>
|
||||
<script src="<?php echo G5_JS_URL; ?>/shop.override.js"></script>
|
||||
<script src="<?php echo G5_JS_URL; ?>/shop.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||
<script src="<?php echo G5_JS_URL; ?>/shop.override.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||
|
||||
<div id="sod_bsk">
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ $sql = " select it_id, it_name from {$g5['g5_shop_item_table']}
|
||||
limit 1 ";
|
||||
$row = sql_fetch($sql);
|
||||
if (isset($row['it_id']) && $row['it_id']) {
|
||||
$next_title = '다음 상품 <span>'.$row['it_name'].'</span>';
|
||||
$next_title = '다음상품 <span>'.$row['it_name'].'</span>';
|
||||
$next_href = '<a href="'.shop_item_url($row['it_id']).'" id="siblings_next">';
|
||||
$next_href2 = '</a>';
|
||||
} else {
|
||||
@@ -197,11 +197,11 @@ include_once(G5_MSHOP_PATH.'/_head.php');
|
||||
include_once(G5_SHOP_PATH.'/settle_naverpay.inc.php');
|
||||
|
||||
// 상단 HTML
|
||||
echo '<div id="sit_hhtml">'.conv_content($it['it_mobile_head_html'], 1).'</div>';
|
||||
echo run_replace('shop_it_mobile_head_html', '<div id="sit_hhtml">'.conv_content($it['it_mobile_head_html'], 1).'</div>', $it);
|
||||
?>
|
||||
|
||||
<?php if($is_orderable) { ?>
|
||||
<script src="<?php echo G5_JS_URL; ?>/shop.js"></script>
|
||||
<script src="<?php echo G5_JS_URL; ?>/shop.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||
<?php } ?>
|
||||
|
||||
<?php
|
||||
@@ -222,6 +222,6 @@ else
|
||||
|
||||
<?php
|
||||
// 하단 HTML
|
||||
echo conv_content($it['it_mobile_tail_html'], 1);
|
||||
echo run_replace('shop_it_mobile_tail_html', conv_content($it['it_mobile_tail_html'], 1), $it);
|
||||
|
||||
include_once(G5_MSHOP_PATH.'/_tail.php');
|
||||
@@ -29,6 +29,7 @@ $param_opt_3 = isset($_REQUEST['param_opt_3']) ? clean_xss_tags($_REQUEST['param
|
||||
<input type="hidden" name="naverpay_point_direct" value="Y"> <!-- 네이버페이 포인트 결제를 하려면 naverpay_point_direct 를 Y -->
|
||||
<?php } ?>
|
||||
<input type="hidden" name="kakaopay_direct" value="A" > <!-- KAKAOPAY 결제창 호출 -->
|
||||
<input type="hidden" name="applepay_direct" value="A" > <!-- APPLEPAY 결제창 호출 -->
|
||||
<!-- 주문번호 -->
|
||||
<input type="hidden" name="ordr_idxx" value="<?php echo $od_id; ?>">
|
||||
<!-- 인증수단(영문 소문자) * 반드시 대소문자 구분 -->
|
||||
|
||||
@@ -67,6 +67,7 @@ include_once('./_common.php');
|
||||
$payco_direct = isset($_POST["payco_direct"]) ? $_POST["payco_direct"] : ''; // PAYCO 결제창 호출
|
||||
$naverpay_direct = isset($_POST["naverpay_direct"]) ? $_POST["naverpay_direct"] : ''; // NAVERPAY 결제창 호출
|
||||
$kakaopay_direct = isset($_POST["kakaopay_direct"]) ? $_POST["kakaopay_direct"] : ''; // KAKAOPAY 결제창 호출
|
||||
$applepay_direct = isset($_POST["applepay_direct"]) ? $_POST["applepay_direct"] : ''; // APPLEPAY 결제창 호출
|
||||
|
||||
/*
|
||||
* 기타 파라메터 추가 부분 - Start -
|
||||
@@ -157,7 +158,7 @@ include_once('./_common.php');
|
||||
{
|
||||
|
||||
var v_frm = document.sm_form;
|
||||
|
||||
|
||||
layer_cont_obj = document.getElementById("content");
|
||||
layer_receipt_obj = document.getElementById("layer_receipt");
|
||||
|
||||
@@ -165,9 +166,16 @@ include_once('./_common.php');
|
||||
layer_receipt_obj.style.display = "block";
|
||||
|
||||
v_frm.target = "frm_receipt";
|
||||
|
||||
// IOS 환경의 경우 iframe에서 네이버페이와 애플페이의 cors 문제가 일어나므로 iframe으로 열지 않는다.
|
||||
var isIOS = /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
|
||||
|
||||
// 네이버페이면 반드시 페이지전환 방식이어야 하며, 그 외에는 iframe 방식으로 한다.
|
||||
if(typeof v_frm.naverpay_direct !== "undefined" && v_frm.naverpay_direct.value == "Y") {
|
||||
if (isIOS) {
|
||||
v_frm.target = "";
|
||||
}
|
||||
|
||||
// 네이버페이 또는 애플페이의 경우 반드시 페이지전환 방식이어야 하며, 그 외에는 iframe 방식으로 한다.
|
||||
if((typeof v_frm.naverpay_direct !== "undefined" && v_frm.naverpay_direct.value == "Y") || (typeof v_frm.applepay_direct !== "undefined" && v_frm.applepay_direct.value == "Y")) {
|
||||
v_frm.target = "";
|
||||
}
|
||||
|
||||
@@ -267,18 +275,20 @@ if($enc_data != '' && $enc_info != '' && $tran_cd != '') {
|
||||
?>
|
||||
|
||||
<?php if($payco_direct){ ?>
|
||||
<input type="hidden" name="payco_direct" value="<?php echo $payco_direct; ?>"> <!-- PAYCO 결제창 호출 -->
|
||||
<input type="hidden" name="payco_direct" value="<?php echo get_text($payco_direct); ?>"> <!-- PAYCO 결제창 호출 -->
|
||||
<?php } ?>
|
||||
<?php if($naverpay_direct){ ?>
|
||||
<input type="hidden" name="naverpay_direct" value="<?php echo $naverpay_direct; ?>"> <!-- 네이버페이 결제창 호출 -->
|
||||
<input type="hidden" name="naverpay_direct" value="<?php echo get_text($naverpay_direct); ?>"> <!-- 네이버페이 결제창 호출 -->
|
||||
<?php if(isset($default['de_easy_pay_services']) && in_array('used_nhnkcp_naverpay_point', explode(',', $default['de_easy_pay_services'])) ){ // 네이버페이 포인트 결제 옵션 ?>
|
||||
<input type="hidden" name="naverpay_point_direct" value="Y"> <!-- 네이버페이 포인트 결제를 하려면 naverpay_point_direct 를 Y -->
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php if($applepay_direct === "Y"){ ?>
|
||||
<input type="hidden" name="applepay_direct" value="<?php echo get_text($applepay_direct); ?>"> <!-- 애플페이 결제창 호출 -->
|
||||
<?php } ?>
|
||||
<?php if($kakaopay_direct){ ?>
|
||||
<input type="hidden" name="kakaopay_direct" value="<?php echo $kakaopay_direct; ?>"> <!-- 카카오페이 결제창 호출 -->
|
||||
<input type="hidden" name="kakaopay_direct" value="<?php echo get_text($kakaopay_direct); ?>"> <!-- 카카오페이 결제창 호출 -->
|
||||
<?php } ?>
|
||||
|
||||
<!-- 필수 사항 -->
|
||||
|
||||
<!-- 요청 구분 -->
|
||||
|
||||
@@ -24,6 +24,7 @@ $param_opt_3 = isset($_REQUEST['param_opt_3']) ? clean_xss_tags($_REQUEST['param
|
||||
<input type="hidden" name="payco_direct" value=""> <!-- PAYCO 결제창 호출 -->
|
||||
<input type="hidden" name="naverpay_direct" value="A" > <!-- NAVERPAY 결제창 호출 -->
|
||||
<input type="hidden" name="kakaopay_direct" value="A" > <!-- KAKAOPAY 결제창 호출 -->
|
||||
<input type="hidden" name="applepay_direct" value="A" > <!-- APPLEPAY 결제창 호출 -->
|
||||
<!-- 주문번호 -->
|
||||
<input type="hidden" name="ordr_idxx" value="<?php echo $od_id; ?>">
|
||||
<!-- 인증수단(영문 소문자) * 반드시 대소문자 구분 -->
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$type = isset($_REQUEST['type']) ? preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\s]/", "", $_REQUEST['type']) : '';
|
||||
if ($type == 1) $g5['title'] = '히트상품';
|
||||
else if ($type == 2) $g5['title'] = '추천상품';
|
||||
else if ($type == 3) $g5['title'] = '최신상품';
|
||||
else if ($type == 4) $g5['title'] = '인기상품';
|
||||
else if ($type == 5) $g5['title'] = '세일상품';
|
||||
$type = isset($_REQUEST['type']) ? (int) preg_replace("/[^0-9]/", "", $_REQUEST['type']) : 1;
|
||||
if ($type === 1) $g5['title'] = '히트상품';
|
||||
else if ($type === 2) $g5['title'] = '추천상품';
|
||||
else if ($type === 3) $g5['title'] = '최신상품';
|
||||
else if ($type === 4) $g5['title'] = '인기상품';
|
||||
else if ($type === 5) $g5['title'] = '세일상품';
|
||||
else
|
||||
alert('상품유형이 아닙니다.');
|
||||
|
||||
@@ -32,7 +32,7 @@ else
|
||||
if (!$skin)
|
||||
$skin = $default['de_mobile_listtype_list_skin'];
|
||||
else
|
||||
$skin = preg_replace('#\.+[\\\/]#', '', $skin);
|
||||
$skin = preg_replace('#\.+[\\\/]#', '', strip_tags($skin));
|
||||
|
||||
define('G5_SHOP_CSS_URL', G5_MSHOP_SKIN_URL);
|
||||
|
||||
@@ -65,7 +65,7 @@ if (file_exists($list_file)) {
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<div align="center">'.$skin.' 파일을 찾을 수 없습니다.<br>관리자에게 알려주시면 감사하겠습니다.</div>';
|
||||
echo '<div align="center">'.get_text($skin).' 파일을 찾을 수 없습니다.<br>관리자에게 알려주시면 감사하겠습니다.</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
@@ -111,7 +111,7 @@ $cp_count = get_shop_member_coupon_count($member['mb_id'], true);
|
||||
<li>
|
||||
<div class="wish_img"><?php echo $image; ?></div>
|
||||
<div class="wish_info">
|
||||
<a href="<?php echo get_shop_item($row['it_id'], true); ?>" class="info_link"><?php echo stripslashes($row['it_name']); ?></a>
|
||||
<a href="<?php echo shop_item_url($row['it_id']); ?>" class="info_link"><?php echo stripslashes($row['it_name']); ?></a>
|
||||
<span class="info_date"><?php echo substr($row['wi_time'], 2, 8); ?></span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -624,6 +624,9 @@ if($is_kakaopay_use) {
|
||||
if( in_array('nhnkcp_kakaopay', $de_easy_pay_service_array) ){
|
||||
$easypay_prints['nhnkcp_kakaopay'] = '<li><input type="radio" id="od_settle_nhnkcp_kakaopay" name="od_settle_case" data-pay="kakaopay" value="간편결제" > <label for="od_settle_nhnkcp_kakaopay" class="kakaopay_icon nhnkcp_kakaopay lb_icon" title="NHN_KCP - 카카오페이">카카오페이</label></li>';
|
||||
}
|
||||
if( in_array('nhnkcp_applepay', $de_easy_pay_service_array) && preg_match('~^(?:(?:(?:Mozilla/\d\.\d\s*\()+|Mobile\s*Safari\s*\d+\.\d+(\.\d+)?\s*)(?:iPhone(?:\s+Simulator)?|iPad|iPod);\s*(?:U;\s*)?(?:[a-z]+(?:-[a-z]+)?;\s*)?CPU\s*(?:iPhone\s*)?(?:OS\s*\d+_\d+(?:_\d+)?\s*)?(?:like|comme)\s*Mac\s*O?S?\s*X(?:;\s*[a-z]+(?:-[a-z]+)?)?\)\s*)?(?:AppleWebKit/\d+(?:\.\d+(?:\.\d+)?|\s*\+)?\s*)?(?:\(KHTML,\s*(?:like|comme)\s*Gecko\s*\)\s*)?(?:Version/\d+\.\d+(?:\.\d+)?\s*)?(?:Mobile/\w+\s*)?(?:Safari/\d+\.\d+(?:\.\d+)?.*)?$~', $_SERVER['HTTP_USER_AGENT']) ){
|
||||
$easypay_prints['nhnkcp_applepay'] = '<li><input type="radio" id="od_settle_nhnkcp_applepay" name="od_settle_case" data-pay="applepay" value="간편결제" > <label for="od_settle_nhnkcp_applepay" class="applepay_icon nhnkcp_applepay lb_icon" title="NHN_KCP - 애플페이">애플페이</label></li>';
|
||||
}
|
||||
} else {
|
||||
$easypay_prints[strtolower($pg_easy_pay_name)] = '<li><input type="radio" id="od_settle_easy_pay" name="od_settle_case" value="간편결제" '.$checked.'> <label for="od_settle_easy_pay" class="'.$pg_easy_pay_name.' lb_icon">'.$pg_easy_pay_name.'</label></li>';
|
||||
}
|
||||
@@ -1233,6 +1236,7 @@ var temp_point = 0;
|
||||
|
||||
function pay_approval()
|
||||
{
|
||||
// 무통장 아닌 가상계좌, 계좌이체, 휴대폰, 신용카드, 기타 등등 을 처리한다.
|
||||
// 재고체크
|
||||
var stock_msg = order_stock_check();
|
||||
if(stock_msg != "") {
|
||||
@@ -1299,6 +1303,7 @@ function pay_approval()
|
||||
if(typeof f.payco_direct !== "undefined") f.payco_direct.value = "";
|
||||
if(typeof f.naverpay_direct !== "undefined") f.naverpay_direct.value = "A";
|
||||
if(typeof f.kakaopay_direct !== "undefined") f.kakaopay_direct.value = "A";
|
||||
if(typeof f.applepay_direct !== "undefined") f.applepay_direct.value = "A";
|
||||
if(typeof f.ActionResult !== "undefined") f.ActionResult.value = "";
|
||||
if(typeof f.pay_method !== "undefined") f.pay_method.value = "";
|
||||
|
||||
@@ -1311,6 +1316,8 @@ function pay_approval()
|
||||
}
|
||||
} else if(nhnkcp_easy_pay === "kakaopay"){
|
||||
if(typeof f.kakaopay_direct !== "undefined") f.kakaopay_direct.value = "Y";
|
||||
} else if(nhnkcp_easy_pay === "applepay"){
|
||||
if(typeof f.applepay_direct !== "undefined") f.applepay_direct.value = "Y";
|
||||
} else {
|
||||
if(typeof f.payco_direct !== "undefined") f.payco_direct.value = "Y";
|
||||
}
|
||||
@@ -1318,6 +1325,10 @@ function pay_approval()
|
||||
if(typeof f.ActionResult !== "undefined") f.ActionResult.value = "CARD"; // 대소문자 구분
|
||||
if(typeof f.pay_method !== "undefined") f.pay_method.value = "card"; // 대소문자 구분
|
||||
|
||||
//if(nhnkcp_easy_pay === "applepay"){
|
||||
// if(typeof f.ActionResult !== "undefined") f.ActionResult.value = "card";
|
||||
// if(typeof f.pay_method !== "undefined") f.pay_method.value = "CARD";
|
||||
//}
|
||||
}
|
||||
|
||||
<?php } else if($default['de_pg_service'] == 'lg') { ?>
|
||||
@@ -1435,6 +1446,14 @@ function pay_approval()
|
||||
|
||||
function forderform_check()
|
||||
{
|
||||
// 무통장만 여기에처 처리한다.
|
||||
// 재고체크
|
||||
var stock_msg = order_stock_check();
|
||||
if(stock_msg != "") {
|
||||
alert(stock_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
var f = document.forderform;
|
||||
|
||||
// 필드체크
|
||||
|
||||
@@ -705,10 +705,18 @@ $sql_card_point = "";
|
||||
if ($od_receipt_price > 0 && !$default['de_card_point']) {
|
||||
$sql_card_point = " , ct_point = '0' ";
|
||||
}
|
||||
|
||||
// 회원 아이디 값 변경
|
||||
$sql_mb_id = "";
|
||||
if ($is_member) {
|
||||
$sql_mb_id = " , mb_id = '{$member['mb_id']}' ";
|
||||
}
|
||||
|
||||
$sql = "update {$g5['g5_shop_cart_table']}
|
||||
set od_id = '$od_id',
|
||||
ct_status = '$cart_status'
|
||||
$sql_card_point
|
||||
$sql_mb_id
|
||||
where od_id = '$tmp_cart_id'
|
||||
and ct_select = '1' ";
|
||||
$result = sql_query($sql, false);
|
||||
@@ -758,7 +766,7 @@ $od_memo = nl2br(htmlspecialchars2(stripslashes($od_memo))) . " ";
|
||||
if($is_member) {
|
||||
$it_cp_cnt = (isset($_POST['cp_id']) && is_array($_POST['cp_id'])) ? count($_POST['cp_id']) : 0;
|
||||
for($i=0; $i<$it_cp_cnt; $i++) {
|
||||
$cid = isset($_POST['cp_id'][$i]) ? $_POST['cp_id'][$i] : '';
|
||||
$cid = isset($_POST['cp_id'][$i]) ? clean_xss_tags($_POST['cp_id'][$i], 1, 1) : '';
|
||||
$cp_it_id = isset($_POST['it_id'][$i]) ? safe_replace_regex($_POST['it_id'][$i], 'it_id') : '';
|
||||
$cp_prc = isset($arr_it_cp_prc[$cp_it_id]) ? (int) $arr_it_cp_prc[$cp_it_id] : 0;
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@ if (isset($_GET['qname']) || isset($_GET['qexplan']) || isset($_GET['qid']) || i
|
||||
$search_all = false;
|
||||
|
||||
$q = utf8_strcut(get_search_string(trim($_GET['q'])), 30, "");
|
||||
$qname = isset($_GET['qname']) ? trim($_GET['qname']) : '';
|
||||
$qexplan = isset($_GET['qexplan']) ? trim($_GET['qexplan']) : '';
|
||||
$qid = isset($_GET['qid']) ? trim($_GET['qid']) : '';
|
||||
$qbasic = isset($_GET['qbasic']) ? trim($_GET['qbasic']) : '';
|
||||
$qname = isset($_GET['qname']) ? trim(clean_xss_tags($_GET['qname'])) : '';
|
||||
$qexplan = isset($_GET['qexplan']) ? trim(clean_xss_tags($_GET['qexplan'])) : '';
|
||||
$qid = isset($_GET['qid']) ? trim(clean_xss_tags($_GET['qid'])) : '';
|
||||
$qbasic = isset($_GET['qbasic']) ? trim(clean_xss_tags($_GET['qbasic'])) : '';
|
||||
$qcaid = isset($_GET['qcaid']) ? preg_replace('#[^a-z0-9]#i', '', trim($_GET['qcaid'])) : '';
|
||||
$qfrom = isset($_GET['qfrom']) ? preg_replace('/[^0-9]/', '', trim($_GET['qfrom'])) : '';
|
||||
$qto = isset($_GET['qto']) ? preg_replace('/[^0-9]/', '', trim($_GET['qto'])) : '';
|
||||
|
||||
@@ -14,12 +14,10 @@ if ($default['de_card_test']) {
|
||||
if ($default['de_escrow_use'] == 1) {
|
||||
// 에스크로결제 테스트
|
||||
$default['de_inicis_mid'] = 'iniescrow0';
|
||||
$default['de_inicis_admin_key'] = '1111';
|
||||
}
|
||||
else {
|
||||
// 일반결제 테스트
|
||||
$default['de_inicis_mid'] = 'INIpayTest';
|
||||
$default['de_inicis_admin_key'] = '1111';
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -109,6 +107,8 @@ $inicis_cardpoint = $default['de_inicis_cartpoint_use'] ? '&cp_yn=Y' : '';
|
||||
// 예) BC 2,3,6개월, 국민 3,6개월, 삼성 6,9개월 무이자 : 11-2:3:6^06-3:6^12-3:6:4
|
||||
//$inicis_cardpoint .= ''; // &merc_noint=Y&noint_quota=카드사코드-개월:개월^추가카드사코드-개월:개월:개월 형식으로 설정
|
||||
|
||||
require_once(G5_SHOP_PATH.'/inicis/libs/inicis_youngcart_fn.php');
|
||||
|
||||
$noti_url = G5_MSHOP_URL.'/inicis/settle_common.php';
|
||||
$next_url = G5_MSHOP_URL.'/inicis/pay_approval.php';
|
||||
$return_url = G5_MSHOP_URL.'/inicis/pay_return.php?oid=';
|
||||
@@ -33,14 +33,14 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
<h2>회원로그인 안내</h2>
|
||||
<div>
|
||||
<a href="<?php echo G5_BBS_URL ?>/password_lost.php">아이디/비밀번호 찾기</a>
|
||||
<a href="./register.php">회원 가입</a>
|
||||
<a href="<?php echo G5_BBS_URL ?>/register.php">회원 가입</a>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
|
||||
|
||||
<?php // 쇼핑몰 사용시 여기부터 ?>
|
||||
<?php if ($default['de_level_sell'] == 1) { // 상품구입 권한 ?>
|
||||
<?php if (isset($default['de_level_sell']) && $default['de_level_sell'] == 1) { // 상품구입 권한 ?>
|
||||
|
||||
<!-- 주문하기, 신청하기 -->
|
||||
<?php if (preg_match("/orderform.php/", $url)) { ?>
|
||||
|
||||
@@ -12,6 +12,7 @@ if($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin
|
||||
<div id="find_info" class="new_win<?php if($config['cf_cert_use'] != 0 && $config['cf_cert_find'] != 0) { ?> cert<?php } ?>">
|
||||
<div class="new_win_con">
|
||||
<form name="fpasswordlost" action="<?php echo $action_url ?>" onsubmit="return fpasswordlost_submit(this);" method="post" autocomplete="off">
|
||||
<input type="hidden" name="cert_no" value="">
|
||||
<h3>이메일로 찾기</h3>
|
||||
<fieldset id="info_fs">
|
||||
<p>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/* 회원가입 약관 */
|
||||
#fregister section {position:relative;background:#fff;border-bottom:1px solid #e5e9f0;padding:15px}
|
||||
#fregister_chkall {position:relative;font-size:bold;text-align:left;background:#fff;padding:15px;border-top:1px solid #e5e9f0;border-bottom:1px solid #e5e9f0;border-radius:3px}
|
||||
#fregister_chkall {position:relative;font-weight:bold;text-align:left;background:#fff;padding:15px;border-top:1px solid #e5e9f0;border-bottom:1px solid #e5e9f0;border-radius:3px}
|
||||
#fregister h2 {text-align:left;padding-bottom:15px;line-height:1.7em;font-size:1.4em}
|
||||
#fregister textarea {display:block;width:100%;height:180px;padding:10px;background:#fbfbfb;border:1px solid #d1d7d8;line-height:1.5em;color:#555}
|
||||
#fregister p {position:relative;text-align:left;color:#fff;line-height:18px;padding:15px;font-size:1.1em;background:#f2838f;margin:15px;border-radius:5px}
|
||||
@@ -98,7 +98,7 @@
|
||||
|
||||
/* 기존 회원 본인인증 */
|
||||
#member_cert_refresh section {position:relative;background:#fff;border-bottom:1px solid #e5e9f0;padding:15px}
|
||||
#member_cert_refresh_chkall {position:relative;font-size:bold;text-align:left;background:#fff;padding:15px;border-top:1px solid #e5e9f0;border-bottom:1px solid #e5e9f0;border-radius:3px}
|
||||
#member_cert_refresh_chkall {position:relative;font-weight:bold;text-align:left;background:#fff;padding:15px;border-top:1px solid #e5e9f0;border-bottom:1px solid #e5e9f0;border-radius:3px}
|
||||
#member_cert_refresh h2 {text-align:left;padding-bottom:15px;line-height:1.7em;font-size:1.4em}
|
||||
#member_cert_refresh textarea {display:block;width:100%;height:180px;padding:10px;background:#fbfbfb;border:1px solid #d1d7d8;line-height:1.5em;color:#555}
|
||||
#member_cert_refresh p {position:relative;text-align:left;color:#fff;line-height:18px;padding:15px;font-size:1.1em;background:#f2838f;margin:15px;border-radius:5px}
|
||||
|
||||
@@ -149,9 +149,9 @@
|
||||
#bo_w .bo_w_select select {border:1px solid #d0d3db;background:#fff;width:100%}
|
||||
#bo_w .bo_w_link label {position:absolute;top:1px;left:1px;border-radius:3px 0 0 3px;width:45px;height:43px;line-height:43px;font-size:1.2em;text-align:center;color:#b2b2b2}
|
||||
#bo_w .bo_w_link .frm_input {padding-left:50px}
|
||||
#bo_w .bo_w_flie .lb_icon {position:absolute;top:0px;left:0px;border-radius:3px 0 0 3px;width:45px;height:43px;line-height:43px;font-size:1.2em;text-align:center;color:#b2b2b2}
|
||||
#bo_w .bo_w_flie .frm_file {padding-left:50px}
|
||||
#bo_w .bo_w_flie .file_wr {position:relative;color:#000;vertical-align:middle;margin:0}
|
||||
#bo_w .bo_w_flie .lb_icon, .form_01 .bo_w_flie .lb_icon {position:absolute;top:0px;left:0px;border-radius:3px 0 0 3px;width:45px;height:43px;line-height:43px;font-size:1.2em;text-align:center;color:#b2b2b2}
|
||||
#bo_w .bo_w_flie .frm_file, .form_01 .bo_w_flie .frm_file {padding-left:50px}
|
||||
#bo_w .bo_w_flie .file_wr, .form_01 .bo_w_flie .file_wr {position:relative;color:#000;vertical-align:middle;margin:0}
|
||||
#bo_w .bo_w_flie .frm_input {margin:5px 0 0}
|
||||
|
||||
.filebox .btn_file {display:inline-block;position:absolute;right:8px;top:8px;border:1px solid #3a8afd;border-radius:3px;width:60px;height:30px;color:#3a8afd;font-size:1em;line-height:30px;font-weight:bold;background:#fff;text-align:center;vertical-align:middle;cursor:pointer}
|
||||
|
||||
@@ -11,7 +11,43 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||
</div>
|
||||
</h2>
|
||||
<div id="ans_con">
|
||||
<?php
|
||||
// 파일 출력
|
||||
if(isset($answer['img_count']) && $answer['img_count']) {
|
||||
echo "<div id=\"bo_v_img\">\n";
|
||||
|
||||
for ($i=0; $i<$answer['img_count']; $i++) {
|
||||
echo get_view_thumbnail($answer['img_file'][$i], $qaconfig['qa_image_width']);
|
||||
}
|
||||
|
||||
echo "</div>\n";
|
||||
}
|
||||
?>
|
||||
|
||||
<?php echo get_view_thumbnail(conv_content($answer['qa_content'], $answer['qa_html']), $qaconfig['qa_image_width']); ?>
|
||||
|
||||
<?php if(isset($answer['download_count']) && $answer['download_count']) { ?>
|
||||
<!-- 첨부파일 시작 { -->
|
||||
<section id="bo_v_file">
|
||||
<h2>첨부파일</h2>
|
||||
<ul>
|
||||
<?php
|
||||
// 가변 파일
|
||||
for ($i=0; $i<$answer['download_count']; $i++) {
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-download" aria-hidden="true"></i>
|
||||
<a href="<?php echo $answer['download_href'][$i]; ?>" class="view_file_download" download>
|
||||
<strong><?php echo $answer['download_source'][$i] ?></strong>
|
||||
</a>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- } 첨부파일 끝 -->
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
<button id="btn_ans_btn" class="btn_b03 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>
|
||||
|
||||
@@ -9,7 +9,7 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||
?>
|
||||
<h2>답변등록</h2>
|
||||
|
||||
<form name="fanswer" method="post" action="./qawrite_update.php" onsubmit="return fwrite_submit(this);" autocomplete="off">
|
||||
<form name="fanswer" method="post" action="./qawrite_update.php" onsubmit="return fwrite_submit(this);" enctype="multipart/form-data" autocomplete="off">
|
||||
<input type="hidden" name="qa_id" value="<?php echo $view['qa_id']; ?>">
|
||||
<input type="hidden" name="w" value="a">
|
||||
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||
@@ -46,6 +46,21 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||
<label for="qa_content" class="sound_only">내용<strong>필수</strong></label>
|
||||
<?php echo $editor_html; // 에디터 사용시는 에디터로, 아니면 textarea 로 노출 ?>
|
||||
</li>
|
||||
|
||||
<li class="bo_w_flie">
|
||||
<div class="file_wr filebox">
|
||||
<input type="text" class="fileName" readonly="readonly" placeholder="파일을 첨부하세요">
|
||||
<label for="bf_file[1]"><i class="fa fa-download lb_icon" aria-hidden="true"></i><span class="sound_only">파일 #1</span><span class="btn_file">파일첨부</span></label>
|
||||
<input type="file" name="bf_file[1]" id="bf_file[1]" title="파일첨부 1 : 용량 <?php echo $upload_max_filesize; ?> 이하만 업로드 가능" class="frm_file uploadBtn">
|
||||
</div>
|
||||
<br>
|
||||
<div class="file_wr filebox">
|
||||
<input type="text" class="fileName" readonly="readonly" placeholder="파일을 첨부하세요">
|
||||
<label for="bf_file[2]"><i class="fa fa-download lb_icon" aria-hidden="true"></i><span class="sound_only">파일 #2</span><span class="btn_file">파일첨부</span></label>
|
||||
<input type="file" name="bf_file[2]" id="bf_file[2]" title="파일첨부 2 : 용량 <?php echo $upload_max_filesize; ?> 이하만 업로드 가능" class="frm_file uploadBtn">
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// ================================================================
|
||||
// CHEditor 5.1.9.3-p4
|
||||
// CHEditor 5.1.9.4
|
||||
// ----------------------------------------------------------------
|
||||
// Homepage: http://www.chcode.com
|
||||
// EMail: support@chcode.com
|
||||
// Copyright (c) 1997-2020 CHSOFT
|
||||
// Copyright (c) 1997-2021 CHSOFT
|
||||
// ================================================================
|
||||
var GB = {
|
||||
colors: ['#000000','#313131','#434343','#535353','#666666','#999999','#a0a0a0','#b5b5b5','#c0c0c0','#dcdcdc','#eeeeee','#ffffff',
|
||||
@@ -568,6 +568,7 @@ function setConfig() {
|
||||
this.cheditor.tabSpaces = '';
|
||||
this.cheditor.modifyState = false;
|
||||
this.cheditor.tabSpaces = new Array(this.config.tabIndent + 1).join(' ');
|
||||
this.URI = URI;
|
||||
}
|
||||
|
||||
function cheditor() {
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@@ -1,15 +1,15 @@
|
||||
<?php
|
||||
include_once("_common.php");
|
||||
|
||||
define("CHE_UPLOAD_IMG_CHECK", 1); // 이미지 파일을 썸네일 할수 있는지 여부를 체크합니다. ( 해당 파일이 이미지 파일인지 체크합니다. 1이면 사용, 0이면 사용 안함 )
|
||||
define("CHE_UPLOAD_IMG_CHECK", 1); // 이미지 파일을 썸네일 할수 있는지 여부를 체크합니다. ( 해당 파일이 이미지 파일인지 체크합니다. 1이면 사용, 0이면 사용 안함 )
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
# 이미지가 저장될 디렉토리의 전체 경로를 설정합니다.
|
||||
# 끝에 슬래쉬(/)는 붙이지 않습니다.
|
||||
# 주의: 이 경로의 접근 권한은 쓰기, 읽기가 가능하도록 설정해 주십시오.
|
||||
# 이미지가 저장될 디렉토리의 전체 경로를 설정합니다.
|
||||
# 끝에 슬래쉬(/)는 붙이지 않습니다.
|
||||
# 주의: 이 경로의 접근 권한은 쓰기, 읽기가 가능하도록 설정해 주십시오.
|
||||
|
||||
# data/editor 디렉토리가 없는 경우가 있을수 있으므로 디렉토리를 생성하는 코드를 추가함. kagla 140305
|
||||
# data/editor 디렉토리가 없는 경우가 있을수 있으므로 디렉토리를 생성하는 코드를 추가함. kagla 140305
|
||||
|
||||
@mkdir(G5_DATA_PATH.'/'.G5_EDITOR_DIR, G5_DIR_PERMISSION);
|
||||
@chmod(G5_DATA_PATH.'/'.G5_EDITOR_DIR, G5_DIR_PERMISSION);
|
||||
@@ -24,8 +24,8 @@ define("SAVE_DIR", $data_dir);
|
||||
@mkdir(SAVE_DIR, G5_DIR_PERMISSION);
|
||||
@chmod(SAVE_DIR, G5_DIR_PERMISSION);
|
||||
|
||||
# 위에서 설정한 'SAVE_DIR'의 URL을 설정합니다.
|
||||
# 끝에 슬래쉬(/)는 붙이지 않습니다.
|
||||
# 위에서 설정한 'SAVE_DIR'의 URL을 설정합니다.
|
||||
# 끝에 슬래쉬(/)는 붙이지 않습니다.
|
||||
|
||||
define("SAVE_URL", $data_url);
|
||||
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
<?php
|
||||
require_once("config.php");
|
||||
|
||||
if(!function_exists('ft_nonce_is_valid')){
|
||||
if (!function_exists('ft_nonce_is_valid')) {
|
||||
include_once('../editor.lib.php');
|
||||
}
|
||||
|
||||
if( !function_exists('che_reprocessImage') ){
|
||||
function che_reprocessImage($file_path, $callback){
|
||||
|
||||
if (!function_exists('che_reprocessImage')) {
|
||||
function che_reprocessImage($file_path, $callback)
|
||||
{
|
||||
$MIME_TYPES_PROCESSORS = array(
|
||||
"image/gif" => array("imagecreatefromgif", "imagegif"),
|
||||
"image/jpg" => array("imagecreatefromjpeg", "imagejpeg"),
|
||||
"image/jpeg" => array("imagecreatefromjpeg", "imagejpeg"),
|
||||
"image/png" => array("imagecreatefrompng", "imagepng"),
|
||||
"image/webp" => array("imagecreatefromwebp", "imagewebp"),
|
||||
"image/bmp" => array("imagecreatefromwbmp", "imagewbmp")
|
||||
"image/gif" => array("imagecreatefromgif", "imagegif"),
|
||||
"image/jpg" => array("imagecreatefromjpeg", "imagejpeg"),
|
||||
"image/jpeg" => array("imagecreatefromjpeg", "imagejpeg"),
|
||||
"image/png" => array("imagecreatefrompng", "imagepng"),
|
||||
"image/webp" => array("imagecreatefromwebp", "imagewebp"),
|
||||
"image/bmp" => array("imagecreatefromwbmp", "imagewbmp")
|
||||
);
|
||||
|
||||
// Extracting mime type using getimagesize
|
||||
try {
|
||||
$image_info = getimagesize($file_path);
|
||||
if ($image_info === null) {
|
||||
//throw new Exception("Invalid image type");
|
||||
return false;
|
||||
//throw new Exception("Invalid image type");
|
||||
return false;
|
||||
}
|
||||
|
||||
$mime_type = $image_info["mime"];
|
||||
|
||||
if (!array_key_exists($mime_type, $MIME_TYPES_PROCESSORS)) {
|
||||
//throw new Exception("Invalid image MIME type");
|
||||
return false;
|
||||
//throw new Exception("Invalid image MIME type");
|
||||
return false;
|
||||
}
|
||||
|
||||
$image_from_file = $MIME_TYPES_PROCESSORS[$mime_type][0];
|
||||
@@ -38,13 +38,13 @@ if( !function_exists('che_reprocessImage') ){
|
||||
$reprocessed_image = @$image_from_file($file_path);
|
||||
|
||||
if (!$reprocessed_image) {
|
||||
//throw new Exception("Unable to create reprocessed image from file");
|
||||
return false;
|
||||
//throw new Exception("Unable to create reprocessed image from file");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Calling callback(if set) with path of image as a parameter
|
||||
if ($callback !== null) {
|
||||
$callback($reprocessed_image);
|
||||
$callback($reprocessed_image);
|
||||
}
|
||||
|
||||
// Freeing up memory
|
||||
@@ -60,13 +60,13 @@ if( !function_exists('che_reprocessImage') ){
|
||||
|
||||
$is_editor_upload = false;
|
||||
|
||||
$get_nonce = get_session('nonce_'.FT_NONCE_SESSION_KEY);
|
||||
$get_nonce = get_session('nonce_' . FT_NONCE_SESSION_KEY);
|
||||
|
||||
if( $get_nonce && ft_nonce_is_valid( $get_nonce, 'cheditor' ) ){
|
||||
if ($get_nonce && ft_nonce_is_valid($get_nonce, 'cheditor')) {
|
||||
$is_editor_upload = true;
|
||||
}
|
||||
|
||||
if( !$is_editor_upload ){
|
||||
if (!$is_editor_upload) {
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -78,24 +78,24 @@ run_event('cheditor_photo_upload', $data_dir, $data_url);
|
||||
$tempfile = $_FILES['file']['tmp_name'];
|
||||
$filename = $_FILES['file']['name'];
|
||||
$filename_len = strrpos($filename, ".");
|
||||
$type = substr($filename, strrpos($filename, ".")+1);
|
||||
$type = substr($filename, strrpos($filename, ".") + 1);
|
||||
$found = false;
|
||||
switch ($type) {
|
||||
case "jpg":
|
||||
case "jpeg":
|
||||
case "gif":
|
||||
case "png":
|
||||
case "jpg":
|
||||
case "jpeg":
|
||||
case "gif":
|
||||
case "png":
|
||||
case "webp":
|
||||
$found = true;
|
||||
$found = true;
|
||||
}
|
||||
|
||||
if ($found != true || $filename_len != 23) {
|
||||
exit;
|
||||
exit;
|
||||
}
|
||||
|
||||
// 저장 파일 이름: 년월일시분초_렌덤문자8자
|
||||
// 저장 파일 이름: 년월일시분초_렌덤문자8자
|
||||
// 20140327125959_abcdefghi.jpg
|
||||
// 원본 파일 이름: $_POST["origname"]
|
||||
// 원본 파일 이름: $_POST["origname"]
|
||||
|
||||
$filename = che_replace_filename($filename);
|
||||
$savefile = SAVE_DIR . '/' . $filename;
|
||||
@@ -105,32 +105,50 @@ $imgsize = getimagesize($savefile);
|
||||
$filesize = filesize($savefile);
|
||||
|
||||
if (!$imgsize) {
|
||||
$filesize = 0;
|
||||
$random_name = '-ERR';
|
||||
unlink($savefile);
|
||||
};
|
||||
$filesize = 0;
|
||||
$random_name = '-ERR';
|
||||
unlink($savefile);
|
||||
}
|
||||
|
||||
if ( CHE_UPLOAD_IMG_CHECK && ! che_reprocessImage($savefile, null) ){
|
||||
$filesize = 0;
|
||||
$random_name = '-ERR';
|
||||
unlink($savefile);
|
||||
if (CHE_UPLOAD_IMG_CHECK && !che_reprocessImage($savefile, null)) {
|
||||
$filesize = 0;
|
||||
$random_name = '-ERR';
|
||||
unlink($savefile);
|
||||
}
|
||||
|
||||
try {
|
||||
if(defined('G5_FILE_PERMISSION')) chmod($savefile, G5_FILE_PERMISSION);
|
||||
if (defined('G5_FILE_PERMISSION')) {
|
||||
chmod($savefile, G5_FILE_PERMISSION);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
$file_url = SAVE_URL.'/'.$filename;
|
||||
$file_url = SAVE_URL . '/' . $filename;
|
||||
|
||||
if( function_exists('run_replace') ){
|
||||
$file_url = run_replace('get_editor_upload_url', $file_url, $savefile, array());
|
||||
if (function_exists('run_replace')) {
|
||||
$fileInfo = new \stdClass();
|
||||
$fileInfo->name = (string) $filename;
|
||||
$fileInfo->size = (int) $filesize;
|
||||
$fileInfo->url = (string) $file_url;
|
||||
|
||||
if (isset($_POST['origname'])) {
|
||||
$fileInfo->oriname = (string) $_POST['origname'];
|
||||
}
|
||||
|
||||
if ($imgsize) {
|
||||
$fileInfo->width = (int) $imgsize[0];
|
||||
$fileInfo->height = (int) $imgsize[1];
|
||||
$fileInfo->type = (string) $imgsize['mime'];
|
||||
}
|
||||
|
||||
$file_url = run_replace('get_editor_upload_url', $file_url, $savefile, $fileInfo);
|
||||
}
|
||||
|
||||
$rdata = sprintf('{"fileUrl": "%s", "filePath": "%s", "fileName": "%s", "fileSize": "%d" }',
|
||||
$file_url,
|
||||
$savefile,
|
||||
$filename,
|
||||
$filesize );
|
||||
$rdata = sprintf(
|
||||
'{"fileUrl": "%s", "fileName": "%s", "fileSize": "%d" }',
|
||||
$file_url,
|
||||
$filename,
|
||||
$filesize
|
||||
);
|
||||
|
||||
echo $rdata;
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<title>CHEditor</title>
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/dialog.css" />
|
||||
<script src="js/dialog.js" type="text/javascript"></script>
|
||||
<script src="js/flash.js" type="text/javascript"></script>
|
||||
@@ -11,12 +11,12 @@
|
||||
<body>
|
||||
<div class="flash-movie-source">
|
||||
<div style="margin-bottom: 10px;width: 562px">
|
||||
<span class="font-normal"><동영상 소스 코드> iframe 또는 object 태그를 입력하세요.</span>
|
||||
<span class="font-normal">동영상 링크 URL 또는 IFRAME이나 EMBED 소스 코드를 붙여 넣거나 입력하세요.</span>
|
||||
</div>
|
||||
<textarea name="embed" id="fm_embed" style="height:40px;width:99%"></textarea>
|
||||
<textarea name="source" id="fm_source" style="height:40px;width:99%"></textarea>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
<div class="flash-player-wrapper" id="fm_player"></div>
|
||||
<div class="bottom-status" id="buttonWrapper"></div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/dialog.css" />
|
||||
<script src="js/dialog.js" type="text/javascript"></script>
|
||||
<script src="https://maps.google.com/maps/api/js?V=3&language=ko®ion=KR" type="text/javascript"></script>
|
||||
<script src="https://maps.google.com/maps/api/js?V=3&language=ko®ion=KR&key=JS_MAPS_API_KEY" type="text/javascript"></script>
|
||||
<script src="js/google_map.js" type="text/javascript"></script>
|
||||
</head>
|
||||
<body onload="initMap(5)">
|
||||
<div style="padding-left:10px">
|
||||
<span class="font-normal">찾을 주소: </span>
|
||||
<input type="text" name="address" id="fm_address" value="서울" />
|
||||
<input type="text" name="address" id="fm_address" title="찾을 주소" value="서울" />
|
||||
<span id="map_search"></span>
|
||||
<div class="font-normal" style="margin: 5px 0px 0px 58px;color:#666">찾으실 도로명 주소, 지번 또는 건물명을 입력하세요.</div>
|
||||
</div>
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
<div style="margin-top:5px;font-size: 12px">
|
||||
<input type="checkbox" name="use_spacer" value="1" checked="checked" />사진 여백 넣기
|
||||
</div>
|
||||
<div id="webgl_logo_wrapper" class="webgl_logo_wrapper" style="text-align: center;"></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// ================================================================
|
||||
// CHEditor 5
|
||||
// Movie
|
||||
// ================================================================
|
||||
var button = [
|
||||
{ alt : '', img : 'play.gif', cmd : doPlay },
|
||||
@@ -7,7 +7,10 @@ var button = [
|
||||
{ alt : '', img : 'cancel.gif', cmd : popupClose }
|
||||
],
|
||||
oEditor = null,
|
||||
iframeSource = false;
|
||||
iframeSource = null,
|
||||
showMovie = false,
|
||||
defaultMovieWidth = 640,
|
||||
defaultMovieHeight = 360;
|
||||
|
||||
function init(dialog) {
|
||||
var dlg = new Dialog(this);
|
||||
@@ -17,52 +20,65 @@ function init(dialog) {
|
||||
dlg.setDialogHeight();
|
||||
}
|
||||
|
||||
function doPlay()
|
||||
{
|
||||
var elem = oEditor.trimSpace(document.getElementById("fm_embed").value),
|
||||
embed = null, div = document.createElement('div'),
|
||||
pos, str, object, child, movieHeight, movieWidth, i, params = [];
|
||||
function getSource() {
|
||||
return oEditor.trimSpace(document.getElementById("fm_source").value);
|
||||
}
|
||||
|
||||
elem = oEditor.trimSpace(elem);
|
||||
if (elem == '') {
|
||||
function doPlay() {
|
||||
var embed = null,
|
||||
div = document.createElement('div'),
|
||||
pos, str, object, child, movieHeight, movieWidth, params = [], showWrapper,
|
||||
source = getSource(), iframe;
|
||||
|
||||
showMovie = true;
|
||||
if (source === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (elem.toLowerCase().indexOf("iframe") !== -1) {
|
||||
document.getElementById('fm_player').innerHTML = elem;
|
||||
iframeSource = true;
|
||||
showWrapper = document.getElementById('fm_player');
|
||||
if (source.toLowerCase().indexOf("iframe") !== -1) {
|
||||
showWrapper.innerHTML = source;
|
||||
iframeSource = source;
|
||||
return;
|
||||
}
|
||||
|
||||
pos = elem.toLowerCase().indexOf("embed");
|
||||
if (/https?:\/\//.test(source)) {
|
||||
iframe = createIframeElement(defaultMovieWidth, defaultMovieHeight, source);
|
||||
if (iframe) {
|
||||
showWrapper.innerHTML = '';
|
||||
showWrapper.appendChild(iframe);
|
||||
iframeSource = iframe;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
pos = source.toLowerCase().indexOf("embed");
|
||||
if (pos !== -1) {
|
||||
str = elem.substr(pos);
|
||||
str = source.substr(pos);
|
||||
pos = str.indexOf(">");
|
||||
div.innerHTML = "<" + str.substr(0, pos) + ">";
|
||||
embed = div.firstChild;
|
||||
} else {
|
||||
div.innerHTML = elem;
|
||||
div.innerHTML = source;
|
||||
object = div.getElementsByTagName('OBJECT')[0];
|
||||
if (object && object.hasChildNodes()) {
|
||||
child = object.firstChild;
|
||||
movieWidth = (isNaN(object.width) !== true) ? object.width : 320;
|
||||
movieHeight = (isNaN(object.height) !== true) ? object.height : 240;
|
||||
movieWidth = (isNaN(object.width) !== true) ? object.width : defaultMovieWidth;
|
||||
movieHeight = (isNaN(object.height) !== true) ? object.height : defaultMovieHeight;
|
||||
|
||||
do {
|
||||
if ((child.nodeName === 'PARAM') && (typeof child.name !== 'undefined') && (typeof child.value !== 'undefined')) {
|
||||
params.push({key: (child.name == 'movie') ? 'src' : child.name, val: child.value});
|
||||
if (child.nodeName === 'PARAM' && typeof child.name !== 'undefined' && typeof child.value !== 'undefined')
|
||||
{
|
||||
params.push({
|
||||
key: child.name === 'movie' ? 'src' : child.name,
|
||||
val: child.value
|
||||
});
|
||||
}
|
||||
child = child.nextSibling;
|
||||
} while (child);
|
||||
|
||||
if (params.length > 0) {
|
||||
embed = document.createElement('embed');
|
||||
embed.setAttribute("width", movieWidth);
|
||||
embed.setAttribute("height", movieHeight);
|
||||
for (i = 0; i < params.length; i++) {
|
||||
embed.setAttribute(params[i].key, params[i].val);
|
||||
}
|
||||
embed.setAttribute("type", "application/x-shockwave-flash");
|
||||
embed = createEmbedElement(movieWidth, movieHeight, params, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -72,6 +88,89 @@ function doPlay()
|
||||
}
|
||||
}
|
||||
|
||||
function createIframeElement(width, height, src) {
|
||||
var iframe = document.createElement('iframe'), uri, query, id, movie = null;
|
||||
|
||||
uri = new oEditor.URI(src);
|
||||
if (uri.path && uri.path.charAt(0) !== '/') {
|
||||
uri.path = '/' + uri.path;
|
||||
}
|
||||
|
||||
switch (uri.authority) {
|
||||
case 'youtu.be' :
|
||||
case 'youtube.com':
|
||||
case 'www.youtube.com':
|
||||
if (uri.path === '/watch' && uri.query) {
|
||||
query = uri.query.split('=');
|
||||
if (query[0] === 'v') {
|
||||
movie = '/' + query[1];
|
||||
}
|
||||
}
|
||||
if (!movie && uri.path) {
|
||||
movie = uri.path;
|
||||
if (uri.query) {
|
||||
movie += '?' + uri.query;
|
||||
}
|
||||
}
|
||||
if (movie) {
|
||||
movie = 'https://www.youtube.com/embed' + movie;
|
||||
}
|
||||
break;
|
||||
case 'vimeo.com' :
|
||||
if (uri.path) {
|
||||
movie = 'https://player.vimeo.com/video' + uri.path;
|
||||
}
|
||||
break;
|
||||
case 'afree.ca' :
|
||||
if (uri.path) {
|
||||
movie = 'http://play.afreecatv.com' + uri.path + '/embed';
|
||||
}
|
||||
break;
|
||||
case 'tv.naver.com' :
|
||||
if (uri.path) {
|
||||
id = uri.path.substring(uri.path.lastIndexOf('/'));
|
||||
movie = 'https://tv.naver.com/embed' + id + '?autoPlay=true';
|
||||
}
|
||||
break;
|
||||
case 'tv.kakao.com' :
|
||||
if (uri.path) {
|
||||
id = uri.path.substring(uri.path.lastIndexOf('/'));
|
||||
movie = 'https://tv.kakao.com/embed/player/cliplink' + id;
|
||||
}
|
||||
break;
|
||||
default :
|
||||
movie = null;
|
||||
}
|
||||
if (!movie) {
|
||||
return null;
|
||||
}
|
||||
|
||||
iframe.setAttribute('width', width);
|
||||
iframe.setAttribute('height', height);
|
||||
iframe.setAttribute('frameborder', "0");
|
||||
iframe.setAttribute('allowfullscreen', "true");
|
||||
iframe.setAttribute('src', movie);
|
||||
return iframe;
|
||||
}
|
||||
|
||||
function createEmbedElement(width, height, params, src) {
|
||||
var embed = document.createElement('embed'), i;
|
||||
|
||||
embed.setAttribute("type", "application/x-shockwave-flash");
|
||||
embed.setAttribute('width', width);
|
||||
embed.setAttribute('height', height);
|
||||
|
||||
if (src) {
|
||||
embed.setAttribute('src', src);
|
||||
}
|
||||
|
||||
for (i = 0; i < params.length; i++) {
|
||||
embed.setAttribute(params[i].key, params[i].val);
|
||||
}
|
||||
|
||||
return embed;
|
||||
}
|
||||
|
||||
function popupClose() {
|
||||
document.getElementById('fm_player').innerHTML = '';
|
||||
oEditor.popupWinCancel();
|
||||
@@ -79,13 +178,17 @@ function popupClose() {
|
||||
|
||||
function doSubmit()
|
||||
{
|
||||
var source = String(oEditor.trimSpace(document.getElementById("fm_embed").value));
|
||||
var source = getSource();
|
||||
if (source === '') {
|
||||
popupClose();
|
||||
}
|
||||
if (!showMovie) {
|
||||
document.getElementById('fm_player').style.visibility = 'hidden';
|
||||
doPlay();
|
||||
}
|
||||
|
||||
if (iframeSource || source.indexOf("iframe") !== -1) {
|
||||
oEditor.insertHtmlPopup(source);
|
||||
if (iframeSource) {
|
||||
oEditor.insertHtmlPopup(iframeSource);
|
||||
} else {
|
||||
oEditor.insertFlash(source);
|
||||
}
|
||||
@@ -93,3 +196,4 @@ function doSubmit()
|
||||
document.getElementById('fm_player').innerHTML = '';
|
||||
oEditor.popupWinClose();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,9 @@ var oEditor = null,
|
||||
mapWidth = 512,
|
||||
mapHeight = 320,
|
||||
panorama,
|
||||
panoramaVisible = false;
|
||||
panoramaVisible = false,
|
||||
marker,
|
||||
staticMapsAPI = 'STATIC_MAPS_API_KEY';
|
||||
|
||||
function doSubmit() {
|
||||
var mapImg = document.createElement("img"),
|
||||
@@ -29,10 +31,9 @@ function doSubmit() {
|
||||
mapImg.style.width = mapWidth + 'px';
|
||||
mapImg.style.height = mapHeight + 'px';
|
||||
mapImg.style.border = '1px #000 solid';
|
||||
mapImg.setAttribute("alt", "Google Map");
|
||||
mapImg.setAttribute('alt', 'Google Map');
|
||||
mapImg.onload = function () {
|
||||
oEditor.insertHtmlPopup(mapImg);
|
||||
oEditor.setImageEvent(true);
|
||||
oEditor.popupWinClose();
|
||||
};
|
||||
|
||||
@@ -41,42 +42,46 @@ function doSubmit() {
|
||||
panoramaHeading = panorama.getPov().heading;
|
||||
panoramaZoom = panorama.getPov().zoom;
|
||||
panoramaPosition = panorama.getPosition();
|
||||
|
||||
mapImg.src = "http://maps.googleapis.com/maps/api/streetview?location=" + panoramaPosition +
|
||||
mapImg.src = "http://maps.googleapis.com/maps/api/streetview?" +
|
||||
"location=" + panoramaPosition.lat() + ',' + panoramaPosition.lng() +
|
||||
"&pitch=" + panoramaPitch +
|
||||
"&heading=" + panoramaHeading +
|
||||
"&size=" + mapWidth + 'x' + mapHeight +
|
||||
"&zoom=" + panoramaZoom +
|
||||
"&sensor=false" +
|
||||
"®ion=KR";
|
||||
"®ion=KR" +
|
||||
"&key=" + staticMapsAPI;
|
||||
} else {
|
||||
mapImg.src = "http://maps.google.com/maps/api/staticmap?center=" + centerLat + ',' + centerLng +
|
||||
mapImg.src = "http://maps.google.com/maps/api/staticmap?" +
|
||||
"center=" + centerLat + ',' + centerLng +
|
||||
"&zoom=" + setZoom +
|
||||
"&size=" + mapWidth + 'x' + mapHeight +
|
||||
"&maptype=" + mapType +
|
||||
//"&markers=" + marker_lat + ',' + marker_lng +
|
||||
"&markers=" + marker_lat + ',' + marker_lng +
|
||||
"&sensor=false" +
|
||||
"&language=ko" +
|
||||
"®ion=KR";
|
||||
"®ion=KR" +
|
||||
"&key=" + staticMapsAPI;
|
||||
}
|
||||
}
|
||||
|
||||
function searchAddress() {
|
||||
var address = document.getElementById('fm_address').value,
|
||||
geocoder = new google.maps.Geocoder();
|
||||
//var results, status;
|
||||
//var marker = new google.maps.Marker({ 'map': map, 'draggable': true });
|
||||
|
||||
geocoder.geocode({'address' : address},
|
||||
function (results, status) {
|
||||
if (status === google.maps.GeocoderStatus.OK) {
|
||||
centerLat = results[0].geometry.location.lat();
|
||||
centerLng = results[0].geometry.location.lng();
|
||||
latlng = new google.maps.LatLng(centerLat, centerLng);
|
||||
map.setCenter(latlng);
|
||||
map.setZoom(setZoom);
|
||||
}
|
||||
});
|
||||
function (results, status) {
|
||||
if (status === google.maps.GeocoderStatus.OK) {
|
||||
centerLat = results[0].geometry.location.lat();
|
||||
centerLng = results[0].geometry.location.lng();
|
||||
latlng = new google.maps.LatLng(centerLat, centerLng);
|
||||
map.setCenter(latlng);
|
||||
map.setZoom(setZoom);
|
||||
marker = new google.maps.Marker({ 'map': map, 'draggable': true, 'position': latlng,
|
||||
animation: google.maps.Animation.DROP});
|
||||
marker.setMap(map);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function initMap(zoom) {
|
||||
|
||||
@@ -36,7 +36,8 @@ var activeImage = null,
|
||||
uploadImagePath = '',
|
||||
uploadMaxNumber = 12,
|
||||
uploadScript,
|
||||
useWebGL = false;
|
||||
useWebGL = false,
|
||||
supportImageOrientation;
|
||||
|
||||
if (ArrayBuffer && !ArrayBuffer.prototype.slice) {
|
||||
ArrayBuffer.prototype.slice = function (start, end) {
|
||||
@@ -437,11 +438,6 @@ function fileFilterError(file) {
|
||||
"gif, png, jpg, webp 사진 파일만 전송할 수 있습니다.");
|
||||
}
|
||||
|
||||
function explorerFileFilterError(file) {
|
||||
alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" +
|
||||
"익스플로러 환경에서는 gif, png, jpg 사진 파일만 \n전송할 수 있습니다.");
|
||||
}
|
||||
|
||||
function imgComplete(img, imgSize, boxId) {
|
||||
var resizeW, resizeH, M, elem;
|
||||
img.setAttribute("border", '0');
|
||||
@@ -929,7 +925,7 @@ function DoUpload() {
|
||||
|
||||
blob = new Blob();
|
||||
for (key in blob) {
|
||||
if (blob.hasOwnProperty(key)) {
|
||||
if ({}.hasOwnProperty.call(blob, key)) {
|
||||
(function (key) {
|
||||
Object.defineProperty(MYBLOB.prototype,
|
||||
key,
|
||||
@@ -967,13 +963,7 @@ DoUpload.prototype = {
|
||||
file = files[i];
|
||||
|
||||
if (!file.type.match(fileTypeRe)) {
|
||||
// 엣지를 제외한 ie브라우저인지 체크
|
||||
var agent = navigator.userAgent.toLowerCase();
|
||||
if (agent.indexOf('trident') != -1 || agent.indexOf("msie") != -1) {
|
||||
explorerFileFilterError(file.name);
|
||||
} else {
|
||||
FileFilterError(file.name);
|
||||
}
|
||||
fileFilterError(file.name);
|
||||
continue;
|
||||
}
|
||||
this.list.push(file);
|
||||
@@ -1032,15 +1022,22 @@ DoUpload.prototype = {
|
||||
offset = 2,
|
||||
marker, little, tags, i;
|
||||
|
||||
// JPEG가 아닌 경우, 알 수 없음
|
||||
if (view.getUint16(0, false) !== 0xffd8) {
|
||||
return -2;
|
||||
}
|
||||
|
||||
while (offset < length) {
|
||||
// 알 수 없음
|
||||
if (view.getUint16(offset + 2, false) <= 8) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
marker = view.getUint16(offset, false);
|
||||
offset += 2;
|
||||
|
||||
if (marker === 0xffe1) {
|
||||
// 알 수 없음
|
||||
if (view.getUint32(offset += 2, false) !== 0x45786966) {
|
||||
return -1;
|
||||
}
|
||||
@@ -1061,7 +1058,7 @@ DoUpload.prototype = {
|
||||
offset += view.getUint16(offset, false);
|
||||
}
|
||||
}
|
||||
|
||||
// 알 수 없음
|
||||
return -1;
|
||||
},
|
||||
|
||||
@@ -1076,7 +1073,7 @@ DoUpload.prototype = {
|
||||
|| window.MSBlobBuilder;
|
||||
|
||||
if (e.name === 'TypeError' && window.BlobBuilder) {
|
||||
blobb = new BlobBuilder();
|
||||
// eslint-disable-next-line no-undef
|
||||
blobb.append(data);
|
||||
blob = blobb.getBlob(datatype);
|
||||
console.log("TypeError");
|
||||
@@ -1089,50 +1086,46 @@ DoUpload.prototype = {
|
||||
return blob;
|
||||
},
|
||||
|
||||
imageResize : function (image, filetype, resizeWidth, orientation, addWaterMark) {
|
||||
var canvas, source_w = image.width, source_h = image.height,
|
||||
resize_h, resize_w, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
|
||||
imageResize : function (image, filetype, resize_w, orientation, addWaterMark) {
|
||||
var canvas = document.createElement("canvas"),
|
||||
ctx = canvas.getContext("2d"),
|
||||
source_w = image.width,
|
||||
source_h = image.height,
|
||||
resize_h, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
|
||||
source_img, resize_img, source_data, resize_data, j, i,
|
||||
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r, center_x, center_y, x_start, x_stop,
|
||||
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x,
|
||||
ctx, gl, imageData = null;
|
||||
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r,
|
||||
center_x, center_y, x_start, x_stop,
|
||||
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x, gl, imageData = null;
|
||||
|
||||
// 카메라 로테이션 보정
|
||||
if (orientation > 0) {
|
||||
canvas = document.createElement("canvas");
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
ctx = canvas.getContext("2d");
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
ctx.save();
|
||||
if (orientation > 0 && !supportImageOrientation) {
|
||||
if ([5,6,7,8].indexOf(orientation) > -1) {
|
||||
canvas.width = source_h;
|
||||
canvas.height = source_w;
|
||||
} else {
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
}
|
||||
|
||||
switch (orientation) {
|
||||
case 2 :
|
||||
ctx.translate(-1, 0, 0, 1, canvas.width, 0); break;
|
||||
case 3 :
|
||||
ctx.translate(-1, 0, 0, -1, canvas.width, canvas.height); break;
|
||||
case 4 :
|
||||
ctx.translate(1, 0, 0, -1, 0, canvas.height); break;
|
||||
case 5 :
|
||||
ctx.translate(0, 1, 1, 0, 0, 0); break;
|
||||
case 6 :
|
||||
ctx.translate(0, 1, -1, 0, canvas.height, 0); break;
|
||||
case 7 :
|
||||
ctx.translate(0, -1, -1, 0, canvas.height, canvas.width); break;
|
||||
case 8 :
|
||||
ctx.translate(0, -1, 1, 0, 0, canvas.width); break;
|
||||
case 2 : ctx.transform(-1, 0, 0, 1, source_w, 0); break;
|
||||
case 3 : ctx.transform(-1, 0, 0, -1, source_w, source_h); break;
|
||||
case 4 : ctx.transform(1, 0, 0, -1, 0, source_h); break;
|
||||
case 5 : ctx.transform(0, 1, 1, 0, 0, 0); break;
|
||||
case 6 : ctx.transform(0, 1, -1, 0, source_h, 0); break;
|
||||
case 7 : ctx.transform(0, -1, -1, 0, source_h, source_w); break;
|
||||
case 8 : ctx.transform(0, -1, 1, 0, 0, source_w); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
ctx.drawImage(image, 0, 0);
|
||||
ctx.drawImage(image, 0, 0, source_w, source_h);
|
||||
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
||||
ctx.restore();
|
||||
source_w = canvas.width;
|
||||
source_h = canvas.height;
|
||||
}
|
||||
|
||||
if (source_w > resizeWidth) {
|
||||
resize_w = resizeWidth;
|
||||
if (source_w > resize_w) {
|
||||
resize_h = Math.ceil(resize_w / source_w * source_h);
|
||||
|
||||
try {
|
||||
@@ -1143,8 +1136,6 @@ DoUpload.prototype = {
|
||||
canvas = gl_canvas;
|
||||
});
|
||||
} catch (ignore) {
|
||||
canvas = document.createElement("canvas");
|
||||
ctx = canvas.getContext("2d");
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
|
||||
@@ -1216,14 +1207,10 @@ DoUpload.prototype = {
|
||||
canvas.height = resize_h;
|
||||
ctx.putImageData(resize_img, 0, 0);
|
||||
}
|
||||
|
||||
} else {
|
||||
canvas = document.createElement("canvas"),
|
||||
canvas.width = source_w; canvas.height = source_h;
|
||||
ctx = canvas.getContext("2d");
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
ctx.drawImage(image, 0, 0);
|
||||
resize_h = source_h;
|
||||
resize_w = source_w;
|
||||
}
|
||||
|
||||
if (this.reader.watermark && addWaterMark) {
|
||||
@@ -1276,7 +1263,8 @@ DoUpload.prototype = {
|
||||
filename = evt.target.file.name,
|
||||
filetype = evt.target.file.type,
|
||||
file = evt.target.file,
|
||||
blob, image, orientation = 1, slice = 64 * 1024;
|
||||
blob, image, orientation = 1,
|
||||
slice = 64 * 1024;
|
||||
|
||||
if (slice > file.size - 1) {
|
||||
slice = file.size;
|
||||
@@ -1298,12 +1286,12 @@ DoUpload.prototype = {
|
||||
|
||||
xhr.open('POST', uploadScript, true);
|
||||
|
||||
if (imageResizeWidth > 0) {
|
||||
fileFormat = filename.substring(filename.lastIndexOf('.'));
|
||||
if (imageResizeWidth > 0 && fileFormat !== '.gif') {
|
||||
bitmapData = self.imageResize(this, filetype, imageResizeWidth, orientation, true);
|
||||
file = self.canvasToBlob(bitmapData, filetype);
|
||||
}
|
||||
|
||||
fileFormat = filename.substring(filename.lastIndexOf('.'));
|
||||
randomName = self.makeFilename(fileFormat);
|
||||
|
||||
data.append('origname', filename);
|
||||
@@ -1375,7 +1363,6 @@ DoUpload.prototype = {
|
||||
blob = null;
|
||||
xhr.send(data);
|
||||
};
|
||||
|
||||
image.src = blob.getURL();
|
||||
}
|
||||
},
|
||||
@@ -1484,7 +1471,7 @@ function setResizeWidth() {
|
||||
}
|
||||
|
||||
function init(dialog) {
|
||||
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon;
|
||||
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon, testImg;
|
||||
|
||||
oEditor = this;
|
||||
oEditor.dialog = dialog;
|
||||
@@ -1588,8 +1575,24 @@ function init(dialog) {
|
||||
xhr_f.send();
|
||||
xhr_v.send();
|
||||
}
|
||||
|
||||
glicon = new Image();
|
||||
glicon.className = 'webgl_logo';
|
||||
glicon.src = uploadImagePath + (useWebGL ? "/webgl.png" : "/webgl-off.png");
|
||||
document.getElementById('webgl_logo_wrapper').appendChild(glicon);
|
||||
|
||||
// 브라우저가 사진 Orientation 보정을 자동으로 지원하지는지 확인
|
||||
testImg = new Image();
|
||||
testImg.onload = function () {
|
||||
supportImageOrientation = testImg.width === 2 && testImg.height === 3;
|
||||
};
|
||||
testImg.src =
|
||||
'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +
|
||||
'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +
|
||||
'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +
|
||||
'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/x' +
|
||||
'ABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAA' +
|
||||
'AAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQ' +
|
||||
'voP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXw' +
|
||||
'H/9k=';
|
||||
}
|
||||
|
||||
@@ -35,8 +35,9 @@ var activeImage = null,
|
||||
tmpTop = 0,
|
||||
uploadImagePath = '',
|
||||
uploadMaxNumber = 12,
|
||||
uploadScript;
|
||||
useWebGL = false;
|
||||
uploadScript,
|
||||
useWebGL = false,
|
||||
supportImageOrientation;
|
||||
|
||||
if (ArrayBuffer && !ArrayBuffer.prototype.slice) {
|
||||
ArrayBuffer.prototype.slice = function (start, end) {
|
||||
@@ -434,12 +435,7 @@ function startUpload(list) {
|
||||
|
||||
function fileFilterError(file) {
|
||||
alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" +
|
||||
"gif, png, jpg, webp 사진 파일만 전송할 수 있습니다.");
|
||||
}
|
||||
|
||||
function explorerFileFilterError(file) {
|
||||
alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" +
|
||||
"익스플로러 환경에서는 gif, png, jpg 사진 파일만 \n전송할 수 있습니다.");
|
||||
"gif, png, jpg 사진 파일만 전송할 수 있습니다.");
|
||||
}
|
||||
|
||||
function imgComplete(img, imgSize, boxId) {
|
||||
@@ -967,16 +963,10 @@ DoUpload.prototype = {
|
||||
file = files[i];
|
||||
|
||||
if (!file.type.match(fileTypeRe)) {
|
||||
// 엣지를 제외한 ie브라우저인지 체크
|
||||
var agent = navigator.userAgent.toLowerCase();
|
||||
if (agent.indexOf('trident') != -1 || agent.indexOf("msie") != -1) {
|
||||
explorerFileFilterError(file.name);
|
||||
} else {
|
||||
FileFilterError(file.name);
|
||||
}
|
||||
fileFilterError(file.name);
|
||||
continue;
|
||||
}
|
||||
this.list.push(file);
|
||||
this.list.push(file);
|
||||
}
|
||||
|
||||
if (this.list.length < 1) {
|
||||
@@ -1089,50 +1079,46 @@ DoUpload.prototype = {
|
||||
return blob;
|
||||
},
|
||||
|
||||
imageResize : function (image, filetype, resizeWidth, orientation, addWaterMark) {
|
||||
var canvas, source_w = image.width, source_h = image.height,
|
||||
resize_h, resize_w, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
|
||||
imageResize : function (image, filetype, resize_w, orientation, addWaterMark) {
|
||||
var canvas = document.createElement("canvas"),
|
||||
ctx = canvas.getContext("2d"),
|
||||
source_w = image.width,
|
||||
source_h = image.height,
|
||||
resize_h, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
|
||||
source_img, resize_img, source_data, resize_data, j, i,
|
||||
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r, center_x, center_y, x_start, x_stop,
|
||||
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x,
|
||||
ctx, gl, imageData = null;
|
||||
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r,
|
||||
center_x, center_y, x_start, x_stop,
|
||||
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x, gl, imageData = null;
|
||||
|
||||
// 카메라 로테이션 보정
|
||||
if (orientation > 0) {
|
||||
canvas = document.createElement("canvas");
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
ctx = canvas.getContext("2d");
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
ctx.save();
|
||||
if (orientation > 0 && !supportImageOrientation) {
|
||||
if ([5,6,7,8].indexOf(orientation) > -1) {
|
||||
canvas.width = source_h;
|
||||
canvas.height = source_w;
|
||||
} else {
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
}
|
||||
|
||||
switch (orientation) {
|
||||
case 2 :
|
||||
ctx.translate(-1, 0, 0, 1, canvas.width, 0); break;
|
||||
case 3 :
|
||||
ctx.translate(-1, 0, 0, -1, canvas.width, canvas.height); break;
|
||||
case 4 :
|
||||
ctx.translate(1, 0, 0, -1, 0, canvas.height); break;
|
||||
case 5 :
|
||||
ctx.translate(0, 1, 1, 0, 0, 0); break;
|
||||
case 6 :
|
||||
ctx.translate(0, 1, -1, 0, canvas.height, 0); break;
|
||||
case 7 :
|
||||
ctx.translate(0, -1, -1, 0, canvas.height, canvas.width); break;
|
||||
case 8 :
|
||||
ctx.translate(0, -1, 1, 0, 0, canvas.width); break;
|
||||
case 2 : ctx.transform(-1, 0, 0, 1, source_w, 0); break;
|
||||
case 3 : ctx.transform(-1, 0, 0, -1, source_w, source_h); break;
|
||||
case 4 : ctx.transform(1, 0, 0, -1, 0, source_h); break;
|
||||
case 5 : ctx.transform(0, 1, 1, 0, 0, 0); break;
|
||||
case 6 : ctx.transform(0, 1, -1, 0, source_h, 0); break;
|
||||
case 7 : ctx.transform(0, -1, -1, 0, source_h, source_w); break;
|
||||
case 8 : ctx.transform(0, -1, 1, 0, 0, source_w); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
ctx.drawImage(image, 0, 0);
|
||||
ctx.drawImage(image, 0, 0, source_w, source_h);
|
||||
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
||||
ctx.restore();
|
||||
source_w = canvas.width;
|
||||
source_h = canvas.height;
|
||||
}
|
||||
|
||||
if (source_w > resizeWidth) {
|
||||
resize_w = resizeWidth;
|
||||
if (source_w > resize_w) {
|
||||
resize_h = Math.ceil(resize_w / source_w * source_h);
|
||||
|
||||
try {
|
||||
@@ -1143,8 +1129,6 @@ DoUpload.prototype = {
|
||||
canvas = gl_canvas;
|
||||
});
|
||||
} catch (ignore) {
|
||||
canvas = document.createElement("canvas");
|
||||
ctx = canvas.getContext("2d");
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
|
||||
@@ -1216,14 +1200,10 @@ DoUpload.prototype = {
|
||||
canvas.height = resize_h;
|
||||
ctx.putImageData(resize_img, 0, 0);
|
||||
}
|
||||
|
||||
} else {
|
||||
canvas = document.createElement("canvas"),
|
||||
canvas.width = source_w; canvas.height = source_h;
|
||||
ctx = canvas.getContext("2d");
|
||||
canvas.width = source_w;
|
||||
canvas.height = source_h;
|
||||
ctx.drawImage(image, 0, 0);
|
||||
resize_h = source_h;
|
||||
resize_w = source_w;
|
||||
}
|
||||
|
||||
if (this.reader.watermark && addWaterMark) {
|
||||
@@ -1484,7 +1464,7 @@ function setResizeWidth() {
|
||||
}
|
||||
|
||||
function init(dialog) {
|
||||
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon;
|
||||
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon, testImg;
|
||||
|
||||
oEditor = this;
|
||||
oEditor.dialog = dialog;
|
||||
@@ -1556,11 +1536,6 @@ function init(dialog) {
|
||||
}
|
||||
}
|
||||
|
||||
if (browser.mobile) {
|
||||
input = document.getElementById('inputImageUpload');
|
||||
input.setAttribute('capture', 'filesystem');
|
||||
}
|
||||
|
||||
tmpcanvas = document.createElement('canvas');
|
||||
if (tmpcanvas.getContext('webgl', {preserveDrawingBuffer: true}) ||
|
||||
tmpcanvas.getContext('experimental-webgl', {preserveDrawingBuffer: true}))
|
||||
@@ -1588,8 +1563,24 @@ function init(dialog) {
|
||||
xhr_f.send();
|
||||
xhr_v.send();
|
||||
}
|
||||
|
||||
glicon = new Image();
|
||||
glicon.className = 'webgl_logo';
|
||||
glicon.src = uploadImagePath + (useWebGL ? "/webgl.png" : "/webgl-off.png");
|
||||
document.getElementById('webgl_logo_wrapper').appendChild(glicon);
|
||||
|
||||
// 브라우저가 사진 Orientation 보정을 자동으로 지원하지는지 확인
|
||||
testImg = new Image();
|
||||
testImg.onload = function () {
|
||||
supportImageOrientation = testImg.width === 2 && testImg.height === 3;
|
||||
};
|
||||
testImg.src =
|
||||
'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +
|
||||
'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +
|
||||
'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +
|
||||
'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/x' +
|
||||
'ABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAA' +
|
||||
'AAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQ' +
|
||||
'voP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXw' +
|
||||
'H/9k=';
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!ELEMENT Template (Container|PopupWindow|Toolbar)*>
|
||||
<!ELEMENT Container (Html)*>
|
||||
<!ELEMENT Html (#PCDATA)>
|
||||
<!ELEMENT PopupWindow (Html)*>
|
||||
<!ELEMENT Toolbar (Image|Group)*>
|
||||
<!ELEMENT Image EMPTY>
|
||||
<!ATTLIST Image
|
||||
file CDATA #IMPLIED
|
||||
>
|
||||
<!ELEMENT Group (Button)*>
|
||||
<!ATTLIST Group
|
||||
name CDATA #IMPLIED
|
||||
>
|
||||
<!ELEMENT Button (Attribute)*>
|
||||
<!ATTLIST Button
|
||||
name CDATA #IMPLIED
|
||||
tooltip CDATA #IMPLIED
|
||||
>
|
||||
<!ELEMENT Attribute (Icon|Execution)*>
|
||||
<!ATTLIST Attribute
|
||||
class CDATA #IMPLIED
|
||||
width CDATA #IMPLIED
|
||||
height CDATA #IMPLIED
|
||||
check CDATA #IMPLIED
|
||||
default CDATA #IMPLIED
|
||||
use CDATA #IMPLIED
|
||||
type CDATA #IMPLIED
|
||||
node CDATA #IMPLIED
|
||||
>
|
||||
<!ELEMENT Icon EMPTY>
|
||||
<!ATTLIST Icon
|
||||
position CDATA #IMPLIED
|
||||
width CDATA #IMPLIED
|
||||
class CDATA #IMPLIED
|
||||
margin CDATA #IMPLIED
|
||||
alt CDATA #IMPLIED
|
||||
>
|
||||
<!ELEMENT Execution EMPTY>
|
||||
<!ATTLIST Execution
|
||||
method CDATA #IMPLIED
|
||||
value CDATA #IMPLIED
|
||||
>
|
||||
@@ -315,7 +315,7 @@ class Services_JSON
|
||||
*/
|
||||
for ($c = 0; $c < $strlen_var; ++$c) {
|
||||
|
||||
$ord_var_c = ord($var{$c});
|
||||
$ord_var_c = ord($var[$c]);
|
||||
|
||||
switch (true) {
|
||||
case $ord_var_c == 0x08:
|
||||
@@ -338,12 +338,12 @@ class Services_JSON
|
||||
case $ord_var_c == 0x2F:
|
||||
case $ord_var_c == 0x5C:
|
||||
// double quote, slash, slosh
|
||||
$ascii .= '\\'.$var{$c};
|
||||
$ascii .= '\\'.$var[$c];
|
||||
break;
|
||||
|
||||
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
|
||||
// characters U-00000000 - U-0000007F (same as ASCII)
|
||||
$ascii .= $var{$c};
|
||||
$ascii .= $var[$c];
|
||||
break;
|
||||
|
||||
case (($ord_var_c & 0xE0) == 0xC0):
|
||||
@@ -355,7 +355,7 @@ class Services_JSON
|
||||
break;
|
||||
}
|
||||
|
||||
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
|
||||
$char = pack('C*', $ord_var_c, ord($var[$c + 1]));
|
||||
$c += 1;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -370,8 +370,8 @@ class Services_JSON
|
||||
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
@ord($var{$c + 1}),
|
||||
@ord($var{$c + 2}));
|
||||
@ord($var[$c + 1]),
|
||||
@ord($var[$c + 2]));
|
||||
$c += 2;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -386,9 +386,9 @@ class Services_JSON
|
||||
// characters U-00010000 - U-001FFFFF, mask 11110XXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}));
|
||||
ord($var[$c + 1]),
|
||||
ord($var[$c + 2]),
|
||||
ord($var[$c + 3]));
|
||||
$c += 3;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -403,10 +403,10 @@ class Services_JSON
|
||||
break;
|
||||
}
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}),
|
||||
ord($var{$c + 4}));
|
||||
ord($var[$c + 1]),
|
||||
ord($var[$c + 2]),
|
||||
ord($var[$c + 3]),
|
||||
ord($var[$c + 4]));
|
||||
$c += 4;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -421,11 +421,11 @@ class Services_JSON
|
||||
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}),
|
||||
ord($var{$c + 4}),
|
||||
ord($var{$c + 5}));
|
||||
ord($var[$c + 1]),
|
||||
ord($var[$c + 2]),
|
||||
ord($var[$c + 3]),
|
||||
ord($var[$c + 4]),
|
||||
ord($var[$c + 5]));
|
||||
$c += 5;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -618,7 +618,7 @@ class Services_JSON
|
||||
for ($c = 0; $c < $strlen_chrs; ++$c) {
|
||||
|
||||
$substr_chrs_c_2 = $this->substr8($chrs, $c, 2);
|
||||
$ord_chrs_c = ord($chrs{$c});
|
||||
$ord_chrs_c = ord($chrs[$c]);
|
||||
|
||||
switch (true) {
|
||||
case $substr_chrs_c_2 == '\b':
|
||||
@@ -648,7 +648,7 @@ class Services_JSON
|
||||
case $substr_chrs_c_2 == '\\/':
|
||||
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
|
||||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
|
||||
$utf8 .= $chrs{++$c};
|
||||
$utf8 .= $chrs[++$c];
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -661,7 +661,7 @@ class Services_JSON
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
|
||||
$utf8 .= $chrs{$c};
|
||||
$utf8 .= $chrs[$c];
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c & 0xE0) == 0xC0:
|
||||
@@ -708,7 +708,7 @@ class Services_JSON
|
||||
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
|
||||
// array, or object notation
|
||||
|
||||
if ($str{0} == '[') {
|
||||
if ($str[0] == '[') {
|
||||
$stk = array(SERVICES_JSON_IN_ARR);
|
||||
$arr = array();
|
||||
} else {
|
||||
@@ -747,7 +747,7 @@ class Services_JSON
|
||||
$top = end($stk);
|
||||
$substr_chrs_c_2 = $this->substr8($chrs, $c, 2);
|
||||
|
||||
if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
|
||||
if (($c == $strlen_chrs) || (($chrs[$c] == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
|
||||
// found a comma that is not inside a string, array, etc.,
|
||||
// OR we've reached the end of the character list
|
||||
$slice = $this->substr8($chrs, $top['where'], ($c - $top['where']));
|
||||
@@ -788,12 +788,12 @@ class Services_JSON
|
||||
|
||||
}
|
||||
|
||||
} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
|
||||
} elseif ((($chrs[$c] == '"') || ($chrs[$c] == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
|
||||
// found a quote, and we are not inside a string
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs[$c]));
|
||||
//print("Found start of string at {$c}\n");
|
||||
|
||||
} elseif (($chrs{$c} == $top['delim']) &&
|
||||
} elseif (($chrs[$c] == $top['delim']) &&
|
||||
($top['what'] == SERVICES_JSON_IN_STR) &&
|
||||
(($this->strlen8($this->substr8($chrs, 0, $c)) - $this->strlen8(rtrim($this->substr8($chrs, 0, $c), '\\'))) % 2 != 1)) {
|
||||
// found a quote, we're in a string, and it's not escaped
|
||||
@@ -802,24 +802,24 @@ class Services_JSON
|
||||
array_pop($stk);
|
||||
//print("Found end of string at {$c}: ".$this->substr8($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
|
||||
|
||||
} elseif (($chrs{$c} == '[') &&
|
||||
} elseif (($chrs[$c] == '[') &&
|
||||
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
||||
// found a left-bracket, and we are in an array, object, or slice
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
|
||||
//print("Found start of array at {$c}\n");
|
||||
|
||||
} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
|
||||
} elseif (($chrs[$c] == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
|
||||
// found a right-bracket, and we're in an array
|
||||
array_pop($stk);
|
||||
//print("Found end of array at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
||||
|
||||
} elseif (($chrs{$c} == '{') &&
|
||||
} elseif (($chrs[$c] == '{') &&
|
||||
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
||||
// found a left-brace, and we are in an array, object, or slice
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
|
||||
//print("Found start of object at {$c}\n");
|
||||
|
||||
} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
|
||||
} elseif (($chrs[$c] == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
|
||||
// found a right-brace, and we're in an object
|
||||
array_pop($stk);
|
||||
//print("Found end of object at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
||||
|
||||
@@ -12,9 +12,9 @@ if($config['cf_cert_use'] == 2) { // 실서비스 일때
|
||||
$mTxId ='SIR_'.$max_cr_id;
|
||||
certify_count_check($member['mb_id'], 'simple'); // 금일 인증시도 횟수 체크
|
||||
} else { // 테스트 일때
|
||||
$mid = "INIiasTest";
|
||||
$apiKey = "TGdxb2l3enJDWFRTbTgvREU3MGYwUT09";
|
||||
$mTxId ='test_'.$max_cr_id;
|
||||
$mid = "SRAiasTest";
|
||||
$apiKey = "43700dfd4c795fe9550853aef3b6aaf1";
|
||||
$mTxId ='SIR_'.$max_cr_id;
|
||||
}
|
||||
$reqSvcCd ='01';
|
||||
|
||||
|
||||
@@ -211,14 +211,17 @@ $ct_cert->mf_clear();
|
||||
|
||||
var $opener = window.opener;
|
||||
var is_mobile = false;
|
||||
$opener.name="parentPage";
|
||||
$opener.name="parentPage";
|
||||
|
||||
// 안드로이드 웹뷰에서 거의 다 새창을 지원하므로 더 이상 iframe 을 사용하지 않습니다.
|
||||
/*
|
||||
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
|
||||
$opener = window.parent;
|
||||
is_mobile = true;
|
||||
} else {
|
||||
$opener = window.opener;
|
||||
}
|
||||
*/
|
||||
|
||||
// up_hash 검증
|
||||
if( document.mbFindForm.up_hash.value != $opener.$("input[name=veri_up_hash]").val() ) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user