Extra Form
PHP PHP 7.0
CMS XpressEngine

안녕하세요?

 

매일 출석만 하고 사라졌다가 모처럼 들러 또 아쉬운 질문 드리게 되었네요.

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);

 

아래는 애드온의 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에 !Context::get('comment_srl') 조건문을 추가해보세요

  • ? profile
    감사합니다.
    두번째 라인부터 if 로 씌워서 해 보니 잘 작동되는거 같습니다.
    !Context::get('comment_srl') 이 '수정모드'로 식별되는군요.