diff --git a/adm/boardgroup_form_update.php b/adm/boardgroup_form_update.php
index b7e5cb4f2..35d8843c1 100644
--- a/adm/boardgroup_form_update.php
+++ b/adm/boardgroup_form_update.php
@@ -69,5 +69,7 @@ if ($w == '') {
alert('제대로 된 값이 넘어오지 않았습니다.');
}
+run_event('admin_boardgroup_form_update', $gr_id, $w);
+
goto_url('./boardgroup_form.php?w=u&gr_id='.$gr_id.'&'.$qstr);
?>
diff --git a/adm/boardgroup_list_update.php b/adm/boardgroup_list_update.php
index ee8971c2d..b49a673b9 100644
--- a/adm/boardgroup_list_update.php
+++ b/adm/boardgroup_list_update.php
@@ -10,19 +10,23 @@ auth_check($auth[$sub_menu], 'w');
check_admin_token();
-$count = count($_POST['chk']);
+$post_chk = isset($_POST['chk']) ? (array) $_POST['chk'] : array();
+$post_group_id = isset($_POST['group_id']) ? (array) $_POST['group_id'] : array();
+$act_button = isset($_POST['act_button']) ? $_POST['act_button'] : '';
+
+$count = count($post_chk);
if(!$count)
- alert($_POST['act_button'].'할 게시판그룹을 1개이상 선택해 주세요.');
+ alert($act_button.'할 게시판그룹을 1개이상 선택해 주세요.');
for ($i=0; $i<$count; $i++)
{
- $k = $_POST['chk'][$i];
- $gr_id = preg_replace('/[^a-z0-9_]/i', '', $_POST['group_id'][$k]);
+ $k = $post_chk[$i];
+ $gr_id = preg_replace('/[^a-z0-9_]/i', '', $post_group_id[$k]);
$gr_subject = is_array($_POST['gr_subject']) ? strip_tags(clean_xss_attributes($_POST['gr_subject'][$k])) : '';
$gr_admin = is_array($_POST['gr_admin']) ? strip_tags(clean_xss_attributes($_POST['gr_admin'][$k])) : '';
- if($_POST['act_button'] == '선택수정') {
+ if($act_button == '선택수정') {
$sql = " update {$g5['group_table']}
set gr_subject = '{$gr_subject}',
gr_device = '".sql_real_escape_string($_POST['gr_device'][$k])."',
@@ -33,7 +37,7 @@ for ($i=0; $i<$count; $i++)
if ($is_admin != 'super')
$sql .= " and gr_admin = '{$gr_admin}' ";
sql_query($sql);
- } else if($_POST['act_button'] == '선택삭제') {
+ } else if($act_button == '선택삭제') {
$row = sql_fetch(" select count(*) as cnt from {$g5['board_table']} where gr_id = '$gr_id' ");
if ($row['cnt'])
alert("이 그룹에 속한 게시판이 존재하여 게시판 그룹을 삭제할 수 없습니다.\\n\\n이 그룹에 속한 게시판을 먼저 삭제하여 주십시오.", './board_list.php?sfl=gr_id&stx='.$gr_id);
@@ -46,5 +50,7 @@ for ($i=0; $i<$count; $i++)
}
}
+run_event('admin_boardgroup_list_update', $act_button, $chk, $post_group_id, $qstr);
+
goto_url('./boardgroup_list.php?'.$qstr);
?>
diff --git a/adm/config_form.php b/adm/config_form.php
index 016355d11..4a8bdd8e9 100644
--- a/adm/config_form.php
+++ b/adm/config_form.php
@@ -1183,7 +1183,7 @@ include_once('_rewrite_config_form.php');
|
- 앱 등록하기
+ 앱 등록하기
|
|
diff --git a/adm/css/admin.css b/adm/css/admin.css
index 2b8a24621..3a1c0e268 100644
--- a/adm/css/admin.css
+++ b/adm/css/admin.css
@@ -13,16 +13,16 @@ legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-inde
label, input, button, select, img {vertical-align:middle}
input, button {margin:0;padding:0;font-family:'Malgun Gothic',"맑은 고딕",AppleGothic,Dotum,"돋움", sans-serif;font-size:1em}
button,input[type="submit"] {cursor:pointer}
-textarea, select {font-family:'Malgun Gothic',"맑은 고딕",AppleGothic,Dotum,"돋움", sans-serif;;font-size:1em}
+textarea, select {font-family:'Malgun Gothic',"맑은 고딕",AppleGothic,Dotum,"돋움", sans-serif;font-size:1em}
select {margin:0}
p {margin:0;padding:0;word-break:break-all}
pre {overflow-x:scroll;font-size:1.1em}
a:link, a:visited {color:#000;text-decoration:none}
* {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+-webkit-box-sizing: border-box;
+-moz-box-sizing: border-box;
+box-sizing: border-box;
}
h2{font-size: 1.083em;font-weight: bold;margin:10px 0}
@@ -39,12 +39,12 @@ h2{font-size: 1.083em;font-weight: bold;margin:10px 0}
#tnb{float:right;padding:10px}
#tnb ul:after{display:block;visibility:hidden;clear:both;content:""}
#tnb li{float:left;position:relative;margin-left:3px}
-#tnb a{color:#fff;;padding:0 10px;display:block;line-height:30px;}
+#tnb a{color:#fff;padding:0 10px;display:block;line-height:30px;}
#tnb .tnb_service{border-radius:3px;background:#4e5eb7;color:#fff;padding:0 10px;text-align:left;height:30px;line-height:30px;}
#tnb .tnb_service:hover{background:#5969c3}
-#tnb button{width:100px;;border:0;border-radius:3px;background:#4e5eb7;color:#fff;padding:0 30px 0 10px;text-align:left;height:30px;position:relative;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
-#tnb button span{display:block;text-indent:-999px;overflow:hidden;width:30px;border-radius:3px;height:30px;position:absolute;top:0;right:0;background:url(../img/op_btn.png) 50% 50% no-repeat #5969c3}
-#tnb button:hover {background:#5969c3}
+#tnb button{width:100px;border:0;border-radius:3px;background:#4e5eb7;color:#fff;padding:0 30px 0 10px;text-align:left;height:30px;position:relative;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
+#tnb button span{display:block;text-indent:-999px;overflow:hidden;width:30px;border-radius:3px;height:30px;position:absolute;top:0;right:0;background:url(../img/op_btn.png) 50% 50% no-repeat #5969c3}
+#tnb button:hover {background:#5969c3}
#tnb .tnb_mb_area{display:none;background:#5e6dc2;width:100px;position:absolute;padding:5px;margin-top:1px;}
#tnb .tnb_mb_area a{padding:0}
#tnb .tnb_mb_area li{float:none;}
@@ -75,9 +75,9 @@ h2{font-size: 1.083em;font-weight: bold;margin:10px 0}
#gnb .on .btn_op.menu-900{background:url(../img/menu-4.png) 50% 50% no-repeat #fff}
#gnb .gnb_li button:hover{background-color:#f3f3f3}
#gnb .gnb_oparea{display:none;position:absolute;top:0;left:50px;background:#fff;height:100%;width:170px;padding:20px;border-right:1px solid #dbdbdb;
--webkit-box-shadow: 2px 0 2px rgba(150,150,150,100.1);
- -moz-box-shadow: 2px 0 2px rgba(150,150,150,0.1);
- box-shadow: 2px 0 2px rgba(150,150,150,0.1);}
+-webkit-box-shadow: 2px 0 2px rgba(150,150,150,100.1);
+-moz-box-shadow: 2px 0 2px rgba(150,150,150,0.1);
+box-shadow: 2px 0 2px rgba(150,150,150,0.1);}
#gnb .on .gnb_oparea{display:block}
#gnb .gnb_oparea h3{margin-bottom:10px;line-height:18px;font-size:1.17em}
#gnb .gnb_oparea li{line-height:28px}
@@ -182,10 +182,10 @@ a.btn_submit{background:#ff4081;color:#fff}
.btn_add01 button {margin:0}
-.td_mng a.btn,.td_mng a{display:inline-block;height:26px;line-height:26px;border:0;;border-radius:3px;padding:0 8px;margin:1px;font-weight:normal}
-.td_mng button,.td_mng button.btn{height:26px;border:0;border-radius:3px;padding:0 8px;margin:1px;border:0;;font-weight:normal}
-.btn{height:30px;border:0;;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;vertical-align:middle}
-a.btn{display:inline-block;height:30px;line-height:30px;border:0;;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;;vertical-align:middle}
+.td_mng a.btn, .td_mng a{display:inline-block;height:26px;line-height:26px;border:0;border-radius:3px;padding:0 8px;margin:1px;font-weight:normal}
+.td_mng button, .td_mng button.btn{height:26px;border:0;border-radius:3px;padding:0 8px;margin:1px;font-weight:normal}
+.btn{height:30px;border:0;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;vertical-align:middle}
+a.btn{display:inline-block;height:30px;line-height:30px;border:0;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;vertical-align:middle}
.btn_submit{background:#ff4081;color:#fff}
a.btn_submit{background:#ff4081;color:#fff}
.btn_submit:hover{background:#ff1464}
@@ -196,7 +196,7 @@ a.btn_submit{background:#ff4081;color:#fff}
.btn_03,a.btn_03{background:#3f51b5;color:#fff;}
.btn_frmline{display:inline-block;background:#9eacc6;color:#fff;height:35px;border:0;border-radius:5px;padding:0 10px}
-a.btn_frmline{display:inline-block;background:#9eacc6;color:#fff;height:35px;line-height:33px;border-radius:5px;padding:0 10px;text-decoration:none !important}
+a.btn_frmline{display:inline-block;background:#9eacc6;color:#fff;height:35px;line-height:33px;border-radius:5px;padding:0 10px;text-decoration:none !important}
.btn_ov01{display:inline-block;line-height:30px;height:30px;font-size:0.92em;vertical-align:top}
.btn_ov01 .ov_txt{float:left;background:#9eacc6;color:#fff;border-radius:5px 0 0 5px;padding:0 5px}
.btn_ov01 .ov_num{float:left;background:#ededed;color:#666;border-radius:0 5px 5px 0;padding:0 5px}
@@ -210,7 +210,7 @@ a.btn_ov02:hover,a.ov_listall:hover{background:#3f51b5}
.sound_only {display:inline-block !important;position:absolute;top:0;left:0;margin:0 !important;padding:0 !important;width:1px !important;height:1px !important;font-size:0;line-height:0;border:0 !important;overflow:hidden !important}
.frm_input{height:35px;line-height:32px;border:1px solid #d5d5d5;}
.frm_input_full{width:100%}
-.required{background:url('../img/wrest.gif') top right no-repeat #fff !important}
+.required{background:url('../img/wrest.gif') top right no-repeat #fff !important}
select{height:35px;line-height:32px;border:1px solid #d5d5d5;}
textarea{width:100%;border:1px solid #d5d5d5;min-height:80px}
legend {position:absolute;width:0;height:0;font-size:0;line-height:0;text-indent:-9999em;border:0;overflow:hidden}
@@ -235,7 +235,7 @@ legend {position:absolute;width:0;height:0;font-size:0;line-height:0;text-indent
.color_st03{background:#b668d0;color:#fff;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
.color_st04{background:#ffa700;color:#fff;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
.color_st05{background:#688fef;color:#fff;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
-.color_st06{;color:#ff0000;border:1px solid #ff0000;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
+.color_st06{color:#ff0000;border:1px solid #ff0000;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
/* 폼 안내글 */
.frm_info {display:block;padding:0 0 5px;color:#5b747e}
@@ -245,7 +245,7 @@ legend {position:absolute;width:0;height:0;font-size:0;line-height:0;text-indent
.anchor:after {display:block;visibility:hidden;clear:both;content:""}
.anchor li{float:left;margin-left:-1px;list-style:none}
.anchor a {display:inline-block;padding:5px 10px;border:1px solid #c8ced1;background:#d6dde1;text-decoration:none}
-.anchor .selected{background:#3f51b5}
+.anchor .selected{background:#3f51b5}
@@ -265,22 +265,22 @@ border-bottom: 5px solid black;}
/* 페이지 내 검색 */
.local_sch{}
-.local_sch:after ,.local_sch div:after{display:block;visibility:hidden;clear:both;content:""}
-.local_sch .btn_sch{width:30px;height:30px;border:0;padding:0;float:left;background:url(../img/sch_btn.png) no-repeat 50% 50%;border:1px solid #dcdcdc;border-left:0;text-indent:-999px;overflow:hidden}
-.local_sch .btn_sch2{width:35px;height:35px;border:0;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;border:1px solid #dcdcdc;text-indent:-999px;overflow:hidden}
+.local_sch:after, .local_sch div:after{display:block;visibility:hidden;clear:both;content:""}
+.local_sch .btn_sch{width:30px;height:30px;border:1px solid #dcdcdc;border-left:0;padding:0;float:left;background:url(../img/sch_btn.png) no-repeat 50% 50%;text-indent:-999px;overflow:hidden}
+.local_sch .btn_sch2{width:35px;height:35px;border:1px solid #dcdcdc;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;text-indent:-999px;overflow:hidden}
-.local_sch .sch_input{height:30px;border:1px solid #dcdcdc;border-right:0;;padding:0 5px;float:left;}
+.local_sch .sch_input{height:30px;border:1px solid #dcdcdc;border-right:0;padding:0 5px;float:left;}
.local_sch select{height:30px;margin-right:3px;border:1px solid #dcdcdc}
.local_sch01{margin: 10px 0;}
.local_sch02{}
.local_sch01 .frm_input{height:30px;border:1px solid #dcdcdc;padding:0 5px;}
-.local_sch01 .btn_submit{width:30px;height:30px;border:0;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;border:1px solid #dcdcdc;text-indent:-999px;overflow:hidden}
-.local_sch03{;padding:5px 15px;background:#e9ebf9;margin:10px 0}
+.local_sch01 .btn_submit{width:30px;height:30px;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;border:1px solid #dcdcdc;text-indent:-999px;overflow:hidden}
+.local_sch03{padding:5px 15px;background:#e9ebf9;margin:10px 0}
.local_sch div{margin:5px 0;}
.local_sch03 strong{display:inline-block;width:70px;}
-.local_sch03 label{margin-right:5px;display:inline-block}
+.local_sch03 label{margin-right:5px;display:inline-block}
.local_sch03 button{height:30px;padding:0 5px;border:0;background:#9eacc6;color:#fff;}
-.local_sch03 .btn_submit{height:30px;padding:0 5px;border:0;;color:#fff;}
+.local_sch03 .btn_submit{height:30px;padding:0 5px;border:0;color:#fff;}
.local_sch03 .frm_input{height:30px;border:1px solid #dcdcdc;padding:0 5px;}
/* 페이지 내 실행 */
.local_cmd {min-width:960px}
@@ -307,6 +307,7 @@ border-bottom: 5px solid black;}
/* 페이지 내 카운트 */
.local_ov {min-width:960px}
+
.local_ov01 {position:relative;;margin: 10px 0;}
.local_ov01 .ov_a{display:inline-block;line-height:30px;height:30px;font-size:0.92em;background:#ff4081;color:#fff;vertical-align:top;border-radius:5px;padding:0 7px}
.local_ov01 .ov_a:hover{background:#ff1464}
@@ -943,7 +944,7 @@ strong.sodr_nonpay {display:block;padding:5px 0;text-align:right}
-moz-box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);
box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
.sv_wrap .sv:before{content: "";position: absolute;top: -6px;left: 15px;width: 0;height: 0;border-style: solid;border-width: 0 6px 6px 6px;border-color: transparent transparent #333 transparent;}
-.sv_wrap .sv a {display:inline-block;margin:0;padding:0 10px;line-height:30px;width:100px;font-weight:normal;color:#bbb }
+.sv_wrap .sv a {display:inline-block;margin:0;padding:0 10px;line-height:30px;width:100px;font-weight:normal;color:#bbb }
.sv_wrap .sv a:hover{background:#000;color:#fff}
.sv_member{color:#333}
.sv_on {display:block !important;position:absolute;top:23px;left:0px;width:auto;height:auto}
@@ -1043,15 +1044,15 @@ box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
/* 캡챠 */
#captcha {display:inline-block;position:relative}
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;}
-#captcha #captcha_img {;height:40px;border:1px solid #898989;vertical-align:top;padding:0;margin:0}
-#captcha #captcha_mp3 {;margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat;text-indent:-999px;border-radius:3px}
-#captcha #captcha_reload {margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat 0 -40px;text-indent:-999px;border-radius:3px}
+#captcha #captcha_img {height:40px;border:1px solid #898989;vertical-align:top;padding:0;margin:0}
+#captcha #captcha_mp3 {margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat;text-indent:-999px;border-radius:3px}
+#captcha #captcha_reload {margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat 0 -40px;text-indent:-999px;border-radius:3px}
#captcha #captcha_key {margin:0 0 0 3px;padding:0 5px;width:90px;height:40px;border:1px solid #ccc;background:#fff;font-size:1.333em;font-weight:bold;text-align:center;border-radius:3px;vertical-align:top}
#captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
/*테마*/
.theme_p{margin:0 0 10px }
-#theme_list{padding:0;margin:0;list-style:none; width: 1000px;position:relative}
+#theme_list{padding:0;margin:0;list-style:none; width: 1000px;position:relative}
#theme_list:after{display:block;visibility:hidden;clear:both;content:""}
#theme_list li{margin:10px 10px 10px 0;float:left}
@@ -1060,33 +1061,33 @@ box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
#theme_list li .tmli_if>img{width:300px;height:225px;}
#theme_list li .tmli_if:hover>img{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter: alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity: 0.5;opacity: 0.5;}
#theme_list li .tmli_tit{position:relative; border-top: 1px solid #d1dee2; background: #e5ecef;}
-#theme_list li .tmli_tit p{height:40px;line-height:40px;padding:0 10px 0;font-weight:bold;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
+#theme_list li .tmli_tit p{height:40px;line-height:40px;padding:0 10px 0;font-weight:bold;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
#theme_list li .tmli_tit button.tmli_dt{position:absolute;top:8px;right:10px;padding:5px;background:#111;color:#fff;display:none;border:none}
#theme_list li .tmli_if:hover button.tmli_dt{display:block}
#theme_list li .theme_sl{float:left;border:none;margin-top:5px;padding:0 5px;height:26px;background:#999;color:#fff}
#theme_list li .theme_sl:hover{background:#ff3061}
#theme_list li .theme_deactive{margin-left:4px}
#theme_list li .theme_sl_use{background:#ff3061;line-height:26px}
-#theme_list li .theme_pr{float:right;margin-top:5px;padding:0 5px;height:26px;line-height:24px; border: 1px solid #ccc; background: #fafafa; }
-#theme_list li .theme_preview{ float: right; margin-top: 5px; padding:0 5px;height:26px; border: 1px solid #ccc; background: #fafafa; margin-right:3px}
+#theme_list li .theme_pr{float:right;margin-top:5px;padding:0 5px;height:26px;line-height:24px; border: 1px solid #ccc; background: #fafafa; }
+#theme_list li .theme_preview{ float: right; margin-top: 5px; padding:0 5px;height:26px; border: 1px solid #ccc; background: #fafafa; margin-right:3px}
#theme_detail{position:fixed;top:50%;height:540px;width:900px;margin-top:-271px;background:#fff;background:#f3f3f3;border:1px solid #000;
--webkit-box-shadow: 1px 2px 5px rgba(150,150,150,100.5);
- -moz-box-shadow: 1px 2px 5px rgba(150,150,150,0.5);
- box-shadow: 1px 2px 5px rgba(150,150,150,0.5);z-index:1000}
+-webkit-box-shadow: 1px 2px 5px rgba(150,150,150,100.5);
+-moz-box-shadow: 1px 2px 5px rgba(150,150,150,0.5);
+box-shadow: 1px 2px 5px rgba(150,150,150,0.5);z-index:1000}
#theme_detail:after{display:block;visibility:hidden;clear:both;content:""}
#theme_detail h2{font-size:1.25em;background:#fff;padding:0 15px;line-height:40px;border-bottom:1px solid #d8d8d8;margin:0}
.theme_dt_img{float:left;padding:20px}
.theme_dt_img img{border:1px solid #aaa;}
.theme_dt_if{float:left;width:235px;padding:20px 0}
-.theme_dt_if table{width:100%;border-collapse:collapse;;margin:15px 0 0 ;font-size:0.92em}
+.theme_dt_if table{width:100%;border-collapse:collapse;margin:15px 0 0 ;font-size:0.92em}
.theme_dt_if table th{padding:5px;background:#fff;border-bottom:1px solid #f3f3f3;vertical-align:top;color:#3f51b5}
.theme_dt_if table td{padding:5px;background:#fff;border-bottom:1px solid #f3f3f3;line-height:1.56em}
.theme_dt_if table td a{text-decoration:underline}
.theme_dt_if p{line-height:1.5em}
.if_p_bg{display:inline-block;width:20px;height:1px ;background:#000;margin:30px 0 10px}
#theme_detail .theme_dt_btn{position:absolute;top:0px;right:0px;background:#fff;}
-#theme_detail .theme_dt_btn .close_btn{background:url('../img/close.png') 50% 50% no-repeat;width:40px;height:40px;overflow:hidden;border:0;text-indent:-99999px;border-left:1px solid #d8d8d8}
+#theme_detail .theme_dt_btn .close_btn{border:0;border-left:1px solid #d8d8d8;background:url('../img/close.png') 50% 50% no-repeat;width:40px;height:40px;overflow:hidden;text-indent:-99999px}
#theme_detail .theme_dt_btn .close_btn:hover{background-color:#eceffc}
#theme_detail .theme_dt_btn .btn_03{line-height:28px;display:inline-block;vertical-align:top;margin-top:6px;padding:0 6px;border-radius:5px}
diff --git a/adm/menu_list_update.php b/adm/menu_list_update.php
index 160c578a7..528a5a42b 100644
--- a/adm/menu_list_update.php
+++ b/adm/menu_list_update.php
@@ -68,5 +68,7 @@ for ($i=0; $i<$count; $i++)
sql_query($sql);
}
+run_event('admin_menu_list_update');
+
goto_url('./menu_list.php');
?>
diff --git a/common.php b/common.php
index 147ade232..0eed7bfc2 100644
--- a/common.php
+++ b/common.php
@@ -298,40 +298,40 @@ if(XenoPostToForm::check()) {
//------------------------------------------------------------------------------
// 기본환경설정
// 기본적으로 사용하는 필드만 얻은 후 상황에 따라 필드를 추가로 얻음
-$config = get_config();
+$config = get_config(true);
// 본인인증 또는 쇼핑몰 사용시에만 secure; SameSite=None 로 설정합니다.
if( $config['cf_cert_use'] || (defined('G5_YOUNGCART_VER') && G5_YOUNGCART_VER) ) {
- // Chrome 80 버전부터 아래 이슈 대응
- // https://developers-kr.googleblog.com/2020/01/developers-get-ready-for-new.html?fbclid=IwAR0wnJFGd6Fg9_WIbQPK3_FxSSpFLqDCr9bjicXdzy--CCLJhJgC9pJe5ss
- if(!function_exists('session_start_samesite')) {
- function session_start_samesite($options = array())
- {
+ // Chrome 80 버전부터 아래 이슈 대응
+ // https://developers-kr.googleblog.com/2020/01/developers-get-ready-for-new.html?fbclid=IwAR0wnJFGd6Fg9_WIbQPK3_FxSSpFLqDCr9bjicXdzy--CCLJhJgC9pJe5ss
+ if(!function_exists('session_start_samesite')) {
+ function session_start_samesite($options = array())
+ {
global $g5;
-
- $res = @session_start($options);
-
+
+ $res = @session_start($options);
+
// IE 브라우저 또는 엣지브라우저 또는 IOS 모바일과 http환경에서는 secure; SameSite=None을 설정하지 않습니다.
if( preg_match('/Edge/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('/(iPhone|iPod|iPad).*AppleWebKit.*Safari/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~Trident/7.0(; Touch)?; rv:11.0~',$_SERVER['HTTP_USER_AGENT']) || ! (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ){
return $res;
}
- $headers = headers_list();
- krsort($headers);
- foreach ($headers as $header) {
- if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) continue;
- $header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
- header($header, false);
+ $headers = headers_list();
+ krsort($headers);
+ foreach ($headers as $header) {
+ if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) continue;
+ $header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
+ header($header, false);
$g5['session_cookie_samesite'] = 'none';
- break;
- }
- return $res;
- }
- }
+ break;
+ }
+ return $res;
+ }
+ }
- session_start_samesite();
+ session_start_samesite();
} else {
- @session_start();
+ @session_start();
}
//==============================================================================
@@ -519,7 +519,7 @@ if ($_SESSION['ss_mb_id']) { // 로그인중이라면
$write = array();
$write_table = "";
if ($bo_table) {
- $board = get_board_db($bo_table);
+ $board = get_board_db($bo_table, true);
if ($board['bo_table']) {
set_cookie("ck_bo_table", $board['bo_table'], 86400 * 1);
$gr_id = $board['gr_id'];
@@ -542,7 +542,7 @@ if ($bo_table) {
}
if ($gr_id && !is_array($gr_id)) {
- $group = get_group($gr_id);
+ $group = get_group($gr_id, true);
}
if ($config['cf_editor']) {
diff --git a/config.php b/config.php
index b38221a3b..7a5ac2a3f 100644
--- a/config.php
+++ b/config.php
@@ -5,8 +5,8 @@
********************/
define('G5_VERSION', '그누보드5');
-define('G5_GNUBOARD_VER', '5.4.2.9');
-define('G5_YOUNGCART_VER', '5.4.2.9');
+define('G5_GNUBOARD_VER', '5.4.3');
+define('G5_YOUNGCART_VER', '5.4.3');
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define('_GNUBOARD_', true);
diff --git a/lib/Cache/FileCache.class.php b/lib/Cache/FileCache.class.php
index 529312a5f..e220f6282 100644
--- a/lib/Cache/FileCache.class.php
+++ b/lib/Cache/FileCache.class.php
@@ -33,9 +33,9 @@ class FileCache
*
* @param string $id
*/
- public function get($id)
+ public function get($id, $expired_time=0)
{
- $data = $this->_get($id);
+ $data = $this->_get($id, $expired_time);
return is_array($data) ? $data['data'] : FALSE;
}
@@ -59,7 +59,7 @@ class FileCache
}
- protected function _get($id)
+ protected function _get($id, $expired_time=0)
{
$cache_file_path = $this->get_cache_file_path($id);
@@ -68,20 +68,27 @@ class FileCache
return FALSE;
}
+ $server_time = defined('G5_SERVER_TIME') ? G5_SERVER_TIME : time();
+
try{
$file_contents = file_get_contents($cache_file_path);
$file_ex = explode("\n\n", $file_contents);
$data = unserialize(base64_decode($file_ex[1]));
} catch(Exception $e){
- $data = array('ttl'=>1, 'time'=>time() - 1000);
+ $data = array('ttl'=>1, 'time'=> $server_time - 1000);
}
-
- if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl'])
+
+ if ($data['ttl'] > 0 && $server_time > $data['time'] + $data['ttl'])
{
unlink( $cache_file_path );
return FALSE;
}
+ if ($data['time'] && $expired_time && $data['time'] < ($server_time - $expired_time)){
+ unlink( $cache_file_path );
+ return FALSE;
+ }
+
return $data;
}
diff --git a/lib/cache.lib.php b/lib/cache.lib.php
index b2806d6f7..07b640148 100644
--- a/lib/cache.lib.php
+++ b/lib/cache.lib.php
@@ -52,10 +52,10 @@ function g5_set_cache($key, $save_data, $ttl = null){
}
}
-function g5_get_cache($key){
+function g5_get_cache($key, $expired_time=0){
if( $cache = get_cachemanage_instance() ){
- return $cache->get($key);
+ return $cache->get($key, $expired_time);
}
return false;
diff --git a/lib/common.lib.php b/lib/common.lib.php
index e8602d980..d8842e682 100644
--- a/lib/common.lib.php
+++ b/lib/common.lib.php
@@ -754,6 +754,7 @@ function get_group($gr_id, $is_cache=false)
static $cache = array();
$gr_id = preg_replace('/[^a-z0-9_]/i', '', $gr_id);
+ $cache = run_replace('get_group_db_cache', $cache, $gr_id, $is_cache);
$key = md5($gr_id);
if( $is_cache && isset($cache[$key]) ){
@@ -1605,15 +1606,19 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
}
}
+ $end_time = $is_debug ? get_microtime() : 0;
+
if($result && $is_debug) {
// 여기에 실행한 sql문을 화면에 표시하는 로직 넣기
$g5_debug['sql'][] = array(
'sql' => $sql,
'start_time' => $start_time,
- 'end_time' => get_microtime(),
+ 'end_time' => $end_time,
);
}
+ run_event('sql_query_after', $result, $sql, $start_time, $end_time);
+
return $result;
}
diff --git a/lib/get_data.lib.php b/lib/get_data.lib.php
index cfa53a81f..430b69d06 100644
--- a/lib/get_data.lib.php
+++ b/lib/get_data.lib.php
@@ -70,11 +70,10 @@ function get_board_db($bo_table, $is_cache=false){
static $cache = array();
+ $bo_table = preg_replace('/[^a-z0-9_]/i', '', $bo_table);
$cache = run_replace('get_board_db_cache', $cache, $bo_table, $is_cache);
-
$key = md5($bo_table);
- $bo_table = preg_replace('/[^a-z0-9_]/i', '', $bo_table);
if( $is_cache && isset($cache[$key]) ){
return $cache[$key];
}
diff --git a/lib/latest.lib.php b/lib/latest.lib.php
index f374ae899..4d60a0b0a 100644
--- a/lib/latest.lib.php
+++ b/lib/latest.lib.php
@@ -9,6 +9,8 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
global $g5;
if (!$skin_dir) $skin_dir = 'basic';
+
+ $time_unit = 3600; // 1시간으로 고정
if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
if (G5_IS_MOBILE) {
@@ -35,7 +37,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
if(G5_USE_CACHE) {
$cache_file_name = "latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}-".g5_cache_secret_key();
- $caches = g5_get_cache($cache_file_name);
+ $caches = g5_get_cache($cache_file_name, $time_unit * $cache_time);
$cache_list = isset($caches['list']) ? $caches['list'] : array();
g5_latest_cache_data($bo_table, $cache_list);
}
@@ -90,7 +92,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
'bo_subject' => sql_escape_string($bo_subject),
);
- g5_set_cache($cache_file_name, $caches, 3600 * $cache_time);
+ g5_set_cache($cache_file_name, $caches, $time_unit * $cache_time);
}
} else {
$list = $cache_list;
diff --git a/lib/uri.lib.php b/lib/uri.lib.php
index 6221fc865..ed889d711 100644
--- a/lib/uri.lib.php
+++ b/lib/uri.lib.php
@@ -16,13 +16,13 @@ function get_pretty_url($folder, $no='', $query_string='', $action='')
return $url;
}
- // use shortten url
- if($config['cf_bbs_rewrite']) {
-
+ // use shortten url
+ if($config['cf_bbs_rewrite']) {
+
$segments[0] = G5_URL;
if( $folder === 'content' && $no ){ // 내용관리
-
+
$segments[1] = $folder;
if( $config['cf_bbs_rewrite'] > 1 ){
@@ -36,32 +36,32 @@ function get_pretty_url($folder, $no='', $query_string='', $action='')
} else if(in_array($folder, $boards)) { // 게시판
- $segments[1] = $folder;
+ $segments[1] = $folder;
- if($no) {
+ if($no) {
if( $config['cf_bbs_rewrite'] > 1 ){
- $get_write = get_write( $g5['write_prefix'].$folder, $no , true);
-
- $segments[2] = $get_write['wr_seo_title'] ? urlencode($get_write['wr_seo_title']).'/' : urlencode($no);
+ $get_write = get_write( $g5['write_prefix'].$folder, $no , true);
+
+ $segments[2] = $get_write['wr_seo_title'] ? urlencode($get_write['wr_seo_title']).'/' : urlencode($no);
} else {
$segments[2] = urlencode($no);
}
- } else if($action) {
+ } else if($action) {
$segments[2] = urlencode($action);
}
- } else {
+ } else {
$segments[1] = $folder;
- if($no) {
- $no_array = explode("=", $no);
- $no_value = end($no_array);
+ if($no) {
+ $no_array = explode("=", $no);
+ $no_value = end($no_array);
$segments[2] = urlencode($no_value);
- }
- }
+ }
+ }
if($query_string) {
// If the first character of the query string is '&', replace it with '?'.
@@ -72,33 +72,33 @@ function get_pretty_url($folder, $no='', $query_string='', $action='')
}
}
- } else { // don't use shortten url
- if(in_array($folder, $boards)) {
- $url = G5_BBS_URL. '/board.php?bo_table='. $folder;
- if($no) {
- $url .= '&wr_id='. $no;
- }
- if($query_string) {
+ } else { // don't use shortten url
+ if(in_array($folder, $boards)) {
+ $url = G5_BBS_URL. '/board.php?bo_table='. $folder;
+ if($no) {
+ $url .= '&wr_id='. $no;
+ }
+ if($query_string) {
if(substr($query_string, 0, 1) !== '&') {
$url .= '&';
}
- $url .= $query_string;
- }
- } else {
- $url = G5_BBS_URL. '/'.$folder.'.php';
+ $url .= $query_string;
+ }
+ } else {
+ $url = G5_BBS_URL. '/'.$folder.'.php';
if($no) {
- $url .= ($folder === 'content') ? '?co_id='. $no : '?'. $no;
- }
+ $url .= ($folder === 'content') ? '?co_id='. $no : '?'. $no;
+ }
if($query_string) {
$url .= ($no ? '?' : '&'). $query_string;
- }
- }
+ }
+ }
$segments[0] = $url;
- }
+ }
- return implode('/', $segments).$add_query;
+ return implode('/', $segments).$add_query;
}
function short_url_clean($string_url, $add_qry=''){
@@ -110,7 +110,7 @@ function short_url_clean($string_url, $add_qry=''){
$string_url = str_replace('&', '&', $string_url);
$url=parse_url($string_url);
$page_name = basename($url['path'],".php");
-
+
$array_page_names = run_replace('url_clean_page_names', array('board', 'write', 'content'));
if( stripos(preg_replace('/^https?:/i', '', $string_url), preg_replace('/^https?:/i', '', G5_BBS_URL)) === false || ! in_array($page_name, $array_page_names) ){ //게시판이 아니면 리턴
@@ -119,19 +119,19 @@ function short_url_clean($string_url, $add_qry=''){
$return_url = '';
parse_str($url['query'], $vars);
-
- /*
+
+ /*
// 예) Array ( [scheme] => http [host] => sir.kr [path] => /bbs/board.php [query] => wr_id=1110870&bo_table=cm_free&cpage=1 [fragment] => c_1110946 )
- foreach($vars as $k => $v) { $page_name .= "/".$v; }
- */
-
+ foreach($vars as $k => $v) { $page_name .= "/".$v; }
+ */
+
if( $page_name === 'write' ){
$vars['action'] = 'write';
$allow_param_keys = array('bo_table'=>'', 'action'=>'');
} else if( $page_name === 'content' ){
- $vars['action'] = 'content';
- $allow_param_keys = array('action'=>'', 'co_id'=>'');
- } else {
+ $vars['action'] = 'content';
+ $allow_param_keys = array('action'=>'', 'co_id'=>'');
+ } else {
$allow_param_keys = array('bo_table'=>'', 'wr_id'=>'');
}
@@ -145,7 +145,7 @@ function short_url_clean($string_url, $add_qry=''){
if( $config['cf_bbs_rewrite'] > 1 && $page_name === 'board' && (isset($s['wr_id']) && $s['wr_id']) && (isset($s['bo_table']) && $s['bo_table']) ){
$get_write = get_write( get_write_table_name($s['bo_table']), $s['wr_id'], true);
-
+
if( $get_write['wr_seo_title'] ){
unset($s['wr_id']);
$s['wr_seo_title'] = urlencode($get_write['wr_seo_title']).'/';
@@ -175,8 +175,8 @@ function short_url_clean($string_url, $add_qry=''){
if( $add_qry ){
$add_param .= $add_param ? '&'.$add_qry : '?'.$add_qry;
}
-
- foreach($s as $k => $v) { $return_url .= '/'.$v; }
+
+ foreach($s as $k => $v) { $return_url .= '/'.$v; }
return $host.$return_url.$add_param.$fragment;
}
diff --git a/mobile/skin/board/basic/view.skin.php b/mobile/skin/board/basic/view.skin.php
index 3cd9811ba..1810b6f39 100644
--- a/mobile/skin/board/basic/view.skin.php
+++ b/mobile/skin/board/basic/view.skin.php
@@ -159,7 +159,7 @@ jQuery(function($){
-
+
관련링크
diff --git a/mobile/skin/board/gallery/view.skin.php b/mobile/skin/board/gallery/view.skin.php
index edaba07a1..e003a7faf 100644
--- a/mobile/skin/board/gallery/view.skin.php
+++ b/mobile/skin/board/gallery/view.skin.php
@@ -161,7 +161,7 @@ jQuery(function($){
-
+
관련링크
diff --git a/mobile/skin/social/social_login.skin.php b/mobile/skin/social/social_login.skin.php
index e7af20ad9..0e2871875 100644
--- a/mobile/skin/social/social_login.skin.php
+++ b/mobile/skin/social/social_login.skin.php
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
}
-add_stylesheet('', 10);
+add_stylesheet('', 10);
?>
diff --git a/mobile/skin/social/social_outlogin.skin.1.php b/mobile/skin/social/social_outlogin.skin.1.php
index d5e53f562..039fee2a0 100644
--- a/mobile/skin/social/social_outlogin.skin.1.php
+++ b/mobile/skin/social/social_outlogin.skin.1.php
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
}
-add_stylesheet(' ', 10);
+add_stylesheet(' ', 10);
?>
diff --git a/mobile/skin/social/social_register.skin.php b/mobile/skin/social/social_register.skin.php
index c07a92c15..5d8048038 100644
--- a/mobile/skin/social/social_register.skin.php
+++ b/mobile/skin/social/social_register.skin.php
@@ -15,7 +15,7 @@ if( G5_SOCIAL_USE_POPUP ) {
}
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
-add_stylesheet(' ', 10);
+add_stylesheet(' ', 10);
?>
diff --git a/mobile/skin/social/social_register_member.skin.php b/mobile/skin/social/social_register_member.skin.php
index e0a150434..e8e88948b 100644
--- a/mobile/skin/social/social_register_member.skin.php
+++ b/mobile/skin/social/social_register_member.skin.php
@@ -8,7 +8,7 @@ if( ! $config['cf_social_login_use']) { //소셜 로그인을 사용하지
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('', 11);
add_stylesheet('', 12);
-add_stylesheet('', 13);
+add_stylesheet('', 13);
add_javascript('', 10);
$email_msg = $is_exists_email ? '등록할 이메일이 중복되었습니다.다른 이메일을 입력해 주세요.' : '';
diff --git a/mobile/skin/social/social_u_register_form.skin.php b/mobile/skin/social/social_u_register_form.skin.php
index ddf329627..3bd5ac0fe 100644
--- a/mobile/skin/social/social_u_register_form.skin.php
+++ b/mobile/skin/social/social_u_register_form.skin.php
@@ -9,7 +9,7 @@ $socials = social_get_provider_service_name('', 'all');
$session_id = session_id();
-add_stylesheet('', 10);
+add_stylesheet('', 10);
?>
diff --git a/plugin/debugbar/debugbar.php b/plugin/debugbar/debugbar.php
index f93cf3be5..fce0c8aad 100644
--- a/plugin/debugbar/debugbar.php
+++ b/plugin/debugbar/debugbar.php
@@ -118,13 +118,30 @@ add_stylesheet('>('.$count.')'; ?> |
-
+
|
|
|
@@ -194,13 +211,30 @@ add_stylesheet('>('.$count.')'; ?>
-
+
|
|
|
diff --git a/skin/board/basic/view.skin.php b/skin/board/basic/view.skin.php
index 3b67931d0..56cf28a20 100644
--- a/skin/board/basic/view.skin.php
+++ b/skin/board/basic/view.skin.php
@@ -176,7 +176,7 @@ add_stylesheet('', 0
-
+
관련링크
diff --git a/skin/board/gallery/view.skin.php b/skin/board/gallery/view.skin.php
index 358c6d844..c5af84d3f 100644
--- a/skin/board/gallery/view.skin.php
+++ b/skin/board/gallery/view.skin.php
@@ -176,7 +176,7 @@ add_stylesheet('', 0
-
+
관련링크
diff --git a/skin/social/social_login.skin.php b/skin/social/social_login.skin.php
index e81d1393a..f93fd403f 100644
--- a/skin/social/social_login.skin.php
+++ b/skin/social/social_login.skin.php
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
}
-add_stylesheet('', 10);
+add_stylesheet('', 10);
?>
diff --git a/skin/social/social_outlogin.skin.1.php b/skin/social/social_outlogin.skin.1.php
index 228cd80d3..a6a55a2d2 100644
--- a/skin/social/social_outlogin.skin.1.php
+++ b/skin/social/social_outlogin.skin.1.php
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
}
-add_stylesheet('
', 10);
+add_stylesheet('
', 10);
?>
diff --git a/skin/social/social_register.skin.php b/skin/social/social_register.skin.php
index 0a26c6e88..f2beab376 100644
--- a/skin/social/social_register.skin.php
+++ b/skin/social/social_register.skin.php
@@ -15,7 +15,7 @@ if( G5_SOCIAL_USE_POPUP ) {
}
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
-add_stylesheet('
', 10);
+add_stylesheet('
', 10);
?>
diff --git a/skin/social/social_register_member.skin.php b/skin/social/social_register_member.skin.php
index 13fd8ee27..8885783ed 100644
--- a/skin/social/social_register_member.skin.php
+++ b/skin/social/social_register_member.skin.php
@@ -8,7 +8,7 @@ if( ! $config['cf_social_login_use']) { //소셜 로그인을 사용하지
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('', 11);
add_stylesheet('', 12);
-add_stylesheet('', 13);
+add_stylesheet('', 13);
add_javascript('', 10);
$email_msg = $is_exists_email ? '등록할 이메일이 중복되었습니다.다른 이메일을 입력해 주세요.' : '';
diff --git a/skin/social/social_u_register_form.skin.php b/skin/social/social_u_register_form.skin.php
index 2c036b1c9..e361c3aba 100644
--- a/skin/social/social_u_register_form.skin.php
+++ b/skin/social/social_u_register_form.skin.php
@@ -9,7 +9,7 @@ $socials = social_get_provider_service_name('', 'all');
$session_id = session_id();
-add_stylesheet('', 10);
+add_stylesheet('', 10);
?>
diff --git a/theme/basic/mobile/skin/board/basic/view.skin.php b/theme/basic/mobile/skin/board/basic/view.skin.php
index 3cd9811ba..1810b6f39 100644
--- a/theme/basic/mobile/skin/board/basic/view.skin.php
+++ b/theme/basic/mobile/skin/board/basic/view.skin.php
@@ -159,7 +159,7 @@ jQuery(function($){
-
+
관련링크
diff --git a/theme/basic/mobile/skin/board/gallery/view.skin.php b/theme/basic/mobile/skin/board/gallery/view.skin.php
index edaba07a1..e003a7faf 100644
--- a/theme/basic/mobile/skin/board/gallery/view.skin.php
+++ b/theme/basic/mobile/skin/board/gallery/view.skin.php
@@ -161,7 +161,7 @@ jQuery(function($){
-
+
관련링크
diff --git a/theme/basic/skin/board/basic/view.skin.php b/theme/basic/skin/board/basic/view.skin.php
index 3b67931d0..56cf28a20 100644
--- a/theme/basic/skin/board/basic/view.skin.php
+++ b/theme/basic/skin/board/basic/view.skin.php
@@ -176,7 +176,7 @@ add_stylesheet('', 0
-
+
관련링크
diff --git a/theme/basic/skin/board/gallery/view.skin.php b/theme/basic/skin/board/gallery/view.skin.php
index 358c6d844..c5af84d3f 100644
--- a/theme/basic/skin/board/gallery/view.skin.php
+++ b/theme/basic/skin/board/gallery/view.skin.php
@@ -176,7 +176,7 @@ add_stylesheet('', 0
-
+