그누보드4 게시글 관련 자료만 복사하고자 할때 (2017-07-02 수정)
페이지 정보
본문
그누보드4 를 업그레이드할때 디자인 등 새롭게 작업후 최종 게시글 이전하고자 할때
단순 이전이 아닌 리뉴얼의 경우에는 기존 그누보드4를 운영하면서 리뉴얼을 하게 됩니다.
이때 새로운 게시판 및 설정 등을 모두 마무리한후 최종적으로 게시글을 이전하고자 할때 사용합니다.
가급적 게시판 추가되지 않은 상태에서 g4_import.php 를 사용해서 한번에 이전하는 것이 좋습니다.
아래 내용은 부득이한 경우에만 사용하세요
복사 대상은 게시글 , 첨부파일 , 새글 , 추천글 , 스크랩 입니다.
2017-06-30 wr_trackback 필드가 그누보드4에서는 존재했으나, 그누보드5.0b13 부터 삭제되서 이것으로 인한 글 복사에 오류가 확인되었습니다.
그누보드5의 게시판에 wr_trackback 필드를 추가하도록 변경했습니다.
1. 그누보드4 설치 및 운영
2. 그누보드5 설치후 디자인 적용 및 게시판 설치 운영
3. 그누보드5 디자인 및 프로그램 작업 완료
4. 그누보드5 / g4_import.php 실행
회원 및 각종 데이타 복제됨 / 게시판은 이미 생성된 상태이므로 복제 안됨
5. 그누보드4 게시글을 복제하기 위해 아래 과정을 진행
6. 그누보드5 / g4_import_board.php 파일생성
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/connect.lib.php');
include_once(G5_LIB_PATH.'/outlogin.lib.php');
$g5['title'] = '그누보드4 DB 데이터 이전';
include_once(G5_PATH.'/theme/basic/head.sub.php');
//if(get_session('tables_copied') == 'done')
// alert('DB 데이터 변환을 이미 실행하였습니다. 중복 실행시 오류가 발생할 수 있습니다.', G5_URL);
if($is_admin != 'super')
alert('최고관리자로 로그인 후 실행해 주십시오.', G5_URL);
?>
<link rel="stylesheet" href="<?php echo G5_URL; ?>/theme/basic/css/default.css?ver=<?php echo G5_CSS_VER; ?>">
<style>
#g4_import p {padding:0 0 10px;line-height:1.8em}
#g4_import_frm {margin:20px 0 30px;padding:30px 0;border:1px solid #e9e9e9;background:#f5f8f9;text-align:center}
#g4_import_frm .frm_input {background-color:#fff !important}
#g4_import_frm .btn_submit {padding:0 10px;height:24px}
</style>
<!-- 상단 시작 { -->
<div id="hd">
<div id="hd_wrapper">
<div id="logo">
<a href="<?php echo G5_URL ?>">/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a>
</div>
<ul id="tnb">
<?php if ($is_member) { ?>
<?php if ($is_admin) { ?>
<li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<?php } else { ?>
<li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li>
<li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li>
</ul>
</div>
</div>
<hr>
<div id="wrapper">
<div id="container">
<div id="container_title"><?php echo $g5['title'] ?></div>
<div id="g4_import">
<p>
게시판 생성후 그룹과 게시글 자료만 복사하기 위해 실행합니다.<br>
</p>
<p>프로그램을 실행하시려면 그누보드4의 config.php 파일 경로를 입력하신 후 확인을 클릭해 주십시오.</p>
<form name="fimport" method="post" action="./g4_import_board_run.php" onsubmit="return fimport_submit(this);">
<div id="g4_import_frm">
<label for="file_path">config.php 파일 경로</label>
<input type="text" name="file_path" id="file_path" required class="frm_input required">
<input type="submit" value="확인" class="btn_submit">
</div>
</form>
<p>
경로는 그누보드5 설치 루트를 기준으로 그누보드4의 config.php 파일의 상대경로입니다.<br>
예를 들어 그누보드4를 웹루트에 설치하셨고 그누보드5를 g5라는 하위 폴더에 설치하셨다면 입력하실 경로는 ../config.php 입니다.
</p>
</div>
<script>
function fimport_submit(f)
{
return confirm('그누보드4의 DB 게시글 데이터를 이전하시겠습니까?');
}
</script>
</div>
</div>
<script>
$(function() {
// 폰트 리사이즈 쿠키있으면 실행
font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class"));
});
</script>
<?php include_once(G5_PATH.'/theme/basic/tail.sub.php'); ?>
7. 그누보드5 / g4_import_board_run.php 파일생성
<?php
include_once('./_common.php');
ob_end_clean();
include_once(G5_LIB_PATH.'/connect.lib.php');
include_once(G5_LIB_PATH.'/outlogin.lib.php');
set_time_limit ( 0 );
ini_set('memory_limit', '50M');
$g5['title'] = '그누보드4 DB 데이터 이전';
include_once(G5_PATH.'/theme/basic/head.sub.php');
if(empty($_POST))
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
//if(get_session('tables_copied') == 'done')
// alert('DB 데이터 변환을 이미 실행하였습니다. 중복 실행시 오류가 발생할 수 있습니다.', G5_URL);
if($is_admin != 'super')
alert('최고관리자로 로그인 후 실행해 주십시오.', G5_URL);
$g4_config_file = trim($_POST['file_path']);
if(!$g4_config_file)
alert('config.php 파일의 경로를 입력해 주십시오.');
$g4_config_file = preg_replace('#/config.php$#i', '', $g4_config_file).'/config.php';
if(!is_file($g4_config_file))
alert('입력하신 경로에 config.php 파일이 존재하지 않습니다.');
$is_euckr = false;
?>
<script>
// 새로고침 방지
function noRefresh()
{
/* CTRL + N키 막음. */
if ((event.keyCode == 78) && (event.ctrlKey == true))
{
event.keyCode = 0;
return false;
}
/* F5 번키 막음. */
if(event.keyCode == 116)
{
event.keyCode = 0;
return false;
}
}
document.onkeydown = noRefresh ;
</script>
<link rel="stylesheet" href="<?php echo G5_URL; ?>/theme/basic/css/default.css?ver=<?php echo G5_CSS_VER; ?>">
<style>
#g4_import_run {}
#g4_import_run ol {margin: 0;padding: 0 0 0 25px;border: 1px solid #E9E9E9;border-bottom: 0;background: #f5f8f9;list-style:none;zoom:1}
#g4_import_run li {padding:7px 10px;border-bottom:1px solid #e9e9e9}
#g4_import_run #run_msg {padding:30px 0;text-align:center}
</style>
<!-- 상단 시작 { -->
<div id="hd">
<div id="hd_wrapper">
<div id="logo">
<a href="<?php echo G5_URL ?>">/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a>
</div>
<ul id="tnb">
<?php if ($is_member) { ?>
<?php if ($is_admin) { ?>
<li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<?php } else { ?>
<li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li>
<li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li>
</ul>
</div>
</div>
<hr>
<div id="wrapper">
<div id="container">
<div id="container_title"><?php echo $g5['title'] ?></div>
<div id="g4_import_run">
<ol>
<?php
flush();
// g4의 confing.php
require($g4_config_file);
if(preg_replace('/[^a-z]/', '', strtolower($g4['charset'])) == 'euckr')
$is_euckr = true;
// group table 복사
$columns = sql_field_names($g5['group_table']);
$sql = " select * from {$g4['group_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['group_table']} SET $sql_common ");
}
echo '<li>group table 복사</li>'.PHP_EOL;
unset($columns);
unset($fiels);
// board 복사
$columns = sql_field_names($g5['board_table']);
$sql = " select * from {$g4['board_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";
$row2 = sql_fetch($sql2);
//if($row2['cnt'])
// continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['board_table']} SET $sql_common ");
//echo "sql = INSERT INTO ".$g5['board_table']." SET ".$sql_common."<br>";
// 게시판 테이블 생성
$bo_table = $row['bo_table'];
$file = file(G5_ADMIN_PATH.'/sql_write.sql');
$sql = implode($file, "\n");
$create_table = $g5['write_prefix'] . $bo_table;
$source = array('/__TABLE_NAME__/', '/;/');
$target = array($create_table, '');
$sql = preg_replace($source, $target, $sql);
// 게시글 초기화
$sql5 = " delete from $create_table ";
$result5 = sql_query($sql5);
// 게시글 복사
//if(sql_query($sql, FALSE)) {
$write_table = $g4['write_prefix'].$bo_table;
$columns2 = sql_field_names($create_table);
$sql3 = " select * from $write_table ";
$result3 = sql_query($sql3);
for($k=0; $row3=sql_fetch_array($result3); $k++) {
if($is_euckr)
$row3 = array_map('iconv_utf8', $row3);
$comma3 = '';
$sql_common3 = '';
foreach($row3 as $key=>$val) {
//if(!in_array($key, $columns2))
// continue;
$sql_common3 .= $comma3 . " $key = '".addslashes($val)."' ";
$comma3 = ',';
}
// wr_trackback 필드 추가
sql_query("alter table $create_table add `wr_trackback` varchar(255) NOT NULL default '' AFTER `wr_link2_hit` ", false);
// 첨부파일개수
$wr_id = $row3['wr_id'];
$sql4 = " select count(*) as cnt from {$g4['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' ";
$row4 = sql_fetch($sql4);
//echo "sql 4 = ". $sql4 ."<br>";
$sql_common3 .= " , wr_file = '{$row4['cnt']}' ";
sql_query(" INSERT INTO $create_table SET $sql_common3 ");
}
echo '<li>'.str_replace(G5_TABLE_PREFIX.'write_', '', $create_table).' 게시글 복사</li>';
//}
}
unset($columns);
unset($fiels);
// 그외 테이블 복사
$tables = array('board_file');
//$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap');
foreach($tables as $table) {
$columns = sql_field_names($g5[$table.'_table']);
$src_table = $g4[$table.'_table'];
$dst_table = $g5[$table.'_table'];
$sql = " select * from $src_table ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
//if(!in_array($key, $columns))
// continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ");
//$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false);
//if(!$result2)
// continue;
}
echo '<li>'.$table.' table 복사</li>'.PHP_EOL;
}
// 그외 테이블 복사
$tables = array('board_new', 'board_good', 'scrap');
//$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap');
foreach($tables as $table) {
$columns = sql_field_names($g5[$table.'_table']);
$src_table = $g4[$table.'_table'];
$dst_table = $g5[$table.'_table'];
$sql = " select * from $src_table ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
//if(!in_array($key, $columns))
// continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
$result2 = sql_query(" delete from $dst_table ");
$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ");
//$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false);
//if(!$result2)
// continue;
}
echo '<li>'.$table.' table 복사</li>'.PHP_EOL;
}
unset($columns);
unset($fiels);
echo '</ol>'.PHP_EOL;
echo '<div id="run_msg">그누보드4 DB 게시글 데이터 이전 완료</div>'.PHP_EOL;
// 실행완료 세션에 기록
set_session('tables_copied', 'done');
?>
</div>
</div>
</div>
<script>
$(function() {
// 폰트 리사이즈 쿠키있으면 실행
font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class"));
});
</script>
<?php include_once(G5_PATH.'/'.G5_THEME_DIR.'/basic/tail.sub.php'); ?>
8. 복제된 게시글의 번호가 - 번호로 보이는 경우에는 게시판 설정의 조회수 초기화를 클릭후 실행하면 정상적으로 변경됩니다.
단순 이전이 아닌 리뉴얼의 경우에는 기존 그누보드4를 운영하면서 리뉴얼을 하게 됩니다.
이때 새로운 게시판 및 설정 등을 모두 마무리한후 최종적으로 게시글을 이전하고자 할때 사용합니다.
가급적 게시판 추가되지 않은 상태에서 g4_import.php 를 사용해서 한번에 이전하는 것이 좋습니다.
아래 내용은 부득이한 경우에만 사용하세요
복사 대상은 게시글 , 첨부파일 , 새글 , 추천글 , 스크랩 입니다.
2017-06-30 wr_trackback 필드가 그누보드4에서는 존재했으나, 그누보드5.0b13 부터 삭제되서 이것으로 인한 글 복사에 오류가 확인되었습니다.
그누보드5의 게시판에 wr_trackback 필드를 추가하도록 변경했습니다.
1. 그누보드4 설치 및 운영
2. 그누보드5 설치후 디자인 적용 및 게시판 설치 운영
3. 그누보드5 디자인 및 프로그램 작업 완료
4. 그누보드5 / g4_import.php 실행
회원 및 각종 데이타 복제됨 / 게시판은 이미 생성된 상태이므로 복제 안됨
5. 그누보드4 게시글을 복제하기 위해 아래 과정을 진행
6. 그누보드5 / g4_import_board.php 파일생성
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/connect.lib.php');
include_once(G5_LIB_PATH.'/outlogin.lib.php');
$g5['title'] = '그누보드4 DB 데이터 이전';
include_once(G5_PATH.'/theme/basic/head.sub.php');
//if(get_session('tables_copied') == 'done')
// alert('DB 데이터 변환을 이미 실행하였습니다. 중복 실행시 오류가 발생할 수 있습니다.', G5_URL);
if($is_admin != 'super')
alert('최고관리자로 로그인 후 실행해 주십시오.', G5_URL);
?>
<link rel="stylesheet" href="<?php echo G5_URL; ?>/theme/basic/css/default.css?ver=<?php echo G5_CSS_VER; ?>">
<style>
#g4_import p {padding:0 0 10px;line-height:1.8em}
#g4_import_frm {margin:20px 0 30px;padding:30px 0;border:1px solid #e9e9e9;background:#f5f8f9;text-align:center}
#g4_import_frm .frm_input {background-color:#fff !important}
#g4_import_frm .btn_submit {padding:0 10px;height:24px}
</style>
<!-- 상단 시작 { -->
<div id="hd">
<div id="hd_wrapper">
<div id="logo">
<a href="<?php echo G5_URL ?>">/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a>
</div>
<ul id="tnb">
<?php if ($is_member) { ?>
<?php if ($is_admin) { ?>
<li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<?php } else { ?>
<li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li>
<li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li>
</ul>
</div>
</div>
<hr>
<div id="wrapper">
<div id="container">
<div id="container_title"><?php echo $g5['title'] ?></div>
<div id="g4_import">
<p>
게시판 생성후 그룹과 게시글 자료만 복사하기 위해 실행합니다.<br>
</p>
<p>프로그램을 실행하시려면 그누보드4의 config.php 파일 경로를 입력하신 후 확인을 클릭해 주십시오.</p>
<form name="fimport" method="post" action="./g4_import_board_run.php" onsubmit="return fimport_submit(this);">
<div id="g4_import_frm">
<label for="file_path">config.php 파일 경로</label>
<input type="text" name="file_path" id="file_path" required class="frm_input required">
<input type="submit" value="확인" class="btn_submit">
</div>
</form>
<p>
경로는 그누보드5 설치 루트를 기준으로 그누보드4의 config.php 파일의 상대경로입니다.<br>
예를 들어 그누보드4를 웹루트에 설치하셨고 그누보드5를 g5라는 하위 폴더에 설치하셨다면 입력하실 경로는 ../config.php 입니다.
</p>
</div>
<script>
function fimport_submit(f)
{
return confirm('그누보드4의 DB 게시글 데이터를 이전하시겠습니까?');
}
</script>
</div>
</div>
<script>
$(function() {
// 폰트 리사이즈 쿠키있으면 실행
font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class"));
});
</script>
<?php include_once(G5_PATH.'/theme/basic/tail.sub.php'); ?>
7. 그누보드5 / g4_import_board_run.php 파일생성
<?php
include_once('./_common.php');
ob_end_clean();
include_once(G5_LIB_PATH.'/connect.lib.php');
include_once(G5_LIB_PATH.'/outlogin.lib.php');
set_time_limit ( 0 );
ini_set('memory_limit', '50M');
$g5['title'] = '그누보드4 DB 데이터 이전';
include_once(G5_PATH.'/theme/basic/head.sub.php');
if(empty($_POST))
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
//if(get_session('tables_copied') == 'done')
// alert('DB 데이터 변환을 이미 실행하였습니다. 중복 실행시 오류가 발생할 수 있습니다.', G5_URL);
if($is_admin != 'super')
alert('최고관리자로 로그인 후 실행해 주십시오.', G5_URL);
$g4_config_file = trim($_POST['file_path']);
if(!$g4_config_file)
alert('config.php 파일의 경로를 입력해 주십시오.');
$g4_config_file = preg_replace('#/config.php$#i', '', $g4_config_file).'/config.php';
if(!is_file($g4_config_file))
alert('입력하신 경로에 config.php 파일이 존재하지 않습니다.');
$is_euckr = false;
?>
<script>
// 새로고침 방지
function noRefresh()
{
/* CTRL + N키 막음. */
if ((event.keyCode == 78) && (event.ctrlKey == true))
{
event.keyCode = 0;
return false;
}
/* F5 번키 막음. */
if(event.keyCode == 116)
{
event.keyCode = 0;
return false;
}
}
document.onkeydown = noRefresh ;
</script>
<link rel="stylesheet" href="<?php echo G5_URL; ?>/theme/basic/css/default.css?ver=<?php echo G5_CSS_VER; ?>">
<style>
#g4_import_run {}
#g4_import_run ol {margin: 0;padding: 0 0 0 25px;border: 1px solid #E9E9E9;border-bottom: 0;background: #f5f8f9;list-style:none;zoom:1}
#g4_import_run li {padding:7px 10px;border-bottom:1px solid #e9e9e9}
#g4_import_run #run_msg {padding:30px 0;text-align:center}
</style>
<!-- 상단 시작 { -->
<div id="hd">
<div id="hd_wrapper">
<div id="logo">
<a href="<?php echo G5_URL ?>">/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a>
</div>
<ul id="tnb">
<?php if ($is_member) { ?>
<?php if ($is_admin) { ?>
<li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<?php } else { ?>
<li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li>
<li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li>
</ul>
</div>
</div>
<hr>
<div id="wrapper">
<div id="container">
<div id="container_title"><?php echo $g5['title'] ?></div>
<div id="g4_import_run">
<ol>
<?php
flush();
// g4의 confing.php
require($g4_config_file);
if(preg_replace('/[^a-z]/', '', strtolower($g4['charset'])) == 'euckr')
$is_euckr = true;
// group table 복사
$columns = sql_field_names($g5['group_table']);
$sql = " select * from {$g4['group_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['group_table']} SET $sql_common ");
}
echo '<li>group table 복사</li>'.PHP_EOL;
unset($columns);
unset($fiels);
// board 복사
$columns = sql_field_names($g5['board_table']);
$sql = " select * from {$g4['board_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";
$row2 = sql_fetch($sql2);
//if($row2['cnt'])
// continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['board_table']} SET $sql_common ");
//echo "sql = INSERT INTO ".$g5['board_table']." SET ".$sql_common."<br>";
// 게시판 테이블 생성
$bo_table = $row['bo_table'];
$file = file(G5_ADMIN_PATH.'/sql_write.sql');
$sql = implode($file, "\n");
$create_table = $g5['write_prefix'] . $bo_table;
$source = array('/__TABLE_NAME__/', '/;/');
$target = array($create_table, '');
$sql = preg_replace($source, $target, $sql);
// 게시글 초기화
$sql5 = " delete from $create_table ";
$result5 = sql_query($sql5);
// 게시글 복사
//if(sql_query($sql, FALSE)) {
$write_table = $g4['write_prefix'].$bo_table;
$columns2 = sql_field_names($create_table);
$sql3 = " select * from $write_table ";
$result3 = sql_query($sql3);
for($k=0; $row3=sql_fetch_array($result3); $k++) {
if($is_euckr)
$row3 = array_map('iconv_utf8', $row3);
$comma3 = '';
$sql_common3 = '';
foreach($row3 as $key=>$val) {
//if(!in_array($key, $columns2))
// continue;
$sql_common3 .= $comma3 . " $key = '".addslashes($val)."' ";
$comma3 = ',';
}
// wr_trackback 필드 추가
sql_query("alter table $create_table add `wr_trackback` varchar(255) NOT NULL default '' AFTER `wr_link2_hit` ", false);
// 첨부파일개수
$wr_id = $row3['wr_id'];
$sql4 = " select count(*) as cnt from {$g4['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' ";
$row4 = sql_fetch($sql4);
//echo "sql 4 = ". $sql4 ."<br>";
$sql_common3 .= " , wr_file = '{$row4['cnt']}' ";
sql_query(" INSERT INTO $create_table SET $sql_common3 ");
}
echo '<li>'.str_replace(G5_TABLE_PREFIX.'write_', '', $create_table).' 게시글 복사</li>';
//}
}
unset($columns);
unset($fiels);
// 그외 테이블 복사
$tables = array('board_file');
//$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap');
foreach($tables as $table) {
$columns = sql_field_names($g5[$table.'_table']);
$src_table = $g4[$table.'_table'];
$dst_table = $g5[$table.'_table'];
$sql = " select * from $src_table ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
//if(!in_array($key, $columns))
// continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ");
//$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false);
//if(!$result2)
// continue;
}
echo '<li>'.$table.' table 복사</li>'.PHP_EOL;
}
// 그외 테이블 복사
$tables = array('board_new', 'board_good', 'scrap');
//$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap');
foreach($tables as $table) {
$columns = sql_field_names($g5[$table.'_table']);
$src_table = $g4[$table.'_table'];
$dst_table = $g5[$table.'_table'];
$sql = " select * from $src_table ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
//if(!in_array($key, $columns))
// continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
$result2 = sql_query(" delete from $dst_table ");
$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ");
//$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false);
//if(!$result2)
// continue;
}
echo '<li>'.$table.' table 복사</li>'.PHP_EOL;
}
unset($columns);
unset($fiels);
echo '</ol>'.PHP_EOL;
echo '<div id="run_msg">그누보드4 DB 게시글 데이터 이전 완료</div>'.PHP_EOL;
// 실행완료 세션에 기록
set_session('tables_copied', 'done');
?>
</div>
</div>
</div>
<script>
$(function() {
// 폰트 리사이즈 쿠키있으면 실행
font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class"));
});
</script>
<?php include_once(G5_PATH.'/'.G5_THEME_DIR.'/basic/tail.sub.php'); ?>
8. 복제된 게시글의 번호가 - 번호로 보이는 경우에는 게시판 설정의 조회수 초기화를 클릭후 실행하면 정상적으로 변경됩니다.
- 이전글텃세 한번 부려봅니다. 18.01.12
- 다음글그누보드 다국어 확장 테마 작업중입니다. 18.01.14
댓글목록
등록된 댓글이 없습니다.