Merge branch 'develop' into fix/thumbnail-race-condition

This commit is contained in:
Kijin Sung 2015-09-17 14:23:38 +09:00
commit 8d92b0eeb9
16 changed files with 139 additions and 84 deletions

View file

@ -27,4 +27,5 @@ script:
- if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run -d --fail-fast --env travis; fi
notifications:
slack:
secure: 0HhwktIb65zfge56E4yMfYj0Xj4GeYIaxvh/Obb13BK1/C8RdWBy6u213N5MQ2UHsxYk8wXXzynaCh4psegi2iPy9dbKmkdAdEQMzYoKE2xYVSqZveeVQm0sqFVXAlzggpgs/j5vtvKYjRkQKtTrz0C+p0uJ0bkLcyWGezWTpGc=
secure: jpoMjtkveVuPZM4JXJETAPv8QUCtTbI/ZTixdS9HUgxSb9tD2DkoekMaRzXYnXA82Les/gGxTC0fQFcFrls6Ypkbvp1udBPggmAdLiBHubBIz+yd1BGIf/l4I6MY1QmGe1Lx4xlnVlEgLnKXHn+W+ENep4/MzpCEaR9Vw8wfGqY=
secure: "gPv4qFmGcXimNlI/OeVk5n4VtRCWbAe7VUtw7Inb3A/ZZaVDo11gtMNkwo/JVKSnXqFkaCQYebcNpj2D9Rb2ZCwgjMSX6wxvpA4/8OLOZpbWqFW6Hz2RKNggubXlnalXkIwFcsvj70rKctbcJFk2C1G9rVvYWdVGD9X4/ozQtAc="

View file

@ -666,9 +666,20 @@ class Context
{
$url = base64_decode(self::get('default_url'));
$url_info = parse_url($url);
$oModuleModel = getModel('module');
$site_info = $oModuleModel->getSiteInfoByDomain($url_info['host']);
if(!$site_info->site_srl) {
$oModuleObject = new ModuleObject();
$oModuleObject->stop('msg_invalid_request');
return false;
}
$url_info['query'].= ($url_info['query'] ? '&' : '') . 'SSOID=' . session_id();
$redirect_url = sprintf('%s://%s%s%s?%s', $url_info['scheme'], $url_info['host'], $url_info['port'] ? ':' . $url_info['port'] : '', $url_info['path'], $url_info['query']);
header('location:' . $redirect_url);
return FALSE;
}
// for sites requesting SSO validation
@ -1658,6 +1669,7 @@ class Context
'document_srl.mid' => "$mid/$srl",
'document_srl.vid' => "$vid/$srl",
'document_srl.mid.vid' => "$vid/$mid/$srl",
'act' => ($is_feed && $act !== 'api') ? $act : '',
'act.mid' => $is_feed ? "$mid/$act" : '',
'act.mid.vid' => $is_feed ? "$vid/$mid/$act" : '',
'act.document_srl.key' => ($act == 'trackback') ? "$srl/$key/$act" : '',

View file

@ -116,7 +116,6 @@ class ModuleHandler extends Handler
* */
function init()
{
$oModuleModel = getModel('module');
$site_module_info = Context::get('site_module_info');
@ -317,13 +316,13 @@ class ModuleHandler extends Handler
function procModule()
{
$oModuleModel = getModel('module');
$display_mode = Mobile::isFromMobilePhone() ? 'mobile' : 'view';
// If error occurred while preparation, return a message instance
if($this->error)
{
$this->_setInputErrorToContext();
$type = Mobile::isFromMobilePhone() ? 'mobile' : 'view';
$oMessageObject = ModuleHandler::getModuleInstance('message', $type);
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -359,8 +358,7 @@ class ModuleHandler extends Handler
$this->httpStatusCode = '404';
$this->_setInputErrorToContext();
$type = Mobile::isFromMobilePhone() ? 'mobile' : 'view';
$oMessageObject = ModuleHandler::getModuleInstance('message', $type);
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -397,7 +395,7 @@ class ModuleHandler extends Handler
if(!in_array(strtoupper($_SERVER['REQUEST_METHOD']), $allowedMethodList))
{
$this->error = "msg_invalid_request";
$oMessageObject = ModuleHandler::getModuleInstance('message', 'view');
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -410,13 +408,24 @@ class ModuleHandler extends Handler
Mobile::setMobile(FALSE);
}
// Admin ip
$logged_info = Context::get('logged_info');
// check CSRF for admin actions
if($kind === 'admin' && Context::getRequestMethod() === 'POST' && !checkCSRF()) {
$this->error = 'msg_invalid_request';
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
return $oMessageObject;
}
// Admin ip
if($kind == 'admin' && $_SESSION['denied_admin'] == 'Y')
{
$this->_setInputErrorToContext();
$this->error = "msg_not_permitted_act";
$oMessageObject = ModuleHandler::getModuleInstance('message', $type);
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -446,8 +455,7 @@ class ModuleHandler extends Handler
if(!is_object($oModule))
{
$this->_setInputErrorToContext();
$type = Mobile::isFromMobilePhone() ? 'mobile' : 'view';
$oMessageObject = ModuleHandler::getModuleInstance('message', $type);
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -466,7 +474,7 @@ class ModuleHandler extends Handler
{
$this->_setInputErrorToContext();
$this->error = 'msg_invalid_request';
$oMessageObject = ModuleHandler::getModuleInstance('message', $type);
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -495,7 +503,7 @@ class ModuleHandler extends Handler
else
{
$this->error = 'msg_invalid_request';
$oMessageObject = ModuleHandler::getModuleInstance('message', 'view');
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -537,9 +545,8 @@ class ModuleHandler extends Handler
if(!is_object($oModule))
{
$type = Mobile::isFromMobilePhone() ? 'mobile' : 'view';
$this->_setInputErrorToContext();
$oMessageObject = ModuleHandler::getModuleInstance('message', $type);
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage('msg_module_is_not_exists');
$oMessageObject->dispMessage();
@ -569,7 +576,7 @@ class ModuleHandler extends Handler
$this->_setInputErrorToContext();
$this->error = 'msg_is_not_administrator';
$oMessageObject = ModuleHandler::getModuleInstance('message', $type);
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -583,7 +590,7 @@ class ModuleHandler extends Handler
{
$this->_setInputErrorToContext();
$this->error = 'msg_is_not_manager';
$oMessageObject = ModuleHandler::getModuleInstance('message', 'view');
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
@ -595,7 +602,7 @@ class ModuleHandler extends Handler
{
$this->_setInputErrorToContext();
$this->error = 'msg_is_not_administrator';
$oMessageObject = ModuleHandler::getModuleInstance('message', 'view');
$oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();

View file

@ -29,7 +29,7 @@ define('__ZBXE__', __XE__);
/**
* Display XE's full version.
*/
define('__XE_VERSION__', '1.8.7');
define('__XE_VERSION__', '1.8.10');
define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false));
define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false));
define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false));

View file

@ -274,6 +274,7 @@ class documentController extends document
$obj->homepage = $logged_info->homepage;
}
// If the tile is empty, extract string from the contents.
$obj->title = htmlspecialchars($obj->title);
settype($obj->title, "string");
if($obj->title == '') $obj->title = cut_str(trim(strip_tags(nl2br($obj->content))),20,'...');
// If no tile extracted from the contents, leave it untitled.

View file

@ -43,18 +43,24 @@ class image_gallery extends EditorHandler
*/
function transHTML($xml_obj)
{
$gallery_info = new stdClass;
$gallery_info->srl = rand(111111,999999);
$gallery_info->border_thickness = $xml_obj->attrs->border_thickness;
$gallery_info = new stdClass();
$gallery_info->srl = rand(111111, 999999);
$gallery_info->border_thickness = (int)$xml_obj->attrs->border_thickness;
$gallery_info->gallery_style = $xml_obj->attrs->gallery_style;
$color_preg = "/^([a-fA-F0-9]{6})/";
$gallery_info->border_color = preg_replace($color_preg,"#$1",$xml_obj->attrs->border_color);
$gallery_info->bg_color = preg_replace($color_preg,"#$1",$xml_obj->attrs->bg_color);
$gallery_info->gallery_align = $xml_obj->attrs->gallery_align;
if(!in_array($gallery_info->gallery_align, array('left', 'center', 'right'))) {
$gallery_info->gallery_align = 'center';
}
$images_list = $xml_obj->attrs->images_list;
$images_list = preg_replace('/\.(gif|jpg|jpeg|png) /i',".\\1\n",$images_list);
$gallery_info->images_list = explode("\n",trim($images_list));
$images_list = preg_replace('/\.(gif|jpe?g|png) /i', ".\\1\n", $images_list);
$images_list = explode("\n", trim($images_list));
$gallery_info->images_list = preg_grep("/^[a-z0-9\/]+\.(gif|jpe?g|png)+$/", $images_list);
// If you set the output to output the XML code generated a list of the image
if(Context::getResponseMethod() == 'XMLRPC')
{

View file

@ -662,16 +662,17 @@ class fileController extends file
}
}
// https://github.com/xpressengine/xe-core/issues/1713
$file_info['name'] = preg_replace('/\.(php|phtm|phar|html?|cgi|pl|exe|jsp|asp|inc)/i', '$0-x',$file_info['name']);
$file_info['name'] = removeHackTag($file_info['name']);
$file_info['name'] = str_replace(array('<','>'),array('%3C','%3E'),$file_info['name']);
// Get random number generator
$random = new Password();
// Set upload path by checking if the attachement is an image or other kinds of file
if(preg_match("/\.(jpe?g|gif|png|wm[va]|mpe?g|avi|swf|flv|mp[1-4]|as[fx]|wav|midi?|moo?v|qt|r[am]{1,2}|m4v)$/i", $file_info['name']))
{
// Immediately remove the direct file if it has any kind of extensions for hacking
$file_info['name'] = preg_replace('/\.(php|phtm|phar|html?|cgi|pl|exe|jsp|asp|inc)/i', '$0-x',$file_info['name']);
$file_info['name'] = str_replace(array('<','>'),array('%3C','%3E'),$file_info['name']);
$path = sprintf("./files/attach/images/%s/%s", $module_srl,getNumberingPath($upload_target_srl,3));
// special character to '_'

View file

@ -220,6 +220,7 @@ class fileModel extends file
{
$file = $file_list[$i];
$file->source_filename = stripslashes($file->source_filename);
$file->source_filename = htmlspecialchars($file->source_filename);
$file->download_url = $this->getDownloadUrl($file->file_srl, $file->sid, $file->module_srl);
$file_list[$i] = $file;
}

View file

@ -5,7 +5,7 @@
<value xml:lang="en"><![CDATA[XE Installation]]></value>
<value xml:lang="jp"><![CDATA[XEのインストール]]></value>
<value xml:lang="zh-CN"><![CDATA[安装XE]]></value>
<value xml:lang="zh-TW"><![CDATA[XE程式安裝]]></value>
<value xml:lang="zh-TW"><![CDATA[安裝XE]]></value>
<value xml:lang="fr"><![CDATA[Installation du XE ]]></value>
<value xml:lang="ru"><![CDATA[Установка XE]]></value>
<value xml:lang="es"><![CDATA[Instalación de XE ]]></value>
@ -34,36 +34,51 @@
<item name="license_agreement">
<value xml:lang="ko"><![CDATA[사용권 동의]]></value>
<value xml:lang="en"><![CDATA[License agreement]]></value>
<value xml:lang="jp"><![CDATA[ライセンス契約]]></value>
<value xml:lang="zh-CN"><![CDATA[许可协议]]></value>
<value xml:lang="zh-TW"><![CDATA[許可協議]]></value>
</item>
<item name="condition">
<value xml:lang="ko"><![CDATA[설치 조건 확인]]></value>
<value xml:lang="en"><![CDATA[Check the installation conditions]]></value>
<value xml:lang="jp"><![CDATA[インストール条件確認]]></value>
<value xml:lang="zh-CN"><![CDATA[检查安装条件]]></value>
<value xml:lang="zh-TW"><![CDATA[檢查安裝條件]]></value>
</item>
<item name="ftp">
<value xml:lang="ko"><![CDATA[FTP 정보 입력]]></value>
<value xml:lang="en"><![CDATA[Input FTP information]]></value>
<value xml:lang="jp"><![CDATA[FTP情報入力]]></value>
<value xml:lang="zh-CN"><![CDATA[输入FTP信息]]></value>
<value xml:lang="zh-TW"><![CDATA[輸入FTP信息]]></value>
</item>
<item name="dbSelect">
<value xml:lang="ko"><![CDATA[DB 선택]]></value>
<value xml:lang="en"><![CDATA[Choose database type]]></value>
<value xml:lang="jp"><![CDATA[DB選択]]></value>
<value xml:lang="zh-CN"><![CDATA[选择DB]]></value>
<value xml:lang="zh-TW"><![CDATA[選擇DB]]></value>
</item>
<item name="dbInfo">
<value xml:lang="ko"><![CDATA[DB 정보 입력]]></value>
<value xml:lang="en"><![CDATA[Input Database information]]></value>
<value xml:lang="jp"><![CDATA[DB情報入力]]></value>
<value xml:lang="zh-CN"><![CDATA[输入DB信息]]></value>
<value xml:lang="zh-TW"><![CDATA[輸入DB信息]]></value>
</item>
<item name="configInfo">
<value xml:lang="ko"><![CDATA[환경 설정]]></value>
<value xml:lang="en"><![CDATA[Settings]]></value>
<value xml:lang="jp"><![CDATA[環境設定]]></value>
<value xml:lang="zh-CN"><![CDATA[环境设置]]></value>
<value xml:lang="zh-TW"><![CDATA[環境設置]]></value>
</item>
<item name="adminInfo">
<value xml:lang="ko"><![CDATA[관리자 정보 입력]]></value>
<value xml:lang="en"><![CDATA[Enter Administrator information]]></value>
<value xml:lang="jp"><![CDATA[管理者情報入力]]></value>
<value xml:lang="zh-CN"><![CDATA[输入管理员信息]]></value>
<value xml:lang="zh-TW"><![CDATA[輸入管理員信息]]></value>
</item>
</item>
<item name="install_condition_enable">

View file

@ -103,7 +103,7 @@ class menuAdminController extends menu
$output->add('menuSrl', $args->menu_srl);
return $output;
}
function linkAllModuleInstancesToSitemap()
{
$unlinked_modules = false;
@ -114,7 +114,7 @@ class menuAdminController extends menu
{
$unlinked_modules = $output->data;
}
if($unlinked_modules)
{
$unlinked_menu_srl = $this->getUnlinkedMenu();
@ -122,7 +122,7 @@ class menuAdminController extends menu
}
}
function getUnlinkedMenu()
{
// 'unlinked' menu 존재여부 확인
@ -139,7 +139,7 @@ class menuAdminController extends menu
unset($moduleConfig->unlinked_menu_srl);
}
}
if(!$moduleConfig->unlinked_menu_srl)
{
$output = $this->addMenu('unlinked', 0);
@ -154,10 +154,10 @@ class menuAdminController extends menu
return false;
}
}
return $moduleConfig->unlinked_menu_srl;
}
/**
* insert menu when not linked module.
*
@ -172,7 +172,7 @@ class menuAdminController extends menu
{
return new Object(-1, 'msg_invalid_request');
}
foreach($moduleInfos as $moduleInfo)
{
// search menu.
@ -180,9 +180,9 @@ class menuAdminController extends menu
$args->url = $moduleInfo->mid;
$args->site_srl = $moduleInfo->site_srl;
$args->is_shortcut = 'N';
$output = executeQuery('menu.getMenuItemByUrl', $args);
if($output->toBool() && $output->data)
{
$moduleInfo->menu_srl = $output->data->menu_srl;
@ -195,7 +195,7 @@ class menuAdminController extends menu
$item_args->name = $moduleInfo->mid;
$item_args->menu_item_srl = getNextSequence();
$item_args->listorder = -1*$item_args->menu_item_srl;
$output = executeQuery('menu.insertMenuItem', $item_args);
if(!$output->toBool())
{
@ -203,9 +203,9 @@ class menuAdminController extends menu
}
$moduleInfo->menu_srl = $menuSrl;
}
$output = executeQuery('module.updateModule', $moduleInfo);
return $output;
}
@ -214,14 +214,14 @@ class menuAdminController extends menu
{
$oCacheHandler->invalidateGroupKey('site_and_module');
}
$oMenuAdminController = getAdminController('menu');
$oMenuAdminController->makeXmlFile($menuSrl);
return new Object();
}
/**
* Change the menu title
@ -418,7 +418,7 @@ class menuAdminController extends menu
// recreate menu cache file
$this->makeXmlFile($request->menu_srl);
if(!$isProc)
{
return $this->get('menu_item_srl');
@ -504,7 +504,7 @@ class menuAdminController extends menu
$args->is_shortcut = $request->is_shortcut;
$args->url = '#';
}
if($request->menu_desc) $args->desc = $request->menu_desc;
else $args->desc = '';
@ -539,10 +539,13 @@ class menuAdminController extends menu
if($request->menu_name_key) $args->name = $request->menu_name_key;
else $args->name = $request->menu_name;
if($request->menu_desc) $args->desc = $request->menu_desc;
else $args->desc = '';
$args->name = strip_tags(removeHackTag($args->name));
$args->desc = strip_tags(removeHackTag($args->desc));
debugPrint($args);
if($request->module_id && strncasecmp('http', $request->module_id, 4) === 0)
{
return new Object(-1, 'msg_invalid_request');
@ -616,7 +619,7 @@ class menuAdminController extends menu
{
$cmArgs->use_mobile = 'Y';
}
// if mid is empty, auto create mid
if(!$request->module_id)
{
@ -646,7 +649,7 @@ class menuAdminController extends menu
public function procMenuAdminUpdateItem()
{
$request = Context::getRequestVars();
debugPrint($request);
if(!$request->menu_item_srl || !$request->menu_name)
{
return new Object(-1, 'msg_invalid_request');
@ -725,14 +728,17 @@ class menuAdminController extends menu
{
$args->name = $request->menu_name;
}
if($request->menu_desc) $args->desc = $request->menu_desc;
else $args->desc = '';
$args->name = removeHackTag($args->name);
$args->desc = removeHackTag($args->desc);
unset($args->group_srls);
$args->open_window = $request->menu_open_window;
$args->expand = $request->menu_expand;
$output = executeQuery('menu.updateMenuItem', $args);
$output = $this->_updateMenuItem($args);
$this->makeXmlFile($args->menu_srl);
@ -790,7 +796,7 @@ class menuAdminController extends menu
$item_info->active_btn = '';
}
$output = executeQuery('menu.updateMenuItem', $item_info);
$output = $this->_updateMenuItem($item_info);
// recreate menu cache file
$this->makeXmlFile($args->menu_srl);
@ -798,13 +804,23 @@ class menuAdminController extends menu
public function updateMenuItem($itemInfo)
{
$output = executeQuery('menu.updateMenuItem', $itemInfo);
$output = $this->_updateMenuItem($itemInfo);
// recreate menu cache file
$this->makeXmlFile($itemInfo->menu_srl);
return $output;
}
public function _updateMenuItem($itemInfo)
{
$itemInfo->name = removeHackTag($itemInfo->name);
$itemInfo->desc = removeHackTag($itemInfo->desc);
$output = executeQuery('menu.updateMenuItem', $itemInfo);
return $output;
}
/**
* Delete menu item(menu of the menu)
* @return void|Object
@ -961,7 +977,7 @@ class menuAdminController extends menu
{
$output->data->url = '';
$referenceItem = $output->data;
$output = executeQuery('menu.updateMenuItem', $referenceItem);
$output = $this->_updateMenuItem($referenceItem);
if(!$output->toBool())
{
$oDB->rollback();
@ -1085,7 +1101,7 @@ class menuAdminController extends menu
$args = new stdClass();
$args->menu_srl = $menu_srl;
$args->menu_item_srl = $node['node_srl'];
$output = executeQuery('menu.updateMenuItemNode', $args);
$output = $this->_updateMenuItem($args);
//module's menu_srl move also
if($node['is_shortcut'] == 'N' && !empty($node['url']))
@ -1249,7 +1265,7 @@ class menuAdminController extends menu
$update_item_info->normal_btn = $copied_info['normal_btn'];
$update_item_info->hover_btn = $copied_info['hover_btn'];
$update_item_info->active_btn = $copied_info['active_btn'];
executeQuery('menu.updateMenuItem', $update_item_info);
$output = $this->_updateMenuItem($update_item_info);
}
$this->insertedMenuItemSrlList[] = $insertedMenuItemSrl;
}
@ -1629,7 +1645,7 @@ class menuAdminController extends menu
// Update if exists
if($item_info->menu_item_srl == $args->menu_item_srl)
{
$output = executeQuery('menu.updateMenuItem', $args);
$output = $this->_updateMenuItem($args);
if(!$output->toBool()) return $output;
}
// Insert if not exist
@ -1680,7 +1696,7 @@ class menuAdminController extends menu
if($exposure) $args->group_srls = implode(',', $exposure);
}
$output = executeQuery('menu.updateMenuItem', $args);
$output = $this->_updateMenuItem($args);
if(!$output->toBool())
{
return $output;

View file

@ -462,7 +462,7 @@ class moduleController extends module
$menuArgs->url = $args->mid;
$menuArgs->expand = 'N';
$menuArgs->is_shortcut = 'N';
$menuArgs->name = $args->browser_title;
$menuArgs->name = removeHackTag($args->browser_title);
$menuArgs->listorder = $args->menu_item_srl * -1;
$menuItemOutput = executeQuery('menu.insertMenuItem', $menuArgs);
@ -476,8 +476,9 @@ class moduleController extends module
}
}
$args->menu_srl = $menuArgs->menu_srl;
// Insert a module
$args->menu_srl = $menuArgs->menu_srl;
$args->browser_title = removeHackTag($args->browser_title);
$output = executeQuery('module.insertModule', $args);
if(!$output->toBool())
{
@ -520,6 +521,7 @@ class moduleController extends module
if(!$args->site_srl) $args->site_srl = (int)$module_info->site_srl;
if(!$args->browser_title) $args->browser_title = $module_info->browser_title;
}
$args->browser_title = removeHackTag($args->browser_title);
$output = executeQuery('module.isExistsModuleName', $args);
if(!$output->toBool() || $output->data->count)

View file

@ -55,6 +55,7 @@ class rssAdminView extends rss
}
}
if(!$total_config->feed_document_count) $total_config->feed_document_count = 15;
$total_config->url = $oRssModel->getModuleFeedUrl(NULL, '', 'rss', true);
Context::set('feed_config', $feed_config);
Context::set('total_config', $total_config);

View file

@ -12,27 +12,19 @@ class rssModel extends rss
*
* @param string $vid Vid
* @param string $mid mid
* @param string $format Feed format. ef)xe, atom, rss1.0
* @param string $format Feed format. rss | atom
* @param bool $absolute_url
* @return string
*/
function getModuleFeedUrl($vid = null, $mid, $format)
function getModuleFeedUrl($vid, $mid, $format = 'rss', $absolute_url = false)
{
if(Context::isAllowRewrite())
if($absolute_url)
{
$request_uri = Context::getRequestUri();
// If the virtual site variable exists and it is different from mid (vid and mid should not be the same)
if($vid && $vid != $mid)
{
return $request_uri.$vid.'/'.$mid.'/'.$format;
}
else
{
return $request_uri.$mid.'/'.$format;
}
return getFullUrl('','vid',$vid, 'mid',$mid, 'act',$format);
}
else
{
return getUrl('','mid',$mid,'act',$format);
return getUrl('','vid',$vid, 'mid',$mid, 'act',$format);
}
}

View file

@ -172,7 +172,7 @@ class rssView extends rss
$info->id = $proctcl.$_SERVER['HTTP_HOST'].$info->id;
}
$info->language = Context::getLangType();
$info->language = str_replace('jp','ja',Context::getLangType());
// Set the variables used in the RSS output
Context::set('info', $info);
Context::set('feed_config', $config);

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<ruleset version="1.5.0">
<customrules>
<customrules>
<rule name="boolean" type="enum" test="Y,N" />
</customrules>
<fields>
</customrules>
<fields>
<field name="module" required="true" default="rss" />
<field name="act" required="true" default="procRssAdminInsertConfig" />
<field name="use_total_feed" required="true" default="Y" rule="boolean" />
<field name="feed_title" required="true">
<field name="feed_title">
<title xml:lang="ko">피드(Feed) 제목</title>
<title xml:lang="en">Feed Title</title>
</field>

View file

@ -12,7 +12,7 @@
<input type="hidden" name="xe_validator_id" value="modules/rss/tpl/rss_admin_index/1" />
<div class="x_control-group">
<div class="x_control-label">{$lang->url}</div>
<div class="x_controls" style="padding-top:5px"><a href="{getFullSiteUrl()}rss" target="_blank">{getFullSiteUrl()}rss</a></div>
<div class="x_controls" style="padding-top:5px"><a href="{$total_config->url}" target="_blank">{$total_config->url}</a></div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->total_feed}</label>