pixmicat - Rev 311

Subversion Repositories:
Rev:
<?php
define("INSTALL_WIZARD_VER", 'Pixmicat! Installation Wizard b060408'); // 版本資訊文字
/*
Pixmicat! : 圖咪貓貼圖版程式
http://pixmicat.openfoundry.org/
版權所有 © 2005-2006 Pixmicat! Development Team

版權聲明:
此程式是基於レッツPHP!<http://php.s3.to/>的gazou.php、
雙葉<http://www.2chan.net>的futaba.php所改寫之衍生著作程式,屬於自由軟體,
以The Clarified Artistic License作為發佈授權條款。
您可以遵照The Clarified Artistic License來自由使用、散播、修改或製成衍生著作。
更詳細的條款及定義請參考隨附"LICENSE"條款副本。

發佈這一程式的目的是希望它有用,但沒有任何擔保,甚至沒有適合特定目的而隱含的擔保。
關於此程式相關的問題請不要詢問レッツPHP!及雙葉。

如果您沒有隨著程式收到一份The Clarified Artistic License副本,
請瀏覽http://pixmicat.openfoundry.org/license/以取得一份。
*/


/* 功能頁面切換 */
$step = isset($_GET['step']) ? $_GET['step'] : '';
wizard_HTMLheader();
wizard_Check(); // 檢查
switch($step){
        case 2:
                wzd_2(); // Step 2
                break;
        case 1:
                wzd_1(); // Step 1
                break;
        default:
                wzd_0Introduction(); // 入口頁面
}
wizard_HTMLfooter();

/* Step 0: 偵測伺服器環境 */
function wzd_0Introduction(){
        $config_type = file_exists('./../config-dist-log.php') ? 'log' : 'mysql'; // 設定檔類型

        $verOK = '<span style="color:blue">符合需求</span>';
        $verFAIL = '<span style="color:red">不符要求</span>';

        $phpver = phpversion(); // PHP版本
        $phpver_result = version_compare($phpver, '4.3.0', '>=') ? $verOK: $verFAIL;
        $gdver = @gd_info(); $gdver = @$gdver['GD Version']; // GD版本
        $gdver_result = $gdver ? $verOK: $verFAIL;
        $pcre_result = extension_loaded('pcre') ? $verOK: $verFAIL;
        $zlib_result = extension_loaded('zlib') ? $verOK: $verFAIL;
        $mysql_result = extension_loaded('mysql') ? $verOK: $verFAIL;
        $writable_root = is_writable('./../'); // 根目錄是否可寫入
        $writable_config = is_writable('./../config-dist-'.$config_type.'.php'); // 設定檔是否可寫入
        echo '<p class="Banner">歡迎您 : Pixmicat! 安裝程式精靈</p>
<div class="quote">

<p class="subBanner">前言</p>
<div class="txtqu">
        本安裝程式將會協助您設定好Pixmicat!的環境,包括執行環境檢測、設定檔修改、設定資料夾結構等等。安裝過程將會分成幾個步驟,有時候可能需要您自行手動修改檔案 / 權限,請也準備好可能的對應動作。<p />
        首先此安裝程式會先偵測您伺服器的執行環境,看看其是否符合Pixmicat!的需求。
</div>

<p class="subBanner">伺服器執行環境檢測</p>
Pixmicat!的需求:
<ul>
        <li>PHP 4.3.0</li>
        <li>GD Version 2.0.28</li>
        <li>PCRE (Perl Compatible Regular Expressions)</li>
        <li>zlib (開啟GZip壓縮的情況下)</li>
        <li>MySQL (使用MySQL版本時)</li>
</ul>
<p />
此伺服器上的偵測結果:
<ul>
        <li>PHP '
.$phpver.' ('.$phpver_result.')</li>
        <li>GD Version '
.$gdver.' ('.$gdver_result.')</li>
        <li>PCRE (Perl Compatible Regular Expressions) ('
.$pcre_result.')</li>
        <li>zlib ('
.$zlib_result.')</li>
        <li>MySQL ('
.$mysql_result.')</li>
</ul>
如有紅色標示「不符要求」,請更新伺服器元件版本或是啟動特定外掛程式。zlib和MySQL如果沒使用則不必理會。

<p class="subBanner">此步驟完成了,下一步呢?</p>
<div class="txtqu">
        下一步驟是協助您修改設定檔。<p />
        如果您是第一次安裝,請將存放Pixmicat!的資料夾之權限設定成777,檔案config-dist-'
.$config_type.'.php設定成666,以便安裝程式後續的設定。如果您是要更新Pixmicat!程式且舊有的config.php還在,請保留它。這樣下一步驟時程式會自動讀取舊記錄檔的設定讓您參考設定。<p />
</div>
檢查結果:
<ul>
        <li>根目錄權限:'
.($writable_root ? 'OK' : 'NG [CHMOD 777]').'</li>
        <li>config-dist-'
.$config_type.'.php權限:'.($writable_config ? 'OK' : 'NG [CHMOD 666]').'</li>
</ul>
'
.($writable_root && $writable_config ? '<a href="?step=1">下一步驟&gt;&gt;</a>' : '').'
</div>
'
;
}

/* Step 1: */
function wzd_1(){
        $config_type = file_exists('./../config-dist-log.php') ? 'log' : 'mysql'; // 設定檔類型
        if(file_exists('./../config.php')) include_once('./../config.php'); // 如果舊設定檔還在的話,引入舊設定
// 定義預設值
if($config_type=='mysql'){ // MySQL版
        @define("MYSQL_SERVER", 'localhost:3306');
        @define("MYSQL_USER", 'futaba');
        @define("MYSQL_PASSWORD", 'futaba');
        @define("MYSQL_DBNAME", 'futabasql');
        @define("SQLLOG", 'imglog');
}else{ // Log版
        @define("LOGFILE", 'img.log');
        @define("TREEFILE", 'tree.log');
}

@define("TIME_ZONE", '+8');
@define("HTTP_UPLOAD_DIFF", 50);

@define("IMG_DIR", 'src/');
@define("THUMB_DIR", 'thumb/');
@define("PHP_SELF2", 'index.htm.utf8');
@define("PHP_EXT", '.htm.utf8');
@define("TITLE", 'Pixmicat!-Log');
@define("HOME", '../');
@define("TOP_LINKS", '');
@define("ADMIN_PASS", 'futaba');
@define("IDSEED", 'id種');

@define("CAP_ENABLE", 1);
@define("CAP_NAME", 'futaba');
@define("CAP_PASS", 'futaba');
@define("CAP_SUFFIX", " ★");
@define("CAP_ISHTML", 1);

@define("USE_THUMB", 1);
@define("USE_FLOATFORM", 1);
@define("USE_SEARCH", 1);
@define("USE_UPSERIES", 1);
@define("RESIMG", 1);
@define("AUTO_LINK", 1);
@define("KILL_INCOMPLETE_UPLOAD", 1);
@define("ALLOW_NONAME", 1);
@define("PROXY_CHECK", 0);
@define("DISP_ID", 2);
@define("CLEAR_SAGE", 0);
@define("USE_QUOTESYSTEM", 0);

@define("MAX_KB", 2000);
@define("STORAGE_LIMIT", 1);
@define("STORAGE_MAX", 30000);
@define("ALLOW_UPLOAD_EXT", 'GIF|JPG|PNG|BMP|SWF');

@define("RENZOKU", 10);
@define("RENZOKU2", 10);

@define("MAX_W", 250);
@define("MAX_H", 250);
@define("MAX_RW", 125);
@define("MAX_RH", 125);
@define("THUMB_Q", 75);

if(!isset($ADDITION_INFO)) $ADDITION_INFO = "";
else $ADDITION_INFO = htmlspecialchars($ADDITION_INFO);
@define("USE_TEMPLATE", 0);
@define("TEMPLATE_FILE", 'inc_futaba.tpl');
@define("PAGE_DEF", 15);
@define("ADMIN_PAGE_DEF", 20);
@define("RE_DEF", 10);
@define("RE_PAGE_DEF", 30);
@define("LOG_MAX", 500);
@define("MAX_RES", 30);
@define("MAX_AGE_TIME", 48);
@define("RE_COL", '#789922');
@define("COMM_MAX", 2000);
@define("BR_CHECK", 0);
@define("STATIC_HTML_UNTIL", -1);
@define("SHOW_IMGWH", 1);
@define("GZIP_COMPRESS_LEVEL", 3);
        echo '<p class="Banner">第一步驟 - 設定檔修改 : Pixmicat! 安裝程式精靈</p>
<div class="quote">

<p class="subBanner">前言</p>
<div class="txtqu">
        接下來第一步驟是設定檔修改。如果您已準備好舊有的config.php,在這個步驟會比較輕鬆。為了讓升級更方便,本安裝程式會將已設定過的設定讀入,您可以在新設定檔內保留原有設定,也可以自由修改。<p />
        如果您是第一次使用也不必擔心,本安裝程式會適當地給您一些建議,甚至給您預設的設定值,未來您也可以藉由參照註解手動修改config.php來重新設定。
</div>

<p class="subBanner">設定檔修改</p>
<form method="post" action="?step=2">
<h3>程式基本設定</h3>
<ul>
        <li>時區設定:<input type="text" name="TIME_ZONE" value="'
.TIME_ZONE.'" size="3"></li>
        <li>HTTP上傳允許誤差值:<input type="text" name="HTTP_UPLOAD_DIFF" value="'
.HTTP_UPLOAD_DIFF.'" size="3"></li>
</ul>
<h3>板面各項細部功能設定</h3>
<ul>
'
;
if($config_type=='mysql'){
        echo '<li>MySQL伺服器之位置:<input type="text" name="MYSQL_SERVER" value="'.MYSQL_SERVER.'" size="30"></li>
<li>MySQL連結使用者名稱:<input type="text" name="MYSQL_USER" value="'
.MYSQL_USER.'" size="20"></li>
<li>MySQL連結使用者密碼:<input type="text" name="MYSQL_PASSWORD" value="'
.MYSQL_PASSWORD.'" size="20"></li>
<li>MySQL連結資料庫名稱:<input type="text" name="MYSQL_DBNAME" value="'
.MYSQL_DBNAME.'" size="20"></li>
<li>記錄資料表名稱:<input type="text" name="SQLLOG" value="'
.SQLLOG.'" size="20"></li>
'
;
}else{
        echo '<li>投稿文字記錄檔檔名:<input type="text" name="LOGFILE" value="'.LOGFILE.'" size="10"></li>
        <li>樹狀結構記錄檔檔名:<input type="text" name="TREEFILE" value="'
.TREEFILE.'" size="10"></li>
'
;
}
        echo '<li>圖片存放目錄:<input type="text" name="IMG_DIR" value="'.IMG_DIR.'" size="5"></li>
        <li>預覽圖存放目錄:<input type="text" name="THUMB_DIR" value="'
.THUMB_DIR.'" size="5"></li>
        <li>入口檔名:<input type="text" name="PHP_SELF2" value="'
.PHP_SELF2.'" size="20"></li>
        <li>第一頁以後生成檔案之副檔名:<input type="text" name="PHP_EXT" value="'
.PHP_EXT.'" size="10"></li>
        <li>網頁標題:<input type="text" name="TITLE" value="'
.TITLE.'" size="20"></li>
        <li>回首頁的連結:<input type="text" name="HOME" value="'
.HOME.'" size="20"></li>
        <li>頁面右上方的額外連結:<input type="text" name="TOP_LINKS" value="'
.htmlspecialchars(TOP_LINKS).'" size="60"></li>
        <li>管理員密碼:<input type="text" name="ADMIN_PASS" value="'
.ADMIN_PASS.'" size="10"></li>
        <li>生成ID之隨機種子:<input type="text" name="IDSEED" value="'
.IDSEED.'" size="10"></li>
</ul>
<h3>管理員キャップ(Cap)設定</h3>
<ul>
        <li>使用管理員キャップ:<input type="text" name="CAP_ENABLE" value="'
.CAP_ENABLE.'" size="1"></li>
        <li>管理員キャップ識別名稱:<input type="text" name="CAP_NAME" value="'
.CAP_NAME.'" size="10"></li>
        <li>管理員キャップ啟動密碼:<input type="text" name="CAP_PASS" value="'
.CAP_PASS.'" size="10"></li>
        <li>管理員キャップ後綴字元:<input type="text" name="CAP_SUFFIX" value="'
.CAP_SUFFIX.'" size="10"></li>
        <li>啟動後內文是否接受HTML標籤:<input type="text" name="CAP_ISHTML" value="'
.CAP_ISHTML.'" size="1"></li>
</ul>
<h3>功能切換</h3>
<ul>
        <li>使用預覽圖機能:<input type="text" name="USE_THUMB" value="'
.USE_THUMB.'" size="1"></li>
        <li>新增文章表單使用自動隱藏:<input type="text" name="USE_FLOATFORM" value="'
.USE_FLOATFORM.'" size="1"></li>
        <li>開放搜尋功能:<input type="text" name="USE_SEARCH" value="'
.USE_SEARCH.'" size="1"></li>
        <li>是否啟用連貼機能:<input type="text" name="USE_UPSERIES" value="'
.USE_UPSERIES.'" size="1"></li>
        <li>回應附加檔案機能:<input type="text" name="RESIMG" value="'
.RESIMG.'" size="1"></li>
        <li>內文URL是否自動作成超連結:<input type="text" name="AUTO_LINK" value="'
.AUTO_LINK.'" size="1"></li>
        <li>自動刪除上傳不完整附加檔案:<input type="text" name="KILL_INCOMPLETE_UPLOAD" value="'
.KILL_INCOMPLETE_UPLOAD.'" size="1"></li>
        <li>是否接受匿名:<input type="text" name="ALLOW_NONAME" value="'
.ALLOW_NONAME.'" size="1"></li>
        <li>限制Proxy寫入:<input type="text" name="PROXY_CHECK" value="'
.PROXY_CHECK.'" size="1"></li>
        <li>顯示ID:<input type="text" name="DISP_ID" value="'
.DISP_ID.'" size="1"></li>
        <li>自動清除E-mail中的「sage」關鍵字:<input type="text" name="CLEAR_SAGE" value="'
.CLEAR_SAGE.'" size="1"></li>
        <li>是否打開引用瀏覽系統:<input type="text" name="USE_QUOTESYSTEM" value="'
.USE_QUOTESYSTEM.'" size="1"></li>
</ul>
<h3>附加檔案限制</h3>
<ul>
        <li>附加檔案上傳容量限制KB:<input type="text" name="MAX_KB" value="'
.MAX_KB.'" size="3"></li>
        <li>附加檔案容量限制功能:<input type="text" name="STORAGE_LIMIT" value="'
.STORAGE_LIMIT.'" size="1"></li>
        <li>附加檔案容量限制上限大小:<input type="text" name="STORAGE_MAX" value="'
.STORAGE_MAX.'" size="3"></li>
        <li>接受之附加檔案副檔名:<input type="text" name="ALLOW_UPLOAD_EXT" value="'
.ALLOW_UPLOAD_EXT.'" size="30"></li>
</ul>
<h3>連續投稿時間限制</h3>
<ul>
        <li>連續投稿間隔秒數:<input type="text" name="RENZOKU" value="'
.RENZOKU.'" size="3"></li>
        <li>連續貼圖間隔秒數:<input type="text" name="RENZOKU2" value="'
.RENZOKU2.'" size="3"></li>
</ul>
<h3>預覽圖片相關限制</h3>
<ul>
        <li>討論串本文預覽圖片寬度:<input type="text" name="MAX_W" value="'
.MAX_W.'" size="3"></li>
        <li>討論串本文預覽圖片高度:<input type="text" name="MAX_H" value="'
.MAX_H.'" size="3"></li>
        <li>討論串回應預覽圖片寬度:<input type="text" name="MAX_RW" value="'
.MAX_RW.'" size="3"></li>
        <li>討論串回應預覽圖片高度:<input type="text" name="MAX_RH" value="'
.MAX_RH.'" size="3"></li>
        <li>預覽圖片之品質:<input type="text" name="THUMB_Q" value="'
.THUMB_Q.'" size="3"></li>
</ul>
<h3>外觀設定</h3>
<ul>
        <li>表單下額外文字:<input type="text" name="ADDITION_INFO" value="'
.$ADDITION_INFO.'" size="60"></li>
        <li>是否使用樣板:<input type="text" name="USE_TEMPLATE" value="'
.USE_TEMPLATE.'" size="1"></li>
        <li>樣板位置:<input type="text" name="TEMPLATE_FILE" value="'
.TEMPLATE_FILE.'" size="15"></li>
        <li>一頁顯示幾篇討論串:<input type="text" name="PAGE_DEF" value="'
.PAGE_DEF.'" size="3"></li>
        <li>管理模式下,一頁顯示幾筆資料:<input type="text" name="ADMIN_PAGE_DEF" value="'
.ADMIN_PAGE_DEF.'" size="3"></li>
        <li>一篇討論串最多顯示之回應筆數:<input type="text" name="RE_DEF" value="'
.RE_DEF.'" size="3"></li>
        <li>回應模式一頁顯示幾筆回應內容:<input type="text" name="RE_PAGE_DEF" value="'
.RE_PAGE_DEF.'" size="3"></li>
        <li>記錄檔保留之最大資料筆數:<input type="text" name="LOG_MAX" value="'
.LOG_MAX.'" size="3"></li>
        <li>回應筆數超過多少則不自動推文:<input type="text" name="MAX_RES" value="'
.MAX_RES.'" size="3"></li>
        <li>討論串可接受推文的時間範圍:<input type="text" name="MAX_AGE_TIME" value="'
.MAX_AGE_TIME.'" size="3"></li>
        <li>>標註引用回文顏色:<input type="text" name="RE_COL" value="'
.RE_COL.'" size="5"></li>
        <li>內文接受Bytes數:<input type="text" name="COMM_MAX" value="'
.COMM_MAX.'" size="3"></li>
        <li>文字換行行數上限:<input type="text" name="BR_CHECK" value="'
.BR_CHECK.'" size="3"></li>
        <li>更新文章時自動生成的靜態網頁至第幾頁止:<input type="text" name="STATIC_HTML_UNTIL" value="'
.STATIC_HTML_UNTIL.'" size="3"></li>
        <li>是否顯示附加檔案之原檔長寬尺寸:<input type="text" name="SHOW_IMGWH" value="'
.SHOW_IMGWH.'" size="3"></li>
        <li>PHP動態輸出頁面使用Gzip壓縮層級:<input type="text" name="GZIP_COMPRESS_LEVEL" value="'
.GZIP_COMPRESS_LEVEL.'" size="3"></li>
</ul>

<p class="subBanner">此步驟完成了,下一步呢?</p>
<div class="txtqu">
        下一步驟將會為您儲存設定檔、設定資料夾結構及初始化資料結構。<p />
        請確認上方設定的「圖片存放目錄」及「預覽圖存放目錄」設定正確,安裝程式將會檢查是否存在,如果不存在將會新造並設定好權限。<p />
        而初始化資料結構的意思是,假如用來儲存討論串的結構並不存在,安裝程式會為您新增;假如已有舊有的結構存在,安裝程式也會檢查其結構是否符合新版,並視情況對其作修正。當然舊資料以完整保留為原則。<p />
</div>
<input type="submit" value="下一步驟&gt;&gt;">
</form>
</div>
'
;
}

/* Step 2: */
function wzd_2(){
        $config_type = file_exists('./../config-dist-log.php') ? 'log' : 'mysql'; // 設定檔類型
        $config_contents = file_get_contents('./../config-dist-'.$config_type.'.php'); // 載入設定檔模板
        $config_elements = array('TIME_ZONE','HTTP_UPLOAD_DIFF','IMG_DIR','THUMB_DIR','PHP_SELF2','PHP_EXT','TITLE','HOME','TOP_LINKS','ADMIN_PASS','IDSEED','CAP_ENABLE','CAP_NAME','CAP_PASS','CAP_SUFFIX','CAP_ISHTML','USE_THUMB','USE_FLOATFORM','USE_SEARCH','USE_UPSERIES','RESIMG','AUTO_LINK','KILL_INCOMPLETE_UPLOAD','ALLOW_NONAME','PROXY_CHECK','DISP_ID','CLEAR_SAGE','USE_QUOTESYSTEM','MAX_KB','STORAGE_LIMIT','STORAGE_MAX','ALLOW_UPLOAD_EXT','RENZOKU','RENZOKU2','MAX_W','MAX_H','MAX_RW','MAX_RH','THUMB_Q','ADDITION_INFO','USE_TEMPLATE','TEMPLATE_FILE','PAGE_DEF','ADMIN_PAGE_DEF','RE_DEF','RE_PAGE_DEF','LOG_MAX','MAX_RES','MAX_AGE_TIME','RE_COL','COMM_MAX','BR_CHECK','STATIC_HTML_UNTIL','SHOW_IMGWH','GZIP_COMPRESS_LEVEL'); // 設定檔所有項目
        $config_elements_log = array('LOGFILE','TREEFILE'); // Log版專屬
        $config_elements_mysql = array('MYSQL_SERVER','MYSQL_USER','MYSQL_PASSWORD','MYSQL_DBNAME','SQLLOG'); // MySQL版專屬

        // 第一部分:儲存設定檔
        // 通用設定取代
        $config_elements_count = count($config_elements);
        for($i = 0; $i < $config_elements_count; $i++) $config_contents = str_replace('{'.$config_elements[$i].'}', $_POST[$config_elements[$i]], $config_contents);
        // 專屬設定取代
        $config_elements_unique = ($config_type=='log') ? $config_elements_log : $config_elements_mysql; // 選取專屬陣列
        $config_elements_unique_count = count($config_elements_unique);
        for($p = 0; $p < $config_elements_unique_count; $p++) $config_contents = str_replace('{'.$config_elements_unique[$p].'}', $_POST[$config_elements_unique[$p]], $config_contents); // 取代標籤內容
        // 更名已存在的config.php為config-old.php
        if(file_exists('./../config.php')) rename('./../config.php', './../config-old.php');
        // 儲存新生成的config.php
        $fp = fopen('./../config.php', 'w');
        fwrite($fp, $config_contents);
        fclose($fp);
        unlink('./../config-dist-'.$config_type.'.php'); // 樣板用完了就刪除

        // 第二部分:設定資料夾結構及初始化資料結構
        include_once('./../config.php'); // 載入甫作成的設定檔
        $chkfolder = array(IMG_DIR, THUMB_DIR);
        // 逐一自動建置IMG_DIR和THUMB_DIR
        foreach($chkfolder as $value) if(!is_dir('./../'.$value)) mkdir('./../'.$value); // 沒有就建立
        // 初始化資料,分成兩部分處理
        if($config_type=='log'){ // Log版處理部份
                $is_newcreated = false; // 記錄檔是否為新造
                $chkfile = array(LOGFILE, TREEFILE);
                // 逐一自動建置tree及log檔案
                foreach($chkfile as $value){
                        if(!is_file('./../'.$value)){ // 檔案不存在
                                $is_newcreated = true; // 新造記錄檔,這樣就不用進入修正部份
                                $fp = fopen('./../'.$value, 'w');
                                stream_set_write_buffer($fp, 0);
                                if($value==LOGFILE) fwrite($fp, '1,05/01/01(六) 00:00 ID:00000000,無名氏,,無標題,無內文,,,,,,,,');
                                if($value==TREEFILE) fwrite($fp, '1');
                                fclose($fp);
                                unset($fp);
                                chmod('./../'.$value, 0666);
                        }
                }
                /* 給舊格式的記錄檔升級的修正用程式碼 */
                if(!$is_newcreated){ // 不是新造,有可能要修正
                        $fp = file('./../'.LOGFILE); // 開啟Log檔案
                        $fp_count = count($fp);
                        $is_modified = FALSE; // 是否有更動Log
                        for($i = 0; $i < $fp_count; $i++){ // 搜尋每一筆資料
                                if(empty($fp[$i])) continue;
                                list(,,$name,) = explode(',', $fp[$i]);
                                if(strpos($name, '</font>')!==false){ // 修正キャップ之<font></font>問題
                                        $is_modified = TRUE; // 作標記
                                        $fp[$i] = str_replace($name, ereg_replace("<font color='(.*)'>(.*)</font>", '<span class="admin_cap">\\2</span>',$name), $fp[$i]); // 更改<font>為<span>
                                }
                        }
                        for($i = 0; $i < $fp_count; $i++){ // 搜尋每一筆資料 (不知道為什麼需要兩次迴圈str_replace才正常作動=3=)
                                if(empty($fp[$i])) continue;
                                list(,,$name,) = explode(',', $fp[$i]);
                                if(strpos($name, '</b>')!==false){ // 修正トリップ之</b><b>問題
                                        $is_modified = TRUE; // 作標記
                                        $fp[$i] = str_replace($name, strtr($name, array('</b>'=>'','<b>'=>'')), $fp[$i]); // 刪除</b><b>字元
                                }
                        }
                        if($is_modified){ // 動過,開始寫入
                                $fs = fopen('./../'.LOGFILE, 'w'); // 開啟檔案
                                fwrite($fs, implode('', $fp));
                                fclose($fs);
                        }
                }
        }else{ // MySQL版處理部份
                $is_newcreated = false;
                @$con = mysql_connect(MYSQL_SERVER,MYSQL_USER,MYSQL_PASSWORD);
                if(!mysql_select_db(MYSQL_DBNAME)) mysql_query("CREATE DATABASE ".MYSQL_DBNAME); // 假如選擇資料庫失敗就新增資料庫
                @mysql_query("SET NAMES 'utf8'");
                if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".SQLLOG."'"))!=1){ // 資料表不存在
                        $is_newcreated = true;
                        $result = "CREATE TABLE ".SQLLOG." (primary key(no),
index (resto),index (root),index (time),
no int(1) not null auto_increment,
resto int(1) not null,
root timestamp(14) null DEFAULT 0,
time int(1) not null,
md5 varchar(32) not null,
tim bigint(1) not null,
ext varchar(4) not null,
w smallint(1) not null,
h smallint(1) not null,
pwd varchar(8) not null,
now varchar(255) not null,
name varchar(255) not null,
email varchar(255) not null,
sub varchar(255) not null,
com text not null,
host varchar(255) not null,
status varchar(4) not null)
TYPE = MYISAM
COMMENT = 'For Pixmicat!-MySQL use'"
;
                        $result2 = @mysql_query("SHOW CHARACTER SET like 'utf8'"); // 是否支援UTF-8 (MySQL 4.1.1開始支援)
                        if($result2 && mysql_num_rows($result2)){
                                $result .= " CHARACTER SET utf8 COLLATE utf8_general_ci"; // 資料表追加UTF-8編碼
                                mysql_free_result($result2);
                        }
                        mysql_query($result); // 正式新增資料表
                }
                /* 給舊格式的MySQL資料表升級的修正用程式碼 */
                if(!$is_newcreated){
                        if($result3 = mysql_query("SHOW COLUMNS FROM ".SQLLOG." LIKE 'status'")){ // 新增討論串屬性資料表欄位
                                if($result3 && mysql_num_rows($result3)==0){ // 沒有此欄位,自動新增
                                        mysql_query("ALTER TABLE ".SQLLOG." ADD status VARCHAR(4) NOT NULL, COMMENT = 'For Pixmicat!-MySQL use'");
                                }
                        }
                        mysql_free_result($result3);
                        if($result4 = mysql_query("SELECT name FROM ".SQLLOG." WHERE name LIKE '%<b>%'")){ // 去除姓名使用Trip的<b>標籤,新版本改用動態插入
                                if($result4 && mysql_num_rows($result4)){ // 需修正欄位存在,自動修正
                                        mysql_query("UPDATE ".SQLLOG." SET name = REPLACE(name, '<b>', '') WHERE name LIKE '%<b>%'");
                                        mysql_query("UPDATE ".SQLLOG." SET name = REPLACE(name, '</b>', '') WHERE name LIKE '%</b>%'");
                                }
                        }
                        mysql_free_result($result4);
                        mysql_query("ALTER TABLE ".SQLLOG." COMMENT = 'For Pixmicat!-MySQL use'"); // 更新註解
                }
        }

        echo '<p class="Banner">第二步驟 - 儲存設定檔、設定資料夾結構及初始化資料結構 : Pixmicat! 安裝程式精靈</p>
<div class="quote">

<p class="subBanner">恭喜!所有設定完成了</p>
<div class="txtqu">
        現在安裝程式已經為你生成了可用的設定檔config.php,如果您有舊的config.php現在也被改名成了config-old.php,如果日後新版運作正常請刪除config-old.php。<p />
        同時安裝程式剛才也一併為您檢查了資料夾結構,並對其作設定的動作,資料結構也設定完成 (如果有舊資料結構則會沿用),現在只剩下一個步驟……<p />
        請您將install資料夾刪除,為了安全上的理由,本安裝程式只提供於升級和新安裝時使用,不作為修改設定檔的工具。如果您要修改設定,請利用FTP等途徑修改config.php檔案,檔案內有更完整的註解說明。 (假如沒有寫入權限請您先下載下來修改、刪除伺服器上的config.php、上傳修改後的config.php)<p />
        接下來,請您開始使用Pixmicat!吧!<p />
        Pixmicat! Development Team
</div>
'
;
        if(get_magic_quotes_gpc()){ // 神奇引用GET/POST/Cookies問題
                echo '<p class="subBanner">注意!困擾的神奇引用…(magic_quotes)</p>
<div class="txtqu">
        本安裝程式剛才發現了您的伺服器有開啟了magic_quotes_gpc功能。這個功能雖然可以有效防治一些安全上的問題,但是在這裡的設定會出問題。<p />
        請您回想一下,剛才設定中的「頁面右上方的額外連結(TOP_LINKS)」和「表單下額外文字(ADDITION_INFO)」有沒有 " 、 \' 和 \ 符號?有的話請手動修改config.php,讓這些欄位的字元正常顯示。這些欄位使用的是單引號,故 \" 和 \\ 都是不必要的,但是 \' 要打成 \\\' 才正確,你可以自己打開設定檔看看發生了什麼事 (苦笑)<p />
        總之略懂PHP的單引號括住的文字規則的話,會比較好辦。請手動取代 \\\\\\\' 成為 \\\',\" 成為 ",\\\\ 成為 \。
</div>
'
;
        }
        echo '</div>
'
;
}

/* 印出HTML頁頭 */
function wizard_HTMLheader(){
        echo '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-tw">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="zh-tw" />
<title>Pixmicat! Installation Wizard</title>
<style type="text/css">
html {
        font-family: Arial;
        font-size: 12pt;
        background-color: #FEC;
        color: #000;
}
.Banner {
        font-family: Arial;
        text-indent: 10px;
        background-color: #FF9;
        font-style: italic;
        color: #F33;
        border-left: 2px solid #C0C0C0;
        border-bottom: 1px solid #C0C0C0;
}
.subBanner {
        text-indent: 10px;
        background-color: #9F9;
        font-weight: bold;
        color: #085D94;
        border-left: 2px solid #F60;
        border-bottom: 1px solid #F60;
}
.quote {
        margin: 20px 40px;
}
.txtqu {
        text-indent: 24pt;
}
</style>
</head>
<body>
'
;
}

function wizard_Check(){
        $config_type = file_exists('./../config-dist-log.php') ? 'log' : 'mysql'; // 設定檔類型
        if(!is_file('./../config-dist-'.$config_type.'.php')){ // 設定樣板檔沒了,表示已執行過此安裝程式,為了安全因素阻止再運行
                echo '<p class="Banner">錯誤! : Pixmicat! 安裝程式精靈</p>
<div class="txtqu">
        本安裝程式已被執行過,為了安全因素已停止執行。如果您是架設者,請立即刪除install資料夾!<p />
        假如您是要修改設定檔,請利用FTP等途徑開啟設定檔自行參照註解修改,本安裝程式只提供第一次安裝或是更新版本時使用。
</div>
'
;
                exit;
        }

}

/* 印出HTML頁尾 */
function wizard_HTMLfooter(){
        echo '
</body>
</html>'
;
}
?>