안녕하세요?
아래 확장변수 유효기간 애드온은 일정시점에 게시물을 삭제할 수 있도록 되어 있습니다.
https://xetown.com/tips/1053472
여기서 궁금증이 생기는데요.
확장변수 "extra_var1"에 형식은 단일선택으로 "진행중", "마감됨"으로 해놓고
게시물 작성시에는 "진행중"으로 해놓았다가 유효기간 도래시 자동으로 "마감됨"으로 바뀌면
게시판에서 "진행중"인 게시물만 정렬해서 볼 수 있을 것 같은데요.
아래 코드를 보면 상단에서 날짜를 비교해보고 날짜가 지난 경우 아래 함수로 게시물을 삭제하는 것 같더군요.
foreach($temp as $key=>$val)
{
$oDocumentController->deleteDocument($val, true);
}
그래서 혹시 게시물 삭제 말고, 확장변수 값을 바꿔줄 수 있을까해서 질문 남겨봅니다.
rx_document_extra_vars DB에서 해당 게시물을 체크해서 값을 바꿔줘야하니 복잡하겠지요?
저기 위에서처럼 간단하게 해결하는 방법 말고 복잡하게 많은 노력이 필요하면 패스하고요. ^^;
<?php if(!defined("__XE__")) exit(); if($called_position!='before_module_proc') return; if(($this->module == 'board') && $act) return; if ($addon_info->module_srl){ $module_srl = $addon_info->module_srl; }else{ return; } $extra_val_name = $addon_info->extra_val_name; $document_srl = $_REQUEST['document_srl']; if($extra_val_name == '') return; $args->module_srl = $module_srl; $output = executeQuery('addons.cc_ad_limited_posts.doc_list', $args); $oDocumentController = &getController('document'); $oDocumentModel = &getModel('document'); if( count ($output->data) >1){ foreach($output->data as $__key=>$__val) { foreach($__val as $key=>$val) if($key == "document_srl") { $getExtraVars = $oDocumentModel->getExtraVars($module_srl,$val); $date_val = ""; foreach($getExtraVars AS $key_=>$val_) { if ($val_->eid == $extra_val_name) { $date_val = $val_->value; } } if( $date_val!="" && (strtotime($date_val) < strtotime(date('Ymd'))) ) {// 날짜가 과거인 경우 $temp[] =$val; } } } }else{ foreach($output->data as $key=>$val) { if($key == "document_srl") { $getExtraVars = $oDocumentModel->getExtraVars($module_srl,$val); $date_val = ""; foreach($getExtraVars AS $key_=>$val_) { if ($val_->eid == $extra_val_name) { $date_val = $val_->value; } } if( $date_val!="" && (strtotime($date_val) < strtotime(date('Ymd'))) ) {// 날짜가 과거인 경우 $temp[] =$val; } } } } foreach($temp as $key=>$val) { $oDocumentController->deleteDocument($val, true); } ?>
일반적인 게시물 검색 기능을 활용하면 되니까요.
이런 식으로 접근할 수 있을 겁니다.
위의 예시한 소스에서 $oDocumentController->deleteDocument($val, true);의 $val이 문서번호를 의미하는 것 같은데요. 그렇다면,
$oDocumentController->deleteDocument($val, true); 대신
$oDocumentController->updateDocumentExtraVar($module_srl, $val, 1, '마감됨'); 으로 하면 되긴 할 겁니다.
그리고 나서 게시판을 확장변수 1번 변수에 따라 정렬을 해줘야겠죠.
url에 search_target를 확장변수의 eid로 하고 search_keyword을 마감됨으로 넣어주면 정렬이 될 겁니다.
* 참고 : 8번 확장변수의 값이 '세미나실'인 게시물만 추출
https://dev.aporia.blog/index.php?mid=board_fKje46&search_target=extra_vars8&search_keyword=%EC%84%B8%EB%AF%B8%EB%82%98%EC%8B%A4
* 주의 : 다만 문제가 있다면 게시판 목록이 검색 키워드를 통해 만들어진 것이기 때문에 이 안에서 제목이나 내용 검색을 따로 한다든가 하면 '마감됨' 값만 가지는 게시물 목록은 불가능하게 될 겁니다.