Web/PHP
kimsplus 파일버전 게시판 합치기
aucd29
2013. 9. 26. 21:45
<?php
/***************************************************************************
*
* Date : 2004-06-18
* Copyright : aucd29
* E-mail : aucd29@daum.net
* Type : function
*
* Table Merge
*
***************************************************************************/
//
// 게시판 설치 경로
//
$boardRoot = $_SERVER[DOCUMENT_ROOT].'/board';
//
// 합칠 게시판의 테이블명
//
$aTarget = array(
'cho1',
'cho2',
);
//
// 하나가될 테이블명
//
$newTable = 'edu_s';
$newName = '교육학자료실';
// 절취선 아래는 손댈 것 없을꼽니다. -----------------------------------------------------------------------
function MAKE_TABLE($table,$password,$board_name) {
global $boardRoot;
if(is_dir($boardRoot."/board/table/$table"))
{
echo '이미 변환한 듯합니다. 아니라면 테이블명을 새로 정의해주세요';
exit;
}
mkdir($boardRoot."/board/table/$table", 0777);
mkdir($boardRoot."/board/table/$table/data", 0777);
mkdir($boardRoot."/board/table/$table/upload", 0777);
$fp = fopen($boardRoot."/board/table/$table/board_name.php3", "w");
fwrite($fp, "<?\$BOARD_NAME = \"$board_name\";?>");
fclose($fp);
$fp = fopen($boardRoot."/board/table/$table/list.cgi", "w");
fclose($fp);
$fp = fopen($boardRoot."/board/table/$table/notice.cgi", "w");
fclose($fp);
$CREATED_DATE = date("Y-m-d");
$fp = fopen($boardRoot."/board/table/$table/date.php3", "w");
fwrite($fp, "<?\$CREATED_DATE = \"$CREATED_DATE\";?>");
fclose($fp);
$fp = fopen($boardRoot."/board/table/$table/board_pass.php3", "w");
fwrite($fp, "<?\$BOARD_PASS = \"$password\";?>");
fclose($fp);
copy($boardRoot."/admin/var/var1.php3", $boardRoot."/board/table/$table/var1.php3");
copy($boardRoot."/admin/var/var2.php3", $boardRoot."/board/table/$table/var2.php3");
copy($boardRoot."/admin/var/var3.php3", $boardRoot."/board/table/$table/var3.php3");
copy($boardRoot."/admin/var/var4.php3", $boardRoot."/board/table/$table/var4.php3");
copy($boardRoot."/admin/var/var5.php3", $boardRoot."/board/table/$table/var5.php3");
copy($boardRoot."/admin/var/var6.php3", $boardRoot."/board/table/$table/var6.php3");
}
function upload_copy($table, $new) // 중복되는 파일은 할수 없다 지우자.
{
global $boardRoot;
$upload = $boardRoot.'/board/table/'.$table.'/upload';
$new_u = $boardRoot.'/board/table/'.$new.'/upload';
$objDir = dir($upload);
while (false !== ($data = $objDir->read()))
{
if($data != '.' && $data != '..')
{
copy($upload.'/'.$data, $new_u.'/'.$data);
//echo "$upload/$data, $new_u/$data<br>";
}
}
$objDir->close();
}
function mergeTable($newTable, $newName, &$aTarget)
{
global $boardRoot;
require $boardRoot.'/config/mkpass.php3';
MAKE_TABLE($newTable,$ROOT_PASS,$newName);
foreach($aTarget as $index => $value)
{
$v = trim($value);
// read list.cgi
$list[$v] = file($boardRoot.'/board/table/'.$v.'/list.cgi');
upload_copy($v, $newTable);
}
foreach($list as $index => $value)
{
foreach($value as $i => $v)
{
$v = trim($v);
$aReadCgi = file($boardRoot."/board/table/$index/data/$v.cgi");
$aExpData = explode('|', $aReadCgi[0]);
$remove = array(' ','[',']','-',':');
$aExpData[8] = str_replace($remove,'',$aExpData[8]);
$new_list[] = $aExpData[8].'|'.$index.'|'.$v;
}
}
sort($new_list);
$newFilename=1;
foreach($new_list as $index => $value)
{
$value=trim($value);
if($index!=0)
{
if(!eregi('-',$value))
{
$newFilename++;
}
}
// num파일
$data = explode('|', $value);
if(eregi('-',$data[2])) // 답글이면
{
$appendix2 = explode('-', $data[2]);
$appendix = '-'.$appendix2[2];
}
copy("$boardRoot/board/table/$data[1]/data/$data[2].num","$boardRoot/board/table/$newTable/data/$newFilename$appendix.num");
// cgi파일
$cgi = file("$boardRoot/board/table/$data[1]/data/$data[2].cgi");
$cgi2 = explode('|', $cgi[0]);
$cgi2[0] = $data[2]; // cgi있던 번호를 수정
$cgis = implode('|', $cgi2);
$fp = fopen("$boardRoot/board/table/$newTable/data/$newFilename$appendix.cgi", w);
fwrite($fp, "$cgis");
fclose($fp);
// 댓글
if(is_file("$boardRoot/board/table/$data[1]/data/$data[2].txt"))
{
copy("$boardRoot/board/table/$data[1]/data/$data[2].txt","$boardRoot/board/table/$newTable/data/$newFilename$appendix.txt");
}
$new_list_file[] = $newFilename.$appendix;
unset($appendix);
unset($appendix2);
//echo "$boardRoot/board/table/$data[1]/data/$data[2].num | $boardRoot/board/table/$newTable/data/$newFilename$appendix.num <br>";
}
rsort($new_list_file);
$fp = fopen($boardRoot."/board/table/$newTable/list.cgi", w);
foreach($new_list_file as $index => $value)
{
$v=trim($value);
fwrite($fp, "$v\n");
}
fclose($fp);
/*
echo '<pre>';
print_r($new_list);
echo '</pre>';
*/
}
mergeTable($newTable,$newName,$aTarget);
?>
완료
<br>
게시판 보기 <a href='http://<?php echo $_SERVER[HTTP_HOST]; ?>/board/board.php3?table=<?php echo $newTable;?>' target='_blank'>http://<?php echo $_SERVER[HTTP_HOST]; ?>/board/board.php3?table=<?php echo $newTable;?></a>
/***************************************************************************
*
* Date : 2004-06-18
* Copyright : aucd29
* E-mail : aucd29@daum.net
* Type : function
*
* Table Merge
*
***************************************************************************/
//
// 게시판 설치 경로
//
$boardRoot = $_SERVER[DOCUMENT_ROOT].'/board';
//
// 합칠 게시판의 테이블명
//
$aTarget = array(
'cho1',
'cho2',
);
//
// 하나가될 테이블명
//
$newTable = 'edu_s';
$newName = '교육학자료실';
// 절취선 아래는 손댈 것 없을꼽니다. -----------------------------------------------------------------------
function MAKE_TABLE($table,$password,$board_name) {
global $boardRoot;
if(is_dir($boardRoot."/board/table/$table"))
{
echo '이미 변환한 듯합니다. 아니라면 테이블명을 새로 정의해주세요';
exit;
}
mkdir($boardRoot."/board/table/$table", 0777);
mkdir($boardRoot."/board/table/$table/data", 0777);
mkdir($boardRoot."/board/table/$table/upload", 0777);
$fp = fopen($boardRoot."/board/table/$table/board_name.php3", "w");
fwrite($fp, "<?\$BOARD_NAME = \"$board_name\";?>");
fclose($fp);
$fp = fopen($boardRoot."/board/table/$table/list.cgi", "w");
fclose($fp);
$fp = fopen($boardRoot."/board/table/$table/notice.cgi", "w");
fclose($fp);
$CREATED_DATE = date("Y-m-d");
$fp = fopen($boardRoot."/board/table/$table/date.php3", "w");
fwrite($fp, "<?\$CREATED_DATE = \"$CREATED_DATE\";?>");
fclose($fp);
$fp = fopen($boardRoot."/board/table/$table/board_pass.php3", "w");
fwrite($fp, "<?\$BOARD_PASS = \"$password\";?>");
fclose($fp);
copy($boardRoot."/admin/var/var1.php3", $boardRoot."/board/table/$table/var1.php3");
copy($boardRoot."/admin/var/var2.php3", $boardRoot."/board/table/$table/var2.php3");
copy($boardRoot."/admin/var/var3.php3", $boardRoot."/board/table/$table/var3.php3");
copy($boardRoot."/admin/var/var4.php3", $boardRoot."/board/table/$table/var4.php3");
copy($boardRoot."/admin/var/var5.php3", $boardRoot."/board/table/$table/var5.php3");
copy($boardRoot."/admin/var/var6.php3", $boardRoot."/board/table/$table/var6.php3");
}
function upload_copy($table, $new) // 중복되는 파일은 할수 없다 지우자.
{
global $boardRoot;
$upload = $boardRoot.'/board/table/'.$table.'/upload';
$new_u = $boardRoot.'/board/table/'.$new.'/upload';
$objDir = dir($upload);
while (false !== ($data = $objDir->read()))
{
if($data != '.' && $data != '..')
{
copy($upload.'/'.$data, $new_u.'/'.$data);
//echo "$upload/$data, $new_u/$data<br>";
}
}
$objDir->close();
}
function mergeTable($newTable, $newName, &$aTarget)
{
global $boardRoot;
require $boardRoot.'/config/mkpass.php3';
MAKE_TABLE($newTable,$ROOT_PASS,$newName);
foreach($aTarget as $index => $value)
{
$v = trim($value);
// read list.cgi
$list[$v] = file($boardRoot.'/board/table/'.$v.'/list.cgi');
upload_copy($v, $newTable);
}
foreach($list as $index => $value)
{
foreach($value as $i => $v)
{
$v = trim($v);
$aReadCgi = file($boardRoot."/board/table/$index/data/$v.cgi");
$aExpData = explode('|', $aReadCgi[0]);
$remove = array(' ','[',']','-',':');
$aExpData[8] = str_replace($remove,'',$aExpData[8]);
$new_list[] = $aExpData[8].'|'.$index.'|'.$v;
}
}
sort($new_list);
$newFilename=1;
foreach($new_list as $index => $value)
{
$value=trim($value);
if($index!=0)
{
if(!eregi('-',$value))
{
$newFilename++;
}
}
// num파일
$data = explode('|', $value);
if(eregi('-',$data[2])) // 답글이면
{
$appendix2 = explode('-', $data[2]);
$appendix = '-'.$appendix2[2];
}
copy("$boardRoot/board/table/$data[1]/data/$data[2].num","$boardRoot/board/table/$newTable/data/$newFilename$appendix.num");
// cgi파일
$cgi = file("$boardRoot/board/table/$data[1]/data/$data[2].cgi");
$cgi2 = explode('|', $cgi[0]);
$cgi2[0] = $data[2]; // cgi있던 번호를 수정
$cgis = implode('|', $cgi2);
$fp = fopen("$boardRoot/board/table/$newTable/data/$newFilename$appendix.cgi", w);
fwrite($fp, "$cgis");
fclose($fp);
// 댓글
if(is_file("$boardRoot/board/table/$data[1]/data/$data[2].txt"))
{
copy("$boardRoot/board/table/$data[1]/data/$data[2].txt","$boardRoot/board/table/$newTable/data/$newFilename$appendix.txt");
}
$new_list_file[] = $newFilename.$appendix;
unset($appendix);
unset($appendix2);
//echo "$boardRoot/board/table/$data[1]/data/$data[2].num | $boardRoot/board/table/$newTable/data/$newFilename$appendix.num <br>";
}
rsort($new_list_file);
$fp = fopen($boardRoot."/board/table/$newTable/list.cgi", w);
foreach($new_list_file as $index => $value)
{
$v=trim($value);
fwrite($fp, "$v\n");
}
fclose($fp);
/*
echo '<pre>';
print_r($new_list);
echo '</pre>';
*/
}
mergeTable($newTable,$newName,$aTarget);
?>
완료
<br>
게시판 보기 <a href='http://<?php echo $_SERVER[HTTP_HOST]; ?>/board/board.php3?table=<?php echo $newTable;?>' target='_blank'>http://<?php echo $_SERVER[HTTP_HOST]; ?>/board/board.php3?table=<?php echo $newTable;?></a>