diff --git a/modules/board/board.admin.view.php b/modules/board/board.admin.view.php index 6c86b0b90..654c4347e 100644 --- a/modules/board/board.admin.view.php +++ b/modules/board/board.admin.view.php @@ -142,6 +142,9 @@ class BoardAdminView extends Board { return $this->alertMessage('msg_invalid_request'); } + // Fix missing module configuration values + BoardModel::fixModuleConfig($this->module_info); + // get the skins list $oModuleModel = getModel('module'); $skin_list = $oModuleModel->getSkins($this->module_path); @@ -199,6 +202,10 @@ class BoardAdminView extends Board { * additonal setup panel is for connecting the service modules with other modules **/ function dispBoardAdminBoardAdditionSetup() { + + // Fix missing module configuration values + BoardModel::fixModuleConfig($this->module_info); + // sice content is obtained from other modules via call by reference, declare it first $content = ''; diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index e8bc4aec4..a112c190d 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -20,6 +20,9 @@ class BoardController extends Board throw new Rhymix\Framework\Exceptions\NotPermitted; } + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + // setup variables $obj = Context::getRequestVars(); $obj->module_srl = $this->module_srl; @@ -27,7 +30,7 @@ class BoardController extends Board unset($obj->extra_vars); // Remove disallowed Unicode symbols. - if ($this->module_info->filter_specialchars !== 'N') + if ($this->module_info->filter_specialchars === 'Y') { if (isset($obj->title)) { @@ -50,14 +53,14 @@ class BoardController extends Board } // Return error if content is too large. - $document_length_limit = ($this->module_info->document_length_limit ?: 1024) * 1024; + $document_length_limit = $this->module_info->document_length_limit * 1024; if (strlen($obj->content) > $document_length_limit && !$this->grant->manager) { throw new Rhymix\Framework\Exception('msg_content_too_long'); } // Return error if content conains excessively large data URLs. - $inline_data_url_limit = ($this->module_info->inline_data_url_limit ?: 64) * 1024; + $inline_data_url_limit = $this->module_info->inline_data_url_limit * 1024; preg_match_all('!src="\s*(data:[^,]*,[a-z0-9+/=%$!._-]+)!i', (string)$obj->content, $matches); foreach ($matches[1] as $match) { @@ -85,7 +88,7 @@ class BoardController extends Board $obj->category_srl = 0; } } - if (!$obj->category_srl && ($this->module_info->allow_no_category ?? 'N') !== 'Y') + if (!$obj->category_srl && $this->module_info->allow_no_category !== 'Y') { if (!$this->grant->manager) { @@ -135,7 +138,7 @@ class BoardController extends Board $oDocument = DocumentModel::getDocument($obj->document_srl); // Set anonymous information when insert mode or status is temp - if($this->module_info->use_anonymous == 'Y' && (!$this->grant->manager || ($this->module_info->anonymous_except_admin ?? 'N') !== 'Y') && (!$oDocument->isExists() || $oDocument->get('status') == DocumentModel::getConfigStatus('temp'))) + if($this->module_info->use_anonymous == 'Y' && (!$this->grant->manager || $this->module_info->anonymous_except_admin === 'N') && (!$oDocument->isExists() || $oDocument->get('status') == DocumentModel::getConfigStatus('temp'))) { if(!$obj->document_srl) { @@ -143,7 +146,7 @@ class BoardController extends Board } $manual = true; - $anonymous_name = $this->module_info->anonymous_name ?: 'anonymous'; + $anonymous_name = $this->module_info->anonymous_name ?: BoardModel::DEFAULT_MODULE_CONFIG['anonymous_name']; $anonymous_name = $this->createAnonymousName($anonymous_name, $logged_info->member_srl, $obj->document_srl); $obj->notify_message = 'N'; @@ -172,7 +175,7 @@ class BoardController extends Board } // Protect admin document - if ($this->module_info->protect_admin_content_update !== 'N') + if ($this->module_info->protect_admin_content_update === 'Y') { $member_info = MemberModel::getMemberInfo($oDocument->get('member_srl')); if($member_info->is_admin == 'Y' && $logged_info->is_admin != 'Y') @@ -361,6 +364,9 @@ class BoardController extends Board throw new Rhymix\Framework\Exceptions\NotPermitted; } + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + // check protect content if($this->module_info->protect_content == 'Y' || $this->module_info->protect_delete_content == 'Y') { @@ -370,7 +376,7 @@ class BoardController extends Board } } - if ($this->module_info->protect_admin_content_delete !== 'N' && $this->user->is_admin !== 'Y') + if ($this->module_info->protect_admin_content_delete === 'Y' && $this->user->is_admin !== 'Y') { $member_info = MemberModel::getMemberInfo($oDocument->get('member_srl')); if($member_info->is_admin === 'Y') @@ -462,8 +468,11 @@ class BoardController extends Board // Comments belong in the same module_srl as the document. $obj->module_srl = $oDocument->get('module_srl'); + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + // Remove disallowed Unicode symbols. - if ($this->module_info->filter_specialchars !== 'N') + if ($this->module_info->filter_specialchars === 'Y') { if (isset($obj->content)) { @@ -495,12 +504,14 @@ class BoardController extends Board } } - if(!$this->module_info->use_status) $this->module_info->use_status = 'PUBLIC'; + if(!$this->module_info->use_status) + { + $this->module_info->use_status = 'PUBLIC'; + } if(!is_array($this->module_info->use_status)) { $this->module_info->use_status = explode('|@|', $this->module_info->use_status); } - if(in_array('SECRET', $this->module_info->use_status)) { $this->module_info->secret = 'Y'; @@ -512,7 +523,7 @@ class BoardController extends Board } // For anonymous use, remove writer's information and notifying information - if($this->module_info->use_anonymous == 'Y' && (!$this->grant->manager || ($this->module_info->anonymous_except_admin ?? 'N') !== 'Y')) + if($this->module_info->use_anonymous == 'Y' && (!$this->grant->manager || $this->module_info->anonymous_except_admin === 'N')) { $obj->notify_message = 'N'; $obj->member_srl = -1*$logged_info->member_srl; @@ -547,7 +558,7 @@ class BoardController extends Board } } - if ($this->module_info->protect_admin_content_update !== 'N') + if ($this->module_info->protect_admin_content_update === 'Y') { $member_info = MemberModel::getMemberInfo($comment->member_srl); if($member_info->is_admin == 'Y' && $logged_info->is_admin != 'Y') @@ -651,6 +662,9 @@ class BoardController extends Board throw new Rhymix\Framework\Exceptions\NotPermitted; } + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + $childs = null; if($this->module_info->protect_delete_comment === 'Y' && $this->grant->manager == false) { @@ -661,7 +675,7 @@ class BoardController extends Board } } - if ($this->module_info->protect_admin_content_delete !== 'N' && $this->user->is_admin !== 'Y') + if ($this->module_info->protect_admin_content_delete === 'Y' && $this->user->is_admin !== 'Y') { $member_info = MemberModel::getMemberInfo($comment->get('member_srl')); if($member_info->is_admin === 'Y') diff --git a/modules/board/board.model.php b/modules/board/board.model.php index 3e271fef8..4a43dcd29 100644 --- a/modules/board/board.model.php +++ b/modules/board/board.model.php @@ -8,6 +8,101 @@ */ class BoardModel extends Board { + /** + * Default cofiguration for each module instance. + */ + public const DEFAULT_MODULE_CONFIG = [ + + // Title and SEO settings + 'browser_title' => '', + 'meta_keywords' => '', + 'meta_description' => '', + 'robots_tag' => 'all', + + // PC and common display settings + 'layout_srl' => -1, + 'skin' => '/USE_DEFAULT/', + 'list_count' => 20, + 'search_list_count' => 20, + 'page_count' => 10, + 'header_text' => '', + 'footer_text' => '', + + // Mobile display settings + 'use_mobile' => 'N', + 'mlayout_srl' => -2, + 'mskin' => '/USE_DEFAULT/', + 'mobile_list_count' => 20, + 'mobile_search_list_count' => 20, + 'mobile_page_count' => 5, + 'mobile_header_text' => '', + 'mobile_footer_text' => '', + + // List settings + 'order_target' => 'list_order', + 'order_type' => 'asc', + 'except_notice' => 'Y', + 'use_bottom_list' => 'Y', + 'skip_bottom_list_for_olddoc' => 'N', + 'skip_bottom_list_days' => 30, + 'skip_bottom_list_for_robot' => 'Y', + + // Feature settings + 'consultation' => 'N', + 'use_anonymous' => 'N', + 'anonymous_except_admin' => 'N', + 'anonymous_name' => 'anonymous', + 'update_log' => 'N', + 'update_order_on_comment' => 'N', + 'comment_delete_message' => 'no', + 'trash_use' => 'N', + 'use_status' => 'PUBLIC', + 'use_category' => 'N', + 'allow_no_category' => 'N', + + // Limits and protections + 'document_length_limit' => 1024, + 'comment_length_limit' => 128, + 'inline_data_url_limit' => 64, + 'filter_specialchars' => 'Y', + 'protect_delete_content' => 'N', + 'protect_update_content' => 'N', + 'protect_delete_comment' => 'N', + 'protect_update_comment' => 'N', + 'protect_admin_content_delete' => 'Y', + 'protect_admin_content_update' => 'Y', + 'protect_document_regdate' => '', + 'protect_comment_regdate' => '', + + // Extra settings + 'admin_mail' => '', + 'module_category_srl' => 0, + 'description' => '', + ]; + + /** + * Fix module configuration so that there are no missing values. + * + * The return value will be set to true if any values were added. + * The object will be modified in place. + * + * @param object $module_info + * @return bool + */ + public static function fixModuleConfig(object $module_info): bool + { + $fixed = false; + foreach (self::DEFAULT_MODULE_CONFIG as $key => $value) + { + if (!isset($module_info->{$key})) + { + $module_info->{$key} = $value; + $fixed = true; + } + } + return $fixed; + } + /** * @brief get the list configuration */ diff --git a/modules/board/board.view.php b/modules/board/board.view.php index be8e372cc..f59799337 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -852,10 +852,13 @@ class BoardView extends Board return $this->dispBoardMessage($this->user->isMember() ? 'msg_not_permitted' : 'msg_not_logged'); } + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + /** * check if the category option is enabled not not */ - if($this->module_info->use_category=='Y') + if ($this->module_info->use_category === 'Y') { // get the user group information if(Context::get('is_logged')) @@ -866,7 +869,6 @@ class BoardView extends Board { $group_srls = array(); } - $group_srls_count = count($group_srls); // check the grant after obtained the category list $category_list = array(); @@ -916,9 +918,9 @@ class BoardView extends Board $oDocument->add('origin_module_srl', $oDocument->get('module_srl')); $oDocument->add('module_srl', $this->module_srl); - if($oDocument->isExists()) + if ($oDocument->isExists()) { - if(($this->module_info->protect_document_regdate ?? 0) > 0 && $this->grant->manager == false) + if ($this->module_info->protect_document_regdate > 0 && $this->grant->manager == false) { if($oDocument->get('regdate') < date('YmdHis', strtotime('-'.$this->module_info->protect_document_regdate.' day'))) { @@ -927,7 +929,7 @@ class BoardView extends Board throw new Rhymix\Framework\Exception($massage); } } - if(($this->module_info->protect_content ?? 'N') === 'Y' || ($this->module_info->protect_update_content ?? 'N') == 'Y') + if ($this->module_info->protect_content === 'Y' || $this->module_info->protect_update_content === 'Y') { if($oDocument->get('comment_count') > 0 && $this->grant->manager == false) { @@ -935,7 +937,7 @@ class BoardView extends Board } } - if (($this->module_info->protect_admin_content_update ?? 'N') !== 'N') + if ($this->module_info->protect_admin_content_update === 'Y') { $member_info = MemberModel::getMemberInfo($oDocument->get('member_srl')); if(isset($member_info->is_admin) && $member_info->is_admin == 'Y' && $this->user->is_admin != 'Y') @@ -1081,6 +1083,9 @@ class BoardView extends Board } } + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + if($this->module_info->protect_document_regdate > 0 && $this->grant->manager == false) { if($oDocument->get('regdate') < date('YmdHis', strtotime('-'.$this->module_info->protect_document_regdate.' day'))) @@ -1275,6 +1280,9 @@ class BoardView extends Board } } + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + if($this->module_info->protect_comment_regdate > 0 && $this->grant->manager == false) { if($oComment->get('regdate') < date('YmdHis', strtotime('-'.$this->module_info->protect_document_regdate.' day'))) @@ -1359,6 +1367,9 @@ class BoardView extends Board } } + // Fix any missing module configurations + BoardModel::fixModuleConfig($this->module_info); + if($this->module_info->protect_comment_regdate > 0 && $this->grant->manager == false) { if($oComment->get('regdate') < date('YmdHis', strtotime('-'.$this->module_info->protect_document_regdate.' day'))) diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html index 511ede86e..e3c0b5d91 100644 --- a/modules/board/tpl/board_insert.html +++ b/modules/board/tpl/board_insert.html @@ -66,7 +66,7 @@
{$lang->about_list_count}
{$lang->about_search_list_count}
{$lang->about_page_count}
{$lang->about_layout}
@@ -148,7 +148,7 @@{$lang->about_skin}
@@ -157,21 +157,21 @@{$lang->about_list_count}
{$lang->about_search_list_count}
{$lang->about_mobile_page_count}