diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index d3ebb60ba..374a9f359 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -470,7 +470,7 @@ class DB } if(!$this->db_type) { - return; + return new BaseObject(-1, 'msg_db_not_setted'); } $this->actDBClassStart(); @@ -493,7 +493,7 @@ class DB if(!isset($typeList[$target])) { $this->actDBClassFinish(); - return; + return new BaseObject(-1, 'msg_invalid_queryid'); } $module = $id_args[1]; $id = $id_args[2]; diff --git a/common/framework/config.php b/common/framework/config.php index 757f4c7ab..0d1ab7ef3 100644 --- a/common/framework/config.php +++ b/common/framework/config.php @@ -30,7 +30,9 @@ class Config { if (file_exists(\RX_BASEDIR . self::$config_filename)) { + ob_start(); self::$_config = (include \RX_BASEDIR . self::$config_filename); + ob_end_clean(); } else { diff --git a/common/framework/parsers/configparser.php b/common/framework/parsers/configparser.php index cfa60dbac..2ae644e7e 100644 --- a/common/framework/parsers/configparser.php +++ b/common/framework/parsers/configparser.php @@ -22,7 +22,9 @@ class ConfigParser // Load DB info file. if (file_exists(\RX_BASEDIR . Config::$old_db_config_filename)) { + ob_start(); include \RX_BASEDIR . Config::$old_db_config_filename; + ob_end_clean(); } else { @@ -32,7 +34,9 @@ class ConfigParser // Load FTP info file. if (file_exists(\RX_BASEDIR . Config::$old_ftp_config_filename)) { + ob_start(); include \RX_BASEDIR . Config::$old_ftp_config_filename; + ob_end_clean(); } // Load selected language file. diff --git a/common/js/common.js b/common/js/common.js index d34dc6c06..4f2ad63ca 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -86,6 +86,7 @@ URITemplate : window.URITemplate, SecondLevelDomains : window.SecondLevelDomains, IPv6 : window.IPv6, + baseurl : null, /** * @brief 특정 name을 가진 체크박스들의 checked 속성 변경 @@ -198,6 +199,9 @@ /* 동일 사이트 내 주소인지 판단 (프로토콜 제외) */ isSameHost: function(url) { + if (typeof url !== "string") { + return false; + } if (url.match(/^\/[^\/]/)) { return true; } @@ -205,16 +209,21 @@ return false; } - var site_baseurl = window.XE.URI(window.request_uri).normalizePort().normalizePathname(); - site_baseurl = site_baseurl.hostname() + site_baseurl.directory(); + if (!window.XE.baseurl) { + window.XE.baseurl = window.XE.URI(window.request_uri).normalizePort().normalizePathname(); + window.XE.baseurl = window.XE.baseurl.hostname() + window.XE.baseurl.directory(); + } var target_url = window.XE.URI(url).normalizePort().normalizePathname(); + if (target_url.is("urn")) { + return false; + } if (!target_url.hostname()) { target_url = target_url.absoluteTo(window.request_uri); } target_url = target_url.hostname() + target_url.directory(); - return target_url.indexOf(site_baseurl) === 0; + return target_url.indexOf(window.XE.baseurl) === 0; } }; @@ -233,8 +242,8 @@ jQuery(function($) { /* Tabnapping protection, step 1 */ $('a[target]').each(function() { var $this = $(this); - var href = $this.attr('href'); - var target = $this.attr('target'); + var href = $this.attr('href').trim(); + var target = $this.attr('target').trim(); if (!href || !target || target === '_top' || target === '_self' || target === '_parent') { return; } @@ -250,8 +259,8 @@ jQuery(function($) { /* Tabnapping protection, step 2 */ $('body').on('click', 'a[target]', function(event) { var $this = $(this); - var href = $this.attr('href'); - var target = $this.attr('target'); + var href = $this.attr('href').trim(); + var target = $this.attr('target').trim(); if (!href || !target || target === '_top' || target === '_self' || target === '_parent') { return; } diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 2a6c9c18b..3bc2f2ef7 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -45,6 +45,7 @@ class adminAdminController extends admin return $output; } + Rhymix\Framework\Cache::delete('admin_menu_langs:' . Context::getLangType()); Rhymix\Framework\Storage::deleteDirectory(\RX_BASEDIR . 'files/cache/menu/admin_lang/'); $this->setRedirectUrl(Context::get('error_return_url')); diff --git a/modules/admin/admin.admin.model.php b/modules/admin/admin.admin.model.php index fe6423e3e..44c9a930e 100644 --- a/modules/admin/admin.admin.model.php +++ b/modules/admin/admin.admin.model.php @@ -624,38 +624,33 @@ class adminAdminModel extends admin */ function getAdminMenuLang() { - $currentLang = Context::getLangType(); - $cacheFile = sprintf('./files/cache/menu/admin_lang/adminMenu.%s.lang.php', $currentLang); - - // Update if no cache file exists or it is older than xml file - if(!is_readable($cacheFile)) + static $lang = null; + + if ($lang === null) { - $lang = new stdClass(); + $lang = Rhymix\Framework\Cache::get('admin_menu_langs:' . Context::getLangType()); + } + if ($lang === null) + { + $lang = array(); $oModuleModel = getModel('module'); $installed_module_list = $oModuleModel->getModulesXmlInfo(); - - $this->gnbLangBuffer = ' $value) + foreach($installed_module_list as $key => $value) { $moduleActionInfo = $oModuleModel->getModuleActionXml($value->module); if(is_object($moduleActionInfo->menu)) { - foreach($moduleActionInfo->menu AS $key2 => $value2) + foreach($moduleActionInfo->menu as $key2 => $value2) { - $lang->menu_gnb_sub[$key2] = $value2->title; - $this->gnbLangBuffer .=sprintf('$lang->menu_gnb_sub[\'%s\'] = \'%s\';', $key2, $value2->title); + $lang[$key2] = $value2->title; } } } - $this->gnbLangBuffer .= ' ?>'; - FileHandler::writeFile($cacheFile, $this->gnbLangBuffer); - } - else - { - include $cacheFile; + + Rhymix\Framework\Cache::set('admin_menu_langs:' . Context::getLangType(), $lang, 0, true); } - return $lang->menu_gnb_sub; + return $lang; } /** diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index b35e43ade..7ae90be0c 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -2299,7 +2299,7 @@ class documentController extends document { foreach($langs as $key => $val) { - $xml_header_buff .= sprintf('$_titles[%d]["%s"] = "%s"; ', $category_srl, $key, str_replace('"','\\"',htmlspecialchars($val, ENT_COMPAT | ENT_HTML401, 'UTF-8', false))); + $xml_header_buff .= sprintf('$_titles[%d][%s] = %s; ', $category_srl, var_export($key, true), var_export(escape($val, false), true)); } } @@ -2308,12 +2308,12 @@ class documentController extends document { foreach($langx as $key => $val) { - $xml_header_buff .= sprintf('$_descriptions[%d]["%s"] = "%s"; ', $category_srl, $key, str_replace('"','\\"',htmlspecialchars($val, ENT_COMPAT | ENT_HTML401, 'UTF-8', false))); + $xml_header_buff .= sprintf('$_descriptions[%d][%s] = %s; ', $category_srl, var_export($key, true), var_export(escape($val, false), true)); } } $attribute = sprintf( - 'mid="%s" module_srl="%d" node_srl="%d" parent_srl="%d" category_srl="%d" text="" url="%s" expand="%s" color="%s" description="" document_count="%d" ', + 'mid="%s" module_srl="%d" node_srl="%d" parent_srl="%d" category_srl="%d" text="" url=%s expand=%s color=%s description="" document_count="%d" ', $mid, $module_srl, $category_srl, @@ -2321,9 +2321,9 @@ class documentController extends document $category_srl, $group_check_code, $category_srl, - getUrl('','mid',$node->mid,'category',$category_srl), - $expand, - htmlspecialchars($color, ENT_COMPAT | ENT_HTML401, 'UTF-8', false), + str_replace("'", '"', var_export(getUrl('','mid',$node->mid,'category',$category_srl), true)), + str_replace("'", '"', var_export($expand, true)), + str_replace("'", '"', var_export(escape($color, false), true)), $group_check_code, $category_srl, $node->document_count @@ -2388,10 +2388,10 @@ class documentController extends document { $val = htmlspecialchars($val, ENT_COMPAT | ENT_HTML401, 'UTF-8', false); $php_header_buff .= sprintf( - '$_titles[%d]["%s"] = "%s"; ', + '$_titles[%d][%s] = %s; ', $category_srl, - $key, - str_replace('"','\\"', $val) + var_export($key, true), + var_export($val, true) ); } } @@ -2404,17 +2404,17 @@ class documentController extends document { $val = htmlspecialchars($val, ENT_COMPAT | ENT_HTML401, 'UTF-8', false); $php_header_buff .= sprintf( - '$_descriptions[%d]["%s"] = "%s"; ', + '$_descriptions[%d][%s] = %s; ', $category_srl, - $key, - str_replace('"','\\"', $val) + var_export($key, true), + var_export($val, true) ); } } // Create attributes(Use the category_srl_list to check whether to belong to the menu's node. It seems to be tricky but fast fast and powerful;) $attribute = sprintf( - '"mid" => "%s", "module_srl" => "%d","node_srl"=>"%s","category_srl"=>"%s","parent_srl"=>"%s","text"=>$_titles[%d][$lang_type],"selected"=>(in_array(Context::get("category"),array(%s))?1:0),"expand"=>"%s","color"=>"%s","description"=>$_descriptions[%d][$lang_type],"list"=>array(%s),"document_count"=>"%d","grant"=>%s?true:false', + '"mid" => "%s", "module_srl" => "%d","node_srl"=>"%d","category_srl"=>"%d","parent_srl"=>"%d","text"=>$_titles[%d][$lang_type],"selected"=>(in_array(Context::get("category"),array(%s))?1:0),"expand"=>%s,"color"=>%s,"description"=>$_descriptions[%d][$lang_type],"list"=>array(%s),"document_count"=>"%d","grant"=>%s?true:false', $node->mid, $node->module_srl, $node->category_srl, @@ -2422,8 +2422,8 @@ class documentController extends document $node->parent_srl, $node->category_srl, $selected, - $expand, - $node->color, + var_export($expand, true), + var_export($node->color, true), $node->category_srl, $child_buff, $node->document_count, diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index 230add37c..73df52e1b 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -492,7 +492,7 @@ class memberAdminController extends member $signupItem->required = in_array($key, $orgRequireds); $signupItem->isUse = ($config->{$key} == 'Y') || in_array($key, $orgUse); $signupItem->isPublic = ($signupItem->isUse) ? 'Y' : 'N'; - if($key == 'password') + if(in_array($key, array('find_account_question', 'password', 'email_address'))) { $signupItem->isPublic = 'N'; } diff --git a/modules/member/member.admin.view.php b/modules/member/member.admin.view.php index 095f6a794..dbe44d0e5 100644 --- a/modules/member/member.admin.view.php +++ b/modules/member/member.admin.view.php @@ -164,24 +164,25 @@ class memberAdminView extends member */ public function dispMemberAdminAgreementsEdit() { - $agreement_id = intval(Context::get('id')); - Context::set('agreement_id', $agreement_id); - Context::set('agreement_content', getModel('member')->getMemberConfig()->agreements[$agreement_id]->content); + // Check parent input ID + $parent_input_id = Context::get('parent_input_id'); Context::addBodyClass('disable_debug_panel'); + // Load editor $oEditorModel = getModel('editor'); $option = $oEditorModel->getEditorConfig(); - $option->primary_key_name = 'agreement_id'; - $option->content_key_name = 'agreement_content'; + $option->primary_key_name = 'primary_key'; + $option->content_key_name = 'content'; $option->allow_fileupload = FALSE; $option->enable_autosave = FALSE; $option->enable_default_component = TRUE; $option->enable_component = FALSE; $option->height = 300; - $option->editor_focus = 'N'; - $editor = $oEditorModel->getEditor($logged_info->member_srl, $option); + $option->editor_focus = 'Y'; + $editor = $oEditorModel->getEditor(0, $option); Context::set('editor', $editor); + // Set template $this->setLayoutPath('./common/tpl/'); $this->setLayoutFile("default_layout"); $this->setTemplateFile('agreements_edit'); diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 080481a47..cf7af7f81 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -177,6 +177,7 @@ class member extends ModuleObject { { $oDB = &DB::getInstance(); $oModuleModel = getModel('module'); + // check member directory (11/08/2007 added) if(!is_dir("./files/member_extra_info")) return true; // check member directory (22/10/2007 added) @@ -216,7 +217,14 @@ class member extends ModuleObject { if(!$config->signupForm || !is_array($config->signupForm)) return true; foreach($config->signupForm as $signupItem) { - if($signupItem->name === 'find_account_question') return true; + if($signupItem->name === 'find_account_question') + { + return true; + } + if($signupItem->name === 'email_address' && $signupItem->isPublic !== 'N') + { + return true; + } } if(!$config->agreements) { @@ -357,7 +365,11 @@ class member extends ModuleObject { $config->identifier = $config->identifier ?: 'user_id'; $config->signupForm = $oMemberAdminController->createSignupForm($config->identifier); $output = $oModuleController->updateModuleConfig('member', $config); - break; + } + if($signupItem->name === 'email_address' && $signupItem->isPublic !== 'N') + { + $signupItem->isPublic = 'N'; + $output = $oModuleController->updateModuleConfig('member', $config); } } if(!$config->agreements) diff --git a/modules/member/tpl/agreements_config.html b/modules/member/tpl/agreements_config.html index 2c40c7419..3864658a0 100644 --- a/modules/member/tpl/agreements_config.html +++ b/modules/member/tpl/agreements_config.html @@ -18,8 +18,8 @@