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>