From 239b231ffa1c748431effbf1d207761767758ce3 Mon Sep 17 00:00:00 2001 From: BJRambo Date: Wed, 7 Aug 2019 20:29:53 +0900 Subject: [PATCH] =?UTF-8?q?#1183=20#1152=20=EC=B6=94=EC=B2=9C=20=EC=B7=A8?= =?UTF-8?q?=EC=86=8C=20=EA=B8=B0=EB=8A=A5=20=EB=B3=B4=EA=B0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/lang/ko.php | 1 + modules/board/lang/ko.php | 2 + modules/board/tpl/board_insert.html | 12 ++++ modules/document/document.controller.php | 70 ++++++++++++------- modules/document/document.item.php | 9 ++- modules/document/lang/ko.php | 2 - .../queries/getDocumentVotedLogInfo.xml | 1 + modules/document/tpl/document_config.html | 10 --- 8 files changed, 69 insertions(+), 38 deletions(-) diff --git a/common/lang/ko.php b/common/lang/ko.php index bed1ca5ad..e25acfecb 100644 --- a/common/lang/ko.php +++ b/common/lang/ko.php @@ -271,6 +271,7 @@ $lang->fail_to_delete = '삭제 실패했습니다.'; $lang->fail_to_move = '이동 실패했습니다.'; $lang->failed_voted = '추천할 수 없습니다.'; $lang->failed_voted_canceled = '추천한 적이 없으므로 취소할 수 없습니다.'; +$lang->failed_voted_cancel = '추천을 취소할 수 없습니다.'; $lang->failed_blamed = '비추천할 수 없습니다.'; $lang->failed_blamed_canceled = '비추천한 적이 없으므로 취소할 수 없습니다.'; $lang->failed_declared = '신고할 수 없습니다.'; diff --git a/modules/board/lang/ko.php b/modules/board/lang/ko.php index 7de816f9e..fbf433408 100644 --- a/modules/board/lang/ko.php +++ b/modules/board/lang/ko.php @@ -51,6 +51,7 @@ $lang->about_allow_no_category = '분류를 선택하지 않은 글도 허용하 $lang->protect_content = '글 보호 기능'; $lang->protect_comment = '댓글 보호 기능'; $lang->protect_regdate = '기간 제한 기능'; +$lang->cancel_vote = '추천/비추천/신고 취소 허용'; $lang->document_length_limit = '문서 길이 제한'; $lang->comment_length_limit = '댓글 길이 제한'; $lang->about_document_length_limit = '지나치게 용량이 큰 글을 작성하지 못하도록 합니다. 지저분한 태그가 많이 붙은 글을 붙여넣기하면 제한을 초과할 수도 있습니다.'; @@ -58,6 +59,7 @@ $lang->about_comment_length_limit = '지나치게 용량이 큰 댓글을 작성 $lang->update_order_on_comment = '댓글 작성시 글 수정 시각 갱신'; $lang->about_update_order_on_comment = '댓글이 작성되면 해당 글의 수정 시각을 갱신합니다. 포럼형 게시판, 최근 댓글 표시 기능 등에 필요합니다.'; $lang->non_login_vote = '비회원 추천 허용'; +$lang->about_cancel_vote = '추천 비추천 신고를 취소할 수 있습니다.'; $lang->about_non_login_vote = '로그인하지 않은 방문자도 추천할 수 있도록 합니다.'; $lang->about_protect_regdate = '글이나 댓글을 작성한 후 일정 기간이 지나면 수정 또는 삭제할 수 없도록 합니다. (단위 : day)'; $lang->about_protect_content = '댓글이 달린 글은 수정 또는 삭제할 수 없도록 합니다.'; diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html index 615130e13..3473d85f7 100644 --- a/modules/board/tpl/board_insert.html +++ b/modules/board/tpl/board_insert.html @@ -289,6 +289,18 @@

{$lang->about_non_login_vote}

+
+ +
+ + +

{$lang->about_cancel_vote}

+
+
diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 53e012fa7..d42a5bb5b 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -63,9 +63,16 @@ class documentController extends document throw new Rhymix\Framework\Exceptions\NotPermitted; } } - + if($this->module_info->cancel_vote !=='Y') + { + throw new Rhymix\Framework\Exception('failed_voted_cancel'); + } + $document_srl = Context::get('target_srl'); - if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest; + if(!$document_srl) + { + throw new Rhymix\Framework\Exceptions\InvalidRequest; + } $oDocumentModel = getModel('document'); $oDocument = $oDocumentModel->getDocument($document_srl, false, false); @@ -150,6 +157,11 @@ class documentController extends document } } + if($this->module_info->cancel_vote !=='Y') + { + return new Rhymix\Framework\Exception('failed_voted_canceled'); + } + $document_srl = Context::get('target_srl'); if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest; @@ -180,26 +192,31 @@ class documentController extends document */ function updateVotedCountCancel($document_srl, $oDocument, $point) { - $logged_info = Context::get('logged_info'); - + if(!$_SESSION['voted_document'][$document_srl]) + { + return new BaseObject(-1, $point > 0 ? 'failed_voted_canceled' : 'failed_blamed_canceled'); + } + // Check if the current user has voted previously. $args = new stdClass; $args->document_srl = $document_srl; - $args->point = $point; - if($logged_info->member_srl) + if($this->user->member_srl) { - $args->member_srl = $logged_info->member_srl; + $args->member_srl = $this->user->member_srl; } else { $args->ipaddress = $_SERVER['REMOTE_ADDR']; } $output = executeQuery('document.getDocumentVotedLogInfo', $args); + if(!$output->data->count) { return new BaseObject(-1, $point > 0 ? 'failed_voted_canceled' : 'failed_blamed_canceled'); } + $point = $output->data->point; + // Call a trigger (before) $trigger_obj = new stdClass; $trigger_obj->member_srl = $oDocument->get('member_srl'); @@ -215,35 +232,38 @@ class documentController extends document { return $trigger_output; } - + // begin transaction $oDB = DB::getInstance(); $oDB->begin(); - - $args = new stdClass(); - $d_args = new stdClass(); - $args->document_srl = $d_args->document_srl = $document_srl; - $d_args->member_srl = $logged_info->member_srl; - if ($trigger_obj->update_target === 'voted_count') + + if($point != 0) { - $args->voted_count = $trigger_obj->after_point; - $output = executeQuery('document.updateVotedCount', $args); + $args = new stdClass(); + $d_args = new stdClass(); + $args->document_srl = $d_args->document_srl = $document_srl; + $d_args->member_srl = $this->user->member_srl; + if ($trigger_obj->update_target === 'voted_count') + { + $args->voted_count = $trigger_obj->after_point; + $output = executeQuery('document.updateVotedCount', $args); + } + else + { + $args->blamed_count = $trigger_obj->after_point; + $output = executeQuery('document.updateBlamedCount', $args); + } + $d_output = executeQuery('document.deleteDocumentVotedLog', $d_args); + if(!$d_output->toBool()) return $d_output; } - else - { - $args->blamed_count = $trigger_obj->after_point; - $output = executeQuery('document.updateBlamedCount', $args); - } - $d_output = executeQuery('document.deleteDocumentVotedLog', $d_args); - if(!$d_output->toBool()) return $d_output; - // session reset $_SESSION['voted_document'][$document_srl] = false; // Call a trigger (after) ModuleHandler::triggerCall('document.updateVotedCountCancel', 'after', $trigger_obj); - + $oDB->commit(); + return $output; } diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 80fb4383a..f03e2a4f0 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -495,7 +495,14 @@ class documentItem extends BaseObject } $args = new stdClass; - $args->member_srl = $logged_info->member_srl; + if($logged_info->member_srl) + { + $args->member_srl = $logged_info->member_srl; + } + else + { + $args->ipaddress = $_SERVER['REMOTE_ADDR']; + } $args->document_srl = $this->document_srl; $output = executeQuery('document.getDocumentVotedLog', $args); if($output->data->point) diff --git a/modules/document/lang/ko.php b/modules/document/lang/ko.php index 380ca6a73..d6967ac0b 100644 --- a/modules/document/lang/ko.php +++ b/modules/document/lang/ko.php @@ -5,7 +5,6 @@ $lang->view_count_option_all = '모두 계산'; $lang->view_count_option_some = '일부 계산'; $lang->view_count_option_once = '중복 금지'; $lang->view_count_option_none = '계산 안 함'; -$lang->cmd_examination_vote = '추천 비추천 신고 검사'; $lang->cmd_document_module_config = '기본 설정'; $lang->cmd_delete_all_thumbnail = '섬네일 모두 삭제'; $lang->cmd_pc_icon_setting = 'PC 아이콘 설정'; @@ -20,7 +19,6 @@ $lang->expand = '펼침'; $lang->category_group_srls = '그룹 제한'; $lang->cmd_make_child = '하위 분류 추가'; $lang->cmd_enable_move_category = '분류 위치 변경 (선택 후 위 메뉴를 드래그하세요.)'; -$lang->about_examination_vote = '사용시 유저가 추천 비추천 신고를 했다는 검사를 좀 더 까다롭게 합니다. 기본값은 사용하지 않음(기존 동작과 일치)이고 사용할 경우 세션, 아이피까지 확인하여 검사합니다.'; $lang->about_category_title = '분류 이름을 입력해주세요.'; $lang->about_view_count_option = '조회 수 설정에 따라 중복 조회 수 카운트를 할 수 있도록 도와줍니다. 각 옵션에 따라 조회 수를 기록하는 방식이 달라집니다.'; $lang->about_expand = '선택하면 늘 펼쳐진 상태로 있게 합니다.'; diff --git a/modules/document/queries/getDocumentVotedLogInfo.xml b/modules/document/queries/getDocumentVotedLogInfo.xml index 6c512e7ee..fdc4106bb 100644 --- a/modules/document/queries/getDocumentVotedLogInfo.xml +++ b/modules/document/queries/getDocumentVotedLogInfo.xml @@ -4,6 +4,7 @@ + diff --git a/modules/document/tpl/document_config.html b/modules/document/tpl/document_config.html index 42a805429..0180b076f 100644 --- a/modules/document/tpl/document_config.html +++ b/modules/document/tpl/document_config.html @@ -41,16 +41,6 @@

{$lang->about_cmd_mobile_icon_setting}

-
- -
- -

{$lang->about_examination_vote}

-
-