묻고답하기
xe regdate 시간과 time() 시간 비교
2015.02.05 09:24
1일된 게시물에서는 포인트 시스템이 적용되지 않도록 만들기
/**
* @brief The trigger to give points for downloading the file
*/
function triggerDownloadFile(&$obj)
{
// Run only when logged in
$logged_info = Context::get('logged_info');
if(!$logged_info->member_srl) return new Object();
$module_srl = $obj->module_srl;
$member_srl = $logged_info->member_srl;
if(!$module_srl) return new Object();
// Pass if it is your file
if(abs($obj->member_srl) == abs($member_srl)) return new Object();
// Get the point module information
$oModuleModel = getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$module_config = $oModuleModel->getModulePartConfig('point', $module_srl);
// Get the points of the member
$oPointModel = getModel('point');
$cur_point = $oPointModel->getPoint($member_srl, true);
// Get the points
//$point = $module_config['download_file']; 원본소스
//추가시작 1일이상 지나지 않은 게시물에는 포인트 적용하지 않기
//변수선언 시작
$document_srl = $obj->document_srl;
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
//변수선언 끝
if(ztime($oDocument->get('regdate')) < time()-(60*60*24*1)){
$point = $module_config['download_file'];
}else{
$point = 0;
}
//추가 끝
if(strlen($point) == 0 && !is_int($point)) $point = $config->download_file;
// Increase the point
$cur_point += $point;
$this->setPoint($member_srl,$cur_point);
return new Object();
}
해당 부분을 적용하여도 기간에 관계없이 포인트가 차감되는 문제가 있습니다 ㅠ_ㅠ
아무래도 if(ztime($oDocument->get('regdate')) < time()-(60*60*24*1)){ 부분이 문제
인 것 같은데
odcoumment->get regdate가 201502051232 이런식으로 출력하는 것같고
if(ztime($oDocument->get('regdate')) < time()-(60*60*24*1)){
201502051232 < (time() 1970년 1월 1일 부터 초단위로 변환) - (1일: 86,400초)
이렇게 되면 둘이 비교하는 값이 틀려서 적용이 안되는 것 같습니다.
하나는 초기준이고 regdate는 년단위 표시로 나타나는데
제가 생각하고 있는게 맞는 건가요?
댓글 8
-
이즈야
2015.02.05 12:14
-
꾸링
2015.02.05 12:48
우선 해결은 안됬지만, 답변이 달린 것 자체만으로도 감사합니다 ㅠ_ㅠ
if ($oDocument->get('regdate') < date('YmdHis', strtotime('+1 days')) 이렇게 해버리면
항상 True가 나와버릴 것 같습니다.
ex) 2월 1일 작성게시물 < 오늘 날짜 2월 5일 +1 = 2월 6일
ex2) 2월 5일 작성 게시물 < 오늘 날짜 2월 5일 +1 =2월 6일
항상 참이 되어버립니다.
-
꾸링
2015.02.05 12:51
if($oDocument->get('regdate') < date('YmdHis', strtotime('-1 days'))){
-1days로 놓고
바로 아래에
$point = $module_config['download_file'];
}else{
$point = 0;
}
//추가 끝이렇게 놓으면 정상적으로 작동해야 되는데 이상하게 날짜 구분없이 참으로 가는 현상이 ㅠ_ㅠ)
-
이즈야
2015.02.05 13:01
-1 days가 맞습니다. 잠시 착각을...
작성하신 if 문이 '게시글 작성 시간이 1일 이내라면'인데, 원하시는 건 게시글 작성 시간이 1일 이내라면 '포인트 적용 안 하기' 아닌가요?
괄호 안 내용들이 서로 뒤바뀐 것 같습니다. -
꾸링
2015.02.05 13:10
네 맞습니다. 작성한지 하루된 게시물은 포인트 차감 적용이 되지 않는 것을 원하는 것이에요..
if($oDocument->get('regdate') < date('YmdHis', strtotime('-1 days'))){
$point = $module_config['download_file'];
}else{
$point = 0;
}위와 같이해야 정상소스라고 생각해요.
regdate 는 게시물 작성날짜고, date는 오늘날짜 - 1Day니까해당 값이 True일 때, 모듈 콘픽에서 포인트 차감 설정해둔 -10이 적용되도록 하는 것이 맞지 않을까요?
ex)if ( 2월 2일 작성된 게시물 < 오늘 날짜 2월 5일 - 1Day = 월 2월 4일 )
{
$point = $module_config['download_file']; True값 2월2일은 작성한지 3일이나 지난 게시물이니
config 에 포인트를 설정해둔 값이 적용다만 2월 5일 오늘 작성 한 게시물일 땐, < 오늘 날짜 - 1Day = 2월 4일
Else가 작동하여
$point = 0; 포인트 값이 0이 되어 포인트 차감이 되지 않도록 하는 것이 맞다고 생각하는데
날짜 구분없이 다 차감되는 현상이 있네요, 안에 값을 말씀하신대로 바꾸면 날짜 구분없이
포인트 차감이 안되어버립니다. 제가 적용한 소스는 또 반대로 날짜 구분없이 다 차감해버리구요 ㅠ_ㅠ) -
꾸링
2015.02.05 13:13
아마도 초보지만.
제가 임의로 oDocumment를 사용하기 위해
//변수선언 시작
$document_srl = $obj->document_srl;
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
//변수선언 끝추가한 변수가 문제가 되서 작동을 안하는 것으로 생각되요 ㅠ_ㅠ
-
이즈야
2015.02.05 13:20
아... 그럼 저는 지금 도와드릴 수 없겠네요. 모바일이라서요.
실제 값이 있는지 없는지는 die, var_dump 함수를 이용해 확인해보거나 XE 디버깅 함수 debugPrint를 사용하세요. -
꾸링
2015.02.05 13:23
아니에요!! 답변 해주시는 것만으로도 큰 힘이 됩니다 고맙습니다!
이러면 아마 될 듯합니다만...