';
$nl = PHP_EOL;
}
diff --git a/common.php b/common.php
index 82847dfc6..a1c2fa1a1 100644
--- a/common.php
+++ b/common.php
@@ -489,4 +489,6 @@ header('Last-Modified: ' . $gmnow);
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header('Pragma: no-cache'); // HTTP/1.0
+
+$html_process = new html_process();
?>
\ No newline at end of file
diff --git a/lib/common.lib.php b/lib/common.lib.php
index 29f14485c..e22a53413 100644
--- a/lib/common.lib.php
+++ b/lib/common.lib.php
@@ -2170,47 +2170,92 @@ if (!function_exists('file_put_contents')) {
// HTML 마지막 처리
function html_end()
{
- global $config, $g5, $member;
+ global $html_process;
- // 현재접속자 처리
- $tmp_sql = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";
- $tmp_row = sql_fetch($tmp_sql);
-
- if ($tmp_row['cnt']) {
- $tmp_sql = " update {$g5['login_table']} set mb_id = '{$member['mb_id']}', lo_datetime = '".G5_TIME_YMDHIS."', lo_location = '{$g5['lo_location']}', lo_url = '{$g5['lo_url']}' where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";
- sql_query($tmp_sql, FALSE);
- } else {
- $tmp_sql = " insert into {$g5['login_table']} ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '{$_SERVER['REMOTE_ADDR']}', '{$member['mb_id']}', '".G5_TIME_YMDHIS."', '{$g5['lo_location']}', '{$g5['lo_url']}' ) ";
- sql_query($tmp_sql, FALSE);
-
- // 시간이 지난 접속은 삭제한다
- sql_query(" delete from {$g5['login_table']} where lo_datetime < '".date("Y-m-d H:i:s", G5_SERVER_TIME - (60 * $config['cf_login_minutes']))."' ");
-
- // 부담(overhead)이 있다면 테이블 최적화
- //$row = sql_fetch(" SHOW TABLE STATUS FROM `$mysql_db` LIKE '$g5['login_table']' ");
- //if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE $g5['login_table'] ");
- }
-
- // 버퍼의 내용에서 body 태그 중간의 외부 css 파일을 CAPTURE 하여 head 태그로 이동시켜준다.
- $buffer = ob_get_contents();
- ob_end_clean();
- preg_match('#(.*)#is', $buffer, $bodys);
- preg_match_all('/[\n\r]?(]+>).*()?/i', $bodys[0], $links);
- $stylesheet = '';
- $links[0] = array_unique($links[0]);
- foreach ($links[0] as $key=>$link) {
- //$link = PHP_EOL.$links[0][$i];
- $stylesheet .= $link;
- $buffer = preg_replace('#'.$link.'#', '', $buffer);
- }
- /*
-
-
- 밑으로 스킨의 스타일시트가 위치하도록 하게 한다.
- */
- return preg_replace('#([^<]*]+>)#', "$1$stylesheet", $buffer);
+ return $html_process->run();
}
+function add_stylesheet($stylesheet, $order=0)
+{
+ global $html_process;
+
+ if(trim($stylesheet))
+ $html_process->merge_stylesheet($stylesheet, $order);
+}
+
+class html_process {
+ protected $css = array();
+
+ function merge_stylesheet($stylesheet, $order)
+ {
+ $links = $this->css;
+ $is_merge = true;
+
+ foreach($links as $link) {
+ if($link[1] == $stylesheet) {
+ $is_merge = false;
+ break;
+ }
+ }
+
+ if($is_merge)
+ $this->css[] = array($order, $stylesheet);
+ }
+
+ function run()
+ {
+ global $config, $g5, $member;
+
+ // 현재접속자 처리
+ $tmp_sql = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";
+ $tmp_row = sql_fetch($tmp_sql);
+
+ if ($tmp_row['cnt']) {
+ $tmp_sql = " update {$g5['login_table']} set mb_id = '{$member['mb_id']}', lo_datetime = '".G5_TIME_YMDHIS."', lo_location = '{$g5['lo_location']}', lo_url = '{$g5['lo_url']}' where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";
+ sql_query($tmp_sql, FALSE);
+ } else {
+ $tmp_sql = " insert into {$g5['login_table']} ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '{$_SERVER['REMOTE_ADDR']}', '{$member['mb_id']}', '".G5_TIME_YMDHIS."', '{$g5['lo_location']}', '{$g5['lo_url']}' ) ";
+ sql_query($tmp_sql, FALSE);
+
+ // 시간이 지난 접속은 삭제한다
+ sql_query(" delete from {$g5['login_table']} where lo_datetime < '".date("Y-m-d H:i:s", G5_SERVER_TIME - (60 * $config['cf_login_minutes']))."' ");
+
+ // 부담(overhead)이 있다면 테이블 최적화
+ //$row = sql_fetch(" SHOW TABLE STATUS FROM `$mysql_db` LIKE '$g5['login_table']' ");
+ //if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE $g5['login_table'] ");
+ }
+
+ $buffer = ob_get_contents();
+ ob_end_clean();
+
+ $stylesheet = '';
+ $links = $this->css;
+
+ if(!empty($links)) {
+ foreach ($links as $key => $row) {
+ $order[$key] = $row[0];
+ $index[$key] = $key;
+ $style[$key] = $row[1];
+ }
+
+ array_multisort($order, SORT_ASC, $index, SORT_ASC, $links);
+
+ foreach($links as $link) {
+ if(!trim($link[1]))
+ continue;
+
+ $stylesheet .= PHP_EOL.$link[1];
+ }
+ }
+
+ /*
+
+
+ 밑으로 스킨의 스타일시트가 위치하도록 하게 한다.
+ */
+ return preg_replace('#([^<]*]+>)#', "$1$stylesheet", $buffer);
+ }
+}
// 휴대폰번호의 숫자만 취한 후 중간에 하이픈(-)을 넣는다.
function hyphen_hp_number($hp)
diff --git a/mobile/skin/board/basic/list.skin.php b/mobile/skin/board/basic/list.skin.php
index 7d2d690aa..5b72909c1 100644
--- a/mobile/skin/board/basic/list.skin.php
+++ b/mobile/skin/board/basic/list.skin.php
@@ -7,9 +7,10 @@ $colspan = 5;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
-?>
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
목록
diff --git a/mobile/skin/board/basic/view.skin.php b/mobile/skin/board/basic/view.skin.php
index 891d13005..fd6192049 100644
--- a/mobile/skin/board/basic/view.skin.php
+++ b/mobile/skin/board/basic/view.skin.php
@@ -1,9 +1,11 @@
', 0);
?>
-
diff --git a/mobile/skin/board/basic/write.skin.php b/mobile/skin/board/basic/write.skin.php
index da1589e9b..b15f921b7 100644
--- a/mobile/skin/board/basic/write.skin.php
+++ b/mobile/skin/board/basic/write.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/connect/basic/connect.skin.php b/mobile/skin/connect/basic/connect.skin.php
index c74b4f8ef..55849443c 100644
--- a/mobile/skin/connect/basic/connect.skin.php
+++ b/mobile/skin/connect/basic/connect.skin.php
@@ -1,8 +1,9 @@
', 0);
?>
-
-
diff --git a/mobile/skin/connect/basic/current_connect.skin.php b/mobile/skin/connect/basic/current_connect.skin.php
index 344b6f9cc..5d47774b7 100644
--- a/mobile/skin/connect/basic/current_connect.skin.php
+++ b/mobile/skin/connect/basic/current_connect.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/latest/basic/latest.skin.php b/mobile/skin/latest/basic/latest.skin.php
index 373997428..89ac1b4b8 100644
--- a/mobile/skin/latest/basic/latest.skin.php
+++ b/mobile/skin/latest/basic/latest.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/formmail.skin.php b/mobile/skin/member/basic/formmail.skin.php
index e25d4c997..3add8546b 100644
--- a/mobile/skin/member/basic/formmail.skin.php
+++ b/mobile/skin/member/basic/formmail.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
님께 메일보내기
diff --git a/mobile/skin/member/basic/login.skin.php b/mobile/skin/member/basic/login.skin.php
index 3a0ac2d2f..3274b7dd8 100644
--- a/mobile/skin/member/basic/login.skin.php
+++ b/mobile/skin/member/basic/login.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/member_confirm.skin.php b/mobile/skin/member/basic/member_confirm.skin.php
index b792be152..467b801e0 100644
--- a/mobile/skin/member/basic/member_confirm.skin.php
+++ b/mobile/skin/member/basic/member_confirm.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/memo.skin.php b/mobile/skin/member/basic/memo.skin.php
index ece3e6aca..f6cbbb7af 100644
--- a/mobile/skin/member/basic/memo.skin.php
+++ b/mobile/skin/member/basic/memo.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/memo_form.skin.php b/mobile/skin/member/basic/memo_form.skin.php
index 2edb425ef..47d0355f0 100644
--- a/mobile/skin/member/basic/memo_form.skin.php
+++ b/mobile/skin/member/basic/memo_form.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
쪽지보내기
diff --git a/mobile/skin/member/basic/memo_view.skin.php b/mobile/skin/member/basic/memo_view.skin.php
index cca59b368..13e7bc542 100644
--- a/mobile/skin/member/basic/memo_view.skin.php
+++ b/mobile/skin/member/basic/memo_view.skin.php
@@ -9,9 +9,10 @@ else {
$kind_str = "받는";
$kind_date = "보낸";
}
-?>
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/password.skin.php b/mobile/skin/member/basic/password.skin.php
index a92dc1bc6..7a73f21e9 100644
--- a/mobile/skin/member/basic/password.skin.php
+++ b/mobile/skin/member/basic/password.skin.php
@@ -5,9 +5,10 @@ if ($w == 'x') $delete_str = "댓";
if ($w == 'u') $g5['title'] = $delete_str."글 수정";
else if ($w == 'd' || $w == 'x') $g5['title'] = $delete_str."글 삭제";
else $g5['title'] = $g5['title'];
-?>
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/password_lost.skin.php b/mobile/skin/member/basic/password_lost.skin.php
index c710e7c47..a4e1d11ef 100644
--- a/mobile/skin/member/basic/password_lost.skin.php
+++ b/mobile/skin/member/basic/password_lost.skin.php
@@ -1,8 +1,9 @@
+if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
아이디/비밀번호 찾기
diff --git a/mobile/skin/member/basic/profile.skin.php b/mobile/skin/member/basic/profile.skin.php
index a4879270c..0cc8d8d02 100644
--- a/mobile/skin/member/basic/profile.skin.php
+++ b/mobile/skin/member/basic/profile.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
님의 프로필
diff --git a/mobile/skin/member/basic/register.skin.php b/mobile/skin/member/basic/register.skin.php
index 7026c0caa..76069e2df 100644
--- a/mobile/skin/member/basic/register.skin.php
+++ b/mobile/skin/member/basic/register.skin.php
@@ -1,8 +1,9 @@
+if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
@@ -35,7 +36,7 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
diff --git a/mobile/skin/member/basic/register_result.skin.php b/mobile/skin/member/basic/register_result.skin.php
index d7472f2fc..70c88f602 100644
--- a/mobile/skin/member/basic/register_result.skin.php
+++ b/mobile/skin/member/basic/register_result.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/scrap.skin.php b/mobile/skin/member/basic/scrap.skin.php
index b7c3d4fa7..c47e3cd80 100644
--- a/mobile/skin/member/basic/scrap.skin.php
+++ b/mobile/skin/member/basic/scrap.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>
diff --git a/mobile/skin/member/basic/scrap_popin.skin.php b/mobile/skin/member/basic/scrap_popin.skin.php
index 833f1e128..04dfd5fd3 100644
--- a/mobile/skin/member/basic/scrap_popin.skin.php
+++ b/mobile/skin/member/basic/scrap_popin.skin.php
@@ -1,8 +1,9 @@
-
+// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
+add_stylesheet('', 0);
+?>