From 559239dee02fbdbecf843b87a989968591bec2ea Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 9 Oct 2024 14:27:16 +0900 Subject: [PATCH] Add board features class #2399 --- modules/board/board.view.php | 6 ++ modules/board/models/Features.php | 126 ++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 modules/board/models/Features.php diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 736d74c8f..e485839bd 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -200,6 +200,12 @@ class BoardView extends Board // list $this->dispBoardContentList(); + // Board features + $oDocument = Context::get('oDocument'); + $document_module_srl = ($oDocument && $oDocument->isExists()) ? $oDocument->get('module_srl') : $this->module_srl; + $board_features = Rhymix\Modules\Board\Models\Features::fromModuleInfo($this->module_info, $document_module_srl); + Context::set('board_features', $board_features); + /** * add javascript filters **/ diff --git a/modules/board/models/Features.php b/modules/board/models/Features.php new file mode 100644 index 000000000..7e8dc1472 --- /dev/null +++ b/modules/board/models/Features.php @@ -0,0 +1,126 @@ +document = new \stdClass; + $this->comment = new \stdClass; + } + + /** + * Get board features from module_srl. + * + * @param int $module_srl + * @param ?int $document_module_srl + * @return self + */ + public static function fromModuleSrl(int $module_srl, ?int $document_module_srl = null): self + { + $module_info = ModuleModel::getModuleInfoByModuleSrl($module_srl) ?: new \stdClass; + return self::fromModuleInfo($module_info, $document_module_srl); + } + + /** + * Get board features from an already created module info object. + * + * @param object $module_info + * @param ?int $document_module_srl + * @return self + */ + public static function fromModuleInfo(object $module_info, ?int $document_module_srl = null): self + { + if (!$document_module_srl) + { + $document_module_srl = $module_info->module_srl; + } + $document_config = ModuleModel::getModulePartConfig('document', $document_module_srl); + $comment_config = ModuleModel::getModulePartConfig('comment', $document_module_srl); + $features = new self; + + // Document features + $features->document->vote_up = ($document_config->use_vote_up ?? 'Y') !== 'N'; + $features->document->vote_down = ($document_config->use_vote_down ?? 'Y') !== 'N'; + $features->document->vote_log = ($document_config->use_vote_up ?? 'Y') === 'S' || ($document_config->use_vote_down ?? 'Y') === 'S'; + if (isset($document_config->allow_vote_cancel)) + { + $features->document->cancel_vote = $document_config->allow_vote_cancel === 'Y'; + } + else + { + $features->document->cancel_vote = ($module_info->cancel_vote ?? 'N') === 'Y'; + } + if (isset($document_config->allow_vote_non_member)) + { + $features->document->non_member_vote = $document_config->allow_vote_non_member === 'Y'; + } + else + { + $features->document->non_member_vote = ($module_info->non_login_vote ?? 'N') === 'Y'; + } + $features->document->report = true; + if (isset($document_config->allow_declare_cancel)) + { + $features->document->cancel_report = $document_config->allow_declare_cancel === 'Y'; + } + else + { + $features->document->cancel_report = ($module_info->cancel_vote ?? 'N') === 'Y'; + } + $features->document->history = ($document_config->use_history ?? 'N') === 'Y'; + + // Comment features + $features->comment->vote_up = ($comment_config->use_vote_up ?? 'Y') !== 'N'; + $features->comment->vote_down = ($comment_config->use_vote_down ?? 'Y') !== 'N'; + $features->comment->vote_log = ($comment_config->use_vote_up ?? 'Y') === 'S' || ($comment_config->use_vote_down ?? 'Y') === 'S'; + if (isset($comment_config->allow_vote_cancel)) + { + $features->comment->cancel_vote = $comment_config->allow_vote_cancel === 'Y'; + } + else + { + $features->comment->cancel_vote = ($module_info->cancel_vote ?? 'N') === 'Y'; + } + if (isset($comment_config->allow_vote_non_member)) + { + $features->comment->non_member_vote = $comment_config->allow_vote_non_member === 'Y'; + } + else + { + $features->comment->non_member_vote = ($module_info->non_login_vote ?? 'N') === 'Y'; + } + $features->comment->report = true; + if (isset($comment_config->allow_declare_cancel)) + { + $features->comment->cancel_report = $comment_config->allow_declare_cancel === 'Y'; + } + else + { + $features->comment->cancel_report = ($module_info->cancel_vote ?? 'N') === 'Y'; + } + $features->comment->default_page = $comment_config->default_page ?? 'last'; + + return $features; + } +}