그누보드 [G5] 회원 포인트 기준 아이콘 보이기
페이지 정보
첨부파일
-
level.zip (3.9K)
76회 다운로드 | DATE : 2017-03-06 00:06:16
본문
회원 레벨별 아이콘 보이기
-. g5_level 테이블 생성
-. g5_member 테이블에 필드 추가
-. 그누보드5 / img / level / 0.gif ~ 7.gif ( 첨부 level.zip )
-. 그누보드5 / adm / level / level.php 생성
-. 그누보드5 / adm / level / level_update.php 생성
-. 그누보드5 / adm / level / member_level_update.php 생성
-. 그누보드5 / adm / admin.menu990.php 수정
-. 그누보드5 / lib / common.lib.php 수정
-. 그누보드5 / skin / board / 폴더 / list.skin.php , view.skin.php . view_comment.skin.php 수정
-. 그누보드5 / adm / member_list.php 수정
-. 그누보드5 / adm / point_list.php 수정
1. 설정변경
1. 그누보드5 / extend / level_point.extend.php 신규생성
<?php
if (!defined('_GNUBOARD_')) exit;
$g5['level_table'] = G5_TABLE_PREFIX . "level"; // 레벨 포인트 테이블
define('G5_LEVEL_IMG_URL', G5_IMG_URL.'/level/weather/'); // 레벨 아이콘 폴더
?>
2. 그누보드5 / adm / admin.menu990.php 만들기
<?php
$menu["menu990"] = array (
array('990000', '추가기능', G5_ADMIN_URL.'/level/level.php', 'level'),
array('990700', '레벨 설정', G5_ADMIN_URL.'/level/level.php', 'level'),
array('990710', '레벨 업그레이드', G5_ADMIN_URL.'/level/member_level_update.php', 'member_level_update'),
);
?>
3. 그누보드5 / adm / level.php 파일 만들기
<?php
$sub_menu = "990700";
include_once('./_common.php');
auth_check($auth[$sub_menu], 'r');
if ($is_admin != 'super')
alert('최고관리자만 접근 가능합니다.');
$g5['title'] = '레벨 설정';
include_once ('../admin.head.php');
if(!sql_query(" DESCRIBE ".$g5['level_table']." ", false)) { // g5_level
$query_attendance = sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['level_table']}` (
`lv_idx` int(11) NOT NULL auto_increment,
`lv_name` varchar(20) NOT NULL,
`lv_point` int(10) NOT NULL,
`lv_id` int(10) NOT NULL,
PRIMARY KEY (`lv_idx`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ", true);
/* utf8mb4 일때는 아래의 것으로 변경
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; ", true);
*/
}
$field_query = "SHOW COLUMNS FROM {$g5['member_table']} WHERE `Field` = 'mb_point_level';";
$field_row = sql_fetch( $field_query );
if(!$field_row['Field']) {
sql_query(" ALTER TABLE `{$g5['member_table']}`ADD `mb_point_level` int(4) NOT NULL ", true);
}
$field_query = "SHOW COLUMNS FROM {$g5['member_table']} WHERE `Field` = 'mb_point_level_icon';";
$field_row = sql_fetch( $field_query );
if(!$field_row['Field']) {
sql_query(" ALTER TABLE `{$g5['member_table']}`ADD `mb_point_level_icon` VARCHAR(20) NOT NULL ", true);
}
$sql_common = " from {$g5['level_table']} ";
$sql_search = " where (1) ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
case 'mb_id' :
$sql_search .= " ({$sfl} = '{$stx}') ";
break;
default :
$sql_search .= " ({$sfl} like '%{$stx}%') ";
break;
}
$sql_search .= " ) ";
}
if (!$sst) {
$sst = "lv_id";
$sod = "asc";
}
$sql_order = " order by {$sst} {$sod} ";
$sql = " select count(*) as cnt
{$sql_common}
{$sql_search}
{$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$rows = $config['cf_page_rows'];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
{$sql_common}
{$sql_search}
{$sql_order}
limit {$from_record}, {$rows} ";
$result = sql_query($sql);
$mb = array();
if ($sfl == 'mb_id' && $stx)
$mb = get_member($stx);
$colspan = 5;
if (strstr($sfl, "mb_id"))
$mb_id = $stx;
else
$mb_id = "";
?>
<div class="local_ov01 local_ov">
<a href="<?php echo $_SERVER['SCRIPT_NAME']?>" class="ov_listall">전체 <?php echo number_format($total_count) ?> 건</a>
</div>
<div class="tbl_head01 tbl_wrap">
<table>
<caption><?php echo $g5['title']; ?> 목록</caption>
<thead>
<tr>
<th scope="col">레벨</th>
<th scope="col">아이콘</th>
<th scope="col">계급</th>
<th scope="col" colspan="2">포인트 (숫자만 입력)</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody>
<tr class="bg">
<td class="td_datetime">0</td>
<td class="td_datetime"><img src="<?php echo G5_LEVEL_IMG_URL?>0.gif"></td>
<td class="td_datetime">비회원</td>
<td class="td_datetime"></td>
<td class="td_datetime"></td>
</tr>
<?php
for ($i=0; $row=sql_fetch_array($result); $i++) {
$bg = 'bg'.($i%2);
?>
<tr class="<?php echo $bg; ?>">
<form name="lvupdate<?php echo $i; ?>" id="lvupdate<?php echo $i; ?>" method="post" action="level_update.php" autocomplete="off">
<input type="hidden" name="lv_idx" value="<?php echo $row['lv_idx']; ?>">
<input type="hidden" name="mode" value="e">
<input type="hidden" name="token" value="<?php echo $token ?>">
<td class="td_datetime"><input type="text" name="lv_id" value="<?php echo $row['lv_id'] ?>" class="required frm_input" style="text-align:center;"></td>
<td class="td_datetime"><img src="<?php echo G5_LEVEL_IMG_URL.$row['lv_id']?>.gif"></td>
<td class="td_datetime"><input type="text" name="lv_name" value="<?php echo $row['lv_name'] ?>" class="required frm_input"></td>
<td class="td_datetime" style="text-align:right; padding-right:15px;"><?php echo Number_Format($row['lv_point']) ?></td>
<td class="td_datetime"><input type="text" name="lv_point" value="<?php echo $row['lv_point'] ?>" class="required frm_input"></td>
<td class="td_datetime"><input type="submit" value=" 수정 "></td>
</form>
</tr>
<?php
}
if ($i == 0)
echo '<tr><td colspan="{$colspan}" class="empty_table">자료가 없습니다.</td></tr>';
?>
</tbody>
</table>
</div>
<?php echo get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, "{$_SERVER['SCRIPT_NAME']}?$qstr&page="); ?>
<form name="flevellist2" method="post" id="flevellist2" action="./level_update.php" autocomplete="off">
<input type="hidden" name="mode" value="w">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="token" value="<?php echo $token ?>">
<section id="point_mng">
<h2 class="h2_frm">레벨 추가</h2>
<div class="tbl_frm01 tbl_wrap">
<table>
<colgroup>
<col class="grid_4">
<col>
</colgroup>
<tbody>
<tr>
<th scope="row"><label for="lv_id">레벨<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="lv_id" id="lv_id" required class="required frm_input"> 숫자만</td>
</tr>
<tr>
<th scope="row"><label for="lv_name">레벨 설명<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="lv_name" id="lv_name" class="required frm_input" required> 레벨 설명</td>
</tr>
<tr>
<th scope="row"><label for="lv_point">레벨 포인트<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="lv_point" id="lv_point" required class="required frm_input"> 숫자만</td>
</tr>
</tbody>
</table>
</div>
</section>
<div class="btn_confirm01 btn_confirm">
<input type="submit" value="확인" class="btn_submit" accesskey="s">
</div>
</form>
<script>
function fconfigform_submit(f)
{
f.action = "./level_update.php";
return true;
}
</script>
<?
include_once ('../admin.tail.php');
?>
4. 그누보드5 / adm / level_update.php 파일 만들기
<?php
$sub_menu = "990700";
include_once('./_common.php');
auth_check($auth[$sub_menu], 'w');
if ($is_admin != 'super')
alert('최고관리자만 접근 가능합니다.');
//check_admin_token();
$mode = $_POST['mode'];
$lv_name = $_POST['lv_name'];
$lv_point = $_POST['lv_point'];
$lv_id = $_POST['lv_id'];
$mb = get_member($mb_id);
if ($mode=="w") {
$sql = "insert into {$g5['level_table']} (lv_name, lv_point, lv_id) values ('{$lv_name}','{$lv_point}','{$lv_id}')";
sql_query($sql);
} else {
$sql = " update {$g5['level_table']}
set lv_name = '{$_POST['lv_name']}',
lv_point = '{$_POST['lv_point']}',
lv_id = '{$_POST['lv_id']}'
where lv_idx = '{$_POST['lv_idx']}';
";
sql_query($sql);
}
goto_url('./level.php', false);
?>
5. 그누보드5 / adm / member_level_update.php 파일만들기
<?php
$sub_menu = "990710";
include_once('./_common.php');
auth_check($auth[$sub_menu], 'r');
$g5['title'] = '레벨 업데이트';
include_once('../admin.head.php');
$sql = " select * from {$g5['member_table']} order by mb_no asc ";
$qry = sql_query($sql);
$colspan = 7;
?>
<div class="local_desc01 local_desc">
<p>
회원포인트를 기준으로 레벨 일괄 업데이트를 합니다.
</p>
</div>
<div class="tbl_head01 tbl_wrap">
<table>
<caption><?php echo $g5['title']; ?> 목록</caption>
<thead>
<tr>
<th scope="col" id="mb_list_id">아이디</a></th>
<th scope="col" id="mb_list_name">이름</a></th>
<th scope="col" id="mb_list_name">닉네임</a></th>
<th scope="col" id="mb_list_mng">권한</th>
<th scope="col" id="mb_list_mng">포인트 레벨</th>
<th scope="col" id="mb_list_grp">포인트</th>
<th scope="col" id="mb_list_mng">아이콘</th>
</tr>
</thead>
<tbody>
<?php
for ($i=0; $row=sql_fetch_array($qry); $i++) {
?>
<tr class="<?php echo $bg; ?>">
<td headers="mb_list_id" class="td_name sv_use"><?php echo $row['mb_id']; ?></td>
<td headers="mb_list_name" class="td_mbname"><?php echo get_text($row['mb_name']); ?></td>
<td headers="mb_list_nick" class="td_mbname"><?php echo get_text($row['mb_nick']); ?></td>
<td headers="mb_list_level" class="td_num"><?php echo get_text($row['mb_level']); ?></td>
<td headers="mb_list_point" class="td_num"><?php
$sql_level = "select * from {$g5['level_table']} order by lv_point desc";
$qry_level = sql_query($sql_level);
for ($k=0; $row_level=sql_fetch_array($qry_level); $k++) {
if ($row['mb_point'] >= $row_level['lv_point']) {
sql_query(" update {$g5['member_table']} set mb_point_level = '{$row_level['lv_id']}' where mb_id = '{$row['mb_id']}' ");
break;
} else {
}
}
echo $row_level['lv_id'];
?></td>
<td headers="mb_list_point" class="td_num"><?php
echo $row['mb_point'];
// 회원가입시 기본 1000점 부여된것을 일괄 변경하고자 할때
if ($row['mb_point'] > 999) {
$mb_point_check = $row['mb_point'] - (int)990;
//sql_query("update {$g5['member_table']} set mb_point = '{$mb_point_check}' where mb_id = '{$row['mb_id']}' ");
}
?></td>
<td headers="mb_list_point_icon" class="td_num">
<?php if ($row_level['lv_id']) { ?>
<img src="<?php echo G5_LEVEL_IMG_URL.$row_level['lv_id']?>.gif">
<?php } ?>
</td>
</tr>
<?php
}
if ($i == 0)
echo "<tr><td colspan=\"{$colspan}\" class=\"empty_table\">자료가 없습니다.</td></tr>";
?>
</tbody>
</table>
</div>
<?php
include_once ('../admin.tail.php');
?>
6. 그누보드5 / adm / member_list.php
<?php echo $mb_id ?>
를 다음과 같이 변경
<?php echo "<img src=\"".G5_LEVEL_IMG_URL.$row['mb_point_level_icon'].".gif\" alt=\"\"> ";?><?php echo $mb_id ?>
7. 그누보드5 / adm / point_list.php
7-1. 그누보드5 / adm / point_list.php 126줄
$sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
를 다음과 같이 변경
$sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point, mb_point_level from {$g5['member_table']} where mb_id = '{$row['mb_id']}' "; // 해피정닷컴 수정
7-2. 그누보드5 / adm / point_list.php 153줄
<?php echo get_text($row2['mb_name']); ?>
를 다음과 같이 변경
<?php echo "<img src=\"".G5_LEVEL_IMG_URL.$row['mb_point_level_icon'].".gif\" alt=\"\"> ";?><?php echo get_text($row2['mb_name']); ?>
8. 그누보드5 / lib / common.lib.php
8-1. 포인트 부여
// 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='', $expire=0)
... 내용중 ...
// 포인트 UPDATE
$sql = " update {$g5['member_table']} set mb_point = '$po_mb_point' where mb_id = '$mb_id' ";
sql_query($sql);
의 아래에 내용추가
////////// 포인트에 따른 레벨아이콘 시작 //////////
// 회원 포인트레벨 가져오기
$sql_member = " select mb_point, mb_type, mb_leave_date , mb_point_level_icon from {$g5['member_table']} where mb_id = '{$mb_id}' ";
$qry_member = sql_query($sql_member);
$row_member = sql_fetch_array($qry_member);
$po_mb_point = $row_member['mb_point'];
$mb_type = $row_member['mb_type'];
$po_mb_leave_date = $row_member['mb_leave_date'];
$mb_point_level_icon = $row_member['mb_point_level_icon'];
// 레벨 정의 테이블 데이타를 큰 포인트부터 순차적으로 가져옴
$lv_point = "";
$sql_level = "select * from {$g5['level_table']} order by lv_point desc";
$qry_level = sql_query($sql_level);
for ($i=0; $row_level=sql_fetch_array($qry_level); $i++) {
$lv_point = $row_level['lv_point'];
$lv_id = $row_level['lv_id'];
if ($po_mb_point >= $lv_point) {
if ($po_mb_leave_date) { // 탈퇴회원
$mb_point_level_icon = $lv_id;
} else {
$mb_point_level_icon = $lv_id;
}
$sql = " update {$g5['member_table']} set mb_point_level = '{$lv_id}', mb_point_level_icon='{$mb_point_level_icon}' where mb_id = '{$mb_id}' ";
sql_query($sql);
break;
} else {
$sql = "";
}
}
////////// 포인트에 따른 레벨아이콘 끝 //////////
// 사용포인트 입력
function insert_use_point($mb_id, $point, $po_id='')
... 내용중 ...
8-3. 사용포인트 삭제
// 사용포인트 삭제
function delete_use_point($mb_id, $point)
... 내용중 ...
8-4. 소멸포인트 삭제
// 소멸포인트 삭제
function delete_expire_point($mb_id, $point)
... 내용중 ...
8-5. 소멸 포인트
// 소멸 포인트
function get_expire_point($mb_id)
... 내용중 ...
// 포인트 내역 합계
function get_point_sum($mb_id)
... 내용중 ...
// 소멸 포인트
function get_expire_point($mb_id)
... 내용중 ...
8-8. 포인트 삭제
// 포인트 삭제
function delete_point($mb_id, $rel_table, $rel_id, $rel_action)
... 내용중 ...
// 포인트 UPDATE
$sql = " update {$g5['member_table']} set mb_point = '{$sum_point}' where mb_id = '{$mb_id}' ";
$result = sql_query($sql);
의 아래에 내용추가
////////// 포인트에 따른 레벨아이콘 시작 //////////
// 회원 포인트레벨 가져오기
$sql_member = " select mb_point,mb_type, mb_leave_date, mb_point_level_icon from {$g5['member_table']} where mb_id = '{$mb_id}' ";
$qry_member = sql_query($sql_member);
$row_member = sql_fetch_array($qry_member);
$po_mb_point = $row_member['mb_point'];
$mb_type = $row_member['mb_type'];
$po_mb_leave_date = $row_member['mb_leave_date'];
$mb_point_level_icon = $row_member['mb_point_level_icon'];
// 레벨 정의 테이블 데이타를 큰 포인트부터 순차적으로 가져옴
$lv_point = "";
$sql_level = "select * from {$g5['level_table']} order by lv_point desc";
$qry_level = sql_query($sql_level);
for ($i=0; $row_level=sql_fetch_array($qry_level); $i++) {
$lv_point = $row_level['lv_point'];
$lv_id = $row_level['lv_id'];
if ($po_mb_point >= $lv_point) {
if ($po_mb_leave_date) { // 탈퇴회원
$mb_point_level_icon = $lv_id;
} else {
$mb_point_level_icon = $lv_id;
}
$sql = " update {$g5['member_table']} set mb_point_level = '{$lv_id}', mb_point_level_icon='{$mb_point_level_icon}' where mb_id = '{$mb_id}' ";
sql_query($sql);
break;
} else {
$sql = "";
}
}
////////// 포인트에 따른 레벨아이콘 끝 //////////
9. 그누보드5 / skin / board / 폴더 / list.skin.php 125줄
<?php echo $list[$i]['name'] ?>
를 다음과 같이 변경
<?php
$sql_level = "select mb_point_level_icon from {$g5['member_table']} where mb_id = '{$list[$i]['mb_id']}' ";
$row_level = sql_fetch($sql_level);
echo '<img src="'.G5_LEVEL_IMG_URL.$row_level['mb_point_level_icon'].".gif".'" alt=""> ';
?><?php echo $list[$i]['name'] ?>
10. 그누보드5 / skin / board / 폴더 / view.skin.php 26줄
<?php echo $view['name'] ?>
를 다음과 같이 변경
<?php
$sql_level = "select mb_point_level_icon from {$g5['member_table']} where mb_id = '{$view['mb_id']}' ";
$row_level = sql_fetch($sql_level);
echo '<img src="'.G5_LEVEL_IMG_URL.$row_level['mb_point_level_icon'].".gif".'" alt=""> ';
?> <?php echo $view['name'] ?>
11. 그누보드5 / skin / board / 폴더 / view_comment.skin.php 33줄
<?php echo $list[$i]['name'] ?>
를 다음과 같이 변경
<?php
$sql_level = "select mb_point_level_icon from {$g5['member_table']} where mb_id = '{$list[$i]['mb_id']}' ";
$row_level = sql_fetch($sql_level);
echo '<img src="'.G5_LEVEL_IMG_URL.$row_level['mb_point_level_icon'].".gif".'" alt=""> ';
?>
<?php echo $list[$i]['name'] ?>
참고자료
https://sir.kr/g4_tiptech/30919
댓글목록
등록된 댓글이 없습니다.