diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index ea3e94fd4..6c2cfc9eb 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -83,6 +83,7 @@ $lang->total_count = "전체개수"; $lang->ipaddress = "IP 주소"; $lang->path = "경로"; + $lang->cart = "선택항목"; $lang->mid = "모듈이름"; $lang->layout = "레이아웃"; diff --git a/modules/poll/conf/module.xml b/modules/poll/conf/module.xml index 24f7226a3..5c46103a4 100644 --- a/modules/poll/conf/module.xml +++ b/modules/poll/conf/module.xml @@ -5,5 +5,6 @@ + diff --git a/modules/poll/poll.controller.php b/modules/poll/poll.controller.php index 61b84aa64..c0455f525 100644 --- a/modules/poll/poll.controller.php +++ b/modules/poll/poll.controller.php @@ -180,5 +180,86 @@ $this->setMessage('success_poll'); } + /** + * @brief 관리자 페이지에서 선택된 설문조사들을 삭제 + **/ + function procPollAdminDeleteChecked() { + // 선택된 글이 없으면 오류 표시 + $cart = Context::get('cart'); + if(!$cart) return $this->stop('msg_cart_is_null'); + + $poll_srl_list= explode('|@|', $cart); + $poll_count = count($poll_srl_list); + if(!$poll_count) return $this->stop('msg_cart_is_null'); + + // 글삭제 + for($i=0;$i<$poll_count;$i++) { + $poll_index_srl = trim($poll_srl_list[$i]); + if(!$poll_index_srl) continue; + + $output = $this->deletePollTitle($poll_index_srl, true); + if(!$output->toBool()) return $output; + } + + $this->setMessage( sprintf(Context::getLang('msg_checked_poll_is_deleted'), $poll_count) ); + } + + /** + * @brief 설문조사 삭제 (한번에 여러개의 설문 등록시 그 중 하나의 설문만 삭제) + **/ + function deletePollTitle($poll_index_srl) { + $args->poll_index_srl = $poll_index_srl; + + $oDB = &DB::getInstance(); + $oDB->begin(); + + $output = $oDB->executeQuery('poll.deletePollTitle', $args); + if(!$output) { + $oDB->rollback(); + return $output; + } + + $output = $oDB->executeQuery('poll.deletePollItem', $args); + if(!$output) { + $oDB->rollback(); + return $output; + } + + $oDB->commit(); + + return new Object(); + } + + /** + * @brief 설문조사 삭제 (하나의 묶인 설문조사를 통째로 삭제) + **/ + function deletePoll($poll_srl) { + $args->poll_srl = $poll_srl; + + $oDB = &DB::getInstance(); + $oDB->begin(); + + $output = $oDB->executeQuery('poll.deletePoll', $args); + if(!$output) { + $oDB->rollback(); + return $output; + } + + $output = $oDB->executeQuery('poll.deletePollTitle', $args); + if(!$output) { + $oDB->rollback(); + return $output; + } + + $output = $oDB->executeQuery('poll.deletePollItem', $args); + if(!$output) { + $oDB->rollback(); + return $output; + } + + $oDB->commit(); + + return new Object(); + } } ?> diff --git a/modules/poll/poll.model.php b/modules/poll/poll.model.php index c348cb62d..37f339070 100644 --- a/modules/poll/poll.model.php +++ b/modules/poll/poll.model.php @@ -59,6 +59,7 @@ $poll->stop_date = $output->data->stop_date; $output = executeQuery('poll.getPollTitle', $args); + if(!$output->data) return; if(!is_array($output->data)) $output->data = array($output->data); foreach($output->data as $key => $val) { $poll->poll[$val->poll_index_srl]->title = $val->title; diff --git a/modules/poll/queries/deletePoll.xml b/modules/poll/queries/deletePoll.xml new file mode 100644 index 000000000..0fc33fed1 --- /dev/null +++ b/modules/poll/queries/deletePoll.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/poll/queries/deletePollItem.xml b/modules/poll/queries/deletePollItem.xml new file mode 100644 index 000000000..4e052fe79 --- /dev/null +++ b/modules/poll/queries/deletePollItem.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/poll/queries/deletePollTitle.xml b/modules/poll/queries/deletePollTitle.xml new file mode 100644 index 000000000..86bae302a --- /dev/null +++ b/modules/poll/queries/deletePollTitle.xml @@ -0,0 +1,9 @@ + + +
+ + + + + +