댓글을 N번 만 달 수 있는 애드온
CMS/프레임워크 | XE 1.x |
---|---|
개발 언어 | PHP 7.0 |
안녕하세요?
매일 출석만 하고 사라졌다가 모처럼 들러 또 아쉬운 질문 드리게 되었네요.
kdp7584님의 댓글을 N번만 허용하는 애드온 을 사용하고 있습니다.
다른 기능들은 잘 작동하고 있는데 '댓글수정' 시에도 '새로운 댓글 작성' 으로 인식하여 글 수정이 되질 않아서요.
( https://xe1.xpressengine.com/index.php?mid=download&package_id=22753904 )
'수정모드' 일때에는 애드온에서 예외적용을 하고싶은데 어디를 어떻게 고쳐야 될지 궁금합니다.
대충 아래부분에 '수정모드일때'라는 코드를 삽입하면 될법한데 xe 손놓은지가 오래되어 방법이 막막하네요
if($addon_info->admin_non === 'N' && $only_once_dump->logged_info->is_admin ==='N' || $addon_info->admin_non === 'Y'){
if($only_once_dump->obj->cur_member_srl !== $only_once_dump->argments->member_srl && $addon_info->writer_ign === 'Y' || $addon_info->writer_ign === 'N'){
$only_once_dump->queries = new stdClass();
$only_once_dump->queries->output = executeQuery('addons.only_once_comment.getCommentCount', $only_once_dump->argments);
if($only_once_dump->obj->cur_member_srl !== $only_once_dump->argments->member_srl && $addon_info->writer_ign === 'Y' || $addon_info->writer_ign === 'N'){
$only_once_dump->queries = new stdClass();
$only_once_dump->queries->output = executeQuery('addons.only_once_comment.getCommentCount', $only_once_dump->argments);
아래는 애드온의 only_once_comment_addon.php 파일입니다
<?php
if(!defined("__XE__")) exit();
if($called_position === 'before_module_init' && $this->act === 'procBoardInsertComment'){
$only_once_dump->obj = new stdClass();
$only_once_dump->obj->oDocumentModel = getModel('document');
$only_once_dump->obj->oDocument = $only_once_dump->obj->oDocumentModel->getDocument(Context::get('document_srl'));
$only_once_dump->obj->cur_member_srl = $only_once_dump->obj->oDocument->variables['member_srl'];
if(!$only_once_dump->obj->cur_member_srl) return;
$only_once_dump->logged_info = new stdClass();
$only_once_dump->logged_info = Context::get('logged_info');
if(!$only_once_dump->logged_info) return;
$only_once_dump->argments = new stdClass();
$only_once_dump->argments->document_srl = Context::get('document_srl');
$only_once_dump->argments->member_srl = $only_once_dump->logged_info->member_srl;
$only_once_dump->argments->member_srl = $only_once_dump->argments->member_srl ? $only_once_dump->argments->member_srl : 0;
if($addon_info->admin_non === 'N' && $only_once_dump->logged_info->is_admin ==='N' || $addon_info->admin_non === 'Y'){
if($only_once_dump->obj->cur_member_srl !== $only_once_dump->argments->member_srl && $addon_info->writer_ign === 'Y' || $addon_info->writer_ign === 'N'){
$only_once_dump->queries = new stdClass();
$only_once_dump->queries->output = executeQuery('addons.only_once_comment.getCommentCount', $only_once_dump->argments);
if(!$only_once_dump->queries->output->toBool()) return;
$only_once_dump->queries->output->data->count = $only_once_dump->queries->output->data->count ? $only_once_dump->queries->output->data->count : 0;
$addon_info->limit = $addon_info->limit ? $addon_info->limit : 1;
if($only_once_dump->queries->output->data->count >= $addon_info->limit){
$only_once_dump->after_dump = new stdClass();
$only_once_dump->after_dump->message = $addon_info->limit.'개 이상의 댓글은 등록할 수 없습니다.';
$only_once_dump->after_dump->error = TRUE;
Context::set('only_once_err',$only_once_dump->after_dump);
header("Content-Type: text/xml; charset=UTF-8");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<response>\r\n<error>-1</error>\r\n<message>".$only_once_dump->after_dump->message."</message>\r\n</response>", $addon_info->comment_limit);
Context::close();
exit();
return;
}
}
}
}
if(!defined("__XE__")) exit();
if($called_position === 'before_module_init' && $this->act === 'procBoardInsertComment'){
$only_once_dump->obj = new stdClass();
$only_once_dump->obj->oDocumentModel = getModel('document');
$only_once_dump->obj->oDocument = $only_once_dump->obj->oDocumentModel->getDocument(Context::get('document_srl'));
$only_once_dump->obj->cur_member_srl = $only_once_dump->obj->oDocument->variables['member_srl'];
if(!$only_once_dump->obj->cur_member_srl) return;
$only_once_dump->logged_info = new stdClass();
$only_once_dump->logged_info = Context::get('logged_info');
if(!$only_once_dump->logged_info) return;
$only_once_dump->argments = new stdClass();
$only_once_dump->argments->document_srl = Context::get('document_srl');
$only_once_dump->argments->member_srl = $only_once_dump->logged_info->member_srl;
$only_once_dump->argments->member_srl = $only_once_dump->argments->member_srl ? $only_once_dump->argments->member_srl : 0;
if($addon_info->admin_non === 'N' && $only_once_dump->logged_info->is_admin ==='N' || $addon_info->admin_non === 'Y'){
if($only_once_dump->obj->cur_member_srl !== $only_once_dump->argments->member_srl && $addon_info->writer_ign === 'Y' || $addon_info->writer_ign === 'N'){
$only_once_dump->queries = new stdClass();
$only_once_dump->queries->output = executeQuery('addons.only_once_comment.getCommentCount', $only_once_dump->argments);
if(!$only_once_dump->queries->output->toBool()) return;
$only_once_dump->queries->output->data->count = $only_once_dump->queries->output->data->count ? $only_once_dump->queries->output->data->count : 0;
$addon_info->limit = $addon_info->limit ? $addon_info->limit : 1;
if($only_once_dump->queries->output->data->count >= $addon_info->limit){
$only_once_dump->after_dump = new stdClass();
$only_once_dump->after_dump->message = $addon_info->limit.'개 이상의 댓글은 등록할 수 없습니다.';
$only_once_dump->after_dump->error = TRUE;
Context::set('only_once_err',$only_once_dump->after_dump);
header("Content-Type: text/xml; charset=UTF-8");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<response>\r\n<error>-1</error>\r\n<message>".$only_once_dump->after_dump->message."</message>\r\n</response>", $addon_info->comment_limit);
Context::close();
exit();
return;
}
}
}
}
조언 부탁드리겠습니다
행복한 주말 되시길 바랍니다
댓글 2
if에 !Context::get('comment_srl') 조건문을 추가해보세요
두번째 라인부터 if 로 씌워서 해 보니 잘 작동되는거 같습니다.
!Context::get('comment_srl') 이 '수정모드'로 식별되는군요.