Merge branch 'release/1.7.4' into develop

This commit is contained in:
khongchi 2014-02-04 17:59:01 +09:00
commit 327165b068
86 changed files with 721 additions and 724 deletions

View file

@ -75,8 +75,6 @@ module.exports = function(grunt) {
'modules/board/skins/default/board.default.min.js': ['modules/board/skins/default/board.default.js'],
'modules/board/m.skins/default/js/mboard.min.js': ['modules/board/m.skins/default/js/mboard.js'],
'modules/board/m.skins/simpleGray/js/mboard.min.js': ['modules/board/m.skins/simpleGray/js/mboard.js'],
// editor-component-multimedia-link
'modules/editor/components/multimedia_link/tpl/popup.min.js': ['modules/editor/components/multimedia_link/tpl/popup.js'],
// editor-component-image-gallery
'modules/editor/components/image_gallery/tpl/gallery.min.js' : ['modules/editor/components/image_gallery/tpl/gallery.js'],
'modules/editor/components/image_gallery/tpl/list_gallery.min.js' : ['modules/editor/components/image_gallery/tpl/list_gallery.js'],
@ -114,11 +112,6 @@ module.exports = function(grunt) {
'modules/editor/components/image_gallery/tpl/slide_gallery.min.css': ['modules/editor/components/image_gallery/tpl/slide_gallery.css'],
}
},
'editor-component-multimedia-link': {
files: {
'modules/editor/components/multimedia_link/tpl/popup.min.css': ['modules/editor/components/multimedia_link/tpl/popup.css'],
}
},
'moudle-widget-tpl': {
files: {
'modules/widget/tpl/css/widget.min.css': ['modules/widget/tpl/css/widget.css'],

View file

@ -1,7 +1,7 @@
# XpressEngine
## Authors
adrian.vasile.constantin, aerofleet, @akasima, @andreimarin, araste, @bnu, bradly1, buffkj, c2joy, @canto, cbrghost, @ccata17, @ChanMyeong, chinaskyking, chschy, clench, @devjin, @dionirom, @dorami, @dragan-dan, ducduydaovn, duvent, @Eundong, @florinutz, @flourscent, @flyskyko, @ForPeople, FruitsHake, guny, @haneul, hankm2004, haojilin, heemin, ikko, johnsonshu, juanlee0, k10206, kagami, @khongchi, @largeden, liahona, lickawtl, mayoojin, mglclub, @misol, mmx900, mooo, mosmartin, @nagoon97, @ngleader, nicetwo, ovclas, @qw5414, @Rayyin, risapapa, rokmcssu, royallin, rubyeye, ryin005, sanghunjun, @sejin7940, @SMaker, @solidh, sspa3141, supershop, @taggon, @ucorina, unryong, venister, wdlee91, welcomeju, @YJSoft, ysnglee2000, zero
adrian.vasile.constantin, aerofleet, @akasima, @andreimarin, araste, @bnu, bradly1, buffkj, c2joy, @canto, cbrghost, @ccata17, @ChanMyeong, chinaskyking, chschy, clench, @devjin, @dionisrom, @dorami, @dragan-dan, ducduydaovn, duvent, @Eundong, @florinutz, @flourscent, @flyskyko, @ForPeople, FruitsHake, guny, @haneul, hankm2004, haojilin, heemin, ikko, johnsonshu, juanlee0, k10206, kagami, @khongchi, @lansi951, @largeden, liahona, lickawtl, mayoojin, mglclub, @misol, mmx900, mooo, mosmartin, @nagoon97, @ngleader, nicetwo, ovclas, risapapa, rokmcssu, royallin, rubyeye, ryin005, sanghunjun, @sejin7940, @SMaker, sspa3141, @stellar12, supershop, @taggon, @ucorina, unryong, venister, wdlee91, welcomeju, @YJSoft, ysnglee2000, zero
## License
Copyright (C) NAVER <http://www.navercorp.com>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -101,10 +101,11 @@ div.oembedall-githubrepos ul.oembedall-repo-stats li.oembedall-forks a {
span.oembedall-closehide{
background-color: #aaa;
background-color: #EEE;
border-radius: 2px;
cursor: pointer;
margin-right: 3px;
padding: 0 3px;
}
div.oembedall-container {

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
!function(a){var b="(https?|ftp|news|telnet|irc|mms)://",c="(?:[\\w\\-]+\\.)+(?:[a-z]+)",d="(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9]?[0-9])",e="(?:"+d+"\\.){3}"+d,f="(?::([0-9]+))?",g="(?:/~[\\w-]+)?",h='((?:/[\\w!"$-/:-@]+)*)',i="(?:#([\\w!-@]+))?",j=new RegExp("("+b+"("+c+"|"+e+"|localhost)"+f+g+h+i+")","ig"),k=xe.createPlugin("OEmbed",{targets:[],init:function(){this.targets=[],this.enableAutoLink=!1,this.castedOembedA=!1,this.embedSetting=[]},API_ONREADY:function(){var b=this;this.extractTargets(a(".xe_content")),this.oApp.getPlugin("autolink").length&&(this.enableAutoLink=!0),b.cast("OEMBEDA"),this.enableAutoLink||a(this.targets).each(function(){b.cast("OEMBED",[this])})},API_BEFORE_AUTOLINK:function(){var a=this;a.cast("OEMBEDA")},API_AFTER_AUTOLINK:function(a,b){this.oembed(b[0])},API_OEMBED:function(b,c){if(!this.enableAutoLink){var d=c[0];if(!a(d).parent().length||"a"==a(d).parent().get(0).nodeName.toLowerCase())return this.oembed(a(d)),void 0;var e=d.nodeValue,f=a("<span>");e=e.replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=e.replace(j,'<a href="$1" target="_blank">$1</a>'),a(d).before(f),a(d).replaceWith(e),c[0]=f.next("a"),f.remove(),this.oembed(c[0])}},API_OEMBEDA:function(){if(!this.castedOembedA){var b=this;this.castedOembedA=!0,a(".read_body a").not("_oembed").each(function(){b.oembed(a(this))})}},oembed:function(b){var c=this;this.embedSetting.maxWidth||(this.embedSetting.maxWidth=a(".xe_content").width()),b&&(b&&3==b.nodeType&&(b=a(b)),b.oembed(null,c.embedSetting).addClass("_oembed"))},extractTargets:function(b){var c=this,d=a(".xe_content",b);return d.length?(this.extractTargets(d),void 0):(a(b).contents().each(function(){var b=this.nodeName.toLowerCase();if(-1==a.inArray(b,["a","pre","xml","textarea","input","select","option","code","script","style","iframe","button","img","embed","object","ins"]))if(j.exec(""),3==this.nodeType){var d=this.nodeValue;if(d.length<5)return;if(!/(http|https|ftp|news|telnet|irc|mms):\/\//i.test(d))return;c.targets.push(this)}else c.extractTargets(this)}),void 0)}});xe.registerPlugin(new k)}(jQuery);
!function(a){var b="(https?|ftp|news|telnet|irc|mms)://",c="(?:[\\w\\-]+\\.)+(?:[a-z]+)",d="(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9]?[0-9])",e="(?:"+d+"\\.){3}"+d,f="(?::([0-9]+))?",g="(?:/~[\\w-]+)?",h='((?:/[\\w!"$-/:-@]+)*)',i="(?:#([\\w!-@]+))?",j=new RegExp("("+b+"("+c+"|"+e+"|localhost)"+f+g+h+i+")","ig"),k=xe.createPlugin("OEmbed",{targets:[],init:function(){this.targets=[],this.enableAutoLink=!1,this.castedOembedA=!1,this.embedSetting=[]},API_ONREADY:function(){var b=this;this.extractTargets(a(".xe_content")),this.oApp.getPlugin("autolink").length&&(this.enableAutoLink=!0),b.cast("OEMBEDA"),this.enableAutoLink||a(this.targets).each(function(){b.cast("OEMBED",[this])})},API_BEFORE_AUTOLINK:function(){var a=this;a.cast("OEMBEDA")},API_AFTER_AUTOLINK:function(a,b){this.oembed(b[0])},API_OEMBED:function(b,c){if(!this.enableAutoLink){var d=c[0];if(!a(d).parent().length||"a"==a(d).parent().get(0).nodeName.toLowerCase())return void this.oembed(a(d));var e=d.nodeValue,f=a("<span>");e=e.replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=e.replace(j,'<a href="$1" target="_blank">$1</a>'),a(d).before(f),a(d).replaceWith(e),c[0]=f.next("a"),f.remove(),this.oembed(c[0])}},API_OEMBEDA:function(){if(!this.castedOembedA){var b=this;this.castedOembedA=!0,a(".read_body a").not("_oembed").each(function(){b.oembed(a(this))})}},oembed:function(b){var c=this;this.embedSetting.maxWidth||(this.embedSetting.maxWidth=a(".xe_content").width()),b&&(b&&3==b.nodeType&&(b=a(b)),b.oembed(null,c.embedSetting).addClass("_oembed"))},extractTargets:function(b){var c=this,d=a(".xe_content",b);return d.length?void this.extractTargets(d):void a(b).contents().each(function(){var b=this.nodeName.toLowerCase();if(-1==a.inArray(b,["a","pre","xml","textarea","input","select","option","code","script","style","iframe","button","img","embed","object","ins"]))if(j.exec(""),3==this.nodeType){var d=this.nodeValue;if(d.length<5)return;if(!/(http|https|ftp|news|telnet|irc|mms):\/\//i.test(d))return;c.targets.push(this)}else c.extractTargets(this)})}});xe.registerPlugin(new k)}(jQuery);

View file

@ -1 +1 @@
!function(a){function b(){var b,c,e,f,g,h=a(document.body);return d?(b=a("#xe_gallery_controls"),c=a("#xe_gallery_holder"),e=a("#xe_gallery_closebtn"),f=a("#xe_gallery_prevbtn"),g=a("#xe_gallery_nextbtn")):(d=a("<div>").attr("id","xe_gallery_screen").css({position:"fixed",display:"none",backgroundColor:"black",zIndex:500,opacity:.7}),b=a("<div>").attr("id","xe_gallery_controls").css({position:"fixed",display:"none",overflow:"hidden",zIndex:510}),f=a('<button type="button" id="xe_gallery_prevbtn" />').css({left:"10px",backgroundPosition:"0 -64px"}).click(function(){d.xePrev()}).appendTo(b),e=a('<button type="button" id="xe_gallery_closebtn" />').css({top:"10px",backgroundPosition:"0 0"}).click(function(){d.xeHide()}).appendTo(b),g=a('<button type="button" id="xe_gallery_nextbtn" />').attr("id","xe_gallery_nextbtn").css({right:"10px",backgroundPosition:"0 -128px"}).click(function(){d.xeNext()}).appendTo(b),b.find(">button").css({position:"absolute",width:"64px",height:"64px",zIndex:530,cursor:"pointer",border:0,margin:0,padding:0,backgroundColor:"transparent",backgroundImage:"url("+request_uri+"addons/resize_image/btn.png)",backgroundRepeat:"no-repeat",opacity:".5",filter:"alpha(opacity=50)"}).mouseover(function(){a(this).css({opacity:"1",filter:"alpha(opacity=100)"})}).mouseout(function(){a(this).css({opacity:".5",filter:"alpha(opacity=50)"})}).focus(function(){a(this).trigger("mouseover")}).blur(function(){a(this).trigger("mouseout")}),c=a("<img>").attr("id","xe_gallery_holder").css({border:"5px solid white",zindex:520,maxWidth:"none",borderRadius:"5px",boxShadow:"0 0 10px #000"}).appendTo(b).draggable(),h.append(d).append(b),d.xeShow=function(){var b=(a(window).width(),a(window).height());a("#xe_gallery_controls,#xe_gallery_screen").show().css({top:0,right:0,bottom:0,left:0}),a("#xe_gallery_prevbtn,#xe_gallery_nextbtn").css("top",Math.round(b/2-32)+"px"),this.xeMove(0)},d.xeHide=function(){d.hide(),b.hide()},d.xePrev=function(){this.xeMove(-1)},d.xeNext=function(){this.xeMove(1)},d.xeMove=function(b){var d=a(window).width(),h=a(window).height();this.index+=b,f.css("visibility",this.index>0?"visible":"hidden"),g.css("visibility",this.index<this.list.size()-1?"visible":"hidden");var i=this.list.eq(this.index).attr("rawsrc");i||(i=this.list.eq(this.index).attr("src")),c.attr("src",i).css({left:d/2-c.width()/2+"px",top:h/2-c.height()/2+"px"}),e.css({left:d/2-32+"px",top:"10px"}).focus()},a(document).keydown(function(a){return 27==a.which?(d.xeHide(),!1):!0})),d}function c(){var c=a(this).closest(".xe_content"),d=c.find("img[rel=xe_gallery]"),e=a.inArray(a(this).get(0),d.get()),f=b();f.list=d,f.index=e,f.xeShow()}var d=null;a(window).load(function(){function b(a,c){if(c||(c=0),!(c>=10)){var d=this,e={width:d.width(),height:d.height()};if(!e.width||!e.height)return setTimeout(function(){b.call(d,a,++c)},200),void 0;if(!(e.width<=a)){var f=a/e.width;d.removeAttr("width").removeAttr("height").css({width:a,height:parseInt(e.height*f,10)})}}}var d=/(?:(modules|addons|classes|common|layouts|libs|widgets|widgetstyles)\/)/i,e=/(?:common\/tpl\/images\/blank\.gif$)/i,f=a('<div style="height:1px;overflow:hidden;opacity:0;display:block;clear:both"></div>');a(".xe_content").each(function(){var g=f.appendTo(this).width();f.remove(),g&&(a("img",this).each(function(){var c=a(this),f=c.attr("src");(!d.test(f)||e.test(f))&&(c.attr("rel","xe_gallery"),b.call(c,g))}),a("img[rel=xe_gallery]",this).live("mouseover",function(){var b=a(this);b.parent("a").length||b.attr("onclick")||b.css("cursor","pointer").click(c)}))})})}(jQuery);
!function(a){function b(){var b,c,e,f,g,h=a(document.body);return d?(b=a("#xe_gallery_controls"),c=a("#xe_gallery_holder"),e=a("#xe_gallery_closebtn"),f=a("#xe_gallery_prevbtn"),g=a("#xe_gallery_nextbtn")):(d=a("<div>").attr("id","xe_gallery_screen").css({position:"fixed",display:"none",backgroundColor:"black",zIndex:500,opacity:.7}),b=a("<div>").attr("id","xe_gallery_controls").css({position:"fixed",display:"none",overflow:"hidden",zIndex:510}),f=a('<button type="button" id="xe_gallery_prevbtn" />').css({left:"10px",backgroundPosition:"0 -64px"}).click(function(){d.xePrev()}).appendTo(b),e=a('<button type="button" id="xe_gallery_closebtn" />').css({top:"10px",backgroundPosition:"0 0"}).click(function(){d.xeHide()}).appendTo(b),g=a('<button type="button" id="xe_gallery_nextbtn" />').attr("id","xe_gallery_nextbtn").css({right:"10px",backgroundPosition:"0 -128px"}).click(function(){d.xeNext()}).appendTo(b),b.find(">button").css({position:"absolute",width:"64px",height:"64px",zIndex:530,cursor:"pointer",border:0,margin:0,padding:0,backgroundColor:"transparent",backgroundImage:"url("+request_uri+"addons/resize_image/btn.png)",backgroundRepeat:"no-repeat",opacity:".5",filter:"alpha(opacity=50)"}).mouseover(function(){a(this).css({opacity:"1",filter:"alpha(opacity=100)"})}).mouseout(function(){a(this).css({opacity:".5",filter:"alpha(opacity=50)"})}).focus(function(){a(this).trigger("mouseover")}).blur(function(){a(this).trigger("mouseout")}),c=a("<img>").attr("id","xe_gallery_holder").css({border:"5px solid white",zindex:520,maxWidth:"none",borderRadius:"5px",boxShadow:"0 0 10px #000"}).appendTo(b).draggable(),h.append(d).append(b),d.xeShow=function(){var b=(a(window).width(),a(window).height());a("#xe_gallery_controls,#xe_gallery_screen").show().css({top:0,right:0,bottom:0,left:0}),a("#xe_gallery_prevbtn,#xe_gallery_nextbtn").css("top",Math.round(b/2-32)+"px"),this.xeMove(0)},d.xeHide=function(){d.hide(),b.hide()},d.xePrev=function(){this.xeMove(-1)},d.xeNext=function(){this.xeMove(1)},d.xeMove=function(b){var d=a(window).width(),h=a(window).height();this.index+=b,f.css("visibility",this.index>0?"visible":"hidden"),g.css("visibility",this.index<this.list.size()-1?"visible":"hidden");var i=this.list.eq(this.index).attr("rawsrc");i||(i=this.list.eq(this.index).attr("src")),c.attr("src",i).css({left:d/2-c.width()/2+"px",top:h/2-c.height()/2+"px"}),e.css({left:d/2-32+"px",top:"10px"}).focus()},a(document).keydown(function(a){return 27==a.which?(d.xeHide(),!1):!0})),d}function c(){var c=a(this).closest(".xe_content"),d=c.find("img[rel=xe_gallery]"),e=a.inArray(a(this).get(0),d.get()),f=b();f.list=d,f.index=e,f.xeShow()}var d=null;a(window).load(function(){function b(a,c){if(c||(c=0),!(c>=10)){var d=this,e={width:d.width(),height:d.height()};if(!e.width||!e.height)return void setTimeout(function(){b.call(d,a,++c)},200);if(!(e.width<=a)){var f=a/e.width;d.removeAttr("width").removeAttr("height").css({width:a,height:parseInt(e.height*f,10)})}}}var d=/(?:(modules|addons|classes|common|layouts|libs|widgets|widgetstyles)\/)/i,e=/(?:common\/tpl\/images\/blank\.gif$)/i,f=a('<div style="height:1px;overflow:hidden;opacity:0;display:block;clear:both"></div>');a(".xe_content").each(function(){var g=f.appendTo(this).width();f.remove(),g&&(a("img",this).each(function(){var c=a(this),f=c.attr("src");(!d.test(f)||e.test(f))&&(c.attr("rel","xe_gallery"),b.call(c,g))}),a("img[rel=xe_gallery]",this).live("mouseover",function(){var b=a(this);b.parent("a").length||b.attr("onclick")||b.css("cursor","pointer").click(c)}))})})}(jQuery);

View file

@ -420,7 +420,7 @@ body,table,input,textarea,select,button{font-family:나눔고딕,NanumGothic,NG,
<li id="UMAN_config_general_db_session">인증 세션 DB 사용: 인증 시 사용되는 PHP 세션을 DB로 사용하는 기능입니다. 웹서버의 사용률이 낮은 사이트에서는 비활성화시 사이트 응답 속도가 향상될 수 있습니다. 단, 현재 접속자를 구할 수 없어 관련된 기능을 사용할 수 없게 됩니다.</li>
<li id="UMAN_config_general_qmail">Qmail 호환: Qmail등 CRLF를 줄 구분자로 인식하지 못하는 MTA에서 메일이 발송되도록 합니다.</li>
<li id="UMAN_config_general_sitelock">사이트 잠금: 지정한 IP 외 접근을 차단할 수 있습니다.</li>
<li id="UMAN_config_general_sitelock_whitelist">접근 허용 IP: 이곳에 관리자의 IP가 반드시 포함되어야 합니다. 만약 접근이 차단된 경우 './files/config/db.config.php' 파일에서 `$db_info->use_sitelock`를 'N'으로 변경하여 차단을 해제할 수 있습니다.</li>
<li id="UMAN_config_general_sitelock_whitelist">접근 허용 IP: 이곳에 관리자의 IP가 반드시 포함되어야 합니다. 만약 접근이 차단된 경우 './files/config/db.config.php' 파일에서 `'use_sitelock' => 'Y'`를 `'use_sitelock' => 'N'`으로 변경하여 차단을 해제할 수 있습니다.</li>
</ul>
</dd>
<dt id="UMAN_config_ftp">FTP 설정</dt>

View file

@ -8,6 +8,8 @@
* */
class CacheApc extends CacheBase
{
public static $isSupport = false;
/**
* Get instance of CacheApc
*
@ -30,7 +32,6 @@ class CacheApc extends CacheBase
*/
function CacheApc()
{
}
/**
@ -40,7 +41,7 @@ class CacheApc extends CacheBase
*/
function isSupport()
{
return function_exists('apc_add');
return self::$isSupport;
}
/**
@ -148,6 +149,10 @@ class CacheApc extends CacheBase
return apc_clear_cache('user');
}
}
CacheApc::$isSupport = function_exists('apc_add');
/* End of file CacheApc.class.php */
/* Location: ./classes/cache/CacheApc.class.php */

View file

@ -6,7 +6,7 @@
*
* Filedisk Cache Handler
*
* @author Arnia Software (xe_dev@arnia.ro)
* @author NAVER (developers@xpressengine.com)
*/
class CacheFile extends CacheBase
{
@ -90,8 +90,15 @@ class CacheFile extends CacheBase
function isValid($key, $modified_time = 0)
{
$cache_file = $this->getCacheFileName($key);
if(file_exists($cache_file))
{
if($modified_time > 0 && filemtime($cache_file) < $modified_timed)
{
FileHandler::removeFile($cache_file);
return false;
}
return true;
}
@ -107,15 +114,19 @@ class CacheFile extends CacheBase
*/
function get($key, $modified_time = 0)
{
$cache_file = FileHandler::exists($this->getCacheFileName($key));
if(!$cache_file = FileHandler::exists($this->getCacheFileName($key)))
{
return false;
}
if($cache_file) $content = include($cache_file);
if(!$content)
if($modified_time > 0 && filemtime($cache_file) < $modified_timed)
{
FileHandler::removeFile($cache_file);
return false;
}
$content = include($cache_file);
return unserialize(stripslashes($content));
}

View file

@ -56,10 +56,11 @@ class CacheMemcache extends CacheBase
*/
function isSupport()
{
if($GLOBALS['XE_MEMCACHE_SUPPORT'])
if(isset($GLOBALS['XE_MEMCACHE_SUPPORT']))
{
return true;
}
if($this->Memcache->set('xe', 'xe', MEMCACHE_COMPRESSED, 1))
{
$GLOBALS['XE_MEMCACHE_SUPPORT'] = true;
@ -68,6 +69,7 @@ class CacheMemcache extends CacheBase
{
$GLOBALS['XE_MEMCACHE_SUPPORT'] = false;
}
return $GLOBALS['XE_MEMCACHE_SUPPORT'];
}

View file

@ -10,6 +10,8 @@
*/
class CacheWincache extends CacheBase
{
public static $isSupport = false;
/**
* Get instance of CacheWincache
*
@ -32,7 +34,6 @@ class CacheWincache extends CacheBase
*/
function CacheWincache()
{
}
/**
@ -42,7 +43,7 @@ class CacheWincache extends CacheBase
*/
function isSupport()
{
return function_exists('wincache_ucache_set');
return self::$isSupport;
}
/**
@ -150,7 +151,8 @@ class CacheWincache extends CacheBase
{
return wincache_ucache_clear();
}
}
CacheWincache::$isSupport = function_exists('wincache_ucache_set');
/* End of file CacheWincache.class.php */
/* Location: ./classes/cache/CacheWincache.class.php */

View file

@ -396,8 +396,8 @@ class HTMLDisplayHandler
// add common JS/CSS files
if(__DEBUG__)
{
$oContext->loadFile(array('./common/js/jquery.js', 'head', '', -110000), true);
$oContext->loadFile(array('./common/js/jquery-1.x.js', 'head', 'lt IE 9', -109000), true);
$oContext->loadFile(array('./common/js/jquery-1.x.js', 'head', 'lt IE 9', -111000), true);
$oContext->loadFile(array('./common/js/jquery.js', 'head', 'gte IE 9', -110000), true);
$oContext->loadFile(array('./common/js/x.js', 'head', '', -100000), true);
$oContext->loadFile(array('./common/js/common.js', 'head', '', -100000), true);
$oContext->loadFile(array('./common/js/js_app.js', 'head', '', -100000), true);
@ -407,8 +407,8 @@ class HTMLDisplayHandler
}
else
{
$oContext->loadFile(array('./common/js/jquery.min.js', 'head', '', -110000), true);
$oContext->loadFile(array('./common/js/jquery-1.x.min.js', 'head', 'lt IE 9', -109000), true);
$oContext->loadFile(array('./common/js/jquery-1.x.min.js', 'head', 'lt IE 9', -111000), true);
$oContext->loadFile(array('./common/js/jquery.min.js', 'head', 'gte IE 9', -110000), true);
$oContext->loadFile(array('./common/js/x.min.js', 'head', '', -100000), true);
$oContext->loadFile(array('./common/js/xe.min.js', 'head', '', -100000), true);
$oContext->loadFile(array('./common/css/xe.min.css', '', '', -1000000), true);

View file

@ -230,9 +230,9 @@ class FileHandler
$path = self::getRealPath($path);
$output = array();
if(substr($path, -1) != DIRECTORY_SEPARATOR)
if(substr($path, -1) != '/')
{
$path .= DIRECTORY_SEPARATOR;
$path .= '/';
}
if(!is_dir($path))
@ -263,7 +263,7 @@ class FileHandler
$file = sprintf('%s%s', str_replace(_XE_PATH_, '', $path), $file);
}
$output[] = str_replace(array('/\\', '//'), DIRECTORY_SEPARATOR, $file);
$output[] = str_replace(array('/\\', '//'), '/', $file);
}
return $output;

View file

@ -155,13 +155,22 @@ class ModuleHandler extends Handler
{
// If it exists, compare mid based on the module information
// if mids are not matching, set it as the document's mid
if(!$this->mid || ($this->mid && $this->mid != $module_info->mid) || ($this->module_srl && $this->module_srl != $module_info->module_srl))
if(!$this->mid || ($this->mid != $module_info->mid))
{
$this->mid = $module_info->mid;
header('location:' . getNotEncodedSiteUrl($site_info->domain, 'mid', $this->mid, 'document_srl', $this->document_srl, 'module_srl',''));
return FALSE;
if(Context::getRequestMethod() == 'GET')
{
$this->mid = $module_info->mid;
header('location:' . getNotEncodedSiteUrl($site_info->domain, 'mid', $this->mid, 'document_srl', $this->document_srl));
return FALSE;
}
else
{
$this->mid = $module_info->mid;
Context::set('mid', $this->mid);
}
}
// if requested module is different from one of the document, remove the module information retrieved based on the document number
if($this->module && $module_info->module != $this->module)
{

View file

@ -116,7 +116,7 @@ class TemplateHandler
*/
public function compile($tpl_path, $tpl_filename, $tpl_file = '')
{
$buff = '';
$buff = false;
// store the starting time for debug information
if(__DEBUG__ == 3)
@ -159,7 +159,7 @@ class TemplateHandler
}
}
if(!$buff)
if($buff === FALSE)
{
$buff = $this->parse();
if($oCacheHandler->isSupport())

2
common/js/x.min.js vendored

File diff suppressed because one or more lines are too long

2
common/js/xe.min.js vendored

File diff suppressed because one or more lines are too long

View file

@ -25,7 +25,7 @@
</block>
<!-- JS -->
<block loop="$js_files=>$key,$js_file">
<block cond="$js_file['targetie']"><!--[if {$js_file['targetie']}]></block>
<block cond="$js_file['targetie']"><!--[if {$js_file['targetie']}]><block cond="stripos($js_file['targetie'], 'gt') === 0"><!--></block></block>
<script src="{$js_file['file']}"></script>
<block cond="$js_file['targetie']"><![endif]--></block>
</block>

View file

@ -29,7 +29,7 @@ define('__ZBXE__', __XE__);
/**
* Display XE's full version.
*/
define('__XE_VERSION__', '1.7.4-beta.6');
define('__XE_VERSION__', '1.7.4');
/**
* @deprecated __ZBXE_VERSION__ will be removed. Use __XE_VERSION__ instead.
@ -45,11 +45,6 @@ define('_XE_PATH_', str_replace('config/config.inc.php', '', str_replace('\\', '
// Set can use other method instead cookie to store session id(for file upload)
ini_set('session.use_only_cookies', 0);
// Set Real IP Address of Client.
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
if(file_exists(_XE_PATH_ . 'config/package.inc.php'))
{

View file

@ -98,8 +98,9 @@ class addonAdminModel extends addon
// Add the path (files/addons precedence)
$path = $this->getAddonPath($addon_name);
// Wanted information on the add-on
unset($info);
$info = $this->getAddonInfoXml($addon_name, $site_srl, $gtype);
if(!$info) $info = new stdClass();
$info->addon = $addon_name;
$info->path = $path;

View file

@ -498,7 +498,7 @@ class adminAdminController extends admin
{
$whitelist = '';
}
$whitelist .= ',127.0.0.1';
$whitelist .= ',127.0.0.1,' . $_SERVER['REMOTE_ADDR'];
$whitelist = explode(',',trim($whitelist, ','));
$whitelist = array_unique($whitelist);

View file

@ -138,19 +138,15 @@ class adminAdminView extends admin
$lang->menu_gnb_sub = $oAdminAdminModel->getAdminMenuLang();
$result = $oAdminAdminModel->checkAdminMenu();
if(!$result->php_file)
{
header('Location: ' . getNotEncodedUrl('', 'module', 'admin'));
Context::close();
exit;
}
include $result->php_file;
$oModuleModel = getModel('module');
$moduleActionInfo = $oModuleModel->getModuleActionXml($module);
// get current menu's subMenuTitle
$moduleActionInfo = $oModuleModel->getModuleActionXml($module);
$currentAct = Context::get('act');
$subMenuTitle = '';
foreach((array) $moduleActionInfo->menu as $key => $value)
{
if(isset($value->acts) && is_array($value->acts) && in_array($currentAct, $value->acts))
@ -159,50 +155,30 @@ class adminAdminView extends admin
break;
}
}
// get current menu's srl(=parentSrl)
$parentSrl = 0;
$oMenuAdminConroller = getAdminController('menu');
if(!$_SESSION['isMakeXml'])
foreach((array) $menu->list as $parentKey => $parentMenu)
{
foreach((array) $menu->list as $parentKey => $parentMenu)
if(!is_array($parentMenu['list']) || !count($parentMenu['list']))
{
if(!$parentMenu['text'])
{
$oMenuAdminConroller->makeXmlFile($result->menu_srl);
$_SESSION['isMakeXml'] = true;
header('Location: ' . getNotEncodedUrl('', 'module', 'admin'));
Context::close();
exit;
}
continue;
}
if($parentMenu['href'] == '#' && count($parentMenu['list']))
{
$firstChild = current($parentMenu['list']);
$menu->list[$parentKey]['href'] = $firstChild['href'];
}
if(!is_array($parentMenu['list']) || !count($parentMenu['list']))
foreach($parentMenu['list'] as $childKey => $childMenu)
{
if($subMenuTitle == $childMenu['text'])
{
continue;
}
if($parentMenu['href'] == '#' && count($parentMenu['list']))
{
$firstChild = current($parentMenu['list']);
$menu->list[$parentKey]['href'] = $firstChild['href'];
}
foreach($parentMenu['list'] as $childKey => $childMenu)
{
if(!$childMenu['text'])
{
$oMenuAdminConroller->makeXmlFile($result->menu_srl);
$_SESSION['isMakeXml'] = true;
header('Location: ' . getNotEncodedUrl('', 'module', 'admin'));
Context::close();
exit;
}
if($subMenuTitle == $childMenu['text'])
{
$parentSrl = $childMenu['parent_srl'];
break;
}
$parentSrl = $childMenu['parent_srl'];
break;
}
}
if($parentSrl) break;
}
// Admin logo, title setup
@ -413,8 +389,11 @@ class adminAdminView extends admin
Context::set('langs', Context::loadLangSupported());
// site lock
Context::set('IP', $_SERVER['REMOTE_ADDR']);
if(!$db_info->sitelock_title) $db_info->sitelock_title = 'Maintenance in progress...';
if(!in_array('127.0.0.1', $db_info->sitelock_whitelist)) $db_info->sitelock_whitelist[] = '127.0.0.1';
if(!in_array($_SERVER['REMOTE_ADDR'], $db_info->sitelock_whitelist)) $db_info->sitelock_whitelist[] = $_SERVER['REMOTE_ADDR'];
$db_info->sitelock_whitelist = array_unique($db_info->sitelock_whitelist);
Context::set('remote_addr', $_SERVER['REMOTE_ADDR']);
Context::set('use_sitelock', $db_info->use_sitelock);
Context::set('sitelock_title', $db_info->sitelock_title);
@ -423,6 +402,11 @@ class adminAdminView extends admin
$whitelist = implode("\r\n", $db_info->sitelock_whitelist);
Context::set('sitelock_whitelist', $whitelist);
if(gettype($db_info->admin_ip_list)!="array")
$db_info->admin_ip_list = array();
if(!in_array('127.0.0.1', $db_info->admin_ip_list)) $db_info->admin_ip_list[] = '127.0.0.1';
if(!in_array($_SERVER['REMOTE_ADDR'], $db_info->admin_ip_list)) $db_info->admin_ip_list[] = $_SERVER['REMOTE_ADDR'];
if($db_info->admin_ip_list) $admin_ip_list = implode("\r\n", $db_info->admin_ip_list);
else $admin_ip_list = '';
Context::set('admin_ip_list', $admin_ip_list);
@ -439,7 +423,6 @@ class adminAdminView extends admin
$config = $oDocumentModel->getDocumentConfig();
Context::set('thumbnail_type', $config->thumbnail_type);
Context::set('IP', $_SERVER['REMOTE_ADDR']);
$oModuleModel = getModel('module');
$config = $oModuleModel->getModuleConfig('module');

View file

@ -91,8 +91,8 @@ class admin extends ModuleObject
if(!$output->menu_srl)
{
$oAdminClass = getClass('admin');
$oAdminClass->createXeAdminMenu();
$this->createXeAdminMenu();
$output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
}
else
{
@ -123,10 +123,9 @@ class admin extends ModuleObject
//insert menu
$args = new stdClass();
$args->title = $this->adminMenuName;
$args->menu_srl = getNextSequence();
$menuSrl = $args->menu_srl = getNextSequence();
$args->listorder = $args->menu_srl * -1;
$output = executeQuery('menu.insertMenu', $args);
$menuSrl = $args->menu_srl;
Context::set('admin_menu_srl', $menuSrl);
unset($args);
@ -182,74 +181,70 @@ class admin extends ModuleObject
'subMenu' => array('comment'),
),
4 => array(
'module' => 'trackback',
'subMenu' => array('trackback'),
),
5 => array(
'module' => 'file',
'subMenu' => array('file'),
),
6 => array(
5 => array(
'module' => 'poll',
'subMenu' => array('poll'),
),
7 => array(
6 => array(
'module' => 'rss',
'subMenu' => array('rss'),
),
8 => array(
7 => array(
'module' => 'module',
'subMenu' => array('multilingual'),
),
9 => array(
8 => array(
'module' => 'importer',
'subMenu' => array('importer'),
),
10 => array(
9 => array(
'module' => 'trash',
'subMenu' => array('trash'),
),
11 => array(
10 => array(
'module' => 'autoinstall',
'subMenu' => array('easyInstall'),
),
12 => array(
11 => array(
'module' => 'layout',
'subMenu' => array('installedLayout'),
),
13 => array(
12 => array(
'module' => 'module',
'subMenu' => array('installedModule'),
),
14 => array(
13 => array(
'module' => 'widget',
'subMenu' => array('installedWidget'),
),
15 => array(
14 => array(
'module' => 'addon',
'subMenu' => array('installedAddon'),
),
16 => array(
15 => array(
'module' => 'editor',
'subMenu' => array('editor'),
),
17 => array(
16 => array(
'module' => 'spamfilter',
'subMenu' => array('spamFilter'),
),
18 => array(
17 => array(
'module' => 'admin',
'subMenu' => array('adminConfigurationGeneral', 'adminConfigurationFtp', 'adminMenuSetup'),
),
19 => array(
18 => array(
'module' => 'file',
'subMenu' => array('fileUpload'),
),
20 => array(
19 => array(
'module' => 'module',
'subMenu' => array('filebox'),
),
21 => array(
20 => array(
'module' => 'point',
'subMenu' => array('point')
),
@ -319,7 +314,6 @@ class admin extends ModuleObject
break;
case 'document':
case 'comment':
case 'trackback':
case 'file':
case 'poll':
case 'rss':
@ -368,7 +362,6 @@ class admin extends ModuleObject
break;
case 'document':
case 'comment':
case 'trackback':
case 'file':
case 'poll':
case 'rss':

View file

@ -1590,8 +1590,8 @@
<value xml:lang="jp"><![CDATA[HTMLタグを使用できます。]]></value>
</item>
<item name="sitelock_warning_whitelist">
<value xml:lang="ko"><![CDATA[이곳에 관리자의 IP를 반드시 포함해야 합니다.<br />만약 접근이 차단된 경우 './files/config/db.config.php' 파일에서 `$db_info->use_sitelock`를 'N'으로 변경하여 차단을 해제할 수 있습니다.]]></value>
<value xml:lang="jp"><![CDATA[ここに管理者のIPを必ず記入てください。<br />もし接近が遮断された場合、'./files/config/db.config.php' ファイルから `$db_info->use_sitelock`を 'N'へ変更すれば遮断が解除できます。]]></value>
<value xml:lang="ko"><![CDATA[이곳에 관리자의 IP를 반드시 포함해야 합니다.<br />만약 접근이 차단된 경우 './files/config/db.config.php' 파일에서 `'use_sitelock' => '<strong>Y</strong>'`를 `'use_sitelock' => '<strong>N</strong>'`으로 변경하여 차단을 해제할 수 있습니다.]]></value>
<value xml:lang="jp"><![CDATA[ここに管理者のIPを必ず記入てください。<br />もし接近が遮断された場合、'./files/config/db.config.php' ファイルから `'use_sitelock' => '<strong>Y</strong>'`を `'use_sitelock' => '<strong>N</strong>'`へ変更すれば遮断が解除できます。]]></value>
</item>
<item name="your_ip">
<value xml:lang="ko"><![CDATA[접속하신 IP]]></value>

View file

@ -1,6 +1,5 @@
@charset "utf-8";
@font-face{font-family:NG;src:url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.eot);src:local(),url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.woff) format('woff')}
body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:,NanumGothic,NG,,Dotum,Arial,Helvetica,sans-serif}
body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:Arial,Helvetica,sans-serif}
@media all and (max-width:980px){
body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:sans-serif}
}

View file

@ -1,6 +1,5 @@
@charset "utf-8";
@font-face{font-family:NG;src:url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.eot);src:local(),url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.woff) format('woff')}
body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:,NanumGothic,NG,,Dotum,Arial,Helvetica,sans-serif}
body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:,NanumGothic,,Dotum,Arial,Helvetica,sans-serif}
@media all and (max-width:980px){
body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:sans-serif}
}

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
function setStartModule(){var a=jQuery(".moduleIdList option:selected").text(),b=jQuery(".moduleIdList").val();jQuery("#_target_module").val(a),jQuery("#index_module_srl").val(b),jQuery(".moduleList,.moduleIdList, .site_keyword_search, #sitefind_addBtn").css("display","none")}function viewSiteSearch(){jQuery(".site_keyword_search").css("display","")}function getFTPList(a){var b=jQuery("#ftp_form").get(0);b.ftp_root_path.value="undefined"!=typeof a?a:!b.ftp_root_path.value&&"undefined"!=typeof b.sftp&&b.sftp.checked?xe_root:"/";var c=[];c.ftp_user=jQuery("#ftp_user").val(),c.ftp_password=jQuery("#ftp_password").val(),c.ftp_host=jQuery("#ftp_host").val(),c.ftp_port=jQuery("#ftp_port").val(),c.ftp_root_path=jQuery("#ftp_root_path").val(),c.sftp=jQuery("input[name=sftp]:checked").val(),exec_xml("admin","getAdminFTPList",c,completeGetFtpInfo,["list","error","message"],c,b)}function removeFTPInfo(){var a={};exec_xml("install","procInstallAdminRemoveFTPInfo",a,filterAlertMessage,["error","message"],a)}function completeGetFtpInfo(a){if(0!==a.error)return alert(a.error),alert(a.message),void 0;var b=jQuery("#ftpSuggestion").empty(),c="";jQuery.isArray(a.list.item)||(a.list.item=[a.list.item]),pwd=jQuery("#ftp_form").get(0).ftp_root_path.value,"/"!=pwd&&(arr=pwd.split("/"),arr.pop(),arr.pop(),arr.push(""),target=arr.join("/"),c=c+"<li><button type='button' onclick=\"getFTPList('"+target+"')\">../</button></li>");for(var d=0;d<a.list.item.length;d++){var e=a.list.item[d];"../"!=e&&"./"!=e&&(c=c+"<li><button type='button' onclick=\"getFTPList('"+pwd+e+"')\">"+e+"</button></li>")}c="<ul>"+c+"</ul>",b.append(jQuery(c))}function deleteIcon(a){var b=[];b.iconname=a,exec_xml("admin","procAdminRemoveIcons",b,iconDeleteMessage,["error","message"],b),icon=a}function iconDeleteMessage(a){alert(a.message),"0"==a.error&&("favicon.ico"==icon?jQuery(".faviconPreview img").attr("src","modules/admin/tpl/img/faviconSample.png"):"mobicon.png"==icon&&jQuery(".mobiconPreview img").attr("src","modules/admin/tpl/img/mobiconSample.png"))}function doRecompileCacheFile(){if(confirm(xe.lang.confirm_run)){var a=[];exec_xml("admin","procAdminRecompileCacheFile",a,completeCacheMessage)}}function completeCacheMessage(a){alert(a.message)}function doResetAdminMenu(){if(confirm(xe.lang.confirm_reset_admin_menu)){var a=[];a.menu_srl=admin_menu_srl,exec_xml("admin","procAdminMenuReset",a,completeResetAdminMenu)}}function completeResetAdminMenu(){document.location.reload()}jQuery(function(a){a(".tgContent ul").bind("click",function(){a("#sitefind_addBtn").css("display","")})});var icon=null;
function setStartModule(){var a=jQuery(".moduleIdList option:selected").text(),b=jQuery(".moduleIdList").val();jQuery("#_target_module").val(a),jQuery("#index_module_srl").val(b),jQuery(".moduleList,.moduleIdList, .site_keyword_search, #sitefind_addBtn").css("display","none")}function viewSiteSearch(){jQuery(".site_keyword_search").css("display","")}function getFTPList(a){var b=jQuery("#ftp_form").get(0);b.ftp_root_path.value="undefined"!=typeof a?a:!b.ftp_root_path.value&&"undefined"!=typeof b.sftp&&b.sftp.checked?xe_root:"/";var c=[];c.ftp_user=jQuery("#ftp_user").val(),c.ftp_password=jQuery("#ftp_password").val(),c.ftp_host=jQuery("#ftp_host").val(),c.ftp_port=jQuery("#ftp_port").val(),c.ftp_root_path=jQuery("#ftp_root_path").val(),c.sftp=jQuery("input[name=sftp]:checked").val(),exec_xml("admin","getAdminFTPList",c,completeGetFtpInfo,["list","error","message"],c,b)}function removeFTPInfo(){var a={};exec_xml("install","procInstallAdminRemoveFTPInfo",a,filterAlertMessage,["error","message"],a)}function completeGetFtpInfo(a){if(0!==a.error)return alert(a.error),void alert(a.message);var b=jQuery("#ftpSuggestion").empty(),c="";jQuery.isArray(a.list.item)||(a.list.item=[a.list.item]),pwd=jQuery("#ftp_form").get(0).ftp_root_path.value,"/"!=pwd&&(arr=pwd.split("/"),arr.pop(),arr.pop(),arr.push(""),target=arr.join("/"),c=c+"<li><button type='button' onclick=\"getFTPList('"+target+"')\">../</button></li>");for(var d=0;d<a.list.item.length;d++){var e=a.list.item[d];"../"!=e&&"./"!=e&&(c=c+"<li><button type='button' onclick=\"getFTPList('"+pwd+e+"')\">"+e+"</button></li>")}c="<ul>"+c+"</ul>",b.append(jQuery(c))}function deleteIcon(a){var b=[];b.iconname=a,exec_xml("admin","procAdminRemoveIcons",b,iconDeleteMessage,["error","message"],b),icon=a}function iconDeleteMessage(a){alert(a.message),"0"==a.error&&("favicon.ico"==icon?jQuery(".faviconPreview img").attr("src","modules/admin/tpl/img/faviconSample.png"):"mobicon.png"==icon&&jQuery(".mobiconPreview img").attr("src","modules/admin/tpl/img/mobiconSample.png"))}function doRecompileCacheFile(){if(confirm(xe.lang.confirm_run)){var a=[];exec_xml("admin","procAdminRecompileCacheFile",a,completeCacheMessage)}}function completeCacheMessage(a){alert(a.message)}function doResetAdminMenu(){if(confirm(xe.lang.confirm_reset_admin_menu)){var a=[];a.menu_srl=admin_menu_srl,exec_xml("admin","procAdminMenuReset",a,completeResetAdminMenu)}}function completeResetAdminMenu(){document.location.reload()}jQuery(function(a){a(".tgContent ul").bind("click",function(){a("#sitefind_addBtn").css("display","")})});var icon=null;

View file

@ -1 +1 @@
jQuery(function(a){function b(b){var c;if(moduleList=b.menuList){var d=a("#menuNameList");for(var e in moduleList){var f=moduleList[e];c=a('<optgroup label="'+e+'" />').appendTo(d);for(var g in f)c.append('<option value="'+e+":"+g+'">'+f[g].title+"</option>")}}}var c,d,e=a("#editForm"),f=a("#listForm");a("a._add").click(function(){if(d=a(this).parent().prevAll("._item_key").val(),e.find("input[name=parent_srl]").val(d),!c){var f=[],g=["menuList"];exec_xml("menu","procMenuAdminAllActList",f,b,g)}}),a("a._parent_delete").click(function(){var b=a(this).parent().prevAll("._parent_key").val();f.find("input[name=menu_item_srl]").val(b),f.submit()}),a("a._child_delete").click(function(){var b=a(this).parents("li").find("._item_key").val();f.find("input[name=menu_item_srl]").val(b),f.submit()})}),jQuery(function(a){function b(a,b){for(var c=0,d=0;a&&a!=b;)c+=a.offsetTop,d+=a.offsetLeft,a=a.offsetParent;return{top:c,left:d}}a("form.adminMap").delegate("li:not(.placeholder)","dropped.st",function(){var b,c,d=a(this);b=d.find(">input._parent_key"),c=!!d.parent("ul").parent("li").length,c?b.val(d.parent("ul").parent("li").find(">input._item_key").val()):b.val("0")});var c=!1,d=a('<li class="placeholder">');a("form.adminMap>ul").delegate("li:not(.placeholder,.parent)",{"mousedown.st":function(e){var f,g,h,i,j,k,l,m,n,o;if(!a(e.target).is("a,input,label,textarea")&&1==e.which){for(c=!0,f=a(this),j=f.height(),i=f.width(),g=f.parentsUntil(".adminMap").filter("ul"),h=g.eq(-1),l={x:e.pageX,y:e.pageY},k=b(this,h.get(0)),$clone=f.clone(!0).attr("target",!0),n=g.length-1;n;n--)$clone=$clone.wrap("<li><ul /></li>").parent().parent();return m=[],h.find("li").each(function(){if(f[0]===this||f.has(this).length)return!0;var c=b(this,h.get(0));m.push({top:c.top,bottom:c.top+32,$item:a(this)})}),$clone.find(".side,input").remove().end().addClass("draggable").css({position:"absolute",opacity:.6,width:i,height:j,left:k.left,top:k.top,zIndex:100}).appendTo(h.eq(0)),d.css({position:"absolute",opacity:.6,width:i,height:"10px",left:k.left,top:k.top,zIndex:99}).appendTo(h.eq(0)),f.css("opacity",.6),a(document).unbind("mousemove.st mouseup.st").bind("mousemove.st",function(a){var b,c,e,f,g;for(o=null,b={x:l.x-a.pageX,y:l.y-a.pageY},c=k.top-b.y,e=0,f=m.length;f>e;e++)g=m[e],g.top>c||g.bottom<c||(o={element:g.$item},g.$item.hasClass("parent")?(o.state="prepend",d.css("top",g.bottom-5)):g.top>c-12?(o.state="before",d.css("top",g.top-5)):(o.state="after",d.css("top",g.bottom-5)));$clone.css({top:c})}).bind("mouseup.st",function(){var b,e;c=!1,a(document).unbind("mousemove.st mouseup.st"),f.css("opacity",""),$clone.remove(),d.remove(),e=a("<li />").height(f.height()),o&&(b=a(o.element),f.before(e),"prepend"==o.state?(b.find(">ul").length||b.find(">.side").after("<ul>"),b.find(">ul").prepend(f.hide())):b[o.state](f.hide()),f.slideDown(100,function(){f.removeClass("active")}),e.slideUp(100,function(){var a=e.parent();e.remove(),a.children("li").length||a.remove()}),f.trigger("dropped.st"))}),!1}},"mouseover.st":function(){return c||a(this).addClass("active"),!1},"mouseout.st":function(){return c||a(this).removeClass("active"),!1}}).find("li li").prepend('<button type="button" class="moveTo">Move to</button>').end().end(),a('<div id="dropzone-marker" />').css({display:"none",position:"absolute",backgroundColor:"#000",opacity:.7}).appendTo("body")});
jQuery(function(a){function b(b){var c;if(moduleList=b.menuList){var d=a("#menuNameList");for(var e in moduleList){var f=moduleList[e];c=a('<optgroup label="'+e+'" />').appendTo(d);for(var g in f)c.append('<option value="'+e+":"+g+'">'+f[g].title+"</option>")}}}var c,d,e=a("#editForm"),f=a("#listForm");a("a._add").click(function(){if(d=a(this).parent().prevAll("._item_key").val(),e.find("input[name=parent_srl]").val(d),!c){var f=[],g=["menuList"];exec_xml("menu","procMenuAdminAllActList",f,b,g)}}),a("a._parent_delete").click(function(){var b=a(this).parent().prevAll("._parent_key").val();f.find("input[name=menu_item_srl]").val(b),f.submit()}),a("a._child_delete").click(function(){var b=a(this).parents("li").find("._item_key").val();f.find("input[name=menu_item_srl]").val(b),f.submit()})}),jQuery(function(a){function b(a,b){for(var c=0,d=0;a&&a!=b;)c+=a.offsetTop,d+=a.offsetLeft,a=a.offsetParent;return{top:c,left:d}}a("form.adminMap").delegate("li:not(.placeholder)","dropped.st",function(){var b,c,d=a(this);b=d.find(">input._parent_key"),c=!!d.parent("ul").parent("li").length,b.val(c?d.parent("ul").parent("li").find(">input._item_key").val():"0")});var c=!1,d=a('<li class="placeholder">');a("form.adminMap>ul").delegate("li:not(.placeholder,.parent)",{"mousedown.st":function(e){var f,g,h,i,j,k,l,m,n,o;if(!a(e.target).is("a,input,label,textarea")&&1==e.which){for(c=!0,f=a(this),j=f.height(),i=f.width(),g=f.parentsUntil(".adminMap").filter("ul"),h=g.eq(-1),l={x:e.pageX,y:e.pageY},k=b(this,h.get(0)),$clone=f.clone(!0).attr("target",!0),n=g.length-1;n;n--)$clone=$clone.wrap("<li><ul /></li>").parent().parent();return m=[],h.find("li").each(function(){if(f[0]===this||f.has(this).length)return!0;var c=b(this,h.get(0));m.push({top:c.top,bottom:c.top+32,$item:a(this)})}),$clone.find(".side,input").remove().end().addClass("draggable").css({position:"absolute",opacity:.6,width:i,height:j,left:k.left,top:k.top,zIndex:100}).appendTo(h.eq(0)),d.css({position:"absolute",opacity:.6,width:i,height:"10px",left:k.left,top:k.top,zIndex:99}).appendTo(h.eq(0)),f.css("opacity",.6),a(document).unbind("mousemove.st mouseup.st").bind("mousemove.st",function(a){var b,c,e,f,g;for(o=null,b={x:l.x-a.pageX,y:l.y-a.pageY},c=k.top-b.y,e=0,f=m.length;f>e;e++)g=m[e],g.top>c||g.bottom<c||(o={element:g.$item},g.$item.hasClass("parent")?(o.state="prepend",d.css("top",g.bottom-5)):g.top>c-12?(o.state="before",d.css("top",g.top-5)):(o.state="after",d.css("top",g.bottom-5)));$clone.css({top:c})}).bind("mouseup.st",function(){var b,e;c=!1,a(document).unbind("mousemove.st mouseup.st"),f.css("opacity",""),$clone.remove(),d.remove(),e=a("<li />").height(f.height()),o&&(b=a(o.element),f.before(e),"prepend"==o.state?(b.find(">ul").length||b.find(">.side").after("<ul>"),b.find(">ul").prepend(f.hide())):b[o.state](f.hide()),f.slideDown(100,function(){f.removeClass("active")}),e.slideUp(100,function(){var a=e.parent();e.remove(),a.children("li").length||a.remove()}),f.trigger("dropped.st"))}),!1}},"mouseover.st":function(){return c||a(this).addClass("active"),!1},"mouseout.st":function(){return c||a(this).removeClass("active"),!1}}).find("li li").prepend('<button type="button" class="moveTo">Move to</button>').end().end(),a('<div id="dropzone-marker" />').css({display:"none",position:"absolute",backgroundColor:"#000",opacity:.7}).appendTo("body")});

View file

@ -25,7 +25,7 @@ class boardModel extends module
// get the list config value, if it is not exitsted then setup the default value
$list_config = $oModuleModel->getModulePartConfig('board', $module_srl);
if(!$list_config || !count($list_config))
if(!$list_config || count($list_config) <= 0)
{
$list_config = array( 'no', 'title', 'nick_name','regdate','readed_count');
}

View file

@ -184,6 +184,7 @@ class boardView extends board
// list config, columnList setting
$oBoardModel = getModel('board');
$this->listConfig = $oBoardModel->getListConfig($this->module_info->module_srl);
if(!$this->listConfig) $this->listConfig = array();
$this->_makeListColumnList();
// display the notice list

View file

@ -55,16 +55,15 @@ class commentAdminView extends comment
$columnList = array('comment_srl', 'document_srl', 'is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress', 'voted_count', 'blamed_count');
$output = $oCommentModel->getTotalCommentList($args, $columnList);
$oCommentModel = getModel("comment");
$modules = $oCommentModel->getDistinctModules();
$modules_list = $modules;
// $modules = $oCommentModel->getDistinctModules();
// $modules_list = $modules;
// set values in the return object of comment_model:: getTotalCommentList() in order to use a template.
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('comment_list', $output->data);
Context::set('modules_list', $modules_list);
// Context::set('modules_list', $modules_list);
Context::set('page_navigation', $output->page_navigation);
Context::set('secret_name_list', $secretNameList);
// set the template

View file

@ -469,16 +469,6 @@ class commentController extends comment
$output->add('comment_srl', $obj->comment_srl);
//remove from cache
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$oCacheHandler->invalidateGroupKey('commentList_' . $document_srl);
$oCacheHandler->invalidateGroupKey('newestCommentsList');
$oCacheHandler->delete('object:' . $document_srl);
}
return $output;
}
@ -736,14 +726,6 @@ class commentController extends comment
$output->add('comment_srl', $obj->comment_srl);
//remove from cache
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$oCacheHandler->invalidateGroupKey('commentList_' . $obj->document_srl);
$oCacheHandler->invalidateGroupKey('newestCommentsList');
}
return $output;
}
@ -872,16 +854,6 @@ class commentController extends comment
$output->add('document_srl', $document_srl);
//remove from cache
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$oCacheHandler->invalidateGroupKey('commentList_' . $document_srl);
$oCacheHandler->invalidateGroupKey('newestCommentsList');
$oCacheHandler->delete('object:' . $document_srl);
}
return $output;
}
@ -970,14 +942,6 @@ class commentController extends comment
$this->_deleteVotedComments($args);
}
//remove from cache
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$oCacheHandler->invalidateGroupKey('commentList_' . $document_srl);
$oCacheHandler->invalidateGroupKey('newestCommentsList');
}
return $output;
}

View file

@ -326,6 +326,9 @@ class commentModel extends comment
*/
function getDistinctModules()
{
return array();
/*
$output = executeQueryArray('comment.getDistinctModules');
$module_srls = $output->data;
$oModuleModel = getModel('module');
@ -339,6 +342,7 @@ class commentModel extends comment
}
}
return $result;
*/
}
/**
@ -441,96 +445,78 @@ class commentModel extends comment
return;
}
// cache controll
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
// get the number of comments on the document module
$oDocumentModel = getModel('document');
$columnList = array('document_srl', 'module_srl', 'comment_count');
$oDocument = $oDocumentModel->getDocument($document_srl, FALSE, TRUE, $columnList);
// return if no doc exists.
if(!$oDocument->isExists())
{
$object_key = 'object:' . $document_srl . '_' . $page . '_' . ($is_admin ? 'Y' : 'N') . '_' . $count;
$cache_key = $oCacheHandler->getGroupKey('commentList_' . $document_srl, $object_key);
$output = $oCacheHandler->get($cache_key);
return;
}
if(!$output)
// return if no comment exists
if($oDocument->getCommentCount() < 1)
{
// get the number of comments on the document module
$oDocumentModel = getModel('document');
$columnList = array('document_srl', 'module_srl', 'comment_count');
$oDocument = $oDocumentModel->getDocument($document_srl, FALSE, TRUE, $columnList);
return;
}
// return if no doc exists.
if(!$oDocument->isExists())
// get a list of comments
$module_srl = $oDocument->get('module_srl');
if(!$count)
{
$comment_config = $this->getCommentConfig($module_srl);
$comment_count = $comment_config->comment_count;
if(!$comment_count)
{
return;
$comment_count = 50;
}
}
else
{
$comment_count = $count;
}
// return if no comment exists
if($oDocument->getCommentCount() < 1)
{
return;
}
// get a very last page if no page exists
if(!$page)
{
$page = (int) ( ($oDocument->getCommentCount() - 1) / $comment_count) + 1;
}
// get a list of comments
$module_srl = $oDocument->get('module_srl');
// get a list of comments
$args = new stdClass();
$args->document_srl = $document_srl;
$args->list_count = $comment_count;
$args->page = $page;
$args->page_count = 10;
if(!$count)
{
$comment_config = $this->getCommentConfig($module_srl);
$comment_count = $comment_config->comment_count;
if(!$comment_count)
{
$comment_count = 50;
}
}
else
{
$comment_count = $count;
}
//check if module is using validation system
$oCommentController = getController('comment');
$using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl);
if($using_validation)
{
$args->status = 1;
}
// get a very last page if no page exists
if(!$page)
{
$page = (int) ( ($oDocument->getCommentCount() - 1) / $comment_count) + 1;
}
$output = executeQueryArray('comment.getCommentPageList', $args);
// get a list of comments
$args = new stdClass();
$args->document_srl = $document_srl;
$args->list_count = $comment_count;
$args->page = $page;
$args->page_count = 10;
//check if module is using validation system
$oCommentController = getController('comment');
$using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl);
if($using_validation)
{
$args->status = 1;
}
// return if an error occurs in the query results
if(!$output->toBool())
{
return;
}
// insert data into CommentPageList table if the number of results is different from stored comments
if(!$output->data)
{
$this->fixCommentList($oDocument->get('module_srl'), $document_srl);
$output = executeQueryArray('comment.getCommentPageList', $args);
// return if an error occurs in the query results
if(!$output->toBool())
{
return;
}
// insert data into CommentPageList table if the number of results is different from stored comments
if(!$output->data)
{
$this->fixCommentList($oDocument->get('module_srl'), $document_srl);
$output = executeQueryArray('comment.getCommentPageList', $args);
if(!$output->toBool())
{
return;
}
}
//insert in cache
if($oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, $output);
}
}
return $output;

View file

@ -8,7 +8,6 @@
*/
class counterModel extends counter
{
/**
* Initialization
*
@ -16,7 +15,6 @@ class counterModel extends counter
*/
function init()
{
}
/**
@ -32,26 +30,27 @@ class counterModel extends counter
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
$args->site_srl = $site_srl;
$iplogged = false;
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$object_key = 'counter:' . $site_srl . '_' . str_replace(array('.', ':'), '-', $args->ipaddress);
$cache_key = $oCacheHandler->getGroupKey('counterIpLogged_' . $args->regdate, $object_key);
if($oCacheHandler->isValid($cache_key))
{
return $oCacheHandler->get($cache_key);
}
$iplogged = $oCacheHandler->get($cache_key);
}
$output = executeQuery('counter.getCounterLog', $args);
$result = $output->data->count ? TRUE : FALSE;
if($result && $oCacheHandler->isSupport())
if($iplogged === false)
{
$oCacheHandler->put($cache_key, TRUE);
$output = executeQuery('counter.getCounterLog', $args);
if($output->data->count) $iplogged = TRUE;
}
return $result;
if($iplogged && $oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, $iplogged);
}
return $iplogged;
}
/**
@ -65,35 +64,37 @@ class counterModel extends counter
$args = new stdClass;
$args->regdate = date('Ymd');
$insertedTodayStatus = false;
$oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE);
if($oCacheHandler->isSupport())
{
$cache_key = 'counter:insertedTodayStatus:' . $site_srl . '_' . $args->regdate;
if($oCacheHandler->isValid($cache_key))
$insertedTodayStatus = $oCacheHandler->get($cache_key);
}
if($insertedTodayStatus === false)
{
if($site_srl)
{
return $oCacheHandler->get($cache_key);
$args->site_srl = $site_srl;
$output = executeQuery('counter.getSiteTodayStatus', $args);
}
else
{
$output = executeQuery('counter.getTodayStatus', $args);
}
$insertedTodayStatus = !!$output->data->count;
if($insertedTodayStatus && $oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, TRUE);
$_old_date = date('Ymd', strtotime('-1 day'));
$oCacheHandler->delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date);
}
}
if($site_srl)
{
$args->site_srl = $site_srl;
$output = executeQuery('counter.getSiteTodayStatus', $args);
}
else
{
$output = executeQuery('counter.getTodayStatus', $args);
}
$result = $output->data->count ? TRUE : FALSE;
if($result && $oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, TRUE);
$_old_date = date('Ymd', strtotime('-1 day'));
$oCacheHandler->delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date);
}
return $result;
return $insertedTodayStatus;
}
/**

View file

@ -140,7 +140,6 @@ class documentAdminController extends document
$oDB->rollback();
return $output;
}
// Set 0 if a new category doesn't exist after catergory change
if($source_category_srl != $category_srl)
{
@ -166,13 +165,18 @@ class documentAdminController extends document
$oDB->rollback();
return $output;
}
// move the trackback
$output = executeQuery('trackback.updateTrackbackModule', $args);
if(!$output->toBool())
if(getClass('trackback'))
{
$oDB->rollback();
return $output;
$output = executeQuery('trackback.updateTrackbackModule', $args);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
}
// Tags
$output = executeQuery('tag.updateTagModule', $args);
if(!$output->toBool())
@ -195,7 +199,7 @@ class documentAdminController extends document
{
foreach($document_srl_list as $document_srl)
{
$cache_key_item = 'document_item:'.$document_srl;
$cache_key_item = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
$oCacheHandler->delete($cache_key_item);
}
}
@ -451,9 +455,8 @@ class documentAdminController extends document
{
foreach($document_srl_list as $document_srl)
{
$cache_key_item = 'document_item:'.$document_srl;
$cache_key_item = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
$oCacheHandler->delete($cache_key_item);
$oCacheHandler->invalidateGroupKey('commentList_' . $document_srl);
}
}
}
@ -797,6 +800,7 @@ class documentAdminController extends document
// If the post was not temorarily saved, set the attachment's status to be valid
if($oDocument->hasUploadedFiles() && $originObject->member_srl != $originObject->module_srl)
{
$args = new stdClass();
$args->upload_target_srl = $oDocument->document_srl;
$args->isvalid = 'Y';
$output = executeQuery('file.updateFileValid', $args);

View file

@ -555,7 +555,7 @@ class documentController extends document
if($oCacheHandler->isSupport())
{
//remove document item from cache
$cache_key = 'document_item:'.$obj->document_srl;
$cache_key = 'document_item:'. getNumberingPath($obj->document_srl) . $obj->document_srl;
$oCacheHandler->delete($cache_key);
}
@ -646,7 +646,7 @@ class documentController extends document
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$cache_key = 'document_item:'.$document_srl;
$cache_key = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
$oCacheHandler->delete($cache_key);
}

View file

@ -76,30 +76,36 @@ class documentItem extends Object
{
if(!$this->document_srl) return;
$document_item = false;
$cache_put = false;
$columnList = array();
$this->columnList = array();
// cache controll
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$cache_key = 'document_item:' . $this->document_srl;
$cache_key = 'document_item:' . getNumberingPath($this->document_srl) . $this->document_srl;
$document_item = $oCacheHandler->get($cache_key);
if($document_item)
if($document_item !== false)
{
$document_item = (object)$document_item->getVariables();
$this->columnList = array('readed_count', 'voted_count', 'blamed_count', 'comment_count', 'trackback_count');
}
else
{
$this->columnList = array();
$columnList = array('readed_count', 'voted_count', 'blamed_count', 'comment_count', 'trackback_count');
}
}
$args = new stdClass();
$args->document_srl = $this->document_srl;
$output = executeQuery('document.getDocument', $args, $this->columnList);
$output = executeQuery('document.getDocument', $args, $columnList);
if(!$document_item)
if($document_item === false)
{
$document_item = $output->data;
//insert in cache
if($document_item && $oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, $document_item);
}
}
else
{
@ -111,12 +117,6 @@ class documentItem extends Object
}
$this->setAttribute($document_item, $load_extra_vars);
//insert in cache
if($this->document_srl && $oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, $this);
}
}
function setAttribute($attribute, $load_extra_vars=true)
@ -139,13 +139,13 @@ class documentItem extends Object
}
$oDocumentModel = getModel('document');
$GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl] = $this;
if($load_extra_vars)
{
$oDocumentModel->setToAllDocumentExtraVars();
$this->add('title', $GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl]->get('title'));
$this->add('content', $GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl]->get('content'));
$oDocumentModel->getDocumentExtraVarsFromDB($this->document_srl);
$this->add('title', $this->get('title'));
$this->add('content', $this->get('content'));
}
$GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl] = $this;
}
function isExists()
@ -194,22 +194,33 @@ class documentItem extends Object
static $allow_trackback_status = null;
if(is_null($allow_trackback_status))
{
// If the trackback module is configured to be disabled, do not allow. Otherwise, check the setting of each module.
$oModuleModel = getModel('module');
$trackback_config = $oModuleModel->getModuleConfig('trackback');
if(!$trackback_config)
// Check the tarckback module exist
if(!getClass('trackback'))
{
$trackback_config = new stdClass();
$allow_trackback_status = false;
}
if(!isset($trackback_config->enable_trackback)) $trackback_config->enable_trackback = 'Y';
if($trackback_config->enable_trackback != 'Y') $allow_trackback_status = false;
else
{
$module_srl = $this->get('module_srl');
// Check settings of each module
$module_config = $oModuleModel->getModulePartConfig('trackback', $module_srl);
if($module_config->enable_trackback == 'N') $allow_trackback_status = false;
else if($this->get('allow_trackback')=='Y' || !$this->isExists()) $allow_trackback_status = true;
// If the trackback module is configured to be disabled, do not allow. Otherwise, check the setting of each module.
$oModuleModel = getModel('module');
$trackback_config = $oModuleModel->getModuleConfig('trackback');
if(!$trackback_config)
{
$trackback_config = new stdClass();
}
if(!isset($trackback_config->enable_trackback)) $trackback_config->enable_trackback = 'Y';
if($trackback_config->enable_trackback != 'Y') $allow_trackback_status = false;
else
{
$module_srl = $this->get('module_srl');
// Check settings of each module
$module_config = $oModuleModel->getModulePartConfig('trackback', $module_srl);
if($module_config->enable_trackback == 'N') $allow_trackback_status = false;
else if($this->get('allow_trackback')=='Y' || !$this->isExists()) $allow_trackback_status = true;
}
}
}
return $allow_trackback_status;

View file

@ -53,11 +53,14 @@ class documentModel extends document
function setToAllDocumentExtraVars()
{
static $checked_documents = array();
$_document_list = &$GLOBALS['XE_DOCUMENT_LIST'];
// XE XE_DOCUMENT_LIST all documents that the object referred to the global variable settings
if(!count($GLOBALS['XE_DOCUMENT_LIST'])) return;
if(count($_document_list) <= 0) return;
// Find all called the document object variable has been set extension
$document_srls = array();
foreach($GLOBALS['XE_DOCUMENT_LIST'] as $key => $val)
foreach($_document_list as $key => $val)
{
if(!$val->document_srl || $checked_documents[$val->document_srl]) continue;
$checked_documents[$val->document_srl] = true;
@ -84,12 +87,11 @@ class documentModel extends document
$document_srl = $document_srls[$i];
unset($vars);
if(!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl] || !is_object($GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) || !$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->isExists()) continue;
$module_srl = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->get('module_srl');
if(!$_document_list[$document_srl] || !is_object($_document_list[$document_srl]) || !$_document_list[$document_srl]->isExists()) continue;
$module_srl = $_document_list[$document_srl]->get('module_srl');
$extra_keys = $this->getExtraKeys($module_srl);
$vars = $extra_vars[$document_srl];
$document_lang_code = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->get('lang_code');
$document_lang_code = $_document_list[$document_srl]->get('lang_code');
// Expand the variable processing
if(count($extra_keys))
{
@ -109,9 +111,9 @@ class documentModel extends document
$evars = new ExtraVar($module_srl);
$evars->setExtraVarKeys($extra_keys);
// Title Processing
if($vars[-1][$user_lang_code]) $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->add('title',$vars[-1][$user_lang_code]);
if($vars[-1][$user_lang_code]) $_document_list[$document_srl]->add('title',$vars[-1][$user_lang_code]);
// Information processing
if($vars[-2][$user_lang_code]) $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->add('content',$vars[-2][$user_lang_code]);
if($vars[-2][$user_lang_code]) $_document_list[$document_srl]->add('content',$vars[-2][$user_lang_code]);
if($vars[-1][$user_lang_code] || $vars[-2][$user_lang_code])
{
@ -134,12 +136,11 @@ class documentModel extends document
{
if(!$document_srl) return new documentItem();
if(!isset($GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) || $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->columnListKey != serialize($columnList))
if(!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl])
{
$oDocument = new documentItem($document_srl, $load_extra_vars, $columnList);
$GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument;
if($load_extra_vars) $this->setToAllDocumentExtraVars();
$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->columnListKey = serialize($columnList);
}
if($is_admin) $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->setGrant();
@ -361,8 +362,9 @@ class documentModel extends document
*/
function getExtraKeys($module_srl)
{
if(is_null($GLOBALS['XE_EXTRA_KEYS'][$module_srl]))
if(!isset($GLOBALS['XE_EXTRA_KEYS'][$module_srl]))
{
$keys = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -371,8 +373,9 @@ class documentModel extends document
$keys = $oCacheHandler->get($cache_key);
}
$oExtraVar = &ExtraVar::getInstance($module_srl);
if(!$keys)
$oExtraVar = ExtraVar::getInstance($module_srl);
if($keys === false)
{
$obj = new stdClass();
$obj->module_srl = $module_srl;

View file

@ -160,6 +160,7 @@ class documentView extends document
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
// Get the saved document (module_srl is set to member_srl instead)
$logged_info = Context::get('logged_info');
$args = new stdClass();
$args->member_srl = $logged_info->member_srl;
$args->statusList = array($this->getConfigStatus('temp'));
$args->page = (int)Context::get('page');

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
function getSlideShow(){var a,b,c,d,e,f,g,h,i="";if("undefined"!=typeof opener){a=opener.editorPrevNode,b=jQuery(a),b.is("img")&&(selected_node=a,c=b.width(),d=b.attr("gallery_style"),e=b.attr("gallery_align")||"center",f=b.attr("border_color"),g=b.attr("bg_color"),h=b.attr("border_thickness")||1,get_by_id("width").value=c,get_by_id("gallery_style").selectedIndex="list"==d?1:0,get_by_id("gallery_align").selectedIndex="left"==e?1:"right"==e?2:0,get_by_id("border_thickness").value=h,get_by_id("border_color_input").value=f,get_by_id("bg_color_input").value=g,i=b.attr("images_list"));var j=get_by_id("fo"),k=j.editor_sequence.value,l=opener.get_by_id("uploaded_file_list_"+k);if(l)for(var m=get_by_id("image_list"),n=0;n<l.length;n++){var o=l.options[n],p=o.value;if(!p)return;var q=opener.uploadedFiles[p],r=q.download_url.replace(request_uri,"");if(/(jpg|jpeg|gif|png)$/i.test(r)){var s=!1;-1!=i.indexOf(r)&&(s=!0);var o=new Option(o.text,o.value,!1,s);m.options.add(o)}}}}function insertSlideShow(){if("undefined"!=typeof opener){for(var a=new Array,b=get_by_id("image_list"),c=0;c<b.length;c++){var d=b.options[c];if(d.selected){var e=d.value,f=opener.uploadedFiles[e],g=f.download_url.replace(request_uri,"");a[a.length]=g}}if(!a.length)return window.close(),void 0;for(var h=get_by_id("width").value,i=get_by_id("gallery_style").options[get_by_id("gallery_style").selectedIndex].value,j=get_by_id("gallery_align").options[get_by_id("gallery_align").selectedIndex].value,k=get_by_id("border_thickness").value,l=get_by_id("border_color_input").value,m=get_by_id("bg_color_input").value,n="",c=0;c<a.length;c++)n+=a[c].trim()+" ";if(selected_node)selected_node.setAttribute("width",h),selected_node.setAttribute("gallery_style",i),selected_node.setAttribute("align",j),selected_node.setAttribute("gallery_align",j),selected_node.setAttribute("border_thickness",k),selected_node.setAttribute("border_color",l),selected_node.setAttribute("bg_color",m),selected_node.setAttribute("images_list",n),selected_node.style.width=h+"px";else{var o='<img src="../../../../common/img/blank.gif" editor_component="image_gallery" width="'+h+'" gallery_style="'+i+'" align="'+j+'" gallery_align="'+j+'" border_thickness="'+k+'" border_color="'+l+'" bg_color="'+m+'" style="width:'+h+'px;border:2px dotted #4371B9;background:url(./modules/editor/components/image_gallery/tpl/image_gallery_component.gif) no-repeat center;" images_list="'+n+'" />';opener.editorFocus(opener.editorPrevSrl);var p=opener.editorGetIFrame(opener.editorPrevSrl);opener.editorReplaceHTML(p,o)}opener.editorFocus(opener.editorPrevSrl),window.close()}}function select_color(a,b){get_by_id(a+"_preview_color").style.backgroundColor="#"+b,get_by_id(a+"_color_input").value=b}var selected_node=null;jQuery(function(){getSlideShow()});
function getSlideShow(){var a,b,c,d,e,f,g,h,i="";if("undefined"!=typeof opener){a=opener.editorPrevNode,b=jQuery(a),b.is("img")&&(selected_node=a,c=b.width(),d=b.attr("gallery_style"),e=b.attr("gallery_align")||"center",f=b.attr("border_color"),g=b.attr("bg_color"),h=b.attr("border_thickness")||1,get_by_id("width").value=c,get_by_id("gallery_style").selectedIndex="list"==d?1:0,get_by_id("gallery_align").selectedIndex="left"==e?1:"right"==e?2:0,get_by_id("border_thickness").value=h,get_by_id("border_color_input").value=f,get_by_id("bg_color_input").value=g,i=b.attr("images_list"));var j=get_by_id("fo"),k=j.editor_sequence.value,l=opener.get_by_id("uploaded_file_list_"+k);if(l)for(var m=get_by_id("image_list"),n=0;n<l.length;n++){var o=l.options[n],p=o.value;if(!p)return;var q=opener.uploadedFiles[p],r=q.download_url.replace(request_uri,"");if(/(jpg|jpeg|gif|png)$/i.test(r)){var s=!1;-1!=i.indexOf(r)&&(s=!0);var o=new Option(o.text,o.value,!1,s);m.options.add(o)}}}}function insertSlideShow(){if("undefined"!=typeof opener){for(var a=new Array,b=get_by_id("image_list"),c=0;c<b.length;c++){var d=b.options[c];if(d.selected){var e=d.value,f=opener.uploadedFiles[e],g=f.download_url.replace(request_uri,"");a[a.length]=g}}if(!a.length)return void window.close();for(var h=get_by_id("width").value,i=get_by_id("gallery_style").options[get_by_id("gallery_style").selectedIndex].value,j=get_by_id("gallery_align").options[get_by_id("gallery_align").selectedIndex].value,k=get_by_id("border_thickness").value,l=get_by_id("border_color_input").value,m=get_by_id("bg_color_input").value,n="",c=0;c<a.length;c++)n+=a[c].trim()+" ";if(selected_node)selected_node.setAttribute("width",h),selected_node.setAttribute("gallery_style",i),selected_node.setAttribute("align",j),selected_node.setAttribute("gallery_align",j),selected_node.setAttribute("border_thickness",k),selected_node.setAttribute("border_color",l),selected_node.setAttribute("bg_color",m),selected_node.setAttribute("images_list",n),selected_node.style.width=h+"px";else{var o='<img src="../../../../common/img/blank.gif" editor_component="image_gallery" width="'+h+'" gallery_style="'+i+'" align="'+j+'" gallery_align="'+j+'" border_thickness="'+k+'" border_color="'+l+'" bg_color="'+m+'" style="width:'+h+'px;border:2px dotted #4371B9;background:url(./modules/editor/components/image_gallery/tpl/image_gallery_component.gif) no-repeat center;" images_list="'+n+'" />';opener.editorFocus(opener.editorPrevSrl);var p=opener.editorGetIFrame(opener.editorPrevSrl);opener.editorReplaceHTML(p,o)}opener.editorFocus(opener.editorPrevSrl),window.close()}}function select_color(a,b){get_by_id(a+"_preview_color").style.backgroundColor="#"+b,get_by_id(a+"_color_input").value=b}var selected_node=null;jQuery(function(){getSlideShow()});

View file

@ -1 +1 @@
!function(a){var b=xe.createPlugin("slideShow",{_holders:{},_thumbs:{},_current:{},init:function(){this._holders={},this._thumbs={},this._current={}},API_SHOW_SLIDE:function(b,c){var d,e,f,g,h,i,j=this,k=c[0],l="@"+k;if(d=this.cast("GET_IMAGES",[k]),d.length){for(var h=0,m=d.length;m>h;h++)if(!d[h].loaded)return setTimeout(function(){j.cast("SHOW_SLIDE",c)},200),void 0;for(e=a("#zone_slide_gallery_"+k),g=e.find(".slide_gallery_placeholder").css("overflow","hidden"),e.find(".slide_gallery_loading_text").remove(),f=e.find(".slide_gallery_thumbnail_image_box").show(),h=0,i=d.length;i>h;h++)d[h].$obj.clone().css({cursor:"pointer",width:"60px",height:"60px",margin:"5px",opacity:.5}).click({idx:h},function(a){j.cast("SET_SLIDE",[k,a.data.idx])}).appendTo(f);a("#zone_gallery_navigator_status_"+k).click(function(){f.toggle()}),e.find(".__prev").click(function(){return j.cast("PREV_SLIDE",[k]),!1}).end().find(".__next").click(function(){return j.cast("NEXT_SLIDE",[k]),!1}),this._holders[l]=g,this._thumbs[l]=f,this._current[l]=0,this.cast("SET_SLIDE",[k,0])}},_showSideSlide:function(a,b){var c,d,e;c=this.cast("GET_IMAGES",[a]),c.length&&(d=this._current["@"+a],e=d+b,0>e?e=c.length-1:e>=c.length&&(e=0),this.cast("SET_SLIDE",[a,e]))},API_NEXT_SLIDE:function(a,b){this._showSideSlide(b[0],1)},API_PREV_SLIDE:function(a,b){this._showSideSlide(b[0],-1)},API_SET_SLIDE:function(b,c){var d,e,f,g,h,i,j,k,l,m=c[0],n=c[1];d=this.cast("GET_IMAGES",[m]),d.length&&is_def(e=d[n])&&(this._current["@"+m]=n,a("#zone_gallery_navigator_status_"+m).text(n+1+"/"+d.length),this._thumbs["@"+m].find("img").eq(n).animate({opacity:1}).end().not(":eq("+n+")").animate({opacity:.5}),f=this._holders["@"+m],g=f.parent().innerWidth(),h=e.$obj.prop("width"),j=e.$obj.prop("height"),0==h&&(h=e.$obj.attr("width")),0==j&&(j=e.$obj.attr("height")),h>g-20&&(i=g-20,l=i/h,k=Math.floor(j*l),h=i,j=k,e.$obj.css("cursor","pointer"),e.$obj.attr("rel","xe_gallery")),e.$obj.css({width:h,height:j,margin:"0 10px"}),f.empty().append(e.$obj))}}),c=xe.getApp("Gallery")[0];c&&c.registerPlugin(new b)}(jQuery);
!function(a){var b=xe.createPlugin("slideShow",{_holders:{},_thumbs:{},_current:{},init:function(){this._holders={},this._thumbs={},this._current={}},API_SHOW_SLIDE:function(b,c){var d,e,f,g,h,i,j=this,k=c[0],l="@"+k;if(d=this.cast("GET_IMAGES",[k]),d.length){for(var h=0,m=d.length;m>h;h++)if(!d[h].loaded)return void setTimeout(function(){j.cast("SHOW_SLIDE",c)},200);for(e=a("#zone_slide_gallery_"+k),g=e.find(".slide_gallery_placeholder").css("overflow","hidden"),e.find(".slide_gallery_loading_text").remove(),f=e.find(".slide_gallery_thumbnail_image_box").show(),h=0,i=d.length;i>h;h++)d[h].$obj.clone().css({cursor:"pointer",width:"60px",height:"60px",margin:"5px",opacity:.5}).click({idx:h},function(a){j.cast("SET_SLIDE",[k,a.data.idx])}).appendTo(f);a("#zone_gallery_navigator_status_"+k).click(function(){f.toggle()}),e.find(".__prev").click(function(){return j.cast("PREV_SLIDE",[k]),!1}).end().find(".__next").click(function(){return j.cast("NEXT_SLIDE",[k]),!1}),this._holders[l]=g,this._thumbs[l]=f,this._current[l]=0,this.cast("SET_SLIDE",[k,0])}},_showSideSlide:function(a,b){var c,d,e;c=this.cast("GET_IMAGES",[a]),c.length&&(d=this._current["@"+a],e=d+b,0>e?e=c.length-1:e>=c.length&&(e=0),this.cast("SET_SLIDE",[a,e]))},API_NEXT_SLIDE:function(a,b){this._showSideSlide(b[0],1)},API_PREV_SLIDE:function(a,b){this._showSideSlide(b[0],-1)},API_SET_SLIDE:function(b,c){var d,e,f,g,h,i,j,k,l,m=c[0],n=c[1];d=this.cast("GET_IMAGES",[m]),d.length&&is_def(e=d[n])&&(this._current["@"+m]=n,a("#zone_gallery_navigator_status_"+m).text(n+1+"/"+d.length),this._thumbs["@"+m].find("img").eq(n).animate({opacity:1}).end().not(":eq("+n+")").animate({opacity:.5}),f=this._holders["@"+m],g=f.parent().innerWidth(),h=e.$obj.prop("width"),j=e.$obj.prop("height"),0==h&&(h=e.$obj.attr("width")),0==j&&(j=e.$obj.attr("height")),h>g-20&&(i=g-20,l=i/h,k=Math.floor(j*l),h=i,j=k,e.$obj.css("cursor","pointer"),e.$obj.attr("rel","xe_gallery")),e.$obj.css({width:h,height:j,margin:"0 10px"}),f.empty().append(e.$obj))}}),c=xe.getApp("Gallery")[0];c&&c.registerPlugin(new b)}(jQuery);

File diff suppressed because one or more lines are too long

View file

@ -1,10 +1,12 @@
<!--%import("filter/insert_editor_module_config.xml")-->
<load target="js/editor_module_config.js" />
<form action="./" method="post" class="section">
<input type="hidden" name="act" value="procEditorInsertModuleConfig" />
<input type="hidden" name="module" value="editor" />
<input type="hidden" name="target_module_srl" value="{$module_info->module_srl?$module_info->module_srl:$module_srls}" />
<input type="hidden" name="success_return_url" value="{getRequestUriByServerEnviroment()}" />
<input type="hidden" name="xe_validator_id" value="modules/editor/addition_setup/1" />
<h1>{$lang->editor}</h1>
<table class="x_table x_table-striped x_table-hover">
<thead>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
function getEditorSkinColorList(a,b,c,d){if(a.length>0){c=c||"document";var e=new Array("error","message","colorset");exec_xml("editor","dispEditorSkinColorset",{skin:a},resultGetEditorSkinColorList,e,{selected_colorset:b,type:c,testid:d})}}function resultGetEditorSkinColorList(a,b,c){var d=null;jQuery(function(b){if(d=c.testid?b("#"+c.testid).next("label").children("select"):"document"==c.type?b("select[name=sel_editor_colorset]"):b("select[name=sel_comment_editor_colorset]"),d.html(""),"document"==c.type?(b("select[name=sel_editor_colorset]").hide().removeAttr("name"),d.attr("name","sel_editor_colorset")):(b("select[name=sel_comment_editor_colorset]").hide().removeAttr("name"),d.attr("name","sel_comment_editor_colorset")),0==a.error&&a.colorset){var e=[],f=a.colorset.item;"undefined"==typeof f[0]?e[0]=f:e=f;for(var g=0;g<e.length;g++){var h=b('<option value="'+e[g].name+'" >'+e[g].title+"</option>");c.selected_colorset==e[g].name&&h.attr("selected","selected"),d.append(h)}d.show()}else d.hide(),d.html("")})}
function getEditorSkinColorList(a,b,c,d){if(a.length>0){c=c||"document";var e=new Array("error","message","colorset");exec_xml("editor","dispEditorSkinColorset",{skin:a},resultGetEditorSkinColorList,e,{selected_colorset:b,type:c,testid:d})}}function resultGetEditorSkinColorList(a,b,c){var d=null;jQuery(function(b){if(d=c.testid?b("#"+c.testid).next("label").children("select"):b("document"==c.type?"select[name=sel_editor_colorset]":"select[name=sel_comment_editor_colorset]"),d.html(""),"document"==c.type?(b("select[name=sel_editor_colorset]").hide().removeAttr("name"),d.attr("name","sel_editor_colorset")):(b("select[name=sel_comment_editor_colorset]").hide().removeAttr("name"),d.attr("name","sel_comment_editor_colorset")),0==a.error&&a.colorset){var e=[],f=a.colorset.item;"undefined"==typeof f[0]?e[0]=f:e=f;for(var g=0;g<e.length;g++){var h=b('<option value="'+e[g].name+'" >'+e[g].title+"</option>");c.selected_colorset==e[g].name&&h.attr("selected","selected"),d.append(h)}d.show()}else d.hide(),d.html("")})}

File diff suppressed because one or more lines are too long

View file

@ -92,6 +92,7 @@ class fileAdminController extends file
function procFileAdminInsertConfig()
{
// Get configurations (using module model object)
$config = new stdClass();
$config->allowed_filesize = Context::get('allowed_filesize');
$config->allowed_attach_size = Context::get('allowed_attach_size');
$config->allowed_filetypes = str_replace(' ', '', Context::get('allowed_filetypes'));

View file

@ -302,7 +302,7 @@ class fileController extends file
$file_size = $file_obj->file_size;
$filename = $file_obj->source_filename;
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE || (strpos($_SERVER['HTTP_USER_AGENT'], 'Windows') !== FALSE && strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE && strpos($_SERVER['HTTP_USER_AGENT'], 'rv') !== FALSE))
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE || (strpos($_SERVER['HTTP_USER_AGENT'], 'Windows') !== FALSE && strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE && strpos($_SERVER['HTTP_USER_AGENT'], 'rv:') !== FALSE))
{
$filename = rawurlencode($filename);
$filename = preg_replace('/\./', '%2e', $filename, substr_count($filename, '.') - 1);

View file

@ -1 +1 @@
function doSync(){return exec_xml("importer","procImporterAdminSync",[],function(a){alert(a.message),location.href=location.href}),!1}function doPreProcessing(a,b){function c(a){var c,d,e,g,i,j,k;if(h=!0,-1==a.status)return alert(a.message);for(c=get_by_id("fo_process"),d=c.elements,e=0,g=f.length;g>e;e++)i=f[e],d[i]?d[i].value=a[i]:0;if(k=get_by_id(b))for(j=["target_module","guestbook_target_module","user_id","unit_count"],e=0,g=j.length;g>e;e++)i=j[e],k.elements[i]&&(c.elements[i].value=k.elements[i].value);jQuery("#preProgressMsg").hide(),jQuery("#progressMsg").show(),doImport(b)}var d,e,f,g,h=!1,i=jQuery;return d=a.elements.xml_file.value,e=a.elements.type.value,d?(g=i("#process"),i("body").children(".x_modal-backdrop").length||i("body").append('<div class="x_modal-backdrop" />'),i('a[href="#process"].modalAnchor').trigger("open.mw"),exec_xml("importer","procImporterAdminPreProcessing",{type:e,xml_file:d},c,f=["error","message","type","total","cur","key","status"]),!1):!1}function doImport(a){function b(b){function c(){alert(b.message),jQuery('a[href="#process"].modalAnchor').unbind("before-close.mw").trigger("close.mw").find("#progressBar").width(1).end().find("#progressPercent").html("0%").end();try{f.reset(),get_by_id(a).reset()}catch(c){}jQuery("span.btn > input[type=submit]").attr("disabled","disabled")}var d,i,j,k;for(d=0,i=e.length;i>d;d++)j=e[d],g[j]?g[j].value=b[j]:0;b.total=parseInt(b.total,10)||0,b.cur=parseInt(b.cur,10)||0,percent=parseInt(b.cur/b.total*100),jQuery("#totalCount").text(b.total),jQuery("#completeCount").text(b.cur),jQuery("#progressBar").width(percent+"%"),jQuery("#progressPercent").html(percent+"%"),b.total>b.cur?doImport(a):(k=get_by_id(a),null!=k&&k.isSync.checked?exec_xml("importer","procImporterAdminSync",h,function(a){!a||a.error&&"0"!=a.error||c()},e=["error","message"]):c())}var c,d,e,f=get_by_id("fo_process"),g=f.elements,h={};for(c=0,d=g.length;d>c;c++)h[g[c].name]=g[c].value;return show_waiting_message=!1,exec_xml("importer","procImporterAdminImport",h,b,e=["error","message","type","total","cur","key"]),show_waiting_message=!0,!1}function displayProgress(a,b){var c,d;c=Math.max(a?Math.round(b/a*100):100,1),d=jQuery("#status"),d.find("div.progress1").length||d.html('<div class="progressBox"><div class="progress1"></div><div class="progress2"></div></div>'),d.find("div.progress1").html(c+"&nbsp;").css("width",c+"%").end().find("div.progress2").text(b+"/"+a)}jQuery(function(a){a(".checkxml").find("input:text").change(function(){a(this).closest(".checkxml").find(".x_help-inline").hide()}).end().find("button").click(function(){function b(a){var b,e;return e=g.find(">.xml"),b=g.find(">.ttxml"),$message.text(a.result_message),a.error||"true"!=a.exists?($message.attr("class","x_help-inline").fadeIn(300),b=b.filter(":visible"),b.eq(-1).slideUp(100,function(){b=b.slice(0,-1).eq(-1).slideUp(100,arguments.callee)}),g.find(":submit").attr("disabled","disabled"),c()):($message.attr("class","x_help-inline").fadeIn(300),g.find(":submit").removeAttr("disabled"),h=g.find(".syncmember:hidden"),f.prop("disabled",!1).removeClass("loading"),d.prop("disabled",!1),"XML"==a.type?e.not(":visible").add(h).slideDown(300):"TTXML"==a.type&&(b.not(":visible").add(h).slideDown(300),g.find("input[name=type]").val("ttxml")),void 0)}function c(){return f.prop("disabled",!1).removeClass("loading"),d.prop("disabled",!1),g.find(".syncmember:visible").slideUp(100),!1}var d,e,f,g,h;d=a(this).prop("disabled",!0),g=d.closest("form"),e=d.closest(".checkxml"),f=e.find("input").prop("disabled",!0).addClass("loading"),$message=e.find(".x_help-inline").hide(),show_waiting_message=!1,a.exec_json("importer.procImporterAdminCheckXmlFile",{filename:a.trim(f.val())},b)}).end().find(".x_help-inline").hide().end().closest("form").find(">.ttxml").hide().end().end().closest("form").find(":submit").attr("disabled","disabled"),a(".syncmember").hide()});
function doSync(){return exec_xml("importer","procImporterAdminSync",[],function(a){alert(a.message),location.href=location.href}),!1}function doPreProcessing(a,b){function c(a){var c,d,e,g,i,j,k;if(h=!0,-1==a.status)return alert(a.message);for(c=get_by_id("fo_process"),d=c.elements,e=0,g=f.length;g>e;e++)i=f[e],d[i]?d[i].value=a[i]:0;if(k=get_by_id(b))for(j=["target_module","guestbook_target_module","user_id","unit_count"],e=0,g=j.length;g>e;e++)i=j[e],k.elements[i]&&(c.elements[i].value=k.elements[i].value);jQuery("#preProgressMsg").hide(),jQuery("#progressMsg").show(),doImport(b)}var d,e,f,g,h=!1,i=jQuery;return d=a.elements.xml_file.value,e=a.elements.type.value,d?(g=i("#process"),i("body").children(".x_modal-backdrop").length||i("body").append('<div class="x_modal-backdrop" />'),i('a[href="#process"].modalAnchor').trigger("open.mw"),exec_xml("importer","procImporterAdminPreProcessing",{type:e,xml_file:d},c,f=["error","message","type","total","cur","key","status"]),!1):!1}function doImport(a){function b(b){function c(){alert(b.message),jQuery('a[href="#process"].modalAnchor').unbind("before-close.mw").trigger("close.mw").find("#progressBar").width(1).end().find("#progressPercent").html("0%").end();try{f.reset(),get_by_id(a).reset()}catch(c){}jQuery("span.btn > input[type=submit]").attr("disabled","disabled")}var d,i,j,k;for(d=0,i=e.length;i>d;d++)j=e[d],g[j]?g[j].value=b[j]:0;b.total=parseInt(b.total,10)||0,b.cur=parseInt(b.cur,10)||0,percent=parseInt(b.cur/b.total*100),jQuery("#totalCount").text(b.total),jQuery("#completeCount").text(b.cur),jQuery("#progressBar").width(percent+"%"),jQuery("#progressPercent").html(percent+"%"),b.total>b.cur?doImport(a):(k=get_by_id(a),null!=k&&k.isSync.checked?exec_xml("importer","procImporterAdminSync",h,function(a){!a||a.error&&"0"!=a.error||c()},e=["error","message"]):c())}var c,d,e,f=get_by_id("fo_process"),g=f.elements,h={};for(c=0,d=g.length;d>c;c++)h[g[c].name]=g[c].value;return show_waiting_message=!1,exec_xml("importer","procImporterAdminImport",h,b,e=["error","message","type","total","cur","key"]),show_waiting_message=!0,!1}function displayProgress(a,b){var c,d;c=Math.max(a?Math.round(b/a*100):100,1),d=jQuery("#status"),d.find("div.progress1").length||d.html('<div class="progressBox"><div class="progress1"></div><div class="progress2"></div></div>'),d.find("div.progress1").html(c+"&nbsp;").css("width",c+"%").end().find("div.progress2").text(b+"/"+a)}jQuery(function(a){a(".checkxml").find("input:text").change(function(){a(this).closest(".checkxml").find(".x_help-inline").hide()}).end().find("button").click(function(){function b(a){var b,e;return e=g.find(">.xml"),b=g.find(">.ttxml"),$message.text(a.result_message),a.error||"true"!=a.exists?($message.attr("class","x_help-inline").fadeIn(300),b=b.filter(":visible"),b.eq(-1).slideUp(100,function(){b=b.slice(0,-1).eq(-1).slideUp(100,arguments.callee)}),g.find(":submit").attr("disabled","disabled"),c()):($message.attr("class","x_help-inline").fadeIn(300),g.find(":submit").removeAttr("disabled"),h=g.find(".syncmember:hidden"),f.prop("disabled",!1).removeClass("loading"),d.prop("disabled",!1),void("XML"==a.type?e.not(":visible").add(h).slideDown(300):"TTXML"==a.type&&(b.not(":visible").add(h).slideDown(300),g.find("input[name=type]").val("ttxml"))))}function c(){return f.prop("disabled",!1).removeClass("loading"),d.prop("disabled",!1),g.find(".syncmember:visible").slideUp(100),!1}var d,e,f,g,h;d=a(this).prop("disabled",!0),g=d.closest("form"),e=d.closest(".checkxml"),f=e.find("input").prop("disabled",!0).addClass("loading"),$message=e.find(".x_help-inline").hide(),show_waiting_message=!1,a.exec_json("importer.procImporterAdminCheckXmlFile",{filename:a.trim(f.val())},b)}).end().find(".x_help-inline").hide().end().closest("form").find(">.ttxml").hide().end().end().closest("form").find(":submit").attr("disabled","disabled"),a(".syncmember").hide()});

View file

@ -61,6 +61,7 @@ class installAdminController extends install
{
$admin_ip_list = '';
}
$admin_ip_list .= ',127.0.0.1,' . $_SERVER['REMOTE_ADDR'];
$admin_ip_list = explode(',',trim($admin_ip_list, ','));
$admin_ip_list = array_unique($admin_ip_list);
if(!IpFilter::validate($admin_ip_list)) {

View file

@ -386,11 +386,11 @@ class installController extends install
$hostname = $_SERVER['SERVER_NAME'];
$port = $_SERVER['SERVER_PORT'];
$query = "/JUST/CHECK/REWRITE/" . $checkFilePath;
$currentPath = str_replace( $_SERVER['DOCUMENT_ROOT'], "", realpath(_XE_PATH_) );
$currentPath = str_replace($_SERVER['DOCUMENT_ROOT'], "", _XE_PATH_);
if($currentPath != "")
$query = $currentPath . $query;
$fp = @fsockopen($hostname, $port, $errno, $errstr);
$fp = @fsockopen($hostname, $port, $errno, $errstr, 5);
if(!$fp) return false;
fputs($fp, "GET {$query} HTTP/1.0\r\n");

View file

@ -757,7 +757,7 @@ class layoutAdminController extends layout
if($layout->extra_var_count) {
$reg = "/^.\/files\/attach\/images\/([0-9]+)\/(.*)/";
foreach($extra_vars as $key => $val) {
if($extra_vars) foreach($extra_vars as $key => $val) {
if($layout->extra_var->{$key}->type == 'image') {
if(!preg_match($reg,$val,$matches)) continue;
$image_list[$key]->filename = $matches[2];

View file

@ -258,6 +258,8 @@ class layoutModel extends layout
*/
function getLayout($layout_srl)
{
$layout_info = false;
// cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
@ -267,7 +269,7 @@ class layoutModel extends layout
$layout_info = $oCacheHandler->get($cache_key);
}
if(!$layout_info)
if($layout_info === false)
{
// Get information from the DB
$args = new stdClass();
@ -782,7 +784,7 @@ class layoutModel extends layout
*/
function getUserLayoutPath($layout_srl)
{
return sprintf("%sfiles/faceOff/%s", _XE_PATH_, getNumberingPath($layout_srl,3));
return sprintf("./files/faceOff/%s", getNumberingPath($layout_srl,3));
}
/**

View file

@ -976,6 +976,9 @@ class memberAdminController extends member
foreach($user_ids as $val)
{
$val = trim($val);
if(!$val) continue;
$output = $this->insertDeniedID($val, '');
if($output->toBool()) $success_ids[] = $val;
}
@ -1014,6 +1017,9 @@ class memberAdminController extends member
foreach($nick_names as $val)
{
$val = trim($val);
if(!$val) continue;
$output = $this->insertDeniedNickName($val, '');
if($output->toBool()) $success_nick_names[] = $val;
}
@ -1289,6 +1295,8 @@ class memberAdminController extends member
*/
function deleteDeniedID($user_id)
{
if(!$user_id) unset($user_id);
$args = new stdClass;
$args->user_id = $user_id;
return executeQuery('member.deleteDeniedID', $args);
@ -1301,6 +1309,8 @@ class memberAdminController extends member
*/
function deleteDeniedNickName($nick_name)
{
if(!$nick_name) unset($nick_name);
$args = new stdClass;
$args->nick_name = $nick_name;
return executeQuery('member.deleteDeniedNickName', $args);

View file

@ -89,7 +89,8 @@ class memberAdminModel extends member
$args->s_regdate_less = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'last_login' :
$args->s_last_login = $search_keyword;
$args->s_last_login = preg_replace("/[^0-9]/","",$search_keyword);
//$args->s_last_login = $search_keyword;
break;
case 'last_login_more' :
$args->s_last_login_more = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);

View file

@ -47,47 +47,52 @@ class member extends ModuleObject {
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
$oModuleModel = getModel('module');
$args = $oModuleModel->getModuleConfig('member');
$config = $oModuleModel->getModuleConfig('member');
$isNotInstall = empty($args);
if(empty($config))
{
$isNotInstall = true;
$config = new stdClass;
}
// Set the basic information
$args = new stdClass;
$args->enable_join = 'Y';
$args->enable_openid = 'N';
if(!$args->enable_auth_mail) $args->enable_auth_mail = 'N';
if(!$args->image_name) $args->image_name = 'Y';
if(!$args->image_mark) $args->image_mark = 'Y';
if(!$args->profile_image) $args->profile_image = 'Y';
if(!$args->image_name_max_width) $args->image_name_max_width = '90';
if(!$args->image_name_max_height) $args->image_name_max_height = '20';
if(!$args->image_mark_max_width) $args->image_mark_max_width = '20';
if(!$args->image_mark_max_height) $args->image_mark_max_height = '20';
if(!$args->profile_image_max_width) $args->profile_image_max_width = '80';
if(!$args->profile_image_max_height) $args->profile_image_max_height = '80';
if($args->group_image_mark!='Y') $args->group_image_mark = 'N';
$config->enable_join = 'Y';
$config->enable_openid = 'N';
if(!$config->enable_auth_mail) $config->enable_auth_mail = 'N';
if(!$config->image_name) $config->image_name = 'Y';
if(!$config->image_mark) $config->image_mark = 'Y';
if(!$config->profile_image) $config->profile_image = 'Y';
if(!$config->image_name_max_width) $config->image_name_max_width = '90';
if(!$config->image_name_max_height) $config->image_name_max_height = '20';
if(!$config->image_mark_max_width) $config->image_mark_max_width = '20';
if(!$config->image_mark_max_height) $config->image_mark_max_height = '20';
if(!$config->profile_image_max_width) $config->profile_image_max_width = '80';
if(!$config->profile_image_max_height) $config->profile_image_max_height = '80';
if($config->group_image_mark!='Y') $config->group_image_mark = 'N';
if(!$config->password_strength) $config->password_strength = 'normal';
global $lang;
$oMemberModel = getModel('member');
// Create a member controller object
$oMemberController = getController('member');
$oMemberAdminController = getAdminController('member');
if(!$args->signupForm || !is_array($args->signupForm))
if(!$config->signupForm || !is_array($config->signupForm))
{
$identifier = $isNotInstall ? 'email_address' : 'user_id';
$args->signupForm = $oMemberAdminController->createSignupForm($identifier);
$args->identifier = $identifier;
$config->signupForm = $oMemberAdminController->createSignupForm($identifier);
$config->identifier = $identifier;
$oModuleController->insertModuleConfig('member',$args);
// Create Ruleset File
FileHandler::makeDir('./files/ruleset');
$oMemberAdminController->_createSignupRuleset($args->signupForm);
$oMemberAdminController->_createLoginRuleset($args->identifier);
$oMemberAdminController->_createFindAccountByQuestion($args->identifier);
$oMemberAdminController->_createSignupRuleset($config->signupForm);
$oMemberAdminController->_createLoginRuleset($config->identifier);
$oMemberAdminController->_createFindAccountByQuestion($config->identifier);
}
$oModuleController->insertModuleConfig('member',$config);
$groups = $oMemberModel->getGroups();
if(!count($groups))

View file

@ -334,6 +334,24 @@ class memberController extends member
if(!$output->toBool()) return $output;
// insert ProfileImage, ImageName, ImageMark
$profile_image = $_FILES['profile_image'];
if(is_uploaded_file($profile_image['tmp_name']))
{
$this->insertProfileImage($args->member_srl, $profile_image['tmp_name']);
}
$image_mark = $_FILES['image_mark'];
if(is_uploaded_file($image_mark['tmp_name']))
{
$this->insertImageMark($args->member_srl, $image_mark['tmp_name']);
}
$image_name = $_FILES['image_name'];
if(is_uploaded_file($image_name['tmp_name']))
{
$this->insertImageName($args->member_srl, $image_name['tmp_name']);
}
// If a virtual site, join the site
$site_module_info = Context::get('site_module_info');
if($site_module_info->site_srl > 0)

View file

@ -295,6 +295,8 @@ class memberModel extends member
//columnList size zero... get full member info
if(!$GLOBALS['__member_info__'][$member_srl] || count($columnList) == 0)
{
$GLOBALS['__member_info__'][$member_srl] = false;
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
@ -304,7 +306,7 @@ class memberModel extends member
$GLOBALS['__member_info__'][$member_srl] = $oCacheHandler->get($cache_key);
}
if(!$GLOBALS['__member_info__'][$member_srl])
if($GLOBALS['__member_info__'][$member_srl] === false)
{
$args = new stdClass();
$args->member_srl = $member_srl;
@ -458,7 +460,10 @@ class memberModel extends member
*/
function getMemberGroups($member_srl, $site_srl = 0, $force_reload = false)
{
static $member_groups = array();
// cache controll
$group_list = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -467,11 +472,9 @@ class memberModel extends member
$group_list = $oCacheHandler->get($cache_key);
}
static $member_groups = array();
if(!$member_groups[$member_srl][$site_srl] || $force_reload)
{
if(!$group_list && !is_array($group_list))
if($group_list === false)
{
$args = new stdClass();
$args->member_srl = $member_srl;
@ -516,6 +519,7 @@ class memberModel extends member
*/
function getDefaultGroup($site_srl = 0, $columnList = array())
{
$default_group = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -525,7 +529,7 @@ class memberModel extends member
$default_group = $oCacheHandler->get($cache_key);
}
if(!$default_group)
if($default_group === false)
{
$args = new stdClass();
$args->site_srl = $site_srl;
@ -574,6 +578,7 @@ class memberModel extends member
$site_srl = 0;
}
$group_list = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -581,9 +586,9 @@ class memberModel extends member
$cache_key = $oCacheHandler->getGroupKey('member', $object_key);
$group_list = $oCacheHandler->get($cache_key);
}
if(!$group_list)
{
if($group_list === false)
{
$args = new stdClass();
$args->site_srl = $site_srl;
$args->sort_index = 'list_order';

View file

@ -4,8 +4,9 @@
<table name="member_group_member" alias="member_group" />
</tables>
<columns>
<column name="member_group.*" />
<column name="member.*" />
<column name="site_srl" />
<column name="group_srl" />
</columns>
<conditions>
<condition operation="in" column="member_group.group_srl" var="selected_group_srl" notnull="notnull" />

View file

@ -103,6 +103,125 @@ class menuAdminController extends menu
$output->add('menuSrl', $args->menu_srl);
return $output;
}
function linkAllModuleInstancesToSitemap()
{
$unlinked_modules = false;
$args = new stdClass;
$args->site_srl = 0;
$output = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args);
if($output->toBool() && $output->data && count($output->data) > 0)
{
$unlinked_modules = $output->data;
}
if($unlinked_modules)
{
$unlinked_menu_srl = $this->getUnlinkedMenu();
$output = $this->updateLinkModule($unlinked_modules, $unlinked_menu_srl);
}
}
function getUnlinkedMenu()
{
// 'unlinked' menu 존재여부 확인
$oModuleModel = getModel('module');
$moduleConfig = $oModuleModel->getModuleConfig('menu');
if($moduleConfig->unlinked_menu_srl)
{
$menuArgs = new stdClass;
$menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl;
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
if(!$menuOutput->data)
{
unset($moduleConfig->unlinked_menu_srl);
}
}
if(!$moduleConfig->unlinked_menu_srl)
{
$output = $this->addMenu('unlinked', 0);
if($output->toBool())
{
$moduleConfig->unlinked_menu_srl = $output->get('menuSrl');
$oModuleController = getController('module');
$oModuleController->updateModuleConfig('menu', $moduleConfig);
}
else
{
return false;
}
}
return $moduleConfig->unlinked_menu_srl;
}
/**
* insert menu when not linked module.
*
* @param array $moduleInfos
* @param int $menuSrl
*
* @return Object
*/
function updateLinkModule($moduleInfos, $menuSrl)
{
if(!$moduleInfos || !is_array($moduleInfos) || count($moduleInfos) == 0 || $menuSrl == 0)
{
return new Object(-1, 'msg_invalid_request');
}
foreach($moduleInfos as $moduleInfo)
{
// search menu.
$args = new stdClass;
$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;
}
else
{
// create menu item.
$item_args->menu_srl = $menuSrl;
$item_args->url = $moduleInfo->mid;
$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())
{
return $output;
}
$moduleInfo->menu_srl = $menuSrl;
}
$output = executeQuery('module.updateModule', $moduleInfo);
return $output;
}
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
$oCacheHandler->invalidateGroupKey('site_and_module');
}
$oMenuAdminController = getAdminController('menu');
$oMenuAdminController->makeXmlFile($menuSrl);
return new Object();
}
/**
* Change the menu title
@ -337,6 +456,7 @@ class menuAdminController extends menu
if(strncasecmp('http', $request->shortcut_target, 4) === 0 || preg_match('/^(\.\/|\.\.\/|\/).*$/', $request->shortcut_target))
{
// set menu variable
$args = new stdClass();
$args->menu_srl = $request->menu_srl;
$args->parent_srl = $request->parent_srl;
$args->open_window = $request->menu_open_window;
@ -951,7 +1071,7 @@ class menuAdminController extends menu
{
foreach($node AS $key=>$node)
{
unset($args);
$args = new stdClass();
$args->menu_srl = $menu_srl;
$args->menu_item_srl = $node['node_srl'];
$output = executeQuery('menu.updateMenuItemNode', $args);
@ -1108,7 +1228,17 @@ class menuAdminController extends menu
$insertedMenuItemSrl = $this->get('menu_item_srl');
if($menuItemInfo->normal_btn || $menuItemInfo->hover_btn || $menuItemInfo->active_btn)
{
$this->_copyButton($insertedMenuItemSrl, $menuItemInfo);
// copy & upate
$update_item_info = $oMenuAdminModel->getMenuItemInfo($insertedMenuItemSrl);
$copied_info = $this->_copyButton($insertedMenuItemSrl,$update_item_info->menu_srl, $menuItemInfo);
if(count($update_item_info->group_srls) == 0)
{
unset($update_item_info->group_srls);
}
$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);
}
$this->insertedMenuItemSrlList[] = $insertedMenuItemSrl;
}
@ -1460,6 +1590,7 @@ class menuAdminController extends menu
if(empty($url)) $url = getNotEncodedFullUrl('', 'module', 'admin');
$dbInfo = Context::getDBInfo();
$args = new stdClass();
$args->menu_item_srl = (!$requestArgs->menu_item_srl) ? getNextSequence() : $requestArgs->menu_item_srl;
$args->parent_srl = $requestArgs->parent_srl;
$args->menu_srl = $requestArgs->menu_srl;
@ -2034,34 +2165,43 @@ class menuAdminController extends menu
* When copy a menu, button copied also.
* @param $args menuItemInfo with button values
*/
private function _copyButton($insertedMenuItemSrl, &$menuItemInfo)
private function _copyButton($insertedMenuItemSrl, $insertedMenuSrl, &$menuItemInfo)
{
$copied_info = array(
"normal_btn"=>"",
"hover_btn"=>"",
"active_btn"=>"",
);
//normal_btn
if($menuItemInfo->normal_btn)
{
$originFile = FileHandler::getRealPath($menuItemInfo->normal_btn);
$targetFile = $this->_changeMenuItemSrlInButtonPath($menuItemInfo->normal_btn, $menuItemInfo->menu_srl, $insertedMenuItemSrl, 'normal');
$targetFile = $this->_changeMenuItemSrlInButtonPath($menuItemInfo->normal_btn, $insertedMenuSrl, $insertedMenuItemSrl, 'normal');
FileHandler::copyFile($originFile, $targetFile);
$copied_info['normal_btn'] = $targetFile;
}
//hover_btn
if($menuItemInfo->hover_btn)
{
$originFile = FileHandler::getRealPath($menuItemInfo->hover_btn);
$targetFile = $this->_changeMenuItemSrlInButtonPath($menuItemInfo->hover_btn, $menuItemInfo->menu_srl, $insertedMenuItemSrl, 'hover');
$targetFile = $this->_changeMenuItemSrlInButtonPath($menuItemInfo->hover_btn, $insertedMenuSrl, $insertedMenuItemSrl, 'hover');
FileHandler::copyFile($originFile, $targetFile);
$copied_info['hover_btn'] = $targetFile;
}
//active_btn
if($menuItemInfo->active_btn)
{
$originFile = FileHandler::getRealPath($menuItemInfo->active_btn);
$targetFile = $this->_changeMenuItemSrlInButtonPath($menuItemInfo->active_btn, $menuItemInfo->menu_srl, $insertedMenuItemSrl, 'active');
$targetFile = $this->_changeMenuItemSrlInButtonPath($menuItemInfo->active_btn, $insertedMenuSrl, $insertedMenuItemSrl, 'active');
FileHandler::copyFile($originFile, $targetFile);
$copied_info['active_btn'] = $targetFile;
}
return $copied_info;
}
private function _changeMenuItemSrlInButtonPath($buttonPath, $menuSrl, $menuItemSrl, $mode)
@ -2069,7 +2209,8 @@ class menuAdminController extends menu
$path = sprintf('./files/attach/menu_button/%d/', $menuSrl);
$tmp_arr = explode('.', $buttonPath);
$ext = $tmp_arr[count($tmp_arr)-1];
return sprintf('%s%d.%s.%s', $path, $menuItemSrl, 'menu_'.$mode.'_btn', $ext);
$date = date("YmdHis");
return sprintf('%s%d.%s.%s.%s', $path, $menuItemSrl,$date,'menu_'.$mode.'_btn', $ext);
}
public function makeHomemenuCacheFile($menuSrl)

View file

@ -339,38 +339,41 @@ class menuAdminModel extends menu
$oAutoinstallModel = getModel('autoinstall');
$this->add('menu_types', $this->getModuleListInSitemap(0));
$_allModules = $oModuleModel->getModuleList();
$_allModules = FileHandler::readDir('./modules', '/^([a-zA-Z0-9_-]+)$/');
sort($_allModules);
$allModules = array();
Context::loadLang('modules/page/lang');
foreach($_allModules as $value)
foreach($_allModules as $module_name)
{
//$moduleInfo = $oModuleModel->getModuleInfoXml($value->module);
$defaultSkin = $oModuleModel->getModuleDefaultSkin($value->module, 'P');
$defaultMobileSkin = $oModuleModel->getModuleDefaultSkin($value->module, 'M');
$skinInfo = $oModuleModel->loadSkinInfo(ModuleHandler::getModulePath($value->module), $defaultSkin);
$mobileSkinInfo = $oModuleModel->loadSkinInfo(ModuleHandler::getModulePath($value->module), $defaultMobileSkin, 'm.skins');
$value->defaultSkin = new stdClass();
$value->defaultSkin->skin = $defaultSkin;
$value->defaultSkin->title = $skinInfo->title ? $skinInfo->title : $defaultSkin;
$value->defaultMobileSkin = new stdClass();
$value->defaultMobileSkin->skin = $defaultMobileSkin;
$value->defaultMobileSkin->title = $mobileSkinInfo->title ? $mobileSkinInfo->title : $defaultMobileSkin;
$module = $oModuleModel->getModuleInfoXml($module_name);
$defaultSkin = $oModuleModel->getModuleDefaultSkin($module_name, 'P');
$defaultMobileSkin = $oModuleModel->getModuleDefaultSkin($module_name, 'M');
$skinInfo = $oModuleModel->loadSkinInfo(ModuleHandler::getModulePath($module_name), $defaultSkin);
$mobileSkinInfo = $oModuleModel->loadSkinInfo(ModuleHandler::getModulePath($module_name), $defaultMobileSkin, 'm.skins');
$module->defaultSkin = new stdClass();
$module->defaultSkin->skin = $defaultSkin;
$module->defaultSkin->title = $skinInfo->title ? $skinInfo->title : $defaultSkin;
$module->defaultMobileSkin = new stdClass();
$module->defaultMobileSkin->skin = $defaultMobileSkin;
$module->defaultMobileSkin->title = $mobileSkinInfo->title ? $mobileSkinInfo->title : $defaultMobileSkin;
$value->package_srl = $oAutoinstallModel->getPackageSrlByPath('./modules/' . $value->module);
$value->url = _XE_LOCATION_SITE_ . '?mid=download&package_srl=' . $value->package_srl;
$module->package_srl = $oAutoinstallModel->getPackageSrlByPath('./modules/' . $module_name);
$module->url = _XE_LOCATION_SITE_ . '?mid=download&package_srl=' . $module->package_srl;
if($value->module == 'page')
if($module_name == 'page')
{
$pageTypeName = Context::getLang('page_type_name');
$value->title = $pageTypeName['ARTICLE'];
$allModules['ARTICLE'] = $value;
$wModuleInfo = clone $value;
$module->title = $pageTypeName['ARTICLE'];
$allModules['ARTICLE'] = $module;
$wModuleInfo = clone $module;
unset($wModuleInfo->default_skin, $wModuleInfo->default_mskin);
$wModuleInfo->title = $pageTypeName['WIDGET'];
$wModuleInfo->no_skin = 'Y';
$allModules['WIDGET'] = $wModuleInfo;
$oModuleInfo = clone $value;
$oModuleInfo = clone $module;
unset($oModuleInfo->default_skin, $oModuleInfo->default_mskin);
$oModuleInfo->title = $pageTypeName['OUTSIDE'];
$oModuleInfo->no_skin = 'Y';
@ -378,7 +381,7 @@ class menuAdminModel extends menu
}
else
{
$allModules[$value->module] = $value;
$allModules[$module_name] = $module;
}
}

View file

@ -21,6 +21,7 @@ class menuAdminView extends menu
$this->setTemplatePath($this->module_path.'tpl');
}
/**
* Site map admin menu index page
* @return void
@ -39,6 +40,13 @@ class menuAdminView extends menu
else $site_srl = (int)$site_module_info->site_srl;
}
// process for unlinked modules
if($site_srl == 0)
{
$oMenuController = getAdminController('menu');
$oMenuController->linkAllModuleInstancesToSitemap();
}
$oAdmin = getClass('admin');
$oMenuAdminModel = getAdminModel('menu');

View file

@ -39,6 +39,15 @@ class menu extends ModuleObject
{
return TRUE;
}
$oMenuAdminModel = getAdminModel('menu');
$args = new stdClass();
$args->title = array("Temporary menu");
$temp_menus = executeQueryArray('menu.getMenuByTitle', $args);
if($temp_menus->toBool() && count($temp_menus->data)) return true;
return false;
}
@ -135,6 +144,33 @@ class menu extends ModuleObject
$this->recompileCache();
}
// for 1.7.4 update, 기존에 생성된 Temporary menu 항목 정리
$oMenuAdminModel = getAdminModel('menu');
$args = new stdClass();
$args->title = array("Temporary menu");
$temp_menus = executeQueryArray('menu.getMenuByTitle', $args);
$args = new stdClass();
if($temp_menus->toBool() && count($temp_menus->data))
{
$oMenuAdminController = getAdminController('menu');
foreach($temp_menus->data as $menu)
{
$args->current_menu_srl = $menu->menu_srl;
$args->menu_srl = $oMenuAdminController->getUnlinkedMenu();
$output3 = executeQuery('menu.updateMenuItems', $args);
if($output3->toBool())
{
// delete
$oMenuAdminController->deleteMenu($menu->menu_srl);
}
}
$this->recompileCache();
}
return new Object(0, 'success_updated');
}

View file

@ -26,7 +26,7 @@
</div>
<div class="control-group">
<label for="keepid">
<input type="checkbox" name="keep_signed" id="keepid" class="inputCheck" value="Y" onclick="jQuery('#warning')[(jQuery('#keepid:checked').size()>0?'addClass':'removeClass')]('open');" />
<input type="checkbox" name="keep_signed" id="keepid" class="inputCheck" value="Y" onclick="jQuery('#warning')[(jQuery('#keepid:checked').size()&gt;0?'addClass':'removeClass')]('open');" />
{$lang->keep_signed}
</label>
<p id="warning">{$lang->about_keep_warning}</p>

View file

@ -108,26 +108,6 @@ class module extends ModuleObject
$oModuleModel = getModel('module');
$moduleConfig = $oModuleModel->getModuleConfig('module');
if(!$moduleConfig->isUpdateFixedValue) return true;
// 'unlinked' menu 존재여부 확인
if(!$moduleConfig->unlinked_menu_srl) return true;
else
{
$menuArgs = new stdClass;
$menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl;
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
if(!$menuOutput->data) return true;
}
// menu_srl이 등록되지 않은 mid가 있는지 검사(지정된 menu_srl이 있을 경우, 지정된 menu_item도 있다고 가정)
$args = new stdClass;
$args->site_srl = 0;
$output = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args);
if($output->toBool() && $output->data && count($output->data) > 0)
{
return true;
}
}
/**
@ -436,145 +416,9 @@ class module extends ModuleObject
$output = $oModuleController->updateModuleConfig('module', $moduleConfig);
}
// menu(sitemap)에 링크되지 않은 모듈인스턴스 링크
$output1 = $this->linkAllModuleInstancesToSitemap();
if(!$output1->toBool()) return $output1;
return new Object(0, 'success_updated');
}
private function linkAllModuleInstancesToSitemap()
{
// 'unlinked' menu가 있는지 검사
$oModuleController = getController('module');
$oModuleModel = getModel('module');
$moduleConfig = $oModuleModel->getModuleConfig('module');
// 'unlinked menu 생성
$menuSrl = 0;
if(!$moduleConfig->unlinked_menu_srl)
{
$menuSrl = $oModuleController->makeUnlinkedMenu();
}
else
{
$menuArgs = new stdClass;
$menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl;
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
if(!$menuOutput->data)
{
$menuSrl = $oModuleController->makeUnlinkedMenu();
}
}
// 'unlinked' menu를 module config에 저장
if($menuSrl)
{
$moduleConfig->unlinked_menu_srl = $menuSrl;
$oModuleController->updateModuleConfig('module', $moduleConfig);
}
// for 1.7.4 update, 기존에 생성된 Temporary menu 항목 정리
$oMenuAdminModel = getAdminModel('menu'); // @var $oMenuAdminModel menuAdminModel
$args = new stdClass();
$args->title = array("Temporary menu");
$temp_menus = executeQueryArray('menu.getMenuByTitle', $args);
$args = new stdClass();
foreach($temp_menus->data as $menu)
{
$args->current_menu_srl = $menu->menu_srl;
$args->menu_srl = $moduleConfig->unlinked_menu_srl;
$output3 = executeQuery('menu.updateMenuItems', $args);
if($output3->toBool())
{
// delete
$oMenuAdminController = getAdminController('menu');
$oMenuAdminController->deleteMenu($menu->menu_srl);
}
}
// menu_srl이 지정되지 않은 mid가 있는지 검사
$args = new stdClass;
$args->site_srl = 0;
$output1 = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args);
if($output1->toBool() && $output1->data && count($output1->data) > 0)
{
$output2 = $this->updateLinkModule($output1->data, $menuSrl);
if(!$output2->toBool())
{
return $output2;
}
}
return new Object(0,'success');
}
/**
* insert menu when not linked module.
*
* @param array $moduleInfos
* @param int $menuSrl
*
* @return Object
*/
private function updateLinkModule($moduleInfos, $menuSrl)
{
if(!$moduleInfos || !is_array($moduleInfos) || count($moduleInfos) == 0 || $menuSrl == 0)
{
return new Object(-1, 'msg_invalid_request');
}
foreach($moduleInfos as $moduleInfo)
{
// search menu.
$args = new stdClass;
$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;
}
else
{
// create menu item.
$item_args->menu_srl = $menuSrl;
$item_args->url = $moduleInfo->mid;
$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())
{
return $output;
}
$moduleInfo->menu_srl = $menuSrl;
}
$output = executeQuery('module.updateModule', $moduleInfo);
if(!$output->toBool())
{
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
$oCacheHandler->invalidateGroupKey('site_and_module');
}
return $output;
}
}
$oMenuAdminController = getAdminController('menu');
$oMenuAdminController->makeXmlFile($menuSrl);
return new Object();
}
function updateForUniqueSiteDomain()
{
$output = executeQueryArray("module.getNonuniqueDomains");

View file

@ -418,25 +418,15 @@ class moduleController extends module
{
$menuArgs = new stdClass;
$menuArgs->menu_srl = $args->menu_srl;
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
// if menu is not created, create menu also. and does not supported that in virtual site.
if(!$menuOutput->data && !$args->site_srl)
{
$oMenuAdminModel = getAdminModel('menu');
$oModuleModel = getModel('module');
$moduleConfig = $oModuleModel->getModuleConfig('module');
$menuSrl = $moduleConfig->unlinked_menu_srl;
if(!$menuSrl)
{
$menuSrl = $this->makeUnlinkedMenu();
// 'unlinked' menu를 module config에 저장
$moduleConfig->unlinked_menu_srl = $menuSrl;
$this->updateModuleConfig('module', $moduleConfig);
}
$oMenuAdminController = getAdminController('menu');
$menuSrl = $oMenuAdminController->getUnlinkedMenu();
$menuArgs->menu_srl = $menuSrl;
$menuArgs->menu_item_srl = getNextSequence();
@ -455,7 +445,6 @@ class moduleController extends module
return $menuItemOutput;
}
$oMenuAdminController = getAdminController('menu');
$oMenuAdminController->makeXmlFile($menuSrl);
}
}
@ -484,22 +473,6 @@ class moduleController extends module
return $output;
}
function makeUnlinkedMenu()
{
$args = new stdClass();
$args->title = 'unlinked';
$menuSrl = $args->menu_srl = getNextSequence();
$args->listorder = $args->menu_srl * -1;
$output = executeQuery('menu.insertMenu', $args);
if($output->toBool())
{
return $menuSrl;
}
return false;
}
/**
* @brief Modify module information
*/

View file

@ -118,6 +118,7 @@ class moduleModel extends module
// If domain is set, look for subsite
if($domain !== '')
{
$site_info = false;
if($oCacheHandler->isSupport())
{
$object_key = 'site_info:' . md5($domain);
@ -125,12 +126,13 @@ class moduleModel extends module
$site_info = $oCacheHandler->get($domain_cache_key);
}
if(!$site_info)
if($site_info === false)
{
$args = new stdClass();
$args->domain = $domain;
$output = executeQuery('module.getSiteInfoByDomain', $args);
$site_info = $output->data;
if($oCacheHandler->isSupport()) $oCacheHandler->put($domain_cache_key, $site_info);
}
@ -145,14 +147,15 @@ class moduleModel extends module
// If no virtual website was found, get default website
if($domain === '')
{
$site_info = false;
if($oCacheHandler->isSupport())
{
$object_key = 'default_site';
$default_site_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$module_info = $oCacheHandler->get($default_site_cache_key);
$site_info = $oCacheHandler->get($default_site_cache_key);
}
if(!$site_info)
if($site_info === false)
{
$args = new stdClass();
$args->site_srl = 0;
@ -204,7 +207,7 @@ class moduleModel extends module
*/
function getModuleInfoByMid($mid, $site_srl = 0, $columnList = array())
{
if(!$mid)
if(!$mid || ($mid && !preg_match("/^[a-z][a-z0-9_]+$/i", $mid)))
{
return;
}
@ -212,6 +215,10 @@ class moduleModel extends module
$args = new stdClass();
$args->mid = $mid;
$args->site_srl = (int)$site_srl;
$module_srl = false;
$module_info = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -226,7 +233,7 @@ class moduleModel extends module
}
}
if(!$module_info && !is_array($module_info))
if($module_info === false)
{
$output = executeQuery('module.getMidInfo', $args);
$module_info = $output->data;
@ -310,6 +317,9 @@ class moduleModel extends module
$moduleInfo->designSettings->skin->mobileIsDefault = $moduleInfo->is_mskin_fix == 'N' ? 1 : 0;
$moduleInfo->designSettings->skin->mobile = $skinInfoMobile->title;
$module_srl = false;
$mid_info = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -320,10 +330,10 @@ class moduleModel extends module
{
$object_key = 'mid_info:' . $module_srl;
$module_info_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$coutput = $oCacheHandler->get($module_info_cache_key);
$mid_info = $oCacheHandler->get($module_info_cache_key);
}
if(!$coutput)
if($mid_info === false)
{
$oCacheHandler->put($module_srl_cache_key, $output->data->module_srl);
@ -333,8 +343,8 @@ class moduleModel extends module
}
else
{
$coutput->designSettings = $moduleInfo->designSettings;
$moduleInfo = $coutput;
$mid_info->designSettings = $moduleInfo->designSettings;
$moduleInfo = $mid_info;
}
}
@ -356,9 +366,8 @@ class moduleModel extends module
*/
function getModuleInfoByModuleSrl($module_srl, $columnList = array())
{
// Get data
$args = new stdClass();
$args->module_srl = $module_srl;
$mid_info = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -367,8 +376,11 @@ class moduleModel extends module
$mid_info = $oCacheHandler->get($cache_key);
}
if(!$mid_info && !is_array($mid_info))
if($mid_info === false)
{
// Get data
$args = new stdClass();
$args->module_srl = $module_srl;
$output = executeQuery('module.getMidInfo', $args);
if(!$output->toBool()) return;
@ -482,6 +494,7 @@ class moduleModel extends module
*/
function getMidList($args = null, $columnList = array())
{
$list = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -493,7 +506,7 @@ class moduleModel extends module
}
}
if(!$list)
if($list === false)
{
if($oCacheHandler->isSupport() && count($args) === 1 && isset($args->site_srl))
{
@ -517,6 +530,7 @@ class moduleModel extends module
{
$mid_list[$val->mid] = $val;
}
return $mid_list;
}
@ -567,6 +581,7 @@ class moduleModel extends module
*/
function getActionForward($act)
{
$action_forward = false;
// cache controll
$oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE);
if($oCacheHandler->isSupport())
@ -576,7 +591,7 @@ class moduleModel extends module
}
// retrieve and caching all registered action_forward
if(!$action_forward)
if($action_forward === false)
{
$args = new stdClass();
$output = executeQueryArray('module.getActionForward',$args);
@ -589,20 +604,19 @@ class moduleModel extends module
$action_forward[$item->act] = $item;
}
if($oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, $action_forward);
}
}
if($action_forward[$act])
{
return $action_forward[$act];
}
else
{
return new stdClass();
return new stdClass();
}
}
@ -611,6 +625,7 @@ class moduleModel extends module
*/
function getTriggers($trigger_name, $called_position)
{
$triggers = false;
// cache controll
$oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE);
if($oCacheHandler->isSupport())
@ -620,7 +635,7 @@ class moduleModel extends module
$triggers = $oCacheHandler->get($cache_key);
}
if(!$triggers && !is_array($triggers))
if($triggers === false)
{
$args = new stdClass();
$args->trigger_name = $trigger_name;
@ -1336,6 +1351,7 @@ class moduleModel extends module
*/
function getModuleConfig($module, $site_srl = 0)
{
$config = false;
// cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
@ -1344,7 +1360,8 @@ class moduleModel extends module
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$config = $oCacheHandler->get($cache_key);
}
if(!$config)
if($config === false)
{
if(!$GLOBALS['__ModuleConfig__'][$site_srl][$module])
{
@ -1352,7 +1369,8 @@ class moduleModel extends module
$args->module = $module;
$args->site_srl = $site_srl;
$output = executeQuery('module.getModuleConfig', $args);
$config = unserialize($output->data->config);
if($output->data->config) $config = unserialize($output->data->config);
else $config = null;
//insert in cache
if($oCacheHandler->isSupport())
@ -1373,6 +1391,7 @@ class moduleModel extends module
*/
function getModulePartConfig($module, $module_srl)
{
$config = false;
// cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
@ -1381,15 +1400,17 @@ class moduleModel extends module
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$config = $oCacheHandler->get($cache_key);
}
if(!$config)
if($config === false)
{
if(!$GLOBALS['__ModulePartConfig__'][$module][$module_srl])
if(!isset($GLOBALS['__ModulePartConfig__'][$module][$module_srl]))
{
$args = new stdClass();
$args->module = $module;
$args->module_srl = $module_srl;
$output = executeQuery('module.getModulePartConfig', $args);
$config = unserialize($output->data->config);
if($output->data->config) $config = unserialize($output->data->config);
else $config = null;
//insert in cache
if($oCacheHandler->isSupport())
@ -1690,6 +1711,7 @@ class moduleModel extends module
$get_module_srls = array();
if(!is_array($list_module_srl)) $list_module_srl = array($list_module_srl);
$vars = false;
// cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
@ -1715,7 +1737,7 @@ class moduleModel extends module
$get_module_srls = $list_module_srl;
}
if(count($get_module_srls))
if(count($get_module_srls) > 0)
{
$args = new stdClass();
$args->module_srl = implode(',', $get_module_srls);
@ -1760,6 +1782,7 @@ class moduleModel extends module
*/
function getModuleSkinVars($module_srl)
{
$skin_vars = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -1768,7 +1791,7 @@ class moduleModel extends module
$skin_vars = $oCacheHandler->get($cache_key);
}
if(!$skin_vars)
if($skin_vars === false)
{
$args = new stdClass();
$args->module_srl = $module_srl;
@ -1830,7 +1853,7 @@ class moduleModel extends module
if($updateCache && $skinName)
{
$designInfo->module->{$module_name} = new stdClass();
if(!isset($designInfo->module->{$module_name})) $designInfo->module->{$module_name} = new stdClass();
$designInfo->module->{$module_name}->{$target} = $skinName;
$oAdminController = getAdminController('admin');
@ -1874,6 +1897,7 @@ class moduleModel extends module
*/
function getModuleMobileSkinVars($module_srl)
{
$skin_vars = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
@ -1882,7 +1906,7 @@ class moduleModel extends module
$skin_vars = $oCacheHandler->get($cache_key);
}
if(!$skin_vars)
if($skin_vars === false)
{
$args = new stdClass();
$args->module_srl = $module_srl;
@ -1908,6 +1932,7 @@ class moduleModel extends module
function syncMobileSkinInfoToModuleInfo(&$module_info)
{
if(!$module_info->module_srl) return;
$skin_vars = false;
// cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
@ -1916,7 +1941,7 @@ class moduleModel extends module
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$skin_vars = $oCacheHandler->get($cache_key);
}
if(!$skin_vars)
if($skin_vars === false)
{
$args = new stdClass;
$args->module_srl = $module_info->module_srl;

View file

@ -1,3 +1,5 @@
<!--#include("header.html")-->
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
{$setup_content}

View file

@ -642,7 +642,7 @@ class pointController extends point
FileHandler::writeFile($cache_filename, $point);
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
if($new_group_list && $del_group_list && $oCacheHandler->isSupport())
{
$object_key = 'member_groups:' . getNumberingPath($member_srl) . $member_srl . '_0';
$cache_key = $oCacheHandler->getGroupKey('member', $object_key);
@ -650,7 +650,7 @@ class pointController extends point
}
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
if($new_group_list && $del_group_list && $oCacheHandler->isSupport())
{
$object_key = 'member_info:' . getNumberingPath($member_srl) . $member_srl;
$cache_key = $oCacheHandler->getGroupKey('member', $object_key);

View file

@ -27,7 +27,7 @@ class pointModel extends point
if($this->pointList[$member_srl]) return true;
// Get from file cache
$path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl));
$path = sprintf(_XE_PATH_ . 'files/member_extra_info/point/%s',getNumberingPath($member_srl));
$cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl);
if(file_exists($cache_filename))
{
@ -42,7 +42,11 @@ class pointModel extends point
if($output->data->member_srl == $member_srl)
{
if(!$this->pointList[$member_srl])
{
$this->pointList[$member_srl] = (int)$output->data->point;
FileHandler::makeDir($path);
FileHandler::writeFile($cache_filename, (int)$output->data->point);
}
return true;
}
return false;
@ -59,7 +63,7 @@ class pointModel extends point
if(!$from_db && $this->pointList[$member_srl]) return $this->pointList[$member_srl];
// Get from file cache
$path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl));
$path = sprintf(_XE_PATH_ . 'files/member_extra_info/point/%s',getNumberingPath($member_srl));
$cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl);
if(!$from_db && file_exists($cache_filename))

View file

@ -11,7 +11,7 @@
<link rel="self" type="application/atom+xml" href="{$info->id}"/>
<generator uri="http://www.xpressengine.com/">XpressEngine</generator>
<!--@foreach($document_list as $oDocument)--> <entry>
<title><![CDATA[{str_replace('\'', '&apos;', htmlspecialchars($oDocument->getTitleText(), ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}]]></title>
<title><![CDATA[{$oDocument->getTitleText()}]]></title>
<id>{$oDocument->getPermanentUrl()}</id>
<published>{$oDocument->getRegdate('Y-m-d\TH:i:sP')}</published>
<updated>{zdate($oDocument->get('last_update'),'Y-m-d\TH:i:sP')}</updated>
@ -24,9 +24,9 @@
<!--@end-->
</author>
<!--@if($open_rss_config[$oDocument->get('module_srl')]=='Y')-->
<content type="html"><![CDATA[{str_replace('\'', '&apos;', htmlspecialchars($oDocument->getTransContent(false,false,true), ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}]]></content>
<content type="html"><![CDATA[{$oDocument->getTransContent(false,false,true)}]]></content>
<!--@else-->
<summary type="text"><![CDATA[{str_replace('\'', '&apos;', htmlspecialchars($oDocument->getContentText(100), ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}]]></summary>
<summary type="text"><![CDATA[{$oDocument->getContentText(100)}]]></summary>
<!--@end-->
<!--@foreach($oDocument->get('tag_list') as $tag)-->
<category term="{str_replace('\'', '&apos;', htmlspecialchars($tag, ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}"/>

View file

@ -4,7 +4,7 @@
<channel rdf:about="{getUrl('','mid',$mid,'module','rss','act','rss','format','rss1.0','page',Context::get('page'),'start_date',Context::get('start_date'),'end_date',Context::get('end_date'))}">
<title><![CDATA[{$info->title}]]></title>
<link>{$info->link}</link>
<description>{str_replace('\'', '&apos;', htmlspecialchars($info->description, ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}</description>
<description><![CDATA[{$info->description}</description>
<items>
<rdf:Seq>
<!--@foreach($document_list as $oDocument)-->
@ -17,9 +17,9 @@
</channel>
<!--@foreach($document_list as $oDocument)-->
<item rdf:about="{$oDocument->getPermanentUrl()}">
<title><![CDATA[{str_replace('\'', '&apos;',htmlspecialchars($oDocument->getTitleText(), ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}]]></title>
<title><![CDATA[{$oDocument->getTitleText()}]]></title>
<link>{$oDocument->getPermanentUrl()}</link>
<description><![CDATA[{str_replace('\'', '&apos;', htmlspecialchars($oDocument->getContentText(200), ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}]]></description>
<description><![CDATA[{$oDocument->getContentText(200)}]]></description>
<dc:date>{$oDocument->getRegdate('Y-m-d\TH:i:sP')}</dc:date>
</item>
<!--@end-->

View file

@ -29,9 +29,9 @@
<comments>{$oDocument->getPermanentUrl()}#comment</comments>
<!--@end-->
<!--@if($open_rss_config[$oDocument->get('module_srl')]=='Y')-->
<description><![CDATA[{str_replace('\'', '&apos;', htmlspecialchars($oDocument->getTransContent(false,false,true), ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}]]></description>
<description><![CDATA[{$oDocument->getTransContent(false,false,true)}]]></description>
<!--@else-->
<description><![CDATA[{str_replace('\'', '&apos;', htmlspecialchars($oDocument->getContentText(100), ENT_COMPAT | ENT_HTML401, 'UTF-8', false))}]]></description>
<description><![CDATA[{$oDocument->getContentText(100)}]]></description>
<!--@end-->
<pubDate>{$oDocument->getRegdateGM()}</pubDate>
<!--@foreach($oDocument->get('tag_list') as $tag)-->

View file

@ -27,32 +27,25 @@ class sessionController extends session
function write($session_key, $val)
{
if(!$session_key || !$this->session_started) return;
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$cache_vars = $oCacheHandler->get($cache_key);
}
$args = new stdClass();
$args = new stdClass;
$args->session_key = $session_key;
if($cache_vars) $session_info = $cache_vars;
else
{
$output = executeQuery('session.getSession', $args);
$session_info = $output->data;
}
//if ip has changed delete the session from cache and db
$output = executeQuery('session.getSession', $args);
$session_info = $output->data;
//if ip has changed delete the session from db
if($session_info->session_key == $session_key && $session_info->ipaddress != $_SERVER['REMOTE_ADDR'])
{
if($oCacheHandler->isSupport()) $oCacheHandler->delete($cache_key);
executeQuery('session.deleteSession', $args);
return true;
}
$args->expired = date("YmdHis", $_SERVER['REQUEST_TIME']+$this->lifetime);
$args->expired = date("YmdHis", $_SERVER['REQUEST_TIME'] + $this->lifetime);
$args->val = $val;
$args->cur_mid = Context::get('mid');
if(!$args->cur_mid)
{
$module_info = Context::get('current_module_info');
@ -70,43 +63,15 @@ class sessionController extends session
}
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
$args->last_update = date("YmdHis", $_SERVER['REQUEST_TIME']);
$diff = $args->last_update - $cache_vars->last_update;
//verify if session values have changed
if($val == $cache_vars->val)
//put session into db
if($session_info->session_key)
{
// if more than 5 minutes passed than modify the db session also
if($diff > 300)
{
//put session into cache
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->put($cache_key,$args,$this->lifetime);
}
//put session into db
if($session_info->session_key) $output = executeQuery('session.updateSession', $args);
}
else
{
//put session into cache
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->put($cache_key,$args,$this->lifetime);
}
}
$output = executeQuery('session.updateSession', $args);
}
else
{
//put session into cache
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->put($cache_key,$args,$this->lifetime);
}
//put session into db
if($session_info->session_key) $output = executeQuery('session.updateSession', $args);
else $output = executeQuery('session.insertSession', $args);
$output = executeQuery('session.insertSession', $args);
}
return true;
@ -115,17 +80,12 @@ class sessionController extends session
function destroy($session_key)
{
if(!$session_key || !$this->session_started) return;
//remove session from cache
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->delete($cache_key);
}
//remove session from db
$args = new stdClass();
$args->session_key = $session_key;
executeQuery('session.deleteSession', $args);
return true;
}

View file

@ -23,36 +23,27 @@ class sessionModel extends session
{
if(!$session_key || !$this->session_started) return;
$output = new Object();
$args = new stdClass();
$args->session_key = $session_key;
$columnList = array('session_key', 'cur_mid', 'val');
$output = executeQuery('session.getSession', $args, $columnList);
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
// Confirm there is a table created if read error occurs
if(!$output->toBool())
{
$cache_key = 'session:'.$session_key;
$output->data = $oCacheHandler->get($cache_key);
$oDB = DB::getInstance();
if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml');
if(!$oDB->isColumnExists("session", "cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128);
$output = executeQuery('session.getSession', $args);
}
if(!$output->data)
// Check if there is a table created in case there is no "cur_mid" value in the sessions information
if(!isset($output->data->cur_mid))
{
$args = new stdClass();
$args->session_key = $session_key;
$columnList = array('session_key', 'cur_mid', 'val');
$output = executeQuery('session.getSession', $args, $columnList);
// Confirm there is a table created if read error occurs
if(!$output->toBool())
{
$oDB = &DB::getInstance();
if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml');
if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128);
$output = executeQuery('session.getSession', $args);
}
// Check if there is a table created in case there is no "cur_mid" value in the sessions information
if(!isset($output->data->cur_mid))
{
$oDB = &DB::getInstance();
if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128);
}
$oDB = DB::getInstance();
if(!$oDB->isColumnExists("session", "cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128);
}
return $output->data->val;
}

View file

@ -64,7 +64,7 @@ class trashAdminController extends trash
$this->setMessage('success_deleted', 'info');
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispTrashAdminList', 'origin_module', $originModule);
return $this->setRedirectUrl($returnUrl, $output);
$this->setRedirectUrl($returnUrl, $output);
}
/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

0
tests/logs/junit.xml Normal file
View file

View file

@ -185,6 +185,7 @@ class content extends WidgetHandler
function _getCommentItems($args)
{
// List variables to use CommentModel::getCommentList()
$obj = new stdClass();
$obj->module_srl = $args->module_srl;
$obj->sort_index = $args->order_target;
$obj->list_count = $args->list_count * $args->page_count;