Web/PHP

제로->킴스 컨버트, 변환

aucd29 2013. 9. 26. 21:47
<?php
// +----------------------------------------------------------------------+
// | 2004-01-30 | ZeroBoard -> Kimsplus(file ver) Convert                 |
// +----------------------------------------------------------------------+
// | Authors: aucd29<aucd29@kornet.net>                                 |
// +----------------------------------------------------------------------+

$sTable = array('data2','data3','gongji','kyogaenews'); // 백업할 것
//'kyogaenews','bbsnews','program4'
$objZK = & new zeroKim;

if(is_array($sTable))
{
    foreach($sTable as $index => $value)
    {
        $objZK->select($value);
    }
}
else
{
    $objZK->select($sTable);
}

echo '완료되었습니다.';

class zeroKim
{
    var $sTable;
    var $sID;
    var $aNoticeNo = array();
    var $aList     = array();


    function zeroKim()
    {
        $dbconn = mysql_connect('localhost','kjbbs','kjbbs') or die("DB에 연결할 수 없습니다. 관리자에게 문의 하십시요");
        mysql_select_db('kjbbs',$dbconn);
    }


    // ------------------------------------------------------------------------
    // 디비 선택 해서 가져오기
    // ------------------------------------------------------------------------
    function select($sTable)
    {
        $this->sTable = $sTable;

        if($this->aNoticeNo)
        {
            unset($this->aNoticeNo);
        }

        if($this->aList)
        {
            unset($this->aList);
        }

        $sql = "SELECT * FROM zetyx_board_$this->sTable ORDER BY no DESC";
        $res = mysql_query($sql) or die(mysql_error().$sql);
        while($rs = mysql_fetch_array($res))
        {
            $this->toFile($rs);
        }
    }


    // ------------------------------------------------------------------------
    // 내용을 파일로 생성하기
    // ------------------------------------------------------------------------
    function toFile(&$rs)
    {
        /*

        킴스 보드 파일디비 구조 .cgi

        $UID             = $DAT_V[0];
        $PASS            = $DAT_V[1];
        $NAME            = $DAT_V[2];
        $EMAIL         = $DAT_V[3];
        $URL             = $DAT_V[4];
        $SUBJECT         = stripslashes($DAT_V[5]);
        $REMOTE_ADDR     = $DAT_V[6];
        $HTTP_USER_AGENT = $DAT_V[7];
        $DATE            = $DAT_V[8];
        //$CONTENT     = $DAT_V[9];
        //$HTML         = $DAT_V[10];
        $CATEGORY        = $DAT_V[11];
        $SECRET         = $DAT_V[12];
        $UPLOADFILE     = $DAT_V[13];
        $FILESIZE        = $DAT_V[14];
        $FILELINK        = $DAT_V[15];
        $PREVIEW         = $DAT_V[16];
        $THREAD         = $DAT_V[17];
        $FILESIZE1     = $DAT_V[18];
        $GISU            = $DAT_V[20];
        $IMOTICON        = $DAT_V[21];
        $WW             = $DAT_V[23];
        $rgisu         = $DAT_V[24];


        */


        if(!is_dir("./$this->sTable"))
        {
            @mkdir("./$this->sTable", 0777);
            @mkdir("./$this->sTable/upload", 0777);
            @mkdir("./$this->sTable/data", 0777);
        }

        $date = date("Y-m-d [H:i]", $rs[reg_date]);
        $html = ($rs[use_html]) ? 'br' : 'text';

        if($rs[file_name1])
        {
            $filesize = @filesize("../bbs/$rs[file_name1]");
            @copy("../bbs/$rs[file_name1]", "./$this->sTable/upload/$rs[s_file_name1]");
        }

        if($rs[file_name2])
        {
            $filesize1 = @filesize("../bbs/$rs[file_name2]");
            @copy("../bbs/$rs[file_name2]", "./$this->sTable/upload/$rs[s_file_name2]");
        }

        $sql = "SELECT * FROM zetyx_board_comment_$this->sTable WHERE parent='$rs[no]'";
        $res = mysql_query($sql);
        $nNum = mysql_num_rows($res);
        if(!$res)
        {
            echo '<font color=red style=font-size:9pt>';
            echo mysql_error();
            echo '<br>';
            echo $sql;
            echo '</font>';
            exit;
        }


        // 리플일때 파일명을 변경해주기
        if($rs[depth])
        {
            $sIDtmp = explode('-', $rs[headnum]);
            $sID    = $sIDtmp[1].'-'.date("His",$rs[reg_date]);
        }
        else
        {
            $sID = $rs[no];
        }


        if($nNum)
        {
            // fwrite($fp, "$DATE|$NAME|$COMMENT|$SYKIM|$SUBJECT|$EMAIL|$HOMEPAGE|\n");
            $fp = fopen("./$this->sTable/data/$sID.txt", w);
            $i=0;
            while($rs2 = mysql_fetch_array($res))
            {
                $date = date("m월d일",$rs2[reg_date]);
                fputs($fp,"$date|$rs2[name]|$rs2[memo]|||||\n");
                $i++;
            }
            fclose($fp);
        }


        /*
        *.num 파일

        $HIT    = $NUM_V[0] + 1;
        $REQ    = $NUM_V[1];
        $DOWN = $NUM_V[2];
        $OPINUM = $NUM_V[3];
        */


        $this->aList[$sID] = $sID;

        // ------------------------------------------------------------------------
        // 머릿넘버가 아래숫자보다 크면 공지사항이다.
        // ------------------------------------------------------------------------
        $sIDtmp = explode('-', $rs[headnum]);
        if($sIDtmp[1] >= 2000000000)
        {
            $sNoticeChk = 'Y';
            $this->aNoticeNo[$sID] = $sID;
        }
        else
        {
            $sNoticeChk='';
        }
        
        $memo = nl2br($rs[memo]);
        $memo = str_replace("\r\n","",$memo);

        // ------------------------------------------------------------------------
        // 깊이값이 있으면 그건 댓글이다.
        // ------------------------------------------------------------------------
        if($rs[depth])
        {
            $fp = fopen("./$this->sTable/data/$sID.cgi", w);
            fputs( $fp,"$sID|$rs[password]|$rs[name]|$rs[email]|$rs[homepage]|$rs[subject]|$rs[ip]||$date|$memo|$html|||$rs[s_file_name1]|$filesize|$rs[s_file_name2]|||$filesize1||||$sNoticeChk|");
            fclose($fp);

            $fp = fopen("./$this->sTable/data/$sID.num", w);
            fputs($fp,"$rs[hit]|0|$rs[download1]|$i|");
            fclose($fp);
        }
        else
        {
            $fp = fopen("./$this->sTable/data/$rs[no].cgi", w);
            fputs( $fp,"$rs[no]|$rs[password]|$rs[name]|$rs[email]|$rs[homepage]|$rs[subject]|$rs[ip]||$date|$memo|$html|||$rs[s_file_name1]|$filesize|$rs[s_file_name2]|||$filesize1||||$sNoticeChk|");
            fclose($fp);

            $fp = fopen("./$this->sTable/data/$rs[no].num", w);
            fputs($fp,"$rs[hit]|0|$rs[download1]|$i|");
            fclose($fp);
        }

        if($sID)
        {
            unset($sID);
        }

        if($this->aNoticeNo)
        {
            $this->adminNotice();
        }

        if($this->aList)
        {
            $this->createList();
        }
    }


    // ------------------------------------------------------------------------
    // 공지사항을 체크한다
    // ------------------------------------------------------------------------
    function adminNotice()
    {
        $fp = fopen("./$this->sTable/notice.cgi", w);

        foreach($this->aNoticeNo as $index => $value)
        {
            fputs($fp,"$value\n");
        }
        fclose($fp);
    }

    // ------------------------------------------------------------------------
    // 리스트 파일 생성
    // ------------------------------------------------------------------------
    function createList()
    {
        $fp = fopen("./$this->sTable/list.cgi", w);
        foreach($this->aList as $index => $value)
        {
            fputs($fp,"$value\n");
        }
        fclose($fp);
    }
}
?>