g4s merge 충돌 수정

This commit is contained in:
chicpro
2013-07-31 15:32:25 +09:00
15 changed files with 417 additions and 75 deletions

View File

@ -333,6 +333,13 @@ $pg_anchor = '<ul class="anchor">
<input type="checkbox" name="cf_use_copy_log" value="1" id="cf_use_copy_log" <?php echo $config['cf_use_copy_log']?'checked':''; ?>> 남김 <input type="checkbox" name="cf_use_copy_log" value="1" id="cf_use_copy_log" <?php echo $config['cf_use_copy_log']?'checked':''; ?>> 남김
</td> </td>
</tr> </tr>
<tr>
<th scope="row"><label for="cf_point_term">포인트 유효기간</label></th>
<td colspan="3">
<?php echo help('기간을 0으로 설정시 포인트 유효기간이 적용되지 않습니다.') ?>
<input type="text" name="cf_point_term" value="<?php echo $config['cf_point_term']; ?>" id="cf_point_term" required class="required frm_input" size="5"> 일
</td>
</tr>
<tr> <tr>
<th scope="row"><label for="cf_possible_ip">접근가능 IP</label></th> <th scope="row"><label for="cf_possible_ip">접근가능 IP</label></th>
<td> <td>

View File

@ -23,6 +23,7 @@ $sql = " update {$g4['config_table']}
cf_include_tail = '{$_POST['cf_include_tail']}', cf_include_tail = '{$_POST['cf_include_tail']}',
cf_add_script = '{$_POST['cf_add_script']}', cf_add_script = '{$_POST['cf_add_script']}',
cf_use_point = '{$_POST['cf_use_point']}', cf_use_point = '{$_POST['cf_use_point']}',
cf_point_term = '{$_POST['cf_point_term']}',
cf_use_norobot = '{$_POST['cf_use_norobot']}', cf_use_norobot = '{$_POST['cf_use_norobot']}',
cf_use_copy_log = '{$_POST['cf_use_copy_log']}', cf_use_copy_log = '{$_POST['cf_use_copy_log']}',
cf_use_email_certify = '{$_POST['cf_use_email_certify']}', cf_use_email_certify = '{$_POST['cf_use_email_certify']}',

View File

@ -9,6 +9,7 @@ $token = get_token();
$sql_common = " from {$g4['point_table']} "; $sql_common = " from {$g4['point_table']} ";
$sql_search = " where (1) "; $sql_search = " where (1) ";
if ($stx) { if ($stx) {
$sql_search .= " and ( "; $sql_search .= " and ( ";
switch ($sfl) { switch ($sfl) {
@ -58,7 +59,17 @@ if ($sfl == 'mb_id' && $stx)
$g4['title'] = '포인트관리'; $g4['title'] = '포인트관리';
include_once ('./admin.head.php'); include_once ('./admin.head.php');
$colspan = 8; $colspan = 9;
$po_expire_term = '';
if($config['cf_point_term'] > 0) {
$po_expire_term = $config['cf_point_term'];
}
if (strstr($sfl, "mb_id"))
$mb_id = $stx;
else
$mb_id = "";
?> ?>
<script> <script>
@ -125,9 +136,10 @@ function point_clear()
<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> <th scope="col">포인트</th>
<th scope="col">일시</th>
<th scope="col">만료일</th>
<th scope="col">포인트합</th> <th scope="col">포인트합</th>
</tr> </tr>
</thead> </thead>
@ -146,6 +158,10 @@ function point_clear()
$link1 = '<a href="'.G4_BBS_URL.'/board.php?bo_table='.$row['po_rel_table'].'&amp;wr_id='.$row['po_rel_id'].'" target="_blank">'; $link1 = '<a href="'.G4_BBS_URL.'/board.php?bo_table='.$row['po_rel_table'].'&amp;wr_id='.$row['po_rel_id'].'" target="_blank">';
$link2 = '</a>'; $link2 = '</a>';
} }
$expr = '';
if($row['po_expired'] == 1)
$expr = ' txt_expired';
?> ?>
<tr> <tr>
@ -158,10 +174,15 @@ function point_clear()
<td class="td_mbid"><a href="?sfl=mb_id&amp;stx=<?php echo $row['mb_id'] ?>"><?php echo $row['mb_id'] ?></a></td> <td class="td_mbid"><a href="?sfl=mb_id&amp;stx=<?php echo $row['mb_id'] ?>"><?php echo $row['mb_id'] ?></a></td>
<td class="td_mbname"><?php echo $row2['mb_name'] ?></td> <td class="td_mbname"><?php echo $row2['mb_name'] ?></td>
<td class="td_name sv_use"><div><?php echo $mb_nick ?></div></td> <td class="td_name sv_use"><div><?php echo $mb_nick ?></div></td>
<td class="td_time"><?php echo $row['po_datetime'] ?></td>
<td class="td_pt_log"><?php echo $link1 ?><?php echo $row['po_content'] ?><?php echo $link2 ?></td> <td class="td_pt_log"><?php echo $link1 ?><?php echo $row['po_content'] ?><?php echo $link2 ?></td>
<td class="td_num td_pt"><?php echo number_format($row['po_point']) ?></td> <td class="td_num td_pt"><?php echo number_format($row['po_point']) ?></td>
<td class="td_bignum td_pt"><?php echo number_format($row2['mb_point']) ?></td> <td class="td_time"><?php echo $row['po_datetime'] ?></td>
<td class="td_date<?php echo $expr; ?>">
<?php if ($row['po_expired'] == 1) { ?>
만료<?php echo date('ymd', strtotime($row['po_expire_date'])); ?>
<?php } else echo $row['po_expire_date'] == '9999-12-31' ? '&nbsp;' : $row['po_expire_date']; ?>
</td>
<td class="td_num td_pt"><?php echo number_format($row['po_mb_point']) ?></td>
</tr> </tr>
<?php <?php
@ -211,6 +232,12 @@ function point_clear()
<th scope="row"><label for="po_point">포인트<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="po_point">포인트<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="po_point" id="po_point" required class="required frm_input"></td> <td><input type="text" name="po_point" id="po_point" required class="required frm_input"></td>
</tr> </tr>
<?php if($config['cf_point_term'] > 0) { ?>
<tr>
<th scope="row"><label for="po_expire_term">포인트 유효기간</label></th>
<td><input type="text" name="po_expire_term" value="<?php echo $po_expire_term; ?>" id="po_expire_term" class="frm_input" size="5"> 일</td>
</tr>
<?php } ?>
</tbody> </tbody>
</table> </table>

View File

@ -1,5 +1,5 @@
<?php <?php
$sub_menu = "200200"; $sub_menu = '200200';
include_once('./_common.php'); include_once('./_common.php');
check_demo(); check_demo();
@ -10,21 +10,48 @@ check_token();
$count = count($_POST['chk']); $count = count($_POST['chk']);
if(!$count) if(!$count)
alert($_POST['act_button']." 하실 항목을 하나 이상 체크하세요."); alert($_POST['act_button'].' 하실 항목을 하나 이상 체크하세요.');
for ($i=0; $i<$count; $i++) for ($i=0; $i<$count; $i++)
{ {
// 실제 번호를 넘김 // 실제 번호를 넘김
$k = $_POST['chk'][$i]; $k = $_POST['chk'][$i];
// 포인트 내역정보
$sql = " select * from {$g4['point_table']} where po_id = '{$_POST['po_id'][$k]}' ";
$row = sql_fetch($sql);
if(!$row['po_id'])
continue;
if($row['po_point'] < 0) {
$mb_id = $row['mb_id'];
$po_point = abs($row['po_point']);
if($row['po_rel_table'] == '@expire')
delete_expire_point($mb_id, $po_point);
else
delete_use_point($mb_id, $po_point);
} else {
if($row['po_use_point'] > 0) {
insert_use_point($row['mb_id'], $row['po_use_point'], $row['po_id']);
}
}
// 포인트 내역삭제
$sql = " delete from {$g4['point_table']} where po_id = '{$_POST['po_id'][$k]}' "; $sql = " delete from {$g4['point_table']} where po_id = '{$_POST['po_id'][$k]}' ";
sql_query($sql); sql_query($sql);
$sql = " select sum(po_point) as sum_po_point from {$g4['point_table']} where mb_id = '{$_POST['mb_id'][$k]}' "; // po_mb_point에 반영
$row = sql_fetch($sql); $sql = " update {$g4['point_table']}
$sum_point = $row['sum_po_point']; set po_mb_point = po_mb_point - '{$row['po_point']}'
where mb_id = '{$_POST['mb_id'][$k]}'
and po_id > '{$_POST['po_id'][$k]}' ";
sql_query($sql);
$sql= " update {$g4['member_table']} set mb_point = '{$sum_point}' where mb_id = '{$_POST['mb_id'][$k]}' "; // 포인트 UPDATE
$sum_point = get_point_sum($_POST['mb_id'][$k]);
$sql= " update {$g4['member_table']} set mb_point = '$sum_point' where mb_id = '{$_POST['mb_id'][$k]}' ";
sql_query($sql); sql_query($sql);
} }

View File

@ -9,6 +9,7 @@ check_token();
$mb_id = $_POST['mb_id']; $mb_id = $_POST['mb_id'];
$po_point = $_POST['po_point']; $po_point = $_POST['po_point'];
$po_content = $_POST['po_content']; $po_content = $_POST['po_content'];
$expire = preg_replace('/[^0-9]/', '', $_POST['po_expire_term']);
$mb = get_member($mb_id); $mb = get_member($mb_id);
@ -18,7 +19,7 @@ if (!$mb['mb_id'])
if (($po_point < 0) && ($po_point * (-1) > $mb['mb_point'])) if (($po_point < 0) && ($po_point * (-1) > $mb['mb_point']))
alert('포인트를 깎는 경우 현재 포인트보다 작으면 안됩니다.', './point_list.php?'.$qstr); alert('포인트를 깎는 경우 현재 포인트보다 작으면 안됩니다.', './point_list.php?'.$qstr);
insert_point($mb_id, $po_point, $po_content, '@passive', $mb_id, $member['mb_id']."-".uniqid("")); insert_point($mb_id, $po_point, $po_content, '@passive', $mb_id, $member['mb_id'].'-'.uniqid(''), $expire);
goto_url('./point_list.php?'.$qstr); goto_url('./point_list.php?'.$qstr);
?> ?>

View File

@ -101,8 +101,8 @@ while ($row = sql_fetch_array($result))
else else
{ {
// 코멘트 포인트 삭제 // 코멘트 포인트 삭제
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '코멘트')) if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '댓글'))
insert_point($row['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_id']}-{$row['wr_id']} 코멘트삭제"); insert_point($row['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_id']}-{$row['wr_id']} 댓글삭제");
$count_comment++; $count_comment++;
} }

View File

@ -114,8 +114,8 @@ for ($i=count($tmp_array)-1; $i>=0; $i--)
else else
{ {
// 코멘트 포인트 삭제 // 코멘트 포인트 삭제
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '코멘트')) if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '댓글'))
insert_point($row['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_id']}-{$row['wr_id']} 코멘트삭제"); insert_point($row['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_id']}-{$row['wr_id']} 댓글삭제");
$count_comment++; $count_comment++;
} }

View File

@ -58,9 +58,9 @@ $row = sql_fetch($sql);
if ($row['cnt'] && !$is_admin) if ($row['cnt'] && !$is_admin)
alert('이 코멘트와 관련된 답변코멘트가 존재하므로 삭제 할 수 없습니다.'); alert('이 코멘트와 관련된 답변코멘트가 존재하므로 삭제 할 수 없습니다.');
// 코멘트 삭제 // 코멘트 포인트 삭제
if (!delete_point($write['mb_id'], $bo_table, $comment_id, '댓글')) if (!delete_point($write['mb_id'], $bo_table, $comment_id, '댓글'))
insert_point($write['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_parent']}-{$comment_id} 코멘트삭제"); insert_point($write['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_parent']}-{$comment_id} 댓글삭제");
// 코멘트 삭제 // 코멘트 삭제
sql_query(" delete from {$write_table} where wr_id = '{$comment_id}' "); sql_query(" delete from {$write_table} where wr_id = '{$comment_id}' ");

View File

@ -40,6 +40,14 @@ set_session('ss_mb_id', $mb['mb_id']);
// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106 // FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
set_session('ss_mb_key', md5($mb['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'])); set_session('ss_mb_key', md5($mb['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));
// 포인트 체크
if($config['cf_use_point']) {
$sum_point = get_point_sum($mb['mb_id']);
$sql= " update {$g4['member_table']} set mb_point = '$sum_point' where mb_id = '{$mb['mb_id']}' ";
sql_query($sql);
}
// 3.26 // 3.26
// 아이디 쿠키에 한달간 저장 // 아이디 쿠키에 한달간 저장
if ($auto_login) { if ($auto_login) {

View File

@ -20,21 +20,6 @@ $rows = $config['cf_page_rows'];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산 $total_page = ceil($total_count / $rows); // 전체 페이지 계산
if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지) if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함 $from_record = ($page - 1) * $rows; // 시작 열을 구함
// 포인트소계
$sql = " select po_point
{$sql_common}
{$sql_order}
limit {$from_record}, {$rows} ";
$result = sql_query($sql);
$sum_point1 = $sum_point2 = 0;
for($i=0; $row=sql_fetch_array($result); $i++) {
if($row['po_point'] >= 0) {
$sum_point1 += $row['po_point'];
} else {
$sum_point2 += $row['po_point'];
}
}
?> ?>
<div id="point" class="new_win"> <div id="point" class="new_win">
@ -50,20 +35,9 @@ for($i=0; $row=sql_fetch_array($result); $i++) {
<th scope="col">사용포인트</th> <th scope="col">사용포인트</th>
</tr> </tr>
</thead> </thead>
<tfoot>
<tr>
<th scope="row" colspan="2">소계</th>
<td><?php echo number_format($sum_point1) ?></td>
<td><?php echo number_format($sum_point2) ?></td>
</tr>
<tr>
<th scope="row" colspan="2">보유포인트</th>
<td colspan="2"><?php echo number_format($member['mb_point']) ?></td>
</tr>
</tfoot>
<tbody> <tbody>
<?php <?php
$sum_point1 = $sum_point2 = 0; $sum_point1 = $sum_point2 = $sum_point3 = 0;
$sql = " select * $sql = " select *
{$sql_common} {$sql_common}
@ -80,12 +54,13 @@ for($i=0; $row=sql_fetch_array($result); $i++) {
$sum_point2 += $row['po_point']; $sum_point2 += $row['po_point'];
} }
$po_content = $row['po_content'];
?> ?>
<tr> <tr>
<td class="td_datetime"><?php echo $row['po_datetime'] ?></td> <td class="td_datetime"><?php echo $row['po_datetime']; ?></td>
<td><?php echo $row['po_content'] ?></td> <td><?php echo $po_content; ?></td>
<td class="td_bignum"><?php echo $point1 ?></td> <td class="td_bignum"><?php echo $point1; ?></td>
<td class="td_bignum"><?php echo $point2 ?></td> <td class="td_bignum"><?php echo $point2; ?></td>
</tr> </tr>
<?php <?php
} }
@ -99,6 +74,17 @@ for($i=0; $row=sql_fetch_array($result); $i++) {
} }
?> ?>
</tbody> </tbody>
<tfoot>
<tr>
<th scope="row" colspan="2">소계</th>
<td><?php echo $sum_point1; ?></td>
<td><?php echo $sum_point2; ?></td>
</tr>
<tr>
<th scope="row" colspan="2">보유포인트</th>
<td colspan="2"><?php echo number_format($member['mb_point']); ?></td>
</tr>
</tfoot>
</table> </table>

View File

@ -554,6 +554,7 @@ td {padding:8px 5px 6px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9
/* 공통 */ /* 공통 */
.tr_bg {background:#f5f6fa} .tr_bg {background:#f5f6fa}
.td_addr {text-align:left !important}
.td_chk {width:30px;text-align:center} .td_chk {width:30px;text-align:center}
.td_smallstat {width:50px;text-align:center} .td_smallstat {width:50px;text-align:center}
.td_num {width:60px;text-align:center} .td_num {width:60px;text-align:center}
@ -564,9 +565,10 @@ td {padding:8px 5px 6px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9
.td_odrnum3 {width:110px;text-align:center} .td_odrnum3 {width:110px;text-align:center}
.td_grid {width:60px;text-align:center} .td_grid {width:60px;text-align:center}
.td_mbid, .td_name, .td_mbname {width:100px;text-align:left !important} .td_mbid, .td_name, .td_mbname {width:100px;text-align:left !important}
.td_addr {text-align:left !important}
.td_date {width:80px;text-align:center} .td_date {width:70px;text-align:center}
.td_time {width:150px;text-align:center} .td_time {width:130px;text-align:center}
.td_boolean {width:50px;text-align:center} .td_boolean {width:50px;text-align:center}
.td_pt {text-align:right !important} .td_pt {text-align:right !important}
.td_sendcost_by {width:50px;text-align:center} .td_sendcost_by {width:50px;text-align:center}
@ -579,8 +581,14 @@ td {padding:8px 5px 6px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9
.txt_true {color:#e8180c} .txt_true {color:#e8180c}
.txt_false {color:#ccc} .txt_false {color:#ccc}
.banner_or_img {margin:10px 0 0} .banner_or_img {margin:10px 0 0}
.banner_or_img button {display:block;margin:5px 0 0} .banner_or_img button {display:block;margin:5px 0 0}
.txt_active {color:#5d910b}
.txt_expired {color:#ccc}
/* 환경설정 */
.cf_cert_kcp_hide {display:none}
/* 관리권한설정 */ /* 관리권한설정 */
#add_admin fieldset {margin-top:20px} #add_admin fieldset {margin-top:20px}

View File

@ -197,6 +197,7 @@ CREATE TABLE IF NOT EXISTS `g4s_config` (
`cf_include_tail` varchar(255) NOT NULL DEFAULT '', `cf_include_tail` varchar(255) NOT NULL DEFAULT '',
`cf_add_script` text NOT NULL, `cf_add_script` text NOT NULL,
`cf_use_point` tinyint(4) NOT NULL DEFAULT '0', `cf_use_point` tinyint(4) NOT NULL DEFAULT '0',
`cf_point_term` int(11) NOT NULL DEFAULT '0',
`cf_use_norobot` tinyint(4) NOT NULL DEFAULT '0', `cf_use_norobot` tinyint(4) NOT NULL DEFAULT '0',
`cf_use_copy_log` tinyint(4) NOT NULL DEFAULT '0', `cf_use_copy_log` tinyint(4) NOT NULL DEFAULT '0',
`cf_use_email_certify` tinyint(4) NOT NULL DEFAULT '0', `cf_use_email_certify` tinyint(4) NOT NULL DEFAULT '0',
@ -492,11 +493,16 @@ CREATE TABLE IF NOT EXISTS `g4s_point` (
`po_datetime` datetime NOT NULL default '0000-00-00 00:00:00', `po_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
`po_content` varchar(255) NOT NULL default '', `po_content` varchar(255) NOT NULL default '',
`po_point` int(11) NOT NULL default '0', `po_point` int(11) NOT NULL default '0',
`po_use_point` int(11) NOT NULL default '0',
`po_expired` tinyint(4) NOT NULL default '0',
`po_expire_date` date NOT NULL default '0000-00-00',
`po_mb_point` int(11) NOT NULL default '0',
`po_rel_table` varchar(20) NOT NULL default '', `po_rel_table` varchar(20) NOT NULL default '',
`po_rel_id` varchar(20) NOT NULL default '', `po_rel_id` varchar(20) NOT NULL default '',
`po_rel_action` varchar(255) NOT NULL default '', `po_rel_action` varchar(255) NOT NULL default '',
PRIMARY KEY (`po_id`), PRIMARY KEY (`po_id`),
KEY `index1` (`mb_id`,`po_rel_table`,`po_rel_id`,`po_rel_action`) KEY `index1` (`mb_id`,`po_rel_table`,`po_rel_id`,`po_rel_action`),
KEY `index2` (`po_expire_date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- -------------------------------------------------------- -- --------------------------------------------------------

View File

@ -866,7 +866,7 @@ function get_yn_select($name, $selected='1', $event='')
// 포인트 부여 // 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='') function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='', $expire=0)
{ {
global $config; global $config;
global $g4; global $g4;
@ -883,6 +883,9 @@ function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $r
$mb = sql_fetch(" select mb_id from {$g4['member_table']} where mb_id = '$mb_id' "); $mb = sql_fetch(" select mb_id from {$g4['member_table']} where mb_id = '$mb_id' ");
if (!$mb['mb_id']) { return 0; } if (!$mb['mb_id']) { return 0; }
// 회원포인트
$mb_point = get_point_sum($mb_id);
// 이미 등록된 내역이라면 건너뜀 // 이미 등록된 내역이라면 건너뜀
if ($rel_table || $rel_id || $rel_action) if ($rel_table || $rel_id || $rel_action)
{ {
@ -897,28 +900,251 @@ function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $r
} }
// 포인트 건별 생성 // 포인트 건별 생성
$po_expire_date = '9999-12-31';
if($config['cf_point_term'] > 0) {
if($expire > 0)
$po_expire_date = date('Y-m-d', strtotime('+'.($expire - 1).' days', G4_SERVER_TIME));
else
$po_expire_date = date('Y-m-d', strtotime('+'.($config['cf_point_term'] - 1).' days', G4_SERVER_TIME));
}
$po_expired = 0;
if($point < 0) {
$po_expired = 1;
$po_expire_date = G4_TIME_YMD;
}
$po_mb_point = $mb_point + $point;
$sql = " insert into {$g4['point_table']} $sql = " insert into {$g4['point_table']}
set mb_id = '$mb_id', set mb_id = '$mb_id',
po_datetime = '".G4_TIME_YMDHIS."', po_datetime = '".G4_TIME_YMDHIS."',
po_content = '".addslashes($content)."', po_content = '".addslashes($content)."',
po_point = '$point', po_point = '$point',
po_use_point = '0',
po_mb_point = '$po_mb_point',
po_expired = '$po_expired',
po_expire_date = '$po_expire_date',
po_rel_table = '$rel_table', po_rel_table = '$rel_table',
po_rel_id = '$rel_id', po_rel_id = '$rel_id',
po_rel_action = '$rel_action' "; po_rel_action = '$rel_action' ";
sql_query($sql); sql_query($sql);
// 포인트 내역의 합을 구하고 // 포인트를 사용한 경우 포인트 내역에 사용금액 기록
$sql = " select sum(po_point) as sum_po_point from {$g4['point_table']} where mb_id = '$mb_id' "; if($point < 0) {
$row = sql_fetch($sql); insert_use_point($mb_id, $point);
$sum_point = $row['sum_po_point']; }
// 포인트 UPDATE // 포인트 UPDATE
$sql = " update {$g4['member_table']} set mb_point = '$sum_point' where mb_id = '$mb_id' "; $sql = " update {$g4['member_table']} set mb_point = '$po_mb_point' where mb_id = '$mb_id' ";
sql_query($sql); sql_query($sql);
return 1; return 1;
} }
// 사용포인트 입력
function insert_use_point($mb_id, $point, $po_id='')
{
global $g4, $config;
if($config['cf_point_term'])
$sql_order = " order by po_expire_date asc, po_id asc ";
else
$sql_order = " order by po_id asc ";
$point1 = abs($point);
$sql = " select po_id, po_point, po_use_point
from {$g4['point_table']}
where mb_id = '$mb_id'
and po_id <> '$po_id'
and po_expired = '0'
and po_point > po_use_point
$sql_order ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
$point2 = $row['po_point'];
$point3 = $row['po_use_point'];
if(($point2 - $point3) > $point1) {
$sql = " update {$g4['point_table']}
set po_use_point = po_use_point + '$point1'
where po_id = '{$row['po_id']}' ";
sql_query($sql);
break;
} else {
$point4 = $point2 - $point3;
$sql = " update {$g4['point_table']}
set po_use_point = po_use_point + '$point4',
po_expired = '100'
where po_id = '{$row['po_id']}' ";
sql_query($sql);
$point1 -= $point4;
}
}
}
// 사용포인트 삭제
function delete_use_point($mb_id, $point)
{
global $g4, $config;
if($config['cf_point_term'])
$sql_order = " order by po_expire_date desc, po_id desc ";
else
$sql_order = " order by po_id desc ";
$point1 = abs($point);
$sql = " select po_id, po_use_point, po_expired, po_expire_date
from {$g4['point_table']}
where mb_id = '$mb_id'
and po_expired <> '1'
and po_use_point > 0
$sql_order ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
$point2 = $row['po_use_point'];
$po_expired = $row['po_expired'];
if($row['po_expired'] == 100 && ($row['po_expire_date'] == '9999-12-31' || $row['po_expire_date'] >= G4_TIME_YMD))
$po_expired = 0;
if($point2 > $point1) {
$sql = " update {$g4['point_table']}
set po_use_point = po_use_point - '$point1',
po_expired = '$po_expired'
where po_id = '{$row['po_id']}' ";
sql_query($sql);
break;
} else {
$sql = " update {$g4['point_table']}
set po_use_point = '0',
po_expired = '$po_expired'
where po_id = '{$row['po_id']}' ";
sql_query($sql);
$point1 -= $point2;
}
}
}
// 소멸포인트 삭제
function delete_expire_point($mb_id, $point)
{
global $g4, $config;
$point1 = abs($point);
$sql = " select po_id, po_use_point, po_expired, po_expire_date
from {$g4['point_table']}
where mb_id = '$mb_id'
and po_expired = '1'
and po_point >= 0
and po_use_point > 0
order by po_expire_date desc, po_id desc ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
$point2 = $row['po_use_point'];
$po_expired = '0';
$po_expire_date = '9999-12-31';
if($config['cf_point_term'] > 0)
$po_expire_date = date('Y-m-d', strtotime('+'.($config['cf_point_term'] - 1).' days', G4_SERVER_TIME));
if($point2 > $point1) {
$sql = " update {$g4['point_table']}
set po_use_point = po_use_point - '$point1',
po_expired = '$po_expired',
po_expire_date = '$po_expire_date'
where po_id = '{$row['po_id']}' ";
sql_query($sql);
break;
} else {
$sql = " update {$g4['point_table']}
set po_use_point = '0',
po_expired = '$po_expired',
po_expire_date = '$po_expire_date'
where po_id = '{$row['po_id']}' ";
sql_query($sql);
$point1 -= $point2;
}
}
}
// 포인트 내역 합계
function get_point_sum($mb_id)
{
global $g4, $config;
if($config['cf_point_term'] > 0) {
// 소멸포인트가 있으면 내역 추가
$expire_point = get_expire_point($mb_id);
if($expire_point > 0) {
$mb = get_member($mb_id, 'mb_point');
$content = '포인트 소멸';
$rel_table = '@expire';
$rel_id = $mb_id;
$rel_action = 'expire'.'-'.uniqid('');
$point = $expire_point * (-1);
$po_mb_point = $mb['mb_point'] + $point;
$po_expire_date = G4_TIME_YMD;
$po_expired = 1;
$sql = " insert into {$g4['point_table']}
set mb_id = '$mb_id',
po_datetime = '".G4_TIME_YMDHIS."',
po_content = '".addslashes($content)."',
po_point = '$point',
po_use_point = '0',
po_mb_point = '$po_mb_point',
po_expired = '$po_expired',
po_expire_date = '$po_expire_date',
po_rel_table = '$rel_table',
po_rel_id = '$rel_id',
po_rel_action = '$rel_action' ";
sql_query($sql);
// 포인트를 사용한 경우 포인트 내역에 사용금액 기록
if($point < 0) {
insert_use_point($mb_id, $point);
}
}
// 유효기간이 있을 때 기간이 지난 포인트 expired 체크
$sql = " update {$g4['point_table']}
set po_expired = '1'
where mb_id = '$mb_id'
and po_expired <> '1'
and po_expire_date <> '9999-12-31'
and po_expire_date < '".G4_TIME_YMD."' ";
sql_query($sql);
}
// 포인트합
$sql = " select sum(po_point) as sum_po_point
from {$g4['point_table']}
where mb_id = '$mb_id' ";
$row = sql_fetch($sql);
return $row['sum_po_point'];
}
// 소멸 포인트
function get_expire_point($mb_id)
{
global $g4, $config;
if($config['cf_point_term'] == 0)
return 0;
$sql = " select sum(po_point - po_use_point) as sum_point
from {$g4['point_table']}
where mb_id = '$mb_id'
and po_expired = '0'
and po_expire_date <> '9999-12-31'
and po_expire_date < '".G4_TIME_YMD."' ";
$row = sql_fetch($sql);
return $row['sum_point'];
}
// 포인트 삭제 // 포인트 삭제
function delete_point($mb_id, $rel_table, $rel_id, $rel_action) function delete_point($mb_id, $rel_table, $rel_id, $rel_action)
{ {
@ -927,16 +1153,40 @@ function delete_point($mb_id, $rel_table, $rel_id, $rel_action)
$result = false; $result = false;
if ($rel_table || $rel_id || $rel_action) if ($rel_table || $rel_id || $rel_action)
{ {
// 포인트 내역정보
$sql = " select * from {$g4['point_table']}
where mb_id = '$mb_id'
and po_rel_table = '$rel_table'
and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ";
$row = sql_fetch($sql);
if($row['po_point'] < 0) {
$mb_id = $row['mb_id'];
$po_point = abs($row['po_point']);
delete_use_point($mb_id, $po_point);
} else {
if($row['po_use_point'] > 0) {
insert_use_point($row['mb_id'], $row['po_use_point'], $row['po_id']);
}
}
$result = sql_query(" delete from {$g4['point_table']} $result = sql_query(" delete from {$g4['point_table']}
where mb_id = '$mb_id' where mb_id = '$mb_id'
and po_rel_table = '$rel_table' and po_rel_table = '$rel_table'
and po_rel_id = '$rel_id' and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ", false); and po_rel_action = '$rel_action' ", false);
// po_mb_point에 반영
$sql = " update {$g4['point_table']}
set po_mb_point = po_mb_point - '{$row['po_point']}'
where mb_id = '$mb_id'
and po_id > '{$row['po_id']}' ";
sql_query($sql);
// 포인트 내역의 합을 구하고 // 포인트 내역의 합을 구하고
$sql = " select sum(po_point) as sum_po_point from {$g4['point_table']} where mb_id = '$mb_id' "; $sum_point = get_point_sum($mb_id);
$row = sql_fetch($sql);
$sum_point = $row['sum_po_point'];
// 포인트 UPDATE // 포인트 UPDATE
$sql = " update {$g4['member_table']} set mb_point = '$sum_point' where mb_id = '$mb_id' "; $sql = " update {$g4['member_table']} set mb_point = '$sum_point' where mb_id = '$mb_id' ";

21
upgrade.php Normal file
View File

@ -0,0 +1,21 @@
<?php
include_once('./_common.php');
// 포인트유효기간 필드추가
if(!sql_query(" select cf_point_term from {$g4['config_table']} ", false)) {
sql_query(" ALTER TABLE `{$g4['config_table']}`
ADD `cf_point_term` int(11) NOT NULL DEFAULT '0' AFTER `cf_use_point` ", true);
sql_query(" ALTER TABLE `{$g4['point_table']}`
ADD `po_use_point` int(11) NOT NULL DEFAULT '0' AFTER `po_point`,
ADD `po_expired` tinyint(4) NOT NULL DEFAULT '0' AFTER `po_use_point`,
ADD `po_expire_date` date NOT NULL DEFAULT '0000-00-00' AFTER `po_expired`,
ADD `po_mb_point` int(11) NOT NULL DEFAULT '0' AFTER `po_expire_date`,
ADD KEY `index2` (`po_expire_date`) ", true);
sql_query(" update {$g4['point_table']}
set po_expire_date = '9999-12-31'
where po_expire_date = '0000-00-00' ");
}
die("테이블 또는 필드 추가 업그레이드가 완료 되었습니다.");
?>