글 안쓴 날들 계산하여 포인트 삭감처리 정보
글 안쓴 날들 계산하여 포인트 삭감처리본문
설명..
==========================
포인트가 10,000점인 회원님께서 15일동안 원글이든 코멘트든 하나도 쓰지 않고 16일째 되는 날
로그인 하셨다면 1일당 포인트(10,000)의 1/100에 해당하는 100점 x 15일 = 1500 점에 해당하는
포인트가 삭감됩니다. 18일째 되는 날 로그인 하셨다면 100 x 17 = 1700점 삭감되겠죠.
15일째 되는 날 로그인 하시면, 별탈 없으십니다. 행운(?).. 바로 글부터 쓰셔야 겠죠.
15일이 지났을때에만 기능이 작동합니다. $limit_day = 15 이 부분을 수정하면 몇일이 지난
경우부터 적용시킬지 정할 수가 있습니다.
현재는 1일당 (포인트/100)으로 되어 있는데요. 아래 소스의 $dp 부분을 적절히 수정하시면
1일당 삭감될 포인트값을 정의 하실 수 있습니다. 적절히 수정하시면 되겠습니다.
글안쓴 날이 너무 길어서, 삭감 처리 후 포인트 잔고가 마이너스가 되는 경우엔
포인트 초기화 지원금을 주도록 하였습니다. 현재 100포인트로 초기화 되도록 셋팅되어
있습니다. 이 부분은 $reset_point = 100; 를 적절히 수정하시면 됩니다. 비율로 줄이게
되어 있어서 그럴리는 없겠구요. 혹시나 비율이 아닌 $dp를 절대값으로 적용하실 경우에
필요합니다.
포인트 삭감 후.. 계속 글 하나도 안쓰고 다시 로그인하면 삭감처리가 계속 이루어 질
것입니다. 0에 가깝게 계속 내려가겠죠.
현재 관리자가 아니고 랩이 7 아래일때만 적용되도록 해놓았습니다. 수정하시려면,
if (!$is_admin && $mb[mb_level] < 7 ) 이 부분을 수정하시면 됩니다.
포인트 처리사항은 포인트 내역에 기록됩니다.
※포인트가 활동에 중요한 역활을 하는 경우라면..
1.적절히 조정하지 않으면 너무 심한 압박이 될 수도 있으므로 주의해야 합니다.
2.글쓰기 활동이 거의 없는 회원들의 포인트가 고스란히 쌓여 있는 것에 제제를 가합니다.
↓작업시작
==========================
1.
extend/xxx.php라는 파일이 있다고 가정하고, 그 안에 아래 소스를 삽입하시면 되겠습니다.
아래 내용은 전체소스입니다. 필요한 부분만 취하셔도 되겠습니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별페이지 접근불가
<!--소스삽입시작-->
//마지막 글쓴날을 계산하여 포인트 감소처리 - 회원전용
//사용위치는 login_check.php
//예) nowrite_minus_point($mb[mb_id]);
function nowrite_minus_point($mb_id) {
global $g4;
global $is_admin;
if ($mb_id) {
$mb = get_member($mb_id);
if (!$is_admin && $mb[mb_level] < 7) {
//최신글DB에서 정보를 가져온다.
$sql_my = " select bo_table from $g4[board_table] ";
$result = sql_query($sql_my);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$tmp_write_table = $g4[write_prefix] . $row[bo_table];
//회원의 마지막 등록글 날짜가져오기
$row2 = sql_fetch_array(sql_query(" select wr_datetime from $tmp_write_table where mb_id = '$mb[mb_id]' order by wr_datetime desc limit 1"));
if ($row2[wr_datetime]) {
//회원 최종 글쓴지 몇일 지났는지.. (-1은 당일 안포함한다는 뜻.)
$sql_my2 = " select (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS('$row2[wr_datetime]') - 1) as days ";
$row3 = sql_fetch($sql_my2);
$mb_write_after = $row3[days];
$arr[] = $mb_write_after; //기록
} else {
$arr[] = 999999; //한번도 글작성 안한 경우 기록
}
}
asort($arr); //가장 작은 값을 찾기 위해 올림차순 정열
array_splice($arr, 1); //제일 첫번째 값만 남기고 나머지 배열값들은 잘라버린다.
$mb_write_after_result = $arr[0]; //가장 마지막으로 글작성 후 지난 날 수
//======
//$dp = 500; //★1일당 감소할 포인트값(단위)
$dp = number_format($mb[mb_point] / 100,'','',''); //★1일당 감소할 포인트값(단위) - 소수점이하 반올림후 제거 콤마(,) 없이
$reset_point = 100; //초기화 포인트값 (지원금)
$minus_point = $mb_write_after_result * $dp * (-1); //1일당 -$dp씩 감소
// 잔고가 마이너스 될 경우 포인트 초기화 지원금
if (($mb[mb_point] + $minus_point) <= 0) {
$minus_point = ($mb[mb_point] * (-1)) + $reset_point; //초기화를 위한 지원금 적용
}
$limit_day = 15; //★몇일 글 안쓰면 적용할지..
if ($mb_write_after_result >= $limit_day && $minus_point) {
insert_point($mb[mb_id], $minus_point, "{$limit_day}일 이상 글작성을 안 해 포인트감소", '', '', ''); //포인트감소
$ment = "{$limit_day}일 이상 글작성을 안 해 {$minus_point} 포인트가 감소되었습니다.\\n\\n1) {$limit_day}일 이상일때만 적용하며, 1일당 {$dp}포인트씩 감소됩니다.\\n2) 전체포인트가 0보다 작아지면 {$reset_point}으로 자동초기화 됩니다.";
echo "<script language='JavaScript'>alert(\"{$ment}\");</script>";
}
}
}
return;
}
<!--소스삽입끝-->
?>
==========================
2.
bbs/login_check.php 화일을 여시고
제일 마지막 줄의 goto_url($link); 윗 줄즘에..
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
goto_url($link);
위와 같이 삽입하시면 되겠습니다.
☆
원본 소스를 건드리고 싶지 않으시다면,
멤버스킨/login_check.skin.php 생성하여 넣으셔도 문제 없을 듯 합니다.
※로그인 채크시 한번만 적용될 것입니다.
==========================
↑작업끝
==========================
포인트가 10,000점인 회원님께서 15일동안 원글이든 코멘트든 하나도 쓰지 않고 16일째 되는 날
로그인 하셨다면 1일당 포인트(10,000)의 1/100에 해당하는 100점 x 15일 = 1500 점에 해당하는
포인트가 삭감됩니다. 18일째 되는 날 로그인 하셨다면 100 x 17 = 1700점 삭감되겠죠.
15일째 되는 날 로그인 하시면, 별탈 없으십니다. 행운(?).. 바로 글부터 쓰셔야 겠죠.
15일이 지났을때에만 기능이 작동합니다. $limit_day = 15 이 부분을 수정하면 몇일이 지난
경우부터 적용시킬지 정할 수가 있습니다.
현재는 1일당 (포인트/100)으로 되어 있는데요. 아래 소스의 $dp 부분을 적절히 수정하시면
1일당 삭감될 포인트값을 정의 하실 수 있습니다. 적절히 수정하시면 되겠습니다.
글안쓴 날이 너무 길어서, 삭감 처리 후 포인트 잔고가 마이너스가 되는 경우엔
포인트 초기화 지원금을 주도록 하였습니다. 현재 100포인트로 초기화 되도록 셋팅되어
있습니다. 이 부분은 $reset_point = 100; 를 적절히 수정하시면 됩니다. 비율로 줄이게
되어 있어서 그럴리는 없겠구요. 혹시나 비율이 아닌 $dp를 절대값으로 적용하실 경우에
필요합니다.
포인트 삭감 후.. 계속 글 하나도 안쓰고 다시 로그인하면 삭감처리가 계속 이루어 질
것입니다. 0에 가깝게 계속 내려가겠죠.
현재 관리자가 아니고 랩이 7 아래일때만 적용되도록 해놓았습니다. 수정하시려면,
if (!$is_admin && $mb[mb_level] < 7 ) 이 부분을 수정하시면 됩니다.
포인트 처리사항은 포인트 내역에 기록됩니다.
※포인트가 활동에 중요한 역활을 하는 경우라면..
1.적절히 조정하지 않으면 너무 심한 압박이 될 수도 있으므로 주의해야 합니다.
2.글쓰기 활동이 거의 없는 회원들의 포인트가 고스란히 쌓여 있는 것에 제제를 가합니다.
↓작업시작
==========================
1.
extend/xxx.php라는 파일이 있다고 가정하고, 그 안에 아래 소스를 삽입하시면 되겠습니다.
아래 내용은 전체소스입니다. 필요한 부분만 취하셔도 되겠습니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별페이지 접근불가
<!--소스삽입시작-->
//마지막 글쓴날을 계산하여 포인트 감소처리 - 회원전용
//사용위치는 login_check.php
//예) nowrite_minus_point($mb[mb_id]);
function nowrite_minus_point($mb_id) {
global $g4;
global $is_admin;
if ($mb_id) {
$mb = get_member($mb_id);
if (!$is_admin && $mb[mb_level] < 7) {
//최신글DB에서 정보를 가져온다.
$sql_my = " select bo_table from $g4[board_table] ";
$result = sql_query($sql_my);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$tmp_write_table = $g4[write_prefix] . $row[bo_table];
//회원의 마지막 등록글 날짜가져오기
$row2 = sql_fetch_array(sql_query(" select wr_datetime from $tmp_write_table where mb_id = '$mb[mb_id]' order by wr_datetime desc limit 1"));
if ($row2[wr_datetime]) {
//회원 최종 글쓴지 몇일 지났는지.. (-1은 당일 안포함한다는 뜻.)
$sql_my2 = " select (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS('$row2[wr_datetime]') - 1) as days ";
$row3 = sql_fetch($sql_my2);
$mb_write_after = $row3[days];
$arr[] = $mb_write_after; //기록
} else {
$arr[] = 999999; //한번도 글작성 안한 경우 기록
}
}
asort($arr); //가장 작은 값을 찾기 위해 올림차순 정열
array_splice($arr, 1); //제일 첫번째 값만 남기고 나머지 배열값들은 잘라버린다.
$mb_write_after_result = $arr[0]; //가장 마지막으로 글작성 후 지난 날 수
//======
//$dp = 500; //★1일당 감소할 포인트값(단위)
$dp = number_format($mb[mb_point] / 100,'','',''); //★1일당 감소할 포인트값(단위) - 소수점이하 반올림후 제거 콤마(,) 없이
$reset_point = 100; //초기화 포인트값 (지원금)
$minus_point = $mb_write_after_result * $dp * (-1); //1일당 -$dp씩 감소
// 잔고가 마이너스 될 경우 포인트 초기화 지원금
if (($mb[mb_point] + $minus_point) <= 0) {
$minus_point = ($mb[mb_point] * (-1)) + $reset_point; //초기화를 위한 지원금 적용
}
$limit_day = 15; //★몇일 글 안쓰면 적용할지..
if ($mb_write_after_result >= $limit_day && $minus_point) {
insert_point($mb[mb_id], $minus_point, "{$limit_day}일 이상 글작성을 안 해 포인트감소", '', '', ''); //포인트감소
$ment = "{$limit_day}일 이상 글작성을 안 해 {$minus_point} 포인트가 감소되었습니다.\\n\\n1) {$limit_day}일 이상일때만 적용하며, 1일당 {$dp}포인트씩 감소됩니다.\\n2) 전체포인트가 0보다 작아지면 {$reset_point}으로 자동초기화 됩니다.";
echo "<script language='JavaScript'>alert(\"{$ment}\");</script>";
}
}
}
return;
}
<!--소스삽입끝-->
?>
==========================
2.
bbs/login_check.php 화일을 여시고
제일 마지막 줄의 goto_url($link); 윗 줄즘에..
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
goto_url($link);
위와 같이 삽입하시면 되겠습니다.
☆
원본 소스를 건드리고 싶지 않으시다면,
멤버스킨/login_check.skin.php 생성하여 넣으셔도 문제 없을 듯 합니다.
※로그인 채크시 한번만 적용될 것입니다.
==========================
↑작업끝
추천
1
1
댓글 6개
글을 읽어보고 바로 리플 답니다.
이거 아주 좋은 팁이군요..감사합니다.
포인트로 홈페이지를 돌리는데..일일포인트제한을 걸지못해서 난감했는데
이방법으로 '접속날짜'를 기준으로 포인트를 삭감하는 방법을 쓰면 되겠군요..
궁금한거 한가지는... 소스를 건드리지 않는다면
말씀하신거 처럼..'멤버스킨'에
login_check.skin.php 파일만 생성하면 되는지요?
[응용 예]
-------------------------------------------------------------------------------------------------------------
현재 extend 폴더에 log_check.lib.php 라는 파일명으로 위 소스를 넣고
login_check.skin.php 에
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
goto_url($link);
-------------------------------------------------------------------------------------------------------------
위처럼만 해주면 되는지요?
이거 아주 좋은 팁이군요..감사합니다.
포인트로 홈페이지를 돌리는데..일일포인트제한을 걸지못해서 난감했는데
이방법으로 '접속날짜'를 기준으로 포인트를 삭감하는 방법을 쓰면 되겠군요..
궁금한거 한가지는... 소스를 건드리지 않는다면
말씀하신거 처럼..'멤버스킨'에
login_check.skin.php 파일만 생성하면 되는지요?
[응용 예]
-------------------------------------------------------------------------------------------------------------
현재 extend 폴더에 log_check.lib.php 라는 파일명으로 위 소스를 넣고
login_check.skin.php 에
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
goto_url($link);
-------------------------------------------------------------------------------------------------------------
위처럼만 해주면 되는지요?
log_check.php 안에 login_check.skin.php가 goto_url($link);위쪽에 인쿠르드 되어야 당연히 되겠구요.
이미 기본소스에 그리 되어 있자나요.
그럼 login_check.skin.php 이거 안에다가
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
↑요거만 넣어도 되겠습니다.
만드신 log_check.lib.php 요게 extend 폴더에 들어 있을 경우는 위처럼만 하면 되겠고,
lib폴더에 넣고 하려면
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
↑요거 위쪽에 log_check.lib.php 인쿠르드 해줘야 겠죠.
로그인 안한 날로 포인트 감소처리 하는건 아래 링크 참조해 보세요
http://sir.co.kr/bbs/tb.php/g4_tiptech/2356
이미 기본소스에 그리 되어 있자나요.
그럼 login_check.skin.php 이거 안에다가
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
↑요거만 넣어도 되겠습니다.
만드신 log_check.lib.php 요게 extend 폴더에 들어 있을 경우는 위처럼만 하면 되겠고,
lib폴더에 넣고 하려면
nowrite_minus_point($mb[mb_id]); //★글 안쓴 날들 계산하여 포인트 삭감처리
↑요거 위쪽에 log_check.lib.php 인쿠르드 해줘야 겠죠.
로그인 안한 날로 포인트 감소처리 하는건 아래 링크 참조해 보세요
http://sir.co.kr/bbs/tb.php/g4_tiptech/2356
궁금해 하고있었는데...
조은 정보 감사합니다
조은 정보 감사합니다
감사합니다.
섬세한 팁이네요^^;;
죄송한데요...이팁적용해서 잘 사용하고 있는데...
오늘에서야 확인이 된건데....오늘 오전에 가입하고 로그아웃했다가 오후에 로그인 하면 30일동안 글작성이 없어 포인트가 삭제된다고 하네요...
참고로 저는 30일을 설정했거든여.....오늘 가입했는데....어찌 이런일이 생길수가.....
어떻게 해결해야 될지 도움부탁드립니다...
오늘에서야 확인이 된건데....오늘 오전에 가입하고 로그아웃했다가 오후에 로그인 하면 30일동안 글작성이 없어 포인트가 삭제된다고 하네요...
참고로 저는 30일을 설정했거든여.....오늘 가입했는데....어찌 이런일이 생길수가.....
어떻게 해결해야 될지 도움부탁드립니다...