(소스 수정부탁) 특정 게시판 의 글쓰기 포인트는 한시간 지나서 지급하는 것에 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

(소스 수정부탁) 특정 게시판 의 글쓰기 포인트는 한시간 지나서 지급하는 것에 정보

(소스 수정부탁) 특정 게시판 의 글쓰기 포인트는 한시간 지나서 지급하는 것에

본문

special 게시판의 글쓰기 포인트는
1시간 지나서 포인트를 지급 하는 것인데요...


insert_point($member[mb_id], $board[bo_write_point], "$board[bo_subject] $wr_id 글쓰기", $bo_table, $wr_id, '쓰기');


----> 아래와 같이 수정해 보았습니다....근데 .. 시간지나서 포인트 지급이 안되어요~~
----> 고수님들께 부탁드립니다.



// 게시글이 등록된지 1시간이 지나서 포인트 지급하기 시도
//
////제한받을 게시판명을 적어주세요.
$table_name ="special";

$bo_table_name ="".$g4[write_prefix]."".$table_name."";

$after1day = date("Y-m-d", time() - (120 * 1));
$qrySql = sql_fetch("select wr_datetime from $write_table where wr_id = '$wr_id'");

if($g4[server_time] <= strtotime($after1day, strtotime($qrySql[wr_datetime])) )
{
// 포인트 부여
insert_point($member[mb_id], $board[bo_write_point], "$board[bo_subject] $wr_id 글쓰기", $bo_table, $wr_id, '쓰기');
}
/// 제한 게시판 외의 다른 게시판은  포인트 바로 지급
else{ insert_point($member[mb_id], $board[bo_write_point], "$board[bo_subject] $wr_id 글쓰기", $bo_table, $wr_id, '쓰기');
}
//
// 패쓰 끝
  • 복사

댓글 전체

$qrySql = sql_fetch("select wr_datetime from $write_table where wr_id = '$wr_id'");

쿼리 자체가 잘못 된거 같은데요 1시간이 지난후 포인트를 비교를 한다면 포인트를 해당 글쓴이에게 포인트를 지급하는거 아닌가요 ? 위와 같이 쿼리를 날리면 넘어온 테이블의 게시물과 비교를 하겠죠
즉 만약에 해당 게시물의 지금 작성된 게시물의 wr_id 값이 15라고 하면 special 게시판의 15번 게시물에 대한 셀렉트를 하게 되는데 당연히 시간 비교자체가 되지 않겠죠

$qrySql = sql_fetch("select wr_datetime from $write_table where wr_id = '$wr_id'");

1시간 이후면 이미 작성된 게시물에 대해서 포인트를 지급해야 하므로 해당 작성자의 최근 게시물 한개를 비교해서 포인트를 지급해야 하는게 아닌지 ...
덧붙이자면

$qrySql = sql_fetch("select wr_datetime from $write_table where mb_id = $member[mb_id] and wr_id < $wr_id order by wr_datetime desc limit 1");

참고로 작성자의 이전에 게시물과 비교를 할려면 이렇게 쿼리를 날려야 하는게 아닌지 ..
해당 작성자가 해당 게시판에서 작성한 게시물이 있다면 지금 넘어온 게시물보다 작은 1개만 불러 와서 비교를 해야 겠죠 그래야 이 게시물 이전에 작성한 게시물 1개가 나올 테니 그리고 포인트 인서트 할때 해당 게시물 번호로 포인트가 지급된게 있으면 업대이트를 하지 않으면 되죠
근데 이 인서트문을 어디서 날리는지 모르니 ..
어디서 어떻게 포인트를 넣어 주는지 어디서 업대이트를 하고 어디서 비교를 하는지등이 전혀 없으니 정확한 답변이 나올 수 없는 겁니다.
아래의 마스타님 말씀대로 전체 회원에게 포함되는건지 10분마다 주기적으로 크론이 돌아서 업대이트 해줘야 하는건지등등 말이죠
bbs/write_update.php
파일에서

//쓰기 포인트 부여 
<중략>
  insert_point($member[mb_id], $board[bo_write_point], "$board[bo_subject] $wr_id 글쓰기", $bo_table, $wr_id, '쓰기');

<하략>

이 부분을 수정해 보려고 햇던 겁니다.
이건 웹페이지에서 구현 될 것이 아닌데요.. ^^
주기적으로 배치 돌면서 체크해야 하는 거라서..
crontab 이나 디비스케줄.. 등에서 처리해야 할 것 같습니다.
© SIRSOFT
현재 페이지 제일 처음으로