배너클릭시 포인트를 지급하는 모듈인데..
이걸 초기화기준을 0시로 하고싶을때
portalpoint.model.php 파일의
61번째줄을
$args->regdate = date("Ymd"); 이렇게 되있는걸
$args->regdate = date("Ymd000000"); 이렇게 바꿔주면 0시에 초기화가 되나요?
배너클릭시 포인트를 지급하는 모듈인데..
이걸 초기화기준을 0시로 하고싶을때
portalpoint.model.php 파일의
61번째줄을
$args->regdate = date("Ymd"); 이렇게 되있는걸
$args->regdate = date("Ymd000000"); 이렇게 바꿔주면 0시에 초기화가 되나요?
댓글 17
사용해보지 않아서 모르지만
그위부분에 비교하는부분에서
date("YmdHi" 이부분들을 date("Ymd" 이렇게 날짜까지만 비교하게 수정하면 되지 않을까요?
<?php
/**
* @class portalpointModel
* @author 러키군 (admin@barch.kr)
* @brief portalpoint 모듈의 Model class
**/
class portalpointModel extends portalpoint {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 모듈정보 가져옴
**/
function getConfig() {
// 설정 정보 가져오기
$oModuleModel = &getModel('module');
$portal_config = $oModuleModel->getModuleConfig('portalpoint');
if($portal_config->url_list) $portal_config->url_list = unserialize($portal_config->url_list);
return $portal_config;
}
/**
* @brief 해당포탈의 쿨타임이 지났는지 검사함
* 클릭 안했을경우 false, 이미 했으면 true
**/
function todayClickCheck($member_srl,$obj) {
if(!$obj['title']) return false;
if(!$obj['delay']) return true;
$obj['delay_type'] = (int)$obj['delay_type']; // 일,분
// 이미 클릭한 로그정보가 있는지 체크함
$args = null;
$args->title = $obj['title'];
$args->member_srl = $member_srl;
$args->ipaddress_prefix = preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','$1.$2.$3', $_SERVER['REMOTE_ADDR']);
$output = executeQuery("portalpoint.getLog",$args);
// 로그가 없으면 그냥 false
if(!$output->data) return false;
$last_regdate = zdate($output->data->regdate,"Y-m-d H:i:s");
$now = date("YmdHi");
// 시간비교-분일때
if($obj['delay_type']==1) $end_date = date("YmdHi",strtotime(sprintf("+%d minutes",$obj['delay']),strtotime($last_regdate)));
else $end_date = date("YmdHi",strtotime(sprintf("+%d day",$obj['delay']),strtotime($last_regdate)));
if($now > $end_date) return false;
return true;
}
/**
* @brief 클릭한회원의 오늘 획득포인트를 리턴
**/
function getTodayTotalPoint($member_srl) {
$args = null;
$args->member_srl = $member_srl;
$args->ipaddress_prefix = preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','$1.$2.$3', $_SERVER['REMOTE_ADDR']);
$args->regdate = date("Ymd");
$output = executeQuery("portalpoint.getLogWithPoint",$args);
$total_point = (int)$output->data->total_point;
return $total_point;
}
}
?>
따라서 오늘날자에 해당 회원의 흭득한 포인트를 검사하는 용도로 보여지고, 실제로 초기화쪽을 담당하는 쪽은 다른구간이 아닌가 생각되는데요.
실제로 phpinfo 에서 date의 타임존 설정이 Asia/Seoul 으로 지정되어있음에도 불구하고 뭔가 초기화쪽이 이루어지지 않았다면 그 해당 액션전체를 봐야하는 문제라 다른사람이나 일반 XEtown에서 상주하고 계신분들이 답변드리기 부담스러운 질문이 되어버린거죠..
그리고 설정하신 date('Ymd') 에 마지막 숫자를 추가하는 방법은
date('Ymd').'000000'; 이렇게 추가할 수 있습니다...
답변 감사합니다.
현재는 모듈에서 1일로 제한하면 마지막 클릭시간을 체크한 다음 24시간이 지나지 않았다면 포인트를 지급하지 않고있어요. 이걸 0시가 되면 포인트적립을 허용하고 싶다는것이죠.
가위바위보나 복권같은건 0시가 되자마자 딱 초기화 되는데 배너는 안되서..
검색을 해보니 아이템샵도 구입제한이 하루기준으로 계산되는걸 0시기준으로 바꿀수있길래 비슷한가 해서 질문을 한거죳! ㅎㅎ
// 시간비교-분일때
if($obj['delay_type']==1) $end_date = date("YmdHi",strtotime(sprintf("+%d minutes",$obj['delay']),strtotime($last_regdate)));
else $end_date = date("YmdHi",strtotime(sprintf("+%d day",$obj['delay']),strtotime($last_regdate)));
if($now > $end_date) return false;
if($now > $end_date) return false; <-- 이부분이 연관이 있을까요? 현재시간과 마지막시간을 비교해서 동작하는 것 같긴한데요...
$now = date("YmdHi"); ---> Hi 를 빼버리고..
$end_date = date("YmdHi",strtotime(sprintf("+%d day",$obj['delay']),strtotime($last_regdate)));
--> 여기서도 Hi 를 빼버리면
어찌 될까요??
아니면... 흠...
$now = date("Ymd
Hi");// 시간비교-분일때
if($obj['delay_type']==1) $end_date = date("YmdHi",strtotime(sprintf("+%d minutes",$obj['delay']),strtotime($last_regdate)));
else $end_date = date("Ymd
Hi",strtotime(sprintf("+%d day",$obj['delay']),strtotime($last_regdate)));if($now >= $end_date) return false;
return true;
요건 어떨까요......
감사합니다 !