Clean up ModuleController::replaceDefinedLangCode()

This commit is contained in:
Kijin Sung 2021-01-08 21:27:44 +09:00
parent 2e6e097272
commit f8859769e8
15 changed files with 64 additions and 77 deletions

View file

@ -734,8 +734,7 @@ class Context
{ {
return ''; return '';
} }
ModuleController::getInstance()->replaceDefinedLangCode(self::$_instance->browser_title); return escape(self::replaceUserLang(self::$_instance->browser_title), false);
return htmlspecialchars(self::$_instance->browser_title, ENT_QUOTES, 'UTF-8', FALSE);
} }
/** /**
@ -748,9 +747,7 @@ class Context
$domain_info = self::get('site_module_info'); $domain_info = self::get('site_module_info');
if ($domain_info && $domain_info->settings && $domain_info->settings->title) if ($domain_info && $domain_info->settings && $domain_info->settings->title)
{ {
$title = trim($domain_info->settings->title); return escape(self::replaceUserLang($domain_info->settings->title), false);
ModuleController::getInstance()->replaceDefinedLangCode($title);
return $title;
} }
else else
{ {
@ -768,9 +765,7 @@ class Context
$domain_info = self::get('site_module_info'); $domain_info = self::get('site_module_info');
if ($domain_info && $domain_info->settings && $domain_info->settings->subtitle) if ($domain_info && $domain_info->settings && $domain_info->settings->subtitle)
{ {
$subtitle = trim($domain_info->settings->subtitle); return escape(self::replaceUserLang($domain_info->settings->subtitle), false);
ModuleController::getInstance()->replaceDefinedLangCode($subtitle);
return $subtitle;
} }
else else
{ {
@ -882,6 +877,33 @@ class Context
$GLOBALS['lang']->set($code, $val); $GLOBALS['lang']->set($code, $val);
} }
/**
* @brief Replace user-defined language codes
*/
public static function replaceUserLang($output)
{
static $lang = null;
if($lang === null)
{
$lang = Rhymix\Framework\Cache::get('site_and_module:user_defined_langs:0:' . self::getLangType());
if($lang === null)
{
ModuleAdminController::getInstance()->makeCacheDefinedLangCode(0);
}
}
return preg_replace_callback('/\$user_lang->([a-zA-Z0-9\_]+)/', function($matches) use($lang) {
if(isset($lang[$matches[1]]) && !self::get($matches[1]))
{
return $lang[$matches[1]];
}
else
{
return $matches[1];
}
}, $output);
}
/** /**
* Convert strings of variables in $source_object into UTF-8 * Convert strings of variables in $source_object into UTF-8
* *
@ -2633,8 +2655,10 @@ class Context
*/ */
public static function addMetaTag($name, $content, $is_http_equiv = false) public static function addMetaTag($name, $content, $is_http_equiv = false)
{ {
ModuleController::getInstance()->replaceDefinedLangCode($content); self::$_instance->meta_tags[$name] = array(
self::$_instance->meta_tags[$name] = array('is_http_equiv' => (bool)$is_http_equiv, 'content' => $content); 'is_http_equiv' => (bool)$is_http_equiv,
'content' => self::replaceUserLang($content),
);
} }
/** /**

View file

@ -269,8 +269,7 @@ class HTMLDisplayHandler
$output = $oTemplate->compile('./common/tpl', 'common_layout'); $output = $oTemplate->compile('./common/tpl', 'common_layout');
// replace the user-defined-language // replace the user-defined-language
$oModuleController = getController('module'); $output = Context::replaceUserLang($output);
$oModuleController->replaceDefinedLangCode($output);
// remove template path comment tag // remove template path comment tag
/* /*

View file

@ -596,9 +596,7 @@ class ExtraItem
} }
if($this->desc) if($this->desc)
{ {
$oModuleController = getController('module'); $buff[] = '<p>' . escape(Context::replaceUserLang($this->desc), false) . '</p>';
$oModuleController->replaceDefinedLangCode($this->desc);
$buff[] = '<p>' . escape($this->desc, false) . '</p>';
} }
return join("\n", $buff); return join("\n", $buff);

View file

@ -770,7 +770,7 @@ class ModuleHandler extends Handler
{ {
$seo_title = config('seo.subpage_title') ?: '$SITE_TITLE - $SUBPAGE_TITLE'; $seo_title = config('seo.subpage_title') ?: '$SITE_TITLE - $SUBPAGE_TITLE';
} }
ModuleController::getInstance()->replaceDefinedLangCode($seo_title); $seo_title = Context::replaceUserLang($seo_title);
Context::setBrowserTitle($seo_title, array( Context::setBrowserTitle($seo_title, array(
'site_title' => Context::getSiteTitle(), 'site_title' => Context::getSiteTitle(),
'site_subtitle' => Context::getSiteSubtitle(), 'site_subtitle' => Context::getSiteSubtitle(),

View file

@ -217,8 +217,7 @@ class boardController extends board
// send an email to admin user // send an email to admin user
if ($this->module_info->admin_mail && config('mail.default_from')) if ($this->module_info->admin_mail && config('mail.default_from'))
{ {
$browser_title = $this->module_info->browser_title; $browser_title = Context::replaceUserLang($this->module_info->browser_title);
getController('module')->replaceDefinedLangCode($browser_title);
$mail_title = sprintf(lang('msg_document_notify_mail'), $browser_title, cut_str($obj->title, 20, '...')); $mail_title = sprintf(lang('msg_document_notify_mail'), $browser_title, cut_str($obj->title, 20, '...'));
$mail_content = sprintf("From : <a href=\"%s\">%s</a><br/>\r\n%s", getFullUrl('', 'document_srl', $output->get('document_srl')), getFullUrl('', 'document_srl', $output->get('document_srl')), $obj->content); $mail_content = sprintf("From : <a href=\"%s\">%s</a><br/>\r\n%s", getFullUrl('', 'document_srl', $output->get('document_srl')), getFullUrl('', 'document_srl', $output->get('document_srl')), $obj->content);

View file

@ -322,7 +322,7 @@ class boardView extends board
// add the document title to the browser // add the document title to the browser
Context::setCanonicalURL($oDocument->getPermanentUrl()); Context::setCanonicalURL($oDocument->getPermanentUrl());
$seo_title = config('seo.document_title') ?: '$SITE_TITLE - $DOCUMENT_TITLE'; $seo_title = config('seo.document_title') ?: '$SITE_TITLE - $DOCUMENT_TITLE';
getController('module')->replaceDefinedLangCode($seo_title); $seo_title = Context::replaceUserLang($seo_title);
Context::setBrowserTitle($seo_title, array( Context::setBrowserTitle($seo_title, array(
'site_title' => Context::getSiteTitle(), 'site_title' => Context::getSiteTitle(),
'site_subtitle' => Context::getSiteSubtitle(), 'site_subtitle' => Context::getSiteSubtitle(),

View file

@ -677,8 +677,7 @@ class commentController extends comment
// If there is no problem to register comment then send an email to all admin were set in module admin panel // If there is no problem to register comment then send an email to all admin were set in module admin panel
if($module_info->admin_mail && $member_info->is_admin != 'Y') if($module_info->admin_mail && $member_info->is_admin != 'Y')
{ {
$browser_title = $module_info->browser_title; $browser_title = Context::replaceUserLang($module_info->browser_title);
getController('module')->replaceDefinedLangCode($browser_title);
$mail_title = sprintf(lang('msg_comment_notify_mail'), $browser_title, cut_str($oDocument->getTitleText(), 20, '...')); $mail_title = sprintf(lang('msg_comment_notify_mail'), $browser_title, cut_str($oDocument->getTitleText(), 20, '...'));
$url_comment = getFullUrl('','document_srl',$obj->document_srl).'#comment_'.$obj->comment_srl; $url_comment = getFullUrl('','document_srl',$obj->document_srl).'#comment_'.$obj->comment_srl;
if($using_validation) if($using_validation)

View file

@ -222,10 +222,8 @@ class menuAdminModel extends menu
} }
} }
$menuItem->groupList = $groupList; $menuItem->groupList = $groupList;
$oModuleController = getController('module');
$menuItem->name_key = $menuItem->name; $menuItem->name_key = $menuItem->name;
$oModuleController->replaceDefinedLangCode($menuItem->name); $menuItem->name = Context::replaceUserLang($menuItem->name);
$this->add('menu_item', $menuItem); $this->add('menu_item', $menuItem);
} }

View file

@ -783,13 +783,10 @@ class moduleAdminController extends module
$module = trim($val->module); $module = trim($val->module);
if(!$module) continue; if(!$module) continue;
// replace user defined lang.
$oModuleController->replaceDefinedLangCode($val->browser_title);
$obj = new stdClass(); $obj = new stdClass();
$obj->module_srl = $val->module_srl; $obj->module_srl = $val->module_srl;
$obj->layout_srl = $val->layout_srl; $obj->layout_srl = $val->layout_srl;
$obj->browser_title = $val->browser_title; $obj->browser_title = Context::replaceUserLang($val->browser_title);
$obj->mid = $val->mid; $obj->mid = $val->mid;
$obj->module_category_srl = $val->module_category_srl; $obj->module_category_srl = $val->module_category_srl;
if($val->module_category_srl > 0) if($val->module_category_srl > 0)

View file

@ -21,7 +21,6 @@ class moduleAdminModel extends module
*/ */
function getModuleAdminModuleList() function getModuleAdminModuleList()
{ {
$oModuleController = getController('module');
$oModuleModel = getModel('module'); $oModuleModel = getModel('module');
$args = new stdClass; $args = new stdClass;
$args->module_srls = Context::get('module_srls'); $args->module_srls = Context::get('module_srls');
@ -31,8 +30,12 @@ class moduleAdminModel extends module
foreach($output->data as $key => $val) foreach($output->data as $key => $val)
{ {
$info_xml = $oModuleModel->getModuleInfoXml($val->module); $info_xml = $oModuleModel->getModuleInfoXml($val->module);
$oModuleController->replaceDefinedLangCode($val->browser_title); $list[$val->module_srl] = array(
$list[$val->module_srl] = array('module_srl'=>$val->module_srl,'mid'=>$val->mid,'browser_title'=>$val->browser_title, 'module_name' => $info_xml->title); 'module_srl' => $val->module_srl,
'mid' => $val->mid,
'browser_title' => Context::replaceUserLang($val->browser_title),
'module_name' => $info_xml->title,
);
} }
$modules = explode(',',$args->module_srls); $modules = explode(',',$args->module_srls);
$module_list = []; $module_list = [];

View file

@ -1080,35 +1080,14 @@ class moduleController extends module
/** /**
* @brief Change user-defined language * @brief Change user-defined language
*/ */
function replaceDefinedLangCode(&$output, $isReplaceLangCode = true) public static function replaceDefinedLangCode(&$output, $replace = true)
{ {
static $lang = null; if ($replace)
if($isReplaceLangCode)
{ {
if($lang === null) $output = Context::replaceUserLang($output);
{
$lang = Rhymix\Framework\Cache::get('site_and_module:user_defined_langs:0:' . Context::getLangType());
if($lang === null)
{
$oModuleAdminController = getAdminController('module');
$lang = $oModuleAdminController->makeCacheDefinedLangCode(0);
}
}
$output = preg_replace_callback('/\$user_lang->([a-z0-9\_]+)/is', function($matches) use($lang) {
if(isset($lang[$matches[1]]) && !Context::get($matches[1]))
{
return $lang[$matches[1]];
}
else
{
return str_replace('$user_lang->', '', $matches[0]);
}
}, $output);
} }
} }
/** /**
* @brief Add and update a file into the file box * @brief Add and update a file into the file box
*/ */

View file

@ -404,11 +404,6 @@ class moduleModel extends module
$module_info = $mid_info; $module_info = $mid_info;
} }
/*
$oModuleController = getController('module');
if(isset($module_info->browser_title)) $oModuleController->replaceDefinedLangCode($module_info->browser_title);
*/
self::_applyDefaultSkin($module_info); self::_applyDefaultSkin($module_info);
return self::addModuleExtraVars($module_info); return self::addModuleExtraVars($module_info);
} }
@ -2342,7 +2337,7 @@ class moduleModel extends module
$langCode = Context::get('langCode'); $langCode = Context::get('langCode');
if (!$langCode) return; if (!$langCode) return;
ModuleController::getInstance()->replaceDefinedLangCode($langCode); $langCode = Context::replaceUserLang($langCode);
$this->add('lang', $langCode); $this->add('lang', $langCode);
} }
} }

View file

@ -175,14 +175,13 @@ class rssView extends rss
$info->id = $channel_url; $info->id = $channel_url;
$info->feed_title = $config->feed_title; $info->feed_title = $config->feed_title;
$info->title = $obj->title ?: $info->title; $info->title = Context::replaceUserLang($obj->title ?: $info->title);
$info->description = $obj->description ?: $info->description; $info->description = $obj->description ?: $info->description;
$info->language = Context::getLangType(); $info->language = Context::getLangType();
$info->site_url = Context::getRequestUri(); $info->site_url = Context::getRequestUri();
$info->date_r = date('r'); $info->date_r = date('r');
$info->date_c = date('c'); $info->date_c = date('c');
$info->image = $config->image ? Context::getRequestUri() . $config->image : ''; $info->image = $config->image ? Context::getRequestUri() . $config->image : '';
getController('module')->replaceDefinedLangCode($info->title);
Context::set('info', $info); Context::set('info', $info);

View file

@ -113,8 +113,7 @@ class spamfilterModel extends spamfilter
{ {
if(preg_match('/^\\$user_lang->[a-zA-Z0-9]+$/', $config->custom_message)) if(preg_match('/^\\$user_lang->[a-zA-Z0-9]+$/', $config->custom_message))
{ {
getController('module')->replaceDefinedLangCode($config->custom_message); $custom_message = escape(Context::replaceUserLang($config->custom_message), false);
$custom_message = htmlspecialchars($config->custom_message);
} }
else else
{ {

View file

@ -67,13 +67,11 @@ class widgetController extends widget
if(!in_array($widget,array('widgetBox','widgetContent')) && !Context::get('skin')) throw new Rhymix\Framework\Exception('msg_widget_skin_is_null'); if(!in_array($widget,array('widgetBox','widgetContent')) && !Context::get('skin')) throw new Rhymix\Framework\Exception('msg_widget_skin_is_null');
$attribute = $this->arrangeWidgetVars($widget, Context::getRequestVars(), $vars); $this->arrangeWidgetVars($widget, Context::getRequestVars(), $vars);
// Wanted results // Wanted results
$widget_code = $this->execute($widget, $vars, true, false); $widget_code = $this->execute($widget, $vars, true, false);
$widget_code = Context::replaceUserLang($widget_code);
$oModuleController = getController('module');
$oModuleController->replaceDefinedLangCode($widget_code);
$this->add('widget_code', $widget_code); $this->add('widget_code', $widget_code);
} }
@ -256,8 +254,10 @@ class widgetController extends widget
function transWidgetCode($content, $javascript_mode = false, $isReplaceLangCode = true) function transWidgetCode($content, $javascript_mode = false, $isReplaceLangCode = true)
{ {
// Changing user-defined language // Changing user-defined language
$oModuleController = getController('module'); if($isReplaceLangCode)
$oModuleController->replaceDefinedLangCode($content, $isReplaceLangCode); {
$content = Context::replaceUserLang($content);
}
// Check whether to include information about editing // Check whether to include information about editing
$this->javascript_mode = $javascript_mode; $this->javascript_mode = $javascript_mode;
// Widget code box change // Widget code box change
@ -390,8 +390,7 @@ class widgetController extends widget
if(!$oWidget || !method_exists($oWidget, 'proc')) return; if(!$oWidget || !method_exists($oWidget, 'proc')) return;
$widget_content = $oWidget->proc($args); $widget_content = $oWidget->proc($args);
$oModuleController = getController('module'); $widget_content = Context::replaceUserLang($widget_content);
$oModuleController->replaceDefinedLangCode($widget_content);
return $widget_content; return $widget_content;
} }
@ -414,8 +413,7 @@ class widgetController extends widget
if(!$oWidget || !method_exists($oWidget,'proc')) return; if(!$oWidget || !method_exists($oWidget,'proc')) return;
$widget_content = $oWidget->proc($args); $widget_content = $oWidget->proc($args);
$oModuleController = getController('module'); $widget_content = Context::replaceUserLang($widget_content);
$oModuleController->replaceDefinedLangCode($widget_content);
Rhymix\Framework\Cache::set('widget_cache:' . $widget_sequence, $widget_content, $widget_cache, true); Rhymix\Framework\Cache::set('widget_cache:' . $widget_sequence, $widget_content, $widget_cache, true);