OSDN Git Service

FIX:変数名の誤記を修正
[nucleus-jp/nucleus-next.git] / install / index.php
index e91e2a4..17fb9a3 100644 (file)
@@ -16,7 +16,7 @@
 /**\r
  * @license http://nucleuscms.org/license.txt GNU General Public License\r
  * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: index.php 1705 2012-03-23 15:46:55Z sakamocchi $\r
+ * @version $Id: index.php 1745 2012-04-12 23:45:47Z sakamocchi $\r
  */\r
 \r
 /* global values initialize */\r
@@ -25,15 +25,15 @@ $CONF = array();
 /* reporting all errors for support */\r
 error_reporting(E_ALL);\r
 \r
-$minimum_php_version   = '5.0.6';\r
-$minimum_mysql_version = '3.23';\r
+$minimum_php_version = '5.0.6';\r
+$minimum_mysql_version = '3.23';\r
 \r
-$page_footer_copyright = '© 2001-2012 The Nucleus Groupe . Running Nucleus CMS v4.00';\r
+$page_footer_copyright = '© 2001-2012 The Nucleus Groupe . Running Nucleus CMS v4.00';\r
 \r
 // begin if: server's PHP version is below the minimum; halt installation\r
 if ( version_compare(PHP_VERSION, $minimum_php_version, '<') )\r
 {\r
-       exit('<div style="font-size: xx-large;"> Nucleus requires at least PHP version '. $minimum_php_version .'</div>');\r
+       exit('<div style="font-size: xx-large;"> Nucleus requires at least PHP version ' . $minimum_php_version . '</div>');\r
 }\r
 \r
 // make sure there's no unnecessary escaping: # set_magic_quotes_runtime(0);\r
@@ -43,27 +43,20 @@ if ( version_compare(PHP_VERSION, '5.3.0', '<') )
 }\r
 \r
 /* default installed plugins and skins */\r
-$aConfPlugsToInstall   = array('NP_SecurityEnforcer', 'NP_SkinFiles', 'NP_Text');\r
-$aConfSkinsToImport            = array('atom', 'rss2.0', 'rsd', 'default');\r
+$aConfPlugsToInstall = array('NP_SecurityEnforcer', 'NP_SkinFiles');\r
+$aConfSkinsToImport = array('atom', 'rss2.0', 'rsd', 'default');\r
 \r
 // Check if some important files\r
 do_check_files();\r
 \r
 /* i18n class is needed for internationalization */\r
 include_once('../nucleus/libs/i18n.php');\r
-if ( !i18n::init('UTF-8', './locales') )\r
+if ( !i18n::init('UTF-8', '../nucleus/locales') )\r
 {\r
        exit('<div style="font-size: xx-large;"> Failed to initialize iconv or mbstring extension. Would you please contact the administrator of your PHP server? </div>');\r
 }\r
 \r
-// check if mysql support is installed; this check may not make sense, as is, in a version past 3.5x\r
-if ( !function_exists('mysql_query') && !function_exists('mysqli_query') )\r
-{\r
-       exit('<div style="font-size: xx-large;"> Your PHP version does not have support for MySQL :( </div>');\r
-}\r
-\r
 // include core classes that are needed for login & plugin handling\r
-include_once('../nucleus/libs/mysql.php');\r
 \r
 // added for 3.5 sql_* wrapper\r
 global $MYSQL_HANDLER;\r
@@ -71,8 +64,14 @@ global $MYSQL_HANDLER;
 if ( !isset($MYSQL_HANDLER) )\r
 {\r
        $MYSQL_HANDLER = array('mysql', '');\r
+       \r
+       // check if mysql support is installed; this check may not make sense, as is, in a version past 3.5x\r
+       if ( !function_exists('mysql_query') && !function_exists('mysqli_query') )\r
+       {\r
+               exit('<div style="font-size: xx-large;"> Your PHP version does not have support for MySQL :( </div>');\r
+       }\r
 }\r
-include_once('../nucleus/libs/sql/' . $MYSQL_HANDLER[0] . '.php');\r
+include_once('../nucleus/libs/sql/sql.php');\r
 \r
 session_start();\r
 if ( count($_GET) == 0 && count($_POST) == 0 )\r
@@ -113,7 +112,6 @@ else
 }\r
 exit;\r
 \r
-\r
 /**\r
  * installer action\r
  */\r
@@ -212,7 +210,6 @@ function show_header()
        header("Cache-Control: no-cache, must-revalidate");\r
        header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");\r
        header('Content-Type: text/html; charset=' . i18n::get_current_charset());\r
-\r
 ?>\r
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
@@ -244,35 +241,35 @@ function show_header()
                        <div id="navigation">\r
                                <h1><img src="./styles/nucleus_rogo.png" alt="NucleusCMS" /></h1>\r
                                <ul>\r
-                                       <?php\r
-                                       if ( in_array($param->state, array('mysql', 'weblog', 'install')) )\r
-                                       {\r
-                                               echo '<li>', _STEP1, '</li><li';\r
-                                               if ( $param->state == 'mysql' )\r
-                                               {\r
-                                                       echo ' class="gry"';\r
-                                               }\r
-                                               echo '>&nbsp; &gt; &nbsp;', _STEP2, '</li><li';\r
-                                               if ( in_array($param->state, array('mysql', 'weblog')) )\r
-                                               {\r
-                                                       echo ' class="gry"';\r
-                                               }\r
-                                               echo '>&nbsp; &gt; &nbsp;', _STEP3, "</li>\n";\r
-                                       }\r
-                                       if ( in_array($param->state, array('mysql', 'weblog', 'detail')) )\r
-                                       {\r
-                                               echo '<li class="rightbox">';\r
-                                               if ( in_array($param->state, array('mysql', 'weblog')) )\r
-                                               {\r
-                                                       echo '<a href="./?mode=detail">', _MODE2, '</a>';\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       echo '<a href="./?mode=simple">', _MODE1, '</a>';\r
-                                               }\r
-                                               echo '</li>';\r
-                                       }\r
-                                       ?>\r
+<?php\r
+       if ( in_array($param->state, array('mysql', 'weblog', 'install')) )\r
+       {\r
+               echo '<li>', _STEP1, '</li><li';\r
+               if ( $param->state == 'mysql' )\r
+               {\r
+                       echo ' class="gry"';\r
+               }\r
+               echo '>&nbsp; &gt; &nbsp;', _STEP2, '</li><li';\r
+               if ( in_array($param->state, array('mysql', 'weblog')) )\r
+               {\r
+                       echo ' class="gry"';\r
+               }\r
+               echo '>&nbsp; &gt; &nbsp;', _STEP3, "</li>\n";\r
+       }\r
+       if ( in_array($param->state, array('mysql', 'weblog', 'detail')) )\r
+       {\r
+               echo '<li class="rightbox">';\r
+               if ( in_array($param->state, array('mysql', 'weblog')) )\r
+               {\r
+                       echo '<a href="./?mode=detail">', _MODE2, '</a>';\r
+               }\r
+               else\r
+               {\r
+                       echo '<a href="./?mode=simple">', _MODE1, '</a>';\r
+               }\r
+               echo '</li>';\r
+       }\r
+?>\r
                                </ul>\r
                        </div>\r
                </div>\r
@@ -299,19 +296,13 @@ function show_footer()
  */\r
 function show_select_locale_form()\r
 {\r
-       // Get the browser language that can be displayed\r
-       // TODO: default locale select simple implementation\r
-       $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);\r
-       foreach ($languages as $language)\r
-       {\r
-               $language = preg_replace('#([\w]+).*#', '$1', $language);\r
-               break;\r
+       // get locale list\r
+       $localelist = i18n::get_available_locale_list();\r
+       $locales = array();\r
+       foreach ( $localelist as $locale ) {\r
+               $checkfile = './locales/' . $locale . '.' . i18n::get_current_charset() . '.php';\r
+               $locales[] = array( $locale, (!file_exists($checkfile) ? '*&nbsp;' : '') . $locale );\r
        }\r
-\r
-       $locales = array(\r
-               array('en_Latn_US', 'English - United States'),\r
-               array('ja_Jpan_JP', 'Japanese - Japan')\r
-       );\r
 ?>\r
                <div id="container">\r
                        <p style="font-size:152%;font-weight:bold;">\r
@@ -322,6 +313,11 @@ function show_select_locale_form()
                                <div class="prt">\r
                                        <select name="locale">\r
 <?php\r
+       // Get the browser language that can be displayed\r
+       // TODO: default locale select simple implementation\r
+       $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);\r
+       $language = (is_array($languages) && count($languages) > 0) ? preg_replace('#^([\w]+).*$#', '$1', $languages[0]) : '';\r
+\r
        foreach ( $locales as $locale )\r
        {\r
                echo "<option value=\"$locale[0]\"";\r
@@ -333,6 +329,9 @@ function show_select_locale_form()
        }\r
 ?>\r
                                        </select>\r
+                                       <p>Nucleus is installed in the selected locale, the locale of the Asterisk prefixed will be displayed in English because there is no translation of the installer file.</p>\r
+                                       <p>We will wait for the translator by volunteers!</p>\r
+                                       </p>\r
                                        <p class="sbt">\r
                                                <button type="submit" name="action" value="locale" class="sbt_arw">START</button>\r
                                        </p>\r
@@ -352,7 +351,7 @@ function show_database_setting_form($isPostback)
 \r
        $config_writable = canConfigFileWritable();\r
        $mysql_version = getMySqlVersion();\r
-       ?>\r
+?>\r
                <div id="container">\r
                        <p class="msg">\r
 <?php\r
@@ -367,7 +366,7 @@ function show_database_setting_form($isPostback)
        }\r
        elseif ( version_compare($mysql_version, $minimum_mysql_version, '<') )\r
        {\r
-               echo '<span class="err">', sprintf(_DBVERSION_TOOLOW , $minimum_mysql_version), '</span>';\r
+               echo '<span class="err">', sprintf(_DBVERSION_TOOLOW, $minimum_mysql_version), '</span>';\r
        }\r
 ?>\r
                        </p>\r
@@ -427,7 +426,6 @@ function show_database_setting_form($isPostback)
 function show_blog_setting_form($isPostback)\r
 {\r
        global $param;\r
-\r
 ?>\r
                <div id="container">\r
                        <p class="msg">\r
@@ -538,7 +536,7 @@ function show_detail_setting_form($isPostback)
        echo ($mysql_version == '0.0.0') ? _DBVERSION_UNKOWN : $mysql_version;\r
        if ( version_compare($mysql_version, $minimum_mysql_version, '<') )\r
        {\r
-               echo '<span class="err">', sprintf(_DBVERSION_TOOLOW , $minimum_mysql_version), '</span>';\r
+               echo '<span class="err">', sprintf(_DBVERSION_TOOLOW, $minimum_mysql_version), '</span>';\r
        }\r
 ?></li>\r
                        </ul>\r
@@ -757,7 +755,7 @@ function show_install_complete_form()
                {\r
                        echo '<span class="err">', _INST_TEXT4, '</span>';\r
 ?>\r
-<textarea id="config_text" readonly="readonly" onfocus="SelectText(this);"><?php echo htmlentities($_SESSION['config_data'], null, i18n::get_current_charset() ) ?></textarea>\r
+<textarea id="config_text" readonly="readonly" onfocus="SelectText(this);"><?php echo htmlentities($_SESSION['config_data'], null, i18n::get_current_charset()) ?></textarea>\r
 <?php\r
                }\r
                else\r
@@ -812,31 +810,31 @@ function show_install_complete_form()
 function do_install()\r
 {\r
        global $param;\r
-       global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_PREFIX, $MYSQL_CONN;\r
+       global $MYSQL_HANDLER, $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_PREFIX, $MYSQL_CONN;\r
        global $DIR_NUCLEUS, $DIR_MEDIA, $DIR_SKINS, $DIR_PLUGINS, $DIR_LANG, $DIR_LIBS;\r
        $errors = array();\r
 \r
        /*\r
         * 1. put all param-vars into vars\r
         */\r
-       $MYSQL_HOST = $param->mysql_host;\r
-       $MYSQL_USER = $param->mysql_user;\r
-       $MYSQL_PASSWORD = $param->mysql_password;\r
-       $MYSQL_DATABASE = $param->mysql_database;\r
-       $MYSQL_PREFIX = $param->mysql_tablePrefix;\r
-\r
-       $DIR_NUCLEUS = $param->AdminPath;\r
-       $DIR_MEDIA = $param->MediaPath;\r
-       $DIR_SKINS = $param->SkinsPath;\r
-       $DIR_PLUGINS = $DIR_NUCLEUS . 'plugins/';\r
-       $DIR_LOCALES = $DIR_NUCLEUS . 'locales/';\r
-       $DIR_LIBS = $DIR_NUCLEUS . 'libs/';\r
+       $MYSQL_HOST             = $param->mysql_host;\r
+       $MYSQL_USER             = $param->mysql_user;\r
+       $MYSQL_PASSWORD = $param->mysql_password;\r
+       $MYSQL_DATABASE = $param->mysql_database;\r
+       $MYSQL_PREFIX   = $param->mysql_tablePrefix;\r
+\r
+       $DIR_NUCLEUS    = $param->AdminPath;\r
+       $DIR_MEDIA              = $param->MediaPath;\r
+       $DIR_SKINS              = $param->SkinsPath;\r
+       $DIR_PLUGINS    = $DIR_NUCLEUS . 'plugins/';\r
+       $DIR_LOCALES    = $DIR_NUCLEUS . 'locales/';\r
+       $DIR_LIBS               = $DIR_NUCLEUS . 'libs/';\r
 \r
        /*\r
         * 2.open mySQL connection\r
         */\r
-       $MYSQL_CONN = @sql_connect_args($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD);\r
-       if ( $MYSQL_CONN == false )\r
+       $MYSQL_CONN = @DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD);\r
+       if ( $MYSQL_CONN == FALSE )\r
        {\r
                $errors[] = _DBCONNECT_ERROR;\r
                return $errors;\r
@@ -845,19 +843,20 @@ function do_install()
        /*\r
         * 3. try to create database if needed\r
         */\r
-       if ( !sql_query('CREATE DATABASE IF NOT EXISTS `' . $MYSQL_DATABASE . '`') )\r
+       if ( DB::execute("CREATE DATABASE IF NOT EXISTS {$MYSQL_DATABASE}") === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR1 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR1 . ': ' . $errinfo[2];\r
        }\r
 \r
        /*\r
         * 4. try to select database\r
         */\r
-       if ( !sql_select_db($MYSQL_DATABASE) )\r
+       $MYSQL_CONN = @DB::setConnectionInfo($MYSQL_HANDLER[1], $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE);\r
+       if ( !$MYSQL_CONN )\r
        {\r
                $errors[] = _INST_ERROR2;\r
        }\r
-       sql_set_charset('utf8');\r
 \r
        if ( count($errors) > 0 )\r
        {\r
@@ -892,8 +891,8 @@ function do_install()
        }\r
 \r
        // table exists check\r
-       $result = sql_query('SHOW TABLES');\r
-       while ($row = mysql_fetch_array($result, MYSQL_NUM))\r
+       $result = DB::getResult('SHOW TABLES');\r
+       foreach ( $result as $row )\r
        {\r
                if ( in_array($row[0], $prefixed_table_names) )\r
                {\r
@@ -908,7 +907,7 @@ function do_install()
 \r
        $filename = 'install.sql';\r
        $fd = fopen($filename, 'r');\r
-       $queries = fread($fd, filesize($filename) );\r
+       $queries = fread($fd, filesize($filename));\r
        fclose($fd);\r
 \r
        $queries = preg_split('#(;\n|;\r)#', $queries);\r
@@ -922,9 +921,10 @@ function do_install()
                                $query = str_replace($table_names, $prefixed_table_names, $query);\r
                        }\r
 \r
-                       if ( !sql_query($query) )\r
+                       if ( DB::execute($query) === FALSE )\r
                        {\r
-                               $errors[] = _INST_ERROR4 . ' (<small>' . $query . '</small>): ' . sql_error();\r
+                               $errinfo = DB::getError();\r
+                               $errors[] = _INST_ERROR4 . ' (<small>' . $query . '</small>): ' . $errinfo[2];\r
                        }\r
                }\r
        }\r
@@ -933,11 +933,18 @@ function do_install()
         * 6. put needed records\r
         */\r
        /* push first post */\r
-       $query = "INSERT INTO %s VALUES (1, '%s', '%s', '%s', 1, 1, '%s', 0, 0, 0, 1, 0, 1)";\r
-       $query = sprintf($query, tableName('nucleus_item'), _1ST_POST_TITLE, _1ST_POST, _1ST_POST2, i18n::formatted_datetime('mysql', time()));\r
-       if ( !sql_query($query) )\r
+       $query = "INSERT INTO %s VALUES (1, %s, %s, %s, 1, 1, %s, 0, 0, 0, 1, 0, 1)";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_item'),\r
+               DB::quoteValue(_1ST_POST_TITLE),\r
+               DB::quoteValue(_1ST_POST),\r
+               DB::quoteValue(_1ST_POST2),\r
+               DB::formatDateTime()\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR4 . ' (<small>' . $newpost . '</small>): ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR4 . ' (<small>' . $query . '</small>): ' . $errinfo[2];\r
        }\r
 \r
        /* push configurations */\r
@@ -951,41 +958,49 @@ function do_install()
        array_merge($errors, updateConfig('SiteName', $param->blog_name));\r
        array_merge($errors, updateConfig('Locale', i18n::get_current_locale()));\r
 \r
-       /* escape strings for SQL */\r
-       $user_name                      = sql_real_escape_string($param->user_name);\r
-       $user_realname          = sql_real_escape_string($param->user_realname);\r
-       $user_password          = sql_real_escape_string(md5($param->user_password));\r
-       $user_email                     = sql_real_escape_string($param->user_email);\r
-       $blog_name                      = sql_real_escape_string($param->blog_name);\r
-       $blog_shortname         = sql_real_escape_string($param->blog_shortname);\r
-       $config_indexurl        = sql_real_escape_string($param->IndexURL);\r
-\r
        /* push super admin */\r
-       $query = "UPDATE %s SET mname = '%s', mrealname = '%s', mpassword = '%s', memail = '%s', murl = '%s', madmin = 1, mcanlogin = 1 WHERE mnumber = 1";\r
-       $query = sprintf($query, tableName('nucleus_member'), $user_name, $user_realname, $user_password, $user_email, $config_indexurl);\r
-       if ( !sql_query($query) )\r
+       $query = "UPDATE %s SET mname = %s, mrealname = %s, mpassword = %s, memail = %s, murl = %s, madmin = 1, mcanlogin = 1 WHERE mnumber = 1";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_member'),\r
+               DB::quoteValue($param->user_name),\r
+               DB::quoteValue($param->user_realname),\r
+               DB::quoteValue(md5($param->user_password)),\r
+               DB::quoteValue($param->user_email),\r
+               DB::quoteValue($param->IndexURL)\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR5 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR5 . ': ' . $errinfo[2];\r
        }\r
 \r
        /* push new weblog */\r
-       $query = "UPDATE %s SET bname = '%s', bshortname = '%s', burl = '%s' WHERE bnumber = 1";\r
-       $query = sprintf($query, tableName('nucleus_blog'), $blog_name, $blog_shortname, $config_indexurl);\r
-       if ( !sql_query($query) )\r
+       $query = "UPDATE %s SET bname = %s, bshortname = %s, burl = %s WHERE bnumber = 1";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_blog'),\r
+               DB::quoteValue($param->blog_name),\r
+               DB::quoteValue($param->blog_shortname),\r
+               DB::quoteValue($param->IndexURL)\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR6 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR6 . ': ' . $errinfo[2];\r
        }\r
 \r
        /* push default category */\r
-       $query = "UPDATE %s SET cname = '%s', cdesc = '%s' WHERE catid = 1";\r
-       $query = sprintf($query, tableName('nucleus_category'), _GENERALCAT_NAME, _GENERALCAT_DESC);\r
-       if ( !sql_query($query) )\r
+       $query = "UPDATE %s SET cname = %s, cdesc = %s WHERE catid = 1";\r
+       $query = sprintf($query,\r
+               tableName('nucleus_category'),\r
+               DB::quoteValue(_GENERALCAT_NAME),\r
+               DB::quoteValue(_GENERALCAT_DESC)\r
+       );\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR6 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR6 . ': ' . $errinfo[2];\r
        }\r
 \r
-       sql_close();\r
-\r
        /*\r
         * 7. install default plugins and skins\r
         */\r
@@ -999,29 +1014,30 @@ function do_install()
                global $manager;\r
                if ( !isset($manager) )\r
                {\r
-                       $manager = new MANAGER;\r
+                       $manager = new Manager();\r
                }\r
 \r
+               include_once($DIR_LIBS . 'skinie.php');\r
+               \r
                $aSkinErrors = installCustomSkins();\r
                if ( count($aSkinErrors) > 0 )\r
                {\r
                        array_merge($errors, $aSkinErrors);\r
                }\r
 \r
-               $query  = "SELECT sdnumber FROM %s WHERE sdname='default'";\r
-               $query = sprintf($query, tableName('nucleus_skin_desc'));\r
-               $res = sql_query($query);\r
-               $obj = sql_fetch_assoc($res);\r
-               $defSkinID = (integer) $obj['sdnumber'];\r
+               $query          = "SELECT sdnumber FROM %s WHERE sdname='default'";\r
+               $query          = sprintf($query, tableName('nucleus_skin_desc'));\r
+               $defSkinID      = intval(DB::getValue($query));\r
 \r
                $query = "UPDATE %s SET bdefskin=%d WHERE bnumber=1";\r
                $query = sprintf($query, tableName('nucleus_blog'), $defSkinID);\r
-               sql_query($query);\r
+               DB::execute($query);\r
+               \r
                $query = "UPDATE %s SET value=%d WHERE name='BaseSkin'";\r
                $query = sprintf($query, tableName('nucleus_config'), $defSkinID);\r
-               sql_query($query);\r
+               DB::execute($query);\r
 \r
-               $aPlugErrors = installCustomPlugs($manager);\r
+               $aPlugErrors = installCustomPlugs();\r
                if ( count($aPlugErrors) > 0 )\r
                {\r
                        array_merge($errors, $aPlugErrors);\r
@@ -1042,7 +1058,7 @@ function do_install()
        $config_data .= "// default is \$MYSQL_HANDLER = array('mysql','mysql');\n";\r
        $config_data .= "//\$MYSQL_HANDLER = array('mysql','mysql');\n";\r
        $config_data .= "//\$MYSQL_HANDLER = array('pdo','mysql');\n";\r
-       $config_data .= "\$MYSQL_HANDLER = array('".$MYSQL_HANDLER[0]."','".$MYSQL_HANDLER[1]."');\n";\r
+       $config_data .= "\$MYSQL_HANDLER = array('" . $MYSQL_HANDLER[0] . "','" . $MYSQL_HANDLER[1] . "');\n";\r
        $config_data .= "\n";\r
        $config_data .= "// main nucleus directory\n";\r
        $config_data .= "\$DIR_NUCLEUS = '" . $DIR_NUCLEUS . "';\n";\r
@@ -1068,7 +1084,7 @@ function do_install()
        {\r
                if ( $fp = @fopen('../config.php', 'w') )\r
                {\r
-                       $result = @fwrite($fp, $config_data, i18n::strlen($config_data) );\r
+                       $result = @fwrite($fp, $config_data, i18n::strlen($config_data));\r
                        fclose($fp);\r
                }\r
        }\r
@@ -1076,7 +1092,7 @@ function do_install()
        if ( $result )\r
        {\r
                // try to change the read-only permission.\r
-               if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' )\r
+               if ( strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' )\r
                {\r
                        @chmod('../config.php', 0444);\r
                }\r
@@ -1098,7 +1114,7 @@ function canConfigFileWritable()
        if ( @file_exists('../config.php') && @!is_writable('../config.php') )\r
        {\r
                // try to change the read-write permission.\r
-               if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' )\r
+               if ( strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' )\r
                {\r
                        @chmod('../config.php', 0666);\r
                }\r
@@ -1117,36 +1133,33 @@ function canConfigFileWritable()
  */\r
 function getMySqlVersion()\r
 {\r
-       global $minimum_mysql_version, $errors;\r
+       global $MYSQL_HANDLER, $minimum_mysql_version, $errors;\r
        // Turn on output buffer\r
        // Needed to repress the output of the sql function that are\r
        // not part of php (in this case the @ operator doesn't work)\r
        ob_start();\r
 \r
        // note: this piece of code is taken from phpMyAdmin\r
-       $conn = sql_connect_args('localhost', '', '');\r
-       $result = @sql_query('SELECT VERSION() AS version', $conn);\r
+       $conn = @DB::setConnectionInfo($MYSQL_HANDLER[1], 'localhost', '', '');\r
 \r
-       if ( $result != FALSE && sql_num_rows($result) > 0 )\r
+       if ( $conn )\r
        {\r
-               $row = sql_fetch_array($result);\r
-               $match = i18n::explode('.', $row['version']);\r
+               $row = DB::getAttribute(PDO::ATTR_SERVER_VERSION);\r
+               $match = preg_split('#\.#', $row);\r
        }\r
        else\r
        {\r
-               $result = @sql_query('SHOW VARIABLES LIKE \'version\'', $conn);\r
+               $row = @DB::getRow('SHOW VARIABLES LIKE \'version\'');\r
 \r
-               if ( $result != FALSE && @sql_num_rows($result) > 0 )\r
+               if ( $row )\r
                {\r
-                       $row = sql_fetch_row($result);\r
-                       $match = i18n::explode('.', $row[1]);\r
+                       $match = preg_split('#\.#', $row[1]);\r
                }\r
                else\r
                {\r
-                       //$output = shell_exec('mysql -V');\r
-                       $output = ( function_exists('shell_exec') ) ? @shell_exec('mysql -V') : '0.0.0';\r
+                       $output = (function_exists('shell_exec')) ? @shell_exec('mysql -V') : '0.0.0';\r
                        preg_match('@[0-9]+\.[0-9]+\.[0-9]+@', $output, $version);\r
-                       $match = i18n::explode('.', $version[0]);\r
+                       $match = preg_split('#\.#', $version[0]);\r
 \r
                        if ( $match[0] == '' )\r
                        {\r
@@ -1155,7 +1168,7 @@ function getMySqlVersion()
                }\r
        }\r
 \r
-       @sql_disconnect($conn);\r
+       @DB::disConnect();\r
 \r
        //End and clean output buffer\r
        ob_end_clean();\r
@@ -1184,12 +1197,10 @@ function tableName($input)
 \r
 /**\r
  * Install custom plugins\r
- *\r
- * @param object $manager MANAGER class instance\r
  */\r
-function installCustomPlugs($manager)\r
+function installCustomPlugs()\r
 {\r
-       global $aConfPlugsToInstall, $DIR_LIBS;\r
+       global $aConfPlugsToInstall, $DIR_LIBS, $manager;\r
 \r
        $aErrors = array();\r
        if ( count($aConfPlugsToInstall) == 0 )\r
@@ -1197,13 +1208,17 @@ function installCustomPlugs($manager)
                return $aErrors;\r
        }\r
 \r
-       $res = sql_query('SELECT * FROM ' . tableName('nucleus_plugin') );\r
-       $numCurrent = sql_num_rows($res);\r
+       $query = sprintf('SELECT * FROM %s', tableName('nucleus_plugin'));\r
+       $res = DB::getResult($query);\r
+       $numCurrent = $res->rowCount();\r
 \r
        foreach ( $aConfPlugsToInstall as $plugName )\r
        {\r
-               $query = 'INSERT INTO ' . tableName('nucleus_plugin') . ' (porder, pfile) VALUES (' . (++$numCurrent) . ", '" . sql_real_escape_string($plugName) . "')";\r
-               sql_query($query);\r
+               $query = sprintf('INSERT INTO %s (porder, pfile) VALUES (%d, %s)',\r
+                       tableName('nucleus_plugin'),\r
+                       (++$numCurrent),\r
+                       DB::quoteValue($plugName));\r
+               DB::execute($query);\r
 \r
                $manager->clearCachedInfo('installedPlugins');\r
                $plugin =& $manager->getPlugin($plugName);\r
@@ -1211,28 +1226,36 @@ function installCustomPlugs($manager)
 \r
                if ( !$plugin )\r
                {\r
-                       sql_query('DELETE FROM ' . tableName('nucleus_plugin') . " WHERE pfile = '" . sql_real_escape_string($plugName) . "'");\r
+                       $query = sprintf('DELETE FROM %s WHERE pfile = %s',\r
+                               tableName('nucleus_plugin'),\r
+                               DB::quoteValue($plugName));\r
+                       DB::execute($query);\r
                        $numCurrent--;\r
-                       array_push($aErrors, sprintf(_INST_ERROR9 ,$plugName));\r
+                       array_push($aErrors, sprintf(_INST_ERROR9$plugName));\r
                        continue;\r
                }\r
                $plugin->install();\r
        }\r
 \r
-       sql_query('DELETE FROM ' . tableName('nucleus_plugin_event') );\r
-       $res = sql_query('SELECT pid, pfile FROM ' . tableName('nucleus_plugin') );\r
+       $query = sprintf('DELETE FROM %s', tableName('nucleus_plugin_event'));\r
+       DB::execute($query);\r
+       $query = sprintf('SELECT pid, pfile FROM %s', tableName('nucleus_plugin'));\r
+       $res = DB::getResult($query);\r
 \r
-       while ( $o = sql_fetch_object($res) )\r
+       foreach ( $res as $row )\r
        {\r
-               $pid = $o->pid;\r
-               $plug =& $manager->getPlugin($o->pfile);\r
+               $plug =& $manager->getPlugin($row['pfile']);\r
 \r
                if ( $plug )\r
                {\r
                        $eventList = $plug->getEventList();\r
                        foreach ( $eventList as $eventName )\r
                        {\r
-                               sql_query('INSERT INTO ' . tableName('nucleus_plugin_event') . ' (pid, event) VALUES (' . $pid . ", '" . $eventName . "')");\r
+                               $query = sprintf('INSERT INTO %s (pid, event) VALUES (%d, %s)',\r
+                                       tableName('nucleus_plugin_event'),\r
+                                       intval($row['pid']),\r
+                                       DB::quoteValue($eventName));\r
+                               DB::execute($query);\r
                        }\r
                }\r
        }\r
@@ -1253,8 +1276,7 @@ function installCustomSkins()
                return $aErrors;\r
        }\r
 \r
-       include_once($DIR_LIBS . 'skinie.php');\r
-       $importer = new SKINIMPORT();\r
+       $importer = new SkinImport();\r
 \r
        foreach ( $aConfSkinsToImport as $skinName )\r
        {\r
@@ -1286,7 +1308,6 @@ function installCustomSkins()
        return $aErrors;\r
 }\r
 \r
-\r
 /**\r
  * Check if some important files of the Nucleus CMS installation are available\r
  * Give an error if one or more files are not accessible\r
@@ -1320,7 +1341,6 @@ function do_check_files()
                '../nucleus/libs/MANAGER.php',\r
                '../nucleus/libs/MEDIA.php',\r
                '../nucleus/libs/MEMBER.php',\r
-               '../nucleus/libs/mysql.php',\r
                '../nucleus/libs/NOTIFICATION.php',\r
                '../nucleus/libs/PAGEFACTORY.php',\r
                '../nucleus/libs/PARSER.php',\r
@@ -1333,7 +1353,8 @@ function do_check_files()
                '../nucleus/libs/vars4.1.0.php',\r
                '../nucleus/libs/xmlrpc.inc.php',\r
                '../nucleus/libs/xmlrpcs.inc.php',\r
-               '../nucleus/libs/sql/mysql.php'\r
+               '../nucleus/libs/sql/DB.php',\r
+               '../nucleus/libs/sql/MYSQLPDO.php'\r
        );\r
 \r
        $count = count($files);\r
@@ -1341,17 +1362,16 @@ function do_check_files()
        {\r
                if ( !is_readable($files[$i]) )\r
                {\r
-                       array_push( $missingfiles, 'File <b>' . $files[$i] . '</b> is missing or not readable.<br />');\r
+                       array_push($missingfiles, 'File <b>' . $files[$i] . '</b> is missing or not readable.<br />');\r
                }\r
        }\r
 \r
        if ( count($missingfiles) > 0 )\r
        {\r
-               exit(implode( "\n", $missingfiles));\r
+               exit(implode("\n", $missingfiles));\r
        }\r
 }\r
 \r
-\r
 /**\r
  * Updates the configuration in the database\r
  *\r
@@ -1362,20 +1382,18 @@ function do_check_files()
 function updateConfig($name, $value)\r
 {\r
        $errors = array();\r
-       $name = sql_real_escape_string($name);\r
-       $value = trim(sql_real_escape_string($value) );\r
 \r
-       $query = "UPDATE %s SET value = '%s' WHERE name = '%s'";\r
-       $query = sprintf($query, tableName('nucleus_config'), $value, $name);\r
+       $query = "UPDATE %s SET value = %s WHERE name = %s";\r
+       $query = sprintf($query, tableName('nucleus_config'), DB::quoteValue(trim($value)), DB::quoteValue($name));\r
 \r
-       if ( !sql_query($query) )\r
+       if ( DB::execute($query) === FALSE )\r
        {\r
-               $errors[] = _INST_ERROR4 . ': ' . sql_error();\r
+               $errinfo = DB::getError();\r
+               $errors[] = _INST_ERROR4 . ': ' . $errinfo[2];\r
        }\r
        return $errors;\r
 }\r
 \r
-\r
 class ParamManager\r
 {\r
        /* process parameter */\r
@@ -1434,24 +1452,25 @@ class ParamManager
                $this->blog_shortname = 'mynucleuscms';\r
 \r
                /* root path */\r
-               $this->root_path = realpath(dirname(__FILE__) . '/..');\r
+               $directory_separator = preg_quote(DIRECTORY_SEPARATOR, '|');\r
+               $this->root_path = implode('/', preg_split("|$directory_separator|", realpath(dirname(__FILE__) . '/..')));\r
                if ( substr($this->root_path, -1, 1) !== '/' )\r
                {\r
                        $this->root_path .= '/';\r
                }\r
-               $base_path_pcre = preg_quote($this->root_path, '#');\r
+               $base_path_pcre = preg_quote($this->root_path, '|');\r
 \r
                /* current directry name */\r
-               $directory_name = preg_replace("#$base_path_pcre#", '', dirname(__FILE__));\r
-               $directory_name_pcre = preg_quote($directory_name, '#');\r
+               $directory_name = preg_replace("#{$base_path_pcre}#", '', implode('/', preg_split("#{$directory_separator}#", realpath(dirname(__FILE__)))));\r
+               $directory_name_pcre = preg_quote($directory_name, '|');\r
 \r
                /* root uri */\r
                $root_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];\r
-               $this->root_url = preg_replace("#$directory_name_pcre(.*)$#", '', $root_url);\r
+               $this->root_url = preg_replace("|$directory_name_pcre(.*)$|", '', $root_url);\r
 \r
-               $this->AdminPath = $this->root_path . 'nucleus' . DIRECTORY_SEPARATOR;\r
-               $this->MediaPath = $this->root_path . 'media' . DIRECTORY_SEPARATOR;\r
-               $this->SkinsPath = $this->root_path . 'skins' . DIRECTORY_SEPARATOR;\r
+               $this->AdminPath = $this->root_path . 'nucleus/';\r
+               $this->MediaPath = $this->root_path . 'media/';\r
+               $this->SkinsPath = $this->root_path . 'skins/';\r
 \r
                $this->IndexURL  = $this->root_url;\r
                $this->AdminURL  = $this->root_url . 'nucleus/';\r
@@ -1493,6 +1512,8 @@ class ParamManager
 \r
        public function check_mysql_parameters()\r
        {\r
+               global $MYSQL_HANDLER;\r
+               \r
                $parameters = array('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database', 'mysql_tablePrefix');\r
                $this->read_parameter($parameters);\r
 \r
@@ -1513,11 +1534,6 @@ class ParamManager
                        $errors[] = sprintf(_VALID_ERROR2, _DB_FIELD2);\r
                }\r
                \r
-               if ( $this->mysql_password == '' )\r
-               {\r
-                       $errors[] = sprintf(_VALID_ERROR1, _DB_FIELD3);\r
-               }\r
-\r
                if ( $this->mysql_database == '' )\r
                {\r
                        $errors[] = sprintf(_VALID_ERROR1, _DB_FIELD4);\r
@@ -1537,14 +1553,14 @@ class ParamManager
                \r
                if ( count($errors) == 0 )\r
                {\r
-                       $mysql_conn = @sql_connect_args($this->mysql_host, $this->mysql_user, $this->mysql_password);\r
+                       $mysql_conn = @DB::setConnectionInfo($MYSQL_HANDLER[1], $this->mysql_host, $this->mysql_user, $this->mysql_password);\r
                        if ( $mysql_conn == false )\r
                        {\r
                                $errors[] = _DBCONNECT_ERROR;\r
                        }\r
                        else\r
                        {\r
-                               @sql_close($mysql_conn);\r
+                               @DB::disConnect();\r
                        }\r
                }\r
 \r