rhymix/modules/board/board.model.php

181 lines
4.5 KiB
PHP

<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class boardModel
* @author NAVER (developers@xpressengine.com)
* @brief board module Model class
*/
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
*/
public static function getListConfig($module_srl)
{
// get the list config value, if it is not exitsted then setup the default value
$module_srl = (int)$module_srl;
$list_config = ModuleModel::getModulePartConfig('board', $module_srl);
if(!is_array($list_config) || count($list_config) <= 0)
{
$list_config = array('no', 'title', 'nick_name', 'regdate', 'readed_count');
}
// get the extra variables
$inserted_extra_vars = DocumentModel::getExtraKeys($module_srl);
foreach($list_config as $key)
{
if(preg_match('/^([0-9]+)$/',$key))
{
if($inserted_extra_vars[$key])
{
$output['extra_vars'.$key] = $inserted_extra_vars[$key];
}
else
{
continue;
}
}
else
{
$output[$key] = new ExtraItem($module_srl, -1, lang($key), $key, 'N', 'N', 'N', null);
}
}
return $output;
}
/**
* @brief return the default list configration value
*/
public static function getDefaultListConfig($module_srl)
{
$extra_vars = [];
$module_srl = (int)$module_srl;
// add virtual srl, title, registered date, update date, nickname, ID, name, readed count, voted count etc.
$virtual_vars = array( 'no', 'title', 'regdate', 'last_update', 'last_post', 'module_title', 'nick_name',
'user_id', 'user_name', 'readed_count', 'voted_count', 'blamed_count', 'comment_count',
'thumbnail', 'summary', 'comment_status');
foreach($virtual_vars as $key)
{
$extra_vars[$key] = new ExtraItem($module_srl, -1, lang($key), $key, 'N', 'N', 'N', null);
}
// get the extra variables from the document model
$inserted_extra_vars = DocumentModel::getExtraKeys($module_srl);
if(count($inserted_extra_vars))
{
foreach($inserted_extra_vars as $obj)
{
$extra_vars['extra_vars'.$obj->idx] = $obj;
}
}
return $extra_vars;
}
/**
* @brief return module name in sitemap
*/
public function triggerModuleListInSitemap(&$obj)
{
array_push($obj, 'board');
}
}