Merge branch 'hotfix/1.8.16'

This commit is contained in:
bnu 2016-02-18 17:30:58 +09:00
commit 3dc0c136f2
64 changed files with 64 additions and 227 deletions

View file

@ -200,9 +200,16 @@ class Context
*/
function init()
{
if(!isset($GLOBALS['HTTP_RAW_POST_DATA']) && version_compare(PHP_VERSION, '5.6.0', '>=') === true) {
if(simplexml_load_string(file_get_contents("php://input")) !== false) $GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents("php://input");
if(strpos($_SERVER['CONTENT_TYPE'], 'json') || strpos($_SERVER['HTTP_CONTENT_TYPE'], 'json')) $GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents("php://input");
// fix missing HTTP_RAW_POST_DATA in PHP 5.6 and above
if(!isset($GLOBALS['HTTP_RAW_POST_DATA']) && version_compare(PHP_VERSION, '5.6.0', '>=') === TRUE)
{
$GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents("php://input");
// If content is not XML JSON, unset
if(!preg_match('/^[\<\{\[]/', $GLOBALS['HTTP_RAW_POST_DATA']) && strpos($_SERVER['CONTENT_TYPE'], 'json') === FALSE && strpos($_SERVER['HTTP_CONTENT_TYPE'], 'json') === FALSE)
{
unset($GLOBALS['HTTP_RAW_POST_DATA']);
}
}
// set context variables in $GLOBALS (to use in display handler)

View file

@ -1089,7 +1089,7 @@ class DB
* this method is protected
* @return boolean
*/
function _begin()
function _begin($transactionLevel = 0)
{
return TRUE;
}
@ -1117,7 +1117,7 @@ class DB
* this method is protected
* @return boolean
*/
function _rollback()
function _rollback($transactionLevel = 0)
{
return TRUE;
}

View file

@ -144,7 +144,7 @@ class DBCubrid extends DB
* this method is private
* @return boolean
*/
function _begin($transactionLevel)
function _begin($transactionLevel = 0)
{
if(__CUBRID_VERSION__ >= '8.4.0')
{
@ -167,7 +167,7 @@ class DBCubrid extends DB
* this method is private
* @return boolean
*/
function _rollback($transactionLevel)
function _rollback($transactionLevel = 0)
{
$connection = $this->_getConnection('master');

View file

@ -113,7 +113,7 @@ class DBMssql extends DB
* this method is private
* @return boolean
*/
function _begin($transactionLevel)
function _begin($transactionLevel = 0)
{
$connection = $this->_getConnection('master');
@ -136,7 +136,7 @@ class DBMssql extends DB
* this method is private
* @return boolean
*/
function _rollback($transactionLevel)
function _rollback($transactionLevel = 0)
{
$connection = $this->_getConnection('master');

View file

@ -147,7 +147,7 @@ class DBMysql extends DB
* this method is private
* @return boolean
*/
function _begin()
function _begin($transactionLevel = 0)
{
return true;
}
@ -157,7 +157,7 @@ class DBMysql extends DB
* this method is private
* @return boolean
*/
function _rollback()
function _rollback($transactionLevel = 0)
{
return true;
}

View file

@ -51,7 +51,7 @@ class DBMysql_innodb extends DBMysql
* this method is private
* @return boolean
*/
function _begin($transactionLevel)
function _begin($transactionLevel = 0)
{
$connection = $this->_getConnection('master');
@ -71,7 +71,7 @@ class DBMysql_innodb extends DBMysql
* this method is private
* @return boolean
*/
function _rollback($transactionLevel)
function _rollback($transactionLevel = 0)
{
$connection = $this->_getConnection('master');

View file

@ -85,7 +85,7 @@ class DBMysqli_innodb extends DBMysql
* this method is private
* @return boolean
*/
function _begin($transactionLevel)
function _begin($transactionLevel = 0)
{
$connection = $this->_getConnection('master');
@ -105,7 +105,7 @@ class DBMysqli_innodb extends DBMysql
* this method is private
* @return boolean
*/
function _rollback($transactionLevel)
function _rollback($transactionLevel = 0)
{
$connection = $this->_getConnection('master');

View file

@ -86,7 +86,7 @@ class ModuleObject extends Object
* @param string $type type of message (error, info, update)
* @return void
* */
function setMessage($message, $type = NULL)
function setMessage($message = 'success', $type = NULL)
{
parent::setMessage($message);
$this->setMessageType($type);
@ -370,7 +370,7 @@ class ModuleObject extends Object
* set the directory path of the layout directory
* @return string
* */
function getLayoutPath()
function getLayoutPath($layout_name = "", $layout_type = "P")
{
return $this->layout_path;
}

View file

@ -94,7 +94,7 @@ class Object
* @param string $message Error message
* @return bool Alaways returns true.
*/
function setMessage($message = 'success')
function setMessage($message = 'success', $type = NULL)
{
if($str = Context::getLang($message))
{

View file

@ -142,28 +142,16 @@ class Purifier
private function _getWhiteDomainRegx()
{
require_once(_XE_PATH_ . 'classes/security/EmbedFilter.class.php');
$oEmbedFilter = EmbedFilter::getInstance();
$whiteIframeUrlList = $oEmbedFilter->getWhiteIframeUrlList();
$whiteDomainRegex = '%^(';
$whiteDomainCount = count($whiteIframeUrlList);
$i=1;
if(is_array($whiteIframeUrlList))
$whiteDomain = array();
foreach($whiteIframeUrlList as $value)
{
foreach($whiteIframeUrlList as $value)
{
$whiteDomainRegex .= $value;
if($i < $whiteDomainCount)
{
$whiteDomainRegex .= '|';
}
$i++;
}
$whiteDomain[] = preg_quote($value, '%');
}
$whiteDomainRegex .= ')%';
$whiteDomainRegex = '%^(' . implode('|', $whiteDomain) . ')%';
return $whiteDomainRegex;
}

View file

@ -1200,7 +1200,7 @@ function removeSrcHack($match)
continue;
}
$val = preg_replace('/&#(?:x([a-fA-F0-9]+)|0*(\d+));/e', 'chr("\\1"?0x00\\1:\\2+0)', $m[3][$idx] . $m[4][$idx]);
$val = preg_replace_callback('/&#(?:x([a-fA-F0-9]+)|0*(\d+));/', function($n) {return chr($n[1] ? ('0x00' . $n[1]) : ($n[2] + 0)); }, $m[3][$idx] . $m[4][$idx]);
$val = preg_replace('/^\s+|[\t\n\r]+/', '', $val);
if(preg_match('/^[a-z]+script:/i', $val))

View file

@ -1724,10 +1724,10 @@ class PHPMailer {
switch (strtolower($position)) {
case 'phrase':
$encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
$encoded = preg_replace_callback('/([^A-Za-z0-9!*+\/ -])/', function($n) { return '='.sprintf('%02X', ord('\\1')); }, $encoded);
break;
case 'comment':
$encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
$encoded = preg_replace_callback('/([\(\)\"])/', function($n) { return '='.sprintf('%02X', ord('\\1')); }, $encoded);
case 'text':
default:
// Replace every high ascii, control =, ? and _ characters

View file

@ -61,5 +61,3 @@
</div>
</div>
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:애드온"></div>

View file

@ -120,5 +120,3 @@
});
})(jQuery);
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:애드온"></div>

View file

@ -63,3 +63,4 @@
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}"><i>&rsaquo;</i> {$lang->more}</a></p>
</section>
</div>

View file

@ -1,7 +1,5 @@
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=2, user-scalable=yes" />
<load target="../../../common/xeicon/xeicon.min.css" />
<div class="x">
<p class="skipNav"><a href="#content">{$lang->skip_to_content}</a></p>
<header class="header">

View file

@ -114,5 +114,3 @@
.adminMap .parent>.side{right:30px}
.adminMap .placeholder{background:#000;border-radius:5px}
</style>
<div class="admin-forum-container" data-chak-categories="XE설정:관리자 설정"></div>

View file

@ -124,5 +124,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:FTP 설정"></div>

View file

@ -314,4 +314,3 @@ function doSubmitConfig()
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:XE 일반 설정"></div>

View file

@ -908,9 +908,6 @@ margin-bottom: 10px;
text-decoration: none;
color: #666;
}
.x>.header>.account>ul>li.forum-chak>a {
color: #FFF;
}
.x>.header>.account>ul>li>a:hover,
.x>.header>.account>ul>li>a:focus {
text-decoration: underline;
@ -2390,33 +2387,3 @@ html[lang="mn"] .x .g11n.active>[disabled],
height: 1px;
overflow: hidden;
}
.admin-forum-container {
clear: both;
margin: 10px 5px;
border: 0 solid #ddd;
}
.admin-forum-container.activated-forum {
margin-top: 30px;
padding: 15px;
background-color: #fbfbfb;
border-width: 3px 0;
}
.admin-forum-container .open-forum {
display: inline-block;
padding: 15px;
padding-left: 60px;
color: #0088cc;
font-size: 14px;
height: 20px;
line-height: 20px;
text-decoration: none;
background-image: url('../img/chak_c.png');
background-repeat: no-repeat;
background-position: center left;
}
.admin-forum-container .open-forum:hover,
.admin-forum-container .open-forum:active {
text-decoration: underline;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

View file

@ -2471,67 +2471,3 @@ jQuery(function($){
}
});
});
// Forum Chak
(function($){
var chak = {
elClass: 'chak-comment',
group_id: 'xe1_official',
apikey: 'xe17935b49af5435d37f1cde130363db-forum'
};
$(function(){
var $chakContainer = $('.admin-forum-container');
if($chakContainer.length) {
var $forumOpen = $('<a href="#' + chak.elClass + '" class="open-forum">이 페이지에 대한 포럼 보기</a>');
var $headerButton = $('<li class="forum-chak"><a href="#" class="x_btn x_btn-primary">Forum</a></li>');
var $headerMenu = $('header.header .account ul');
(function(){var s=document.createElement('script');s.type='text/javascript';s.src='//chak.it/static/service.js';s.async=true;(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(s);})();
$chakContainer.each(function(idx){
var $el = $(this);
var elData = $el.data();
elData.count = 0;
var $opener = $forumOpen.clone();
var $button = $headerButton.clone();
var forumId = 'inline-forum-' + idx;
$el.append($opener);
$button.find('a')
.attr('href', '#' + forumId)
.on('click', function(){
var $target = $($.attr(this, 'href'));
$('html, body').animate({
scrollTop: $target.offset().top - 20
}, 500);
return false;
})
.one('click', function() {
var $target = $($.attr(this, 'href'));
$target.find('a').click();
});
$headerMenu.append($button);
$el.attr('id', forumId);
$el.find('a').on('click', function(){
var div = document.createElement("div");
div.setAttribute("data-chak-apikey", chak.apikey);
div.setAttribute("data-chak-categories", elData.chakCategories);
$opener.after(div);
$chakContainer.addClass('activated-forum');
manuallySetChakService(div);
$opener.remove();
});
});
}
});
})(jQuery);

View file

@ -25,5 +25,3 @@
</form>
-->
<include target="list.html" />
<div class="admin-forum-container" data-chak-categories="XE설정:쉬운 설치"></div>

View file

@ -45,6 +45,16 @@
</div>
<div class="text">
<h3><span class="x_label x_label-info">{$item->category}</span> <a href="{$target_url}" title="{$item->title}" target="_blank">{$item->title}</a></h3>
<p>
<block cond="(int)$item->package_voter > 0">
<span class="starRating"><span style="width:{sprintf("%d",$item->package_voted/$item->package_voter*20)}%">{sprintf("%0.1f",$item->package_voted/$item->package_voter*2)}{sprintf($lang->rate, $item->package_start)}</span></span>
<span class="x_badge">{sprintf("%0.1f",$item->package_voted/$item->package_voter*2)}/{number_format($item->package_voter)}</span>
</block>
<block cond="(int)$item->package_voter <= 0">
<span class="starRating"><span style="width:0%">0</span></span>
<span class="x_badge">0/0</span>
</block>
</p>
<p class="x_btn-group" style="text-align:right">
<a cond="$item->current_version && $item->need_update != 'Y'" class="x_btn x_disabled" href="#">{$lang->installed}</a>
<a cond="!$item->current_version" class="x_btn" href="{getUrl('act','dispAutoinstallAdminInstall','package_srl',$item->package_srl)}"><i class="x_icon-download-alt"></i> {$lang->install}</a>
@ -90,6 +100,14 @@
<p><span class="x_label x_label-info">{$item->category}</span> <a href="{$target_url}" target="_blank">{$item->title}</a></p>
<p style="margin:5px 0">{cut_str($item->package_description,200)}</p>
<p style="margin:5px 0">
<block cond="(int)$item->package_voter > 0">
<span class="starRating"><span style="width:{sprintf("%d",$item->package_voted/$item->package_voter*20)}%">{sprintf("%0.1f",$item->package_voted/$item->package_voter*2)}{sprintf($lang->rate, $item->package_start)}</span></span>
<span class="x_badge">{sprintf("%0.1f",$item->package_voted/$item->package_voter*2)}/{number_format($item->package_voter)}</span>
</block>
<block cond="(int)$item->package_voter <= 0">
<span class="starRating"><span style="width:0%">0</span></span>
<span class="x_badge">0/0</span>
</block>
{$lang->package_update}: <time title="{zdate($item->item_regdate, "Y-m-d H:i")}">{zdate($item->item_regdate, "Y-m-d")}</time>
<i>|</i>
{$lang->package_downloaded_count}: {number_format($item->package_downloaded)}

View file

@ -199,5 +199,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:댓글"></div>

View file

@ -115,6 +115,4 @@ jQuery(function($){
}
}).change();
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:댓글"></div>
</script>

View file

@ -131,8 +131,8 @@ class communicationController extends communication
$view_url = Context::getRequestUri();
$content = sprintf("%s<br /><br />From : <a href=\"%s\" target=\"_blank\">%s</a>", $content, $view_url, $view_url);
$oMail = new Mail();
$oMail->setTitle($title);
$oMail->setContent($content);
$oMail->setTitle(htmlspecialchars($title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
$oMail->setContent(removeHackTag($content));
$oMail->setSender($logged_info->nick_name, $logged_info->email_address);
$oMail->setReceiptor($receiver_member_info->nick_name, $receiver_member_info->email_address);
$oMail->send();

View file

@ -274,7 +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);
$obj->title = htmlspecialchars($obj->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
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.
@ -473,6 +473,7 @@ class documentController extends document
$obj->homepage = $source_obj->get('homepage');
}
// If the tile is empty, extract string from the contents.
$obj->title = htmlspecialchars($obj->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
settype($obj->title, "string");
if($obj->title == '') $obj->title = cut_str(strip_tags($obj->content),20,'...');
// If no tile extracted from the contents, leave it untitled.

View file

@ -200,6 +200,4 @@ jQuery(function($){
}
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:문서"></div>
</script>

View file

@ -216,5 +216,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:문서"></div>

View file

@ -144,7 +144,8 @@ class editorAdminController extends editor
{
$oModuleController = getController('module');
$configVars = Context::getRequestVars();
$config = new stdClass;
if($configVars->font_defined != 'Y') $config->font_defined = $configVars->font_defined = 'N';
else $config->font_defined = 'Y';

View file

@ -213,4 +213,3 @@ jQuery(function($){
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:에디터"></div>

View file

@ -56,5 +56,3 @@
</div>
</div>
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:파일 업로드"></div>

View file

@ -207,5 +207,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:파일첨부"></div>

View file

@ -105,5 +105,3 @@ jQuery('a.modalAnchor')
return false;
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:데이터 들여오기"></div>

View file

@ -289,7 +289,7 @@ class layoutModel extends layout
* @param string $layout_type (P : PC, M : Mobile)
* @return string path of layout
*/
function getLayoutPath($layout_name, $layout_type = "P")
function getLayoutPath($layout_name = "", $layout_type = "P")
{
$layout_parse = explode('|@|', $layout_name);
if(count($layout_parse) > 1)

View file

@ -52,5 +52,3 @@
</tr>
</tbody>
</table>
<div class="admin-forum-container" data-chak-categories="XE설정:레이아웃"></div>

View file

@ -43,5 +43,3 @@
<!--@end-->
</tbody>
</table>
<div class="admin-forum-container" data-chak-categories="XE설정:레이아웃 관리"></div>

View file

@ -94,5 +94,3 @@
</div>
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:레이아웃 관리"></div>

View file

@ -105,5 +105,3 @@ xe.lang.confirm_delete = '{$lang->confirm_delete}';
</div>
</form>
</section>
<div class="admin-forum-container" data-chak-categories="XE설정:레이아웃"></div>

View file

@ -1,5 +1,3 @@
<include target="header.html" />
<load target="js/layout_modify.js" />
{$content}
<div class="admin-forum-container" data-chak-categories="XE설정:레이아웃 관리"></div>

View file

@ -615,7 +615,7 @@ class memberAdminView extends member
}
$replace = array_merge($extentionReplace, $replace);
$inputTag = preg_replace('@%(\w+)%@e', '$replace[$1]', $template);
$inputTag = preg_replace_callback('@%(\w+)%@', function($n) { return $replace[$n[1]]; }, $template);
if($extendForm->description)
$inputTag .= '<p class="help-block">'.$extendForm->description.'</p>';

View file

@ -80,5 +80,3 @@
<span class="x_pull-right"><input class="x_btn x_btn-primary" type="submit" value="{$lang->cmd_save}" /></span>
</div>
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:회원 설정"></div>

View file

@ -50,5 +50,3 @@
<script>
jQuery(function() { doGetSkinColorset("{$config->skin}"); });
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:회원 설정"></div>

View file

@ -103,5 +103,3 @@
<p class="x_pull-right">{$lang->add_group_image_mark}: <a href="{getUrl('', 'module','admin', 'act', 'dispModuleAdminFileBox')}" target="_blank">{$lang->link_file_box}</a></p>
</div>
</section>
<div class="admin-forum-container" data-chak-categories="XE설정:회원 그룹"></div>

View file

@ -129,5 +129,3 @@
});
})(jQuery);
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:회원 정보"></div>

View file

@ -62,5 +62,3 @@ jQuery(function($){
}).change();
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:회원 설정"></div>

View file

@ -202,5 +202,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:회원 목록"></div>

View file

@ -198,5 +198,3 @@
#userDefine{max-width:60%;margin-left:-30%}
}
</style>
<div class="admin-forum-container" data-chak-categories="XE설정:회원 설정"></div>

View file

@ -352,8 +352,6 @@
</fieldset>
<button type="button" class="x_close" data-admin-hide="#imgbtn">&times;</button>
</div>
<!--@end-->
<!--@if($act == 'dispMenuAdminSiteMap')-->
@ -4122,6 +4120,3 @@ jQuery.extend({
});
//]]>
</script>
<div cond="$act === 'dispMenuAdminSiteMap'" class="admin-forum-container" data-chak-categories="XE설정:사이트 메뉴 편집"></div>
<div cond="$act === 'dispMenuAdminSiteDesign'" class="admin-forum-container" data-chak-categories="XE설정:사이트 디자인 설정"></div>

View file

@ -116,5 +116,3 @@
</ul>
</form>
</section>
<div class="admin-forum-container" data-chak-categories="XE설정:파일 박스"></div>

View file

@ -58,5 +58,3 @@
<input type="submit" class="x_btn x_btn-primary" value="{$lang->cmd_registration}">
</div>
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:모듈"></div>

View file

@ -20,4 +20,3 @@
</section>
<!--@end-->
<div class="admin-forum-container" data-chak-categories="XE설정:모듈"></div>

View file

@ -59,6 +59,4 @@ jQuery(function($){
$('.dsTg>tbody>tr[data-type1]').prependTo('tbody');
$('.dsTg>tbody>tr[data-type2]').prependTo('tbody');
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:모듈"></div>
</script>

View file

@ -190,6 +190,4 @@ jQuery(function($){
}
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:포인트"></div>
</script>

View file

@ -145,5 +145,3 @@
<input type="hidden" name="success_return_url" value="{Context::getRequestUrl()}" />
<input type="hidden" name="xe_validator_id" value="modules/point/tpl/member_list/1" />
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:포인트"></div>

View file

@ -37,5 +37,3 @@
<span class="x_pull-right"><input class="x_btn x_btn-primary" type="submit" value="{$lang->cmd_registration}" /></span>
</div>
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:포인트"></div>

View file

@ -124,5 +124,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:설문"></div>

View file

@ -122,5 +122,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:RSS"></div>

View file

@ -1 +0,0 @@
<div class="admin-forum-container" data-chak-categories="XE설정:스팸필터"></div>

View file

@ -165,5 +165,3 @@ jQuery(function($){
});
});
</script>
<div class="admin-forum-container" data-chak-categories="XE설정:휴지통"></div>

View file

@ -75,4 +75,3 @@
</div>
</form>
<div class="admin-forum-container" data-chak-categories="XE설정:휴지통"></div>

View file

@ -39,5 +39,3 @@
</tr>
</tbody>
</table>
<div class="admin-forum-container" data-chak-categories="XE설정:위젯"></div>

View file

@ -17,5 +17,3 @@
<p style="margin-right:14px"><textarea id="widget_code" rows="4" cols="42" style="width:100%;cursor:text;font-family:'Courier New', Courier, monospace" readonly="readonly"></textarea>
</div>
<include target="../../module/tpl/include.filebox.html" />
<div class="admin-forum-container" data-chak-categories="XE설정:위젯"></div>