https://github.com/huhani/xe-gamezot/blob/master/gamezot.controller.php#L56-L150
위에 보면
function triggerBeforeDeleteDocument(&$obj) {
}
function _triggerBeforeDeleteDocument(&$obj) {
}
이렇게 _가 있는 것과 없는것을 구분해서 작성하는 이유는 뭔가요??
그리고 이 글의 실제 질문인데요.
function triggerBeforeDeleteDocument(&$obj){ $oGamezotModel = getModel('gamezot'); $isBoardAdmin = $oGamezotModel->checkIsBoardAdmin(); if($isBoardAdmin){ return new Object(); } $document_srl = $obj->document_srl ? $obj->document_srl : Context::get('document_srl'); $oDocumentModel = getModel('document'); $oDocumentController = getController('document'); $oDocument = $oDocumentModel->getDocument($document_srl); if (!$oDocument->isExists()){ return new Object(); } $document_content = $oDocument->get('content'); if($this->_isDeletedContentByDocument($document_content)){ return new Object(-1, 'msg_document_deleted'); } return new Object(); } function _triggerBeforeDeleteDocument(&$obj){ $oGamezotModel = getModel('gamezot'); $isBoardAdmin = $oGamezotModel->checkIsBoardAdmin(); if($isBoardAdmin){ return new Object(); } $document_srl = Context::get('document_srl'); $oDocumentModel = getModel('document'); $oDocumentController = getController('document'); $oDocument = $oDocumentModel->getDocument($document_srl); if (!$oDocument->isExists()){ return new Object(); } if(!$oDocument->isGranted()){ return new Object(-1, 'msg_not_permitted'); } $document_content = $oDocument->get('content'); if($this->_isDeletedContentByDocument($document_content)){ return new Object(-1, 'msg_document_deleted'); } global $lang; $args = (object)$oDocument->variables; $args->title = $lang->msg_document_deleted; $args->title_bold = 'N'; $args->title_color = '888888'; $args->content = sprintf('<!--DeletedDocument--><p>%s</p>', $lang->msg_document_deleted); $args->comment_status = $args->commentStatus = 'DENY'; $output = executeQuery('document.updateDocument', $args); if(!$output->toBool()){ return $output; } $oFileController = getController('file'); $output = $oFileController->deleteFiles($document_srl); $oCacheHandler = CacheHandler::getInstance('object'); if($oCacheHandler->isSupport()){ $cache_key = 'document_item:'. getNumberingPath($document_srl) . $document_srl; $oCacheHandler->delete($cache_key); } $member_srl = $oDocument->get('member_srl'); if($member_srl){ $module_srl = $oDocument->get('module_srl'); $oModuleModel = getModel('module'); $config = $oModuleModel->getModuleConfig('point'); $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); $point = $module_config['insert_document'] ? $module_config['insert_document'] : 0; if($point){ $oPointController = getController('point'); $oPointController->setPoint($member_srl, $point, 'minus'); } } $obj->setRedirectUrl(getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', '', 'page', Context::get('page'), 'document_srl', '')); $obj->add('mid', Context::get('mid')); $obj->add('page', Context::get('page')); if(Context::get('xeVirtualRequestMethod') !== 'xml'){ $obj->setMessage('success_deleted'); } $obj->act = ''; return new Object(); }
위 부분이 게시글 삭제시 삭제된게시글로 남기게 하는 부분일 것입니다.
위 부분에서 게글이 댓글을 가지고 있지 않다면 저기서 리턴시키는 부분을 추가해주고 싶습니다.
글 작성한 직후 아직 다른 회원의 참여가 없는 상태에서는 삭제를 제공하고 싶어서요.
function _triggerBeforeDeleteDocument(&$obj) 함수 에
if (!$oDocument->getCommentCount()){
return new Object();
}
로 리턴 시키니 잘 되네요.
댓글이 없는 경우는 그냥 삭제 / 댓글이 있는 경우는 삭제된 게시글로 존치되어 댓글 보호
위에 함수는 이미 삭제된 게시글을 삭제할 경우 메시지를 출력하기 위한 함수 같습니다.