OSDN Git Service

MERGE: リビジョン1651をマージ
authorsakamocchi <o-takashi@sakamocchi.jp>
Fri, 3 Feb 2012 15:08:39 +0000 (00:08 +0900)
committersakamocchi <o-takashi@sakamocchi.jp>
Fri, 3 Feb 2012 15:08:39 +0000 (00:08 +0900)
MERGE: merge the commit at revision 1651

installディレクトリを設け、インストール用スクリプトを移動した。
ロケールに関する修正を加えた。

CHANGE: push install scripts into install directory and modify its
codes running correctly
http://nucleuscms.svn.sourceforge.net/viewvc/nucleuscms?view=revision&revision=1651

install.php [deleted file]
install/index.php [new file with mode: 0644]
install/install.sql [moved from install.sql with 100% similarity]
install/locales/en_Latn_US.UTF-8.php [moved from install_lang_english.php with 99% similarity]
install/locales/ja_Jpan_JP.UTF-8.php [new file with mode: 0644]

diff --git a/install.php b/install.php
deleted file mode 100644 (file)
index bcb26a9..0000000
+++ /dev/null
@@ -1,1358 +0,0 @@
-<?php
-/*
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2007 The Nucleus Group
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- * (see nucleus/documentation/index.html#license for more info)
- *
- * This script will install the Nucleus tables in your SQL-database,
- * and initialize the data in those tables.
- *
- * Below is a friendly way of letting users on non-php systems know that Nucleus won't run there.
- * ?><div style="font-size: xx-large;"> Your web server is not properly configured to run PHP scripts and will not be able to install Nucleus. </div> <div style="display: none;"><?php
- */
-
-/**
- * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2007 The Nucleus Group
- * @version $Id: install.php 1624 2012-01-09 11:36:20Z sakamocchi $
- */
-
-       $minimum_php_version = '5.0.6';
-       $minimum_mysql_version = '3.23';
-
-       // begin if: server's PHP version is below the minimum; halt installation
-       if ( phpversion() < $minimum_php_version )
-       {
-               _doError(_ERROR31);
-       } // end if
-
-       /**
-        * This part of the install.php code allows for customization of the install process.
-        * When distributing plugins or skins together with a Nucleus installation, the
-        * configuration below will instruct to install them
-        *
-        * -- Start Of Configurable Part --
-        **/
-
-       include('./install_lang_english.php');
-
-       /**
-        * array with names of plugins to install. Plugin files must be present in the nucleus/plugin/ directory
-        *
-        * example:
-        *              array('NP_TrackBack', 'NP_MemberGoodies')
-        **/
-       $aConfPlugsToInstall = array('NP_SkinFiles', 'NP_SecurityEnforcer', 'NP_Text');
-
-       /**
-        * array with skins to install. skins must be present under the skins/ directory with
-        * a subdirectory having the same name that contains a skinbackup.xml file
-        *
-        * example:
-        *              array('base', 'rsd')
-        **/
-       $aConfSkinsToImport = array('atom', 'rss2.0', 'rsd', 'default');
-
-       /**
-        * -- End Of Configurable Part --
-        **/
-
-       // don't give warnings for uninitialized vars
-       error_reporting(E_ERROR | E_WARNING | E_PARSE);
-
-       // make sure there's no unnecessary escaping: # set_magic_quotes_runtime(0);
-       if ( version_compare(PHP_VERSION, '5.3.0', '<') )
-       {
-           ini_set('magic_quotes_runtime', '0');
-       } // end if
-
-       // if there are some plugins or skins to import, do not include vars in globalfunctions.php again... so set a flag
-       if ( (count($aConfPlugsToInstall) > 0) || (count($aConfSkinsToImport) > 0) )
-       {
-               global $CONF;
-               $CONF['installscript'] = 1;
-       } // end if
-
-       if ( !class_exists('i18n', FALSE) )
-       {
-               include('nucleus/libs/i18n.php');
-
-               if ( !i18n::init('UTF-8', './nucleus/language') )
-               {
-                       exit('Failed to initialize iconv or mbstring extension. Would you please contact the administrator of your PHP server?');
-               } // end if
-
-       } // end if
-
-       // we will use postVar, getVar, ... methods instead of $_GET, $_POST ...
-       include_once('nucleus/libs/vars4.1.0.php');
-
-       // include core classes that are needed for login & plugin handling
-       include_once('nucleus/libs/mysql.php');
-
-       ## added for 3.5 sql_* wrapper
-       global $MYSQL_HANDLER;
-
-       //set the handler if different from mysql (or mysqli) # $MYSQL_HANDLER = array('pdo','mysql');
-       if ( !isset($MYSQL_HANDLER) )
-       {
-               $MYSQL_HANDLER = array('mysql', '');
-       } // end if
-
-       include_once('nucleus/libs/sql/' . $MYSQL_HANDLER[0] . '.php');
-       ## end new for 3.5 sql_* wrapper
-
-       // check if mysql support is installed; this check may not make sense, as is, in a version past 3.5x
-       if ( !function_exists('mysql_query') )
-       {
-               _doError(_ERROR1);
-       } // end if
-
-       if ( postVar('action') == 'go' )
-       {
-               doInstall();
-       }
-       else
-       {
-               showInstallForm();
-       }
-
-       exit;
-
-
-       /**
-        * Display the form for installation settings
-        */
-       function showInstallForm()
-       {
-               // 0. pre check if all necessary files exist
-               doCheckFiles();
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-       <head>
-               <title><?php echo _TITLE; ?></title>
-               <style type="text/css"><!--
-                       @import url('nucleus/documentation/styles/manual.css');
-               --></style>
-               <script type="text/javascript"><!--
-                       var submitcount = 0;
-
-                       // function to make sure the submit button only gets pressed once
-                       function checkSubmit()
-                       {
-
-                               if ( submitcount == 0 )
-                               {
-                                       submitcount++;
-                                       return true;
-                               }
-                               else
-                               {
-                                       return false;
-                               }
-
-                       }
-               --></script>
-       </head>
-       <body>
-               <div style="text-align: center;"><img src="./nucleus/styles/logo.gif" alt="<?php echo _ALT_NUCLEUS_CMS_LOGO; ?>" /></div>
-               <form method="POST" action="install.php">
-
-               <h1><?php echo _HEADER1; ?></h1>
-
-               <?php echo _TEXT1; ?>
-
-               <h1><?php echo _HEADER2; ?></h1>
-
-               <?php echo _TEXT2; ?>
-
-               <ul>
-                       <li> PHP: <?php echo phpversion(); ?> </li>
-                       <li> MySQL:
-
-<?php
-               // Turn on output buffer
-               // Needed to repress the output of the sql function that are
-               // not part of php (in this case the @ operator doesn't work)
-               ob_start();
-
-               // note: this piece of code is taken from phpMyAdmin
-               $conn = sql_connect_args('localhost', '', '');
-               $result = @sql_query('SELECT VERSION() AS version', $conn);
-
-               if ( $result != FALSE && sql_num_rows($result) > 0 )
-               {
-                       $row = sql_fetch_array($result);
-                       $match = i18n::explode('.', $row['version']);
-               }
-               else
-               {
-                       $result = @sql_query('SHOW VARIABLES LIKE \'version\'', $conn);
-
-                       if ( $result != FALSE && @sql_num_rows($result) > 0 )
-                       {
-                               $row = sql_fetch_row($result);
-                               $match = i18n::explode('.', $row[1]);
-                       }
-                       else
-                       {
-                               //$output = shell_exec('mysql -V');
-                               $output = ( function_exists('shell_exec') ) ? @shell_exec('mysql -V') : '0.0.0';
-                               preg_match('@[0-9]+\.[0-9]+\.[0-9]+@', $output, $version);
-                               $match = i18n::explode('.', $version[0]);
-
-                               if ( $match[0] == '' )
-                               {
-                                       $match[0] = '0';
-                                       $match[1] = '0';
-                                       $match[2] = '0';
-                               } // end if
-
-                       } // end if
-
-               } // end if
-
-               @sql_disconnect($conn);
-
-               //End and clean output buffer
-               ob_end_clean();
-
-               $mysqlVersion = implode($match, '.');
-               $minVersion = '3.23';
-
-               if ( $mysqlVersion == '0.0.0' )
-               {
-                       echo _NOTIFICATION1;
-               }
-               else
-               {
-                       echo $mysqlVersion;
-               }
-
-               if ( $mysqlVersion < $minVersion )
-               {
-                       echo ' <strong>', _TEXT2_WARN2 , $minVersion, '</strong>';
-               }
-?>
-
-                       </li>
-               </ul>
-
-<?php
-               // tell people how they can have their config file filled out automatically
-               if ( @file_exists('config.php') && @!is_writable('config.php') )
-               {
-?>
-
-               <h1><?php echo _HEADER3; ?></h1>
-
-<?php
-               echo _TEXT3;
-
-               } // end if
-?>
-
-               <h1><?php echo _HEADER4; ?></h1>
-
-               <?php echo _TEXT4; ?>
-
-               <fieldset>
-                       <legend><?php echo _TEXT4_TAB_HEAD; ?></legend>
-                       <table>
-                               <tr>
-                                       <td><label for="if_mySQL_host"><?php echo _TEXT4_TAB_FIELD1; ?>:</label></td>
-                                       <td><input id="if_mySQL_host" name="mySQL_host" value="<?php echo i18n::hsc(@ini_get('mysql.default_host') )?>" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_mySQL_user"><?php echo _TEXT4_TAB_FIELD2; ?>:</label></td>
-                                       <td><input id="if_mySQL_user" name="mySQL_user" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_mySQL_password"><?php echo _TEXT4_TAB_FIELD3; ?>:</label></td>
-                                       <td><input id="if_mySQL_password" name="mySQL_password" type="password" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_mySQL_database"><?php echo _TEXT4_TAB_FIELD4; ?>:</label></td>
-                                       <td><input id="if_mySQL_database" name="mySQL_database" /> (<input name="mySQL_create" value="1" type="checkbox" id="mySQL_create" /><label for="mySQL_create"><?php echo _TEXT4_TAB_FIELD4_ADD; ?></label>)</td>
-                               </tr>
-                       </table>
-               </fieldset>
-
-               <fieldset>
-                       <legend><?php echo _TEXT4_TAB2_HEAD; ?></legend>
-                       <table>
-                               <tr>
-                                       <td><input name="mySQL_usePrefix" value="1" type="checkbox" id="mySQL_usePrefix" /><label for="mySQL_usePrefix"><?php echo _TEXT4_TAB2_FIELD; ?>:</label></td>
-                                       <td><input name="mySQL_tablePrefix" value="" /></td>
-                               </tr>
-                       </table>
-
-                       <?php echo _TEXT4_TAB2_ADD; ?>
-
-               </fieldset>
-
-               <h1><?php echo _HEADER5; ?></h1>
-
-               <?php echo _TEXT5; ?>
-
-<?php
-               // no need to this all! dirname(__FILE__) is all we need -- moraes
-               /*
-               // discover full path
-               $fullPath = serverVar('PATH_TRANSLATED');
-
-               if ($fullPath == '') {
-                       $fullPath = serverVar('SCRIPT_FILENAME');
-               }
-
-               $basePath = str_replace('install.php', '', $fullPath);
-               $basePath = replace_double_backslash($basePath);
-               $basePath = replace_double_backslash($basePath);
-
-               // add slash at end if necessary
-               if (!ends_with_slash($basePath) ) {
-                       $basePath .= '/';
-               }
-               */
-
-               /**
-                * In the code below, there used to be if conditions within the form's HTML that conditionally echoed the URLs.
-                *
-                * For example:
-                *              if ($basePath) . . .
-                * Or:
-                *              if ($url) . . .
-                *
-                * I removed this and simplified below, because PHP's type casting will make these always evaluate to TRUE.
-                * At least currently, $basePath will always be non-empty, since the trailing slash is appended to it.
-                * Similarly, $index_url will always be non-empty, since the 'http://' is prepended to it.
-                * Non-empty, non-zero strings evaluated in if conditions are always cast to boolean TRUE.
-                * The if conditions were accomplishing nothing (currently) and we should avoid using such comparisons, anyway.
-                * If we need to check for a blank/empty string, use empty().
-                *
-                * I was initially replacing those if conditions with ternary operators for empty(), but then I realized
-                * they will never be empty.
-                *
-                * In addition, I decided to remove the PHP logic from within the form and set up separate variables (they were
-                * all just $url before), so the form just echos the values as needed.
-                * - gregorlove 7/13/2011 5:56 PM
-                */
-
-               $basePath = dirname(__FILE__) . '/';
-
-               # Index URL
-               $index_url = 'http://' . serverVar('HTTP_HOST') . serverVar('PHP_SELF');
-               $index_url = str_replace('install.php', '', $index_url);
-               $index_url = replace_double_backslash($index_url);
-
-               // add slash at end if necessary
-               if ( !ends_with_slash($index_url) )
-               {
-                       $index_url .= '/';
-               } // end if
-
-               # Admin URL and path
-               $admin_url = $index_url . 'nucleus/';
-               $admin_path = $basePath . 'nucleus/';
-
-               # Media URL and path
-               $media_url = $index_url . 'media/';
-               $media_path = $basePath . 'media/';
-
-               # Skins URL and path
-               $skins_url = $index_url . 'skins/';
-               $skins_path = $basePath . 'skins/';
-
-               # Plugins URL
-               $plugins_url = $admin_url . 'plugins/';
-
-               # Action URL
-               $action_url = $index_url . 'action.php';
-
-?>
-
-               <fieldset>
-                       <legend><?php echo _TEXT5_TAB_HEAD; ?></legend>
-                       <table>
-                               <tr>
-                                       <td><label for="if_IndexURL"><?php echo _TEXT5_TAB_FIELD1;?>:</label></td>
-                                       <td><input id="if_IndexURL" name="IndexURL" size="60" value="<?php echo $index_url; ?>" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_AdminURL"><?php echo _TEXT5_TAB_FIELD2;?>:</label></td>
-                                       <td><input id="if_AdminURL" name="AdminURL" size="60" value="<?php echo $admin_url; ?>" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_AdminPath"><?php echo _TEXT5_TAB_FIELD3;?>:</label></td>
-                                       <td><input id="if_AdminPath" name="AdminPath" size="60" value="<?php echo $admin_path; ?>" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_MediaURL"><?php echo _TEXT5_TAB_FIELD4;?>:</label></td>
-                                       <td><input id="if_MediaURL" name="MediaURL" size="60" value="<?php echo $media_url; ?>" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_MediaPath"><?php echo _TEXT5_TAB_FIELD5;?>:</label></td>
-                                       <td><input id="if_MediaPath" name="MediaPath" size="60" value="<?php echo $media_path; ?>" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_SkinsURL"><?php echo _TEXT5_TAB_FIELD6;?>:</label></td>
-                                       <td><input id="if_SkinsURL" name="SkinsURL" size="60" value="<?php echo $skins_url; ?>" />
-                                               <br />(used by imported skins)
-                                       </td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_SkinsPath"><?php echo _TEXT5_TAB_FIELD7;?>:</label></td>
-                                       <td><input id="if_SkinsPath" name="SkinsPath" size="60" value="<?php echo $skins_path; ?>" />
-                                               <br />(<?php echo _TEXT5_TAB_FIELD7_2;?>)
-                                       </td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_PluginURL"><?php echo _TEXT5_TAB_FIELD8;?>:</label></td>
-                                       <td><input id="if_PluginURL" name="PluginURL" size="60" value="<?php echo $plugins_url; ?>" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_ActionURL"><?php echo _TEXT5_TAB_FIELD9;?>:</label></td>
-                                       <td><input id="if_ActionURL" name="ActionURL" size="60" value="<?php echo $action_url; ?>" />
-                                               <br />(<?php echo _TEXT5_TAB_FIELD9_2;?>)
-                                       </td>
-                               </tr>
-                       </table>
-               </fieldset>
-
-               <?php echo _TEXT5_2; ?>
-
-               <h1><?php echo _HEADER6; ?></h1>
-
-               <?php echo _TEXT6; ?>
-
-               <fieldset>
-                       <legend><?php echo _TEXT6_TAB_HEAD; ?></legend>
-                       <table>
-                               <tr>
-                                       <td><label for="if_User_name"><?php echo _TEXT6_TAB_FIELD1; ?>:</label></td>
-                                       <td><input id="if_User_name" name="User_name" value="" /> <small>(<?php echo _TEXT6_TAB_FIELD1_2; ?>)</small></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_User_realname"><?php echo _TEXT6_TAB_FIELD2; ?>:</label></td>
-                                       <td><input id="if_User_realname" name="User_realname" value="" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_User_password"><?php echo _TEXT6_TAB_FIELD3; ?>:</label></td>
-                                       <td><input id="if_User_password" name="User_password" type="password" value="" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_User_password2"><?php echo _TEXT6_TAB_FIELD4; ?>:</label></td>
-                                       <td><input id="if_User_password2" name="User_password2" type="password" value="" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_User_email"><?php echo _TEXT6_TAB_FIELD5; ?>:</label></td>
-                                       <td><input id="if_User_email" name="User_email" value="" /> <small>(<?php echo _TEXT6_TAB_FIELD5_2; ?>)</small></td>
-                               </tr>
-                       </table>
-               </fieldset>
-
-               <h1><?php echo _HEADER7; ?></h1>
-
-               <?php echo _TEXT7; ?>
-
-               <fieldset>
-                       <legend><?php echo _TEXT7_TAB_HEAD; ?></legend>
-                       <table>
-                               <tr>
-                                       <td><label for="if_Blog_name"><?php echo _TEXT7_TAB_FIELD1; ?>:</label></td>
-                                       <td><input id="if_Blog_name" name="Blog_name" size="60" value="My Nucleus CMS" /></td>
-                               </tr>
-                               <tr>
-                                       <td><label for="if_Blog_shortname"><?php echo _TEXT7_TAB_FIELD2; ?>:</label></td>
-                                       <td><input id="if_Blog_shortname" name="Blog_shortname" value="mynucleuscms" /> <small>(<?php echo _TEXT7_TAB_FIELD2_2; ?>)</small></td>
-                               </tr>
-                       </table>
-               </fieldset>
-
-               <h1><?php echo _HEADER8; ?></h1>
-
-               <fieldset>
-                       <legend><?php echo _TEXT8_TAB_HEADER; ?></legend>
-                       <table>
-                               <tr>
-                                       <td><input name="Weblog_ping" value="1" type="checkbox" id="Weblog_ping" /><label for="Weblog_ping"><?php echo _TEXT8_TAB_FIELD1; ?></label></td>
-                               </tr>
-                       </table>
-               </fieldset>
-
-               <h1><?php echo _HEADER9; ?></h1>
-
-               <?php echo _TEXT9; ?>
-
-               <p><input name="action" value="go" type="hidden" /> <input type="submit" value="<?php echo _BUTTON1; ?>" onclick="return checkSubmit();" /></p>
-
-               </form>
-       </body>
-</html>
-
-<?php
-       } // end function showInstallForm()
-
-
-       /**
-        * Add a table prefix if it is used
-        *
-        * @param string $input table name with prefix
-        * @return string
-        */
-       function tableName($input)
-       {
-               global $mysql_usePrefix, $mysql_prefix;
-
-               if ( $mysql_usePrefix == 1 )
-               {
-                       return $mysql_prefix . $input;
-               }
-               else
-               {
-                       return $input;
-               } // end if
-
-       }
-
-
-       /**
-        * The installation process itself
-        */
-       function doInstall()
-       {
-               global $mysql_usePrefix, $mysql_prefix, $weblog_ping;
-
-               // 0. put all POST-vars into vars
-               $mysql_host = postVar('mySQL_host');
-               $mysql_user = postVar('mySQL_user');
-               $mysql_password = postVar('mySQL_password');
-               $mysql_database = postVar('mySQL_database');
-               $mysql_create = postVar('mySQL_create');
-               $mysql_usePrefix = postVar('mySQL_usePrefix');
-               $mysql_prefix = postVar('mySQL_tablePrefix');
-               $config_indexurl = postVar('IndexURL');
-               $config_adminurl = postVar('AdminURL');
-               $config_adminpath = postVar('AdminPath');
-               $config_mediaurl = postVar('MediaURL');
-               $config_skinsurl = postVar('SkinsURL');
-               $config_pluginurl = postVar('PluginURL');
-               $config_actionurl = postVar('ActionURL');
-               $config_mediapath = postVar('MediaPath');
-               $config_skinspath = postVar('SkinsPath');
-               $user_name = postVar('User_name');
-               $user_realname = postVar('User_realname');
-               $user_password = postVar('User_password');
-               $user_password2 = postVar('User_password2');
-               $user_email = postVar('User_email');
-               $blog_name = postVar('Blog_name');
-               $blog_shortname = postVar('Blog_shortname');
-               $config_adminemail = $user_email;
-               $config_sitename = $blog_name;
-               $weblog_ping = postVar('Weblog_ping');
-
-               $config_indexurl = replace_double_backslash($config_indexurl);
-               $config_adminurl = replace_double_backslash($config_adminurl);
-               $config_mediaurl = replace_double_backslash($config_mediaurl);
-               $config_skinsurl = replace_double_backslash($config_skinsurl);
-               $config_pluginurl = replace_double_backslash($config_pluginurl);
-               $config_actionurl = replace_double_backslash($config_actionurl);
-               $config_adminpath = replace_double_backslash($config_adminpath);
-               $config_skinspath = replace_double_backslash($config_skinspath);
-
-               // 1. check all the data
-               $errors = array();
-
-               if ( !$mysql_database )
-               {
-                       array_push($errors, _ERROR2);
-               }
-
-               if ( ($mysql_usePrefix == 1) && (i18n::strlen($mysql_prefix) == 0) )
-               {
-                       array_push($errors, _ERROR3);
-               }
-
-               if ( ($mysql_usePrefix == 1) && (!preg_match('/^[a-zA-Z0-9_]+$/i', $mysql_prefix) ) )
-               {
-                       array_push($errors, _ERROR4);
-               }
-
-               // TODO: add action.php check
-               if ( !ends_with_slash($config_indexurl) || !ends_with_slash($config_adminurl) || !ends_with_slash($config_mediaurl) || !ends_with_slash($config_pluginurl) || !ends_with_slash($config_skinsurl) )
-               {
-                       array_push($errors, _ERROR5);
-               }
-
-               if ( !ends_with_slash($config_adminpath) )
-               {
-                       array_push($errors, _ERROR6);
-               }
-
-               if ( !ends_with_slash($config_mediapath) )
-               {
-                       array_push($errors, _ERROR7);
-               }
-
-               if ( !ends_with_slash($config_skinspath) )
-               {
-                       array_push($errors, _ERROR8);
-               }
-
-               if ( !is_dir($config_adminpath) )
-               {
-                       array_push($errors, _ERROR9);
-               }
-
-               if ( !_isValidMailAddress($user_email) )
-               {
-                       array_push($errors, _ERROR10);
-               }
-
-               if ( !_isValidDisplayName($user_name) )
-               {
-                       array_push($errors, _ERROR11);
-               }
-
-               if ( !$user_password || !$user_password2 )
-               {
-                       array_push($errors, _ERROR12);
-               }
-
-               if ( $user_password != $user_password2 )
-               {
-                       array_push($errors, _ERROR13);
-               }
-
-               if ( !_isValidShortName($blog_shortname) )
-               {
-                       array_push($errors, _ERROR14);
-               }
-
-               if ( sizeof($errors) > 0 )
-               {
-                       showErrorMessages($errors);
-               }
-
-               // 2. try to log in to mySQL
-
-               global $MYSQL_CONN;
-
-               // this will need to be changed if we ever allow
-               $MYSQL_CONN = @sql_connect_args($mysql_host, $mysql_user, $mysql_password);
-
-               if ( $MYSQL_CONN == FALSE )
-               {
-                       _doError(_ERROR15 . ': ' . sql_error() );
-               }
-
-               // 3. try to create database (if needed)
-               if ( $mysql_create == 1 )
-               {
-                       sql_query('CREATE DATABASE ' . $mysql_database, $MYSQL_CONN) or _doError(_ERROR16 . ': ' . sql_error($MYSQL_CONN) );
-               }
-
-               // 4. try to select database
-               sql_select_db($mysql_database, $MYSQL_CONN) or _doError(_ERROR17);
-
-               // 5. execute queries
-               $filename = 'install.sql';
-               $fd = fopen($filename, 'r');
-               $queries = fread($fd, filesize($filename) );
-               fclose($fd);
-
-               $queries = preg_split('#(;\n|;\r)#', $queries);
-
-               $aTableNames = array(
-                       'nucleus_actionlog',
-                       'nucleus_ban',
-                       'nucleus_blog',
-                       'nucleus_category',
-                       'nucleus_comment',
-                       'nucleus_config',
-                       'nucleus_item',
-                       'nucleus_karma',
-                       'nucleus_member',
-                       'nucleus_plugin',
-                       'nucleus_skin',
-                       'nucleus_template',
-                       'nucleus_team',
-                       'nucleus_activation',
-                       'nucleus_tickets'
-               );
-
-               // these are unneeded (one of the replacements above takes care of them)
-               //                      'nucleus_plugin_event',
-               //                      'nucleus_plugin_option',
-               //                      'nucleus_plugin_option_desc',
-               //                      'nucleus_skin_desc',
-               //                      'nucleus_template_desc',
-
-               $aTableNamesPrefixed = array(
-                       $mysql_prefix . 'nucleus_actionlog',
-                       $mysql_prefix . 'nucleus_ban',
-                       $mysql_prefix . 'nucleus_blog',
-                       $mysql_prefix . 'nucleus_category',
-                       $mysql_prefix . 'nucleus_comment',
-                       $mysql_prefix . 'nucleus_config',
-                       $mysql_prefix . 'nucleus_item',
-                       $mysql_prefix . 'nucleus_karma',
-                       $mysql_prefix . 'nucleus_member',
-                       $mysql_prefix . 'nucleus_plugin',
-                       $mysql_prefix . 'nucleus_skin',
-                       $mysql_prefix . 'nucleus_template',
-                       $mysql_prefix . 'nucleus_team',
-                       $mysql_prefix . 'nucleus_activation',
-                       $mysql_prefix . 'nucleus_tickets'
-               );
-
-               // these are unneeded (one of the replacements above takes care of them)
-               //                      $mysql_prefix . 'nucleus_plugin_event',
-               //                      $mysql_prefix . 'nucleus_plugin_option',
-               //                      $mysql_prefix . 'nucleus_plugin_option_desc',
-               //                      $mysql_prefix . 'nucleus_skin_desc',
-               //                      $mysql_prefix . 'nucleus_template_desc',
-
-               $count = count($queries);
-
-               for ( $idx = 0; $idx < $count; $idx++ )
-               {
-                       $query = trim($queries[$idx]);
-                       // echo "QUERY = <small>" . i18n::hsc($query) . "</small><p>";
-
-                       if ( $query )
-                       {
-
-                               if ( $mysql_usePrefix == 1 )
-                               {
-                                       $query = str_replace($aTableNames, $aTableNamesPrefixed, $query);
-                               } // end if
-
-                               sql_query($query, $MYSQL_CONN) or _doError(_ERROR30 . ' (<small>' . i18n::hsc($query) . '</small>): ' . sql_error($MYSQL_CONN) );
-                       } // end if
-
-               } // end loop
-
-               // 5a make first post
-               $newpost = "INSERT INTO ". tableName('nucleus_item') ." VALUES (1, '" . _1ST_POST_TITLE . "', '" . _1ST_POST . "', '" . _1ST_POST2 . "', 1, 1, '2005-08-15 11:04:26', 0, 0, 0, 1, 0, 1);";
-               sql_query($newpost,$MYSQL_CONN) or _doError(_ERROR18 . ' (<small>' . i18n::hsc($newpost) . '</small>): ' . sql_error($MYSQL_CONN) );
-
-               // 6. update global settings
-               updateConfig('IndexURL', $config_indexurl);
-               updateConfig('AdminURL', $config_adminurl);
-               updateConfig('MediaURL', $config_mediaurl);
-               updateConfig('SkinsURL', $config_skinsurl);
-               updateConfig('PluginURL', $config_pluginurl);
-               updateConfig('ActionURL', $config_actionurl);
-               updateConfig('AdminEmail', $config_adminemail);
-               updateConfig('SiteName', $config_sitename);
-
-               // 7. update GOD member
-               $query = 'UPDATE ' . tableName('nucleus_member')
-                               . " SET mname='" . addslashes($user_name) . "',"
-                               . " mrealname='" . addslashes($user_realname) . "',"
-                               . " mpassword='" . md5(addslashes($user_password) ) . "',"
-                               . " murl='" . addslashes($config_indexurl) . "',"
-                               . " memail='" . addslashes($user_email) . "',"
-                               . " madmin=1, mcanlogin=1"
-                               . " WHERE mnumber=1";
-
-               sql_query($query,$MYSQL_CONN) or _doError(_ERROR19 . ': ' . sql_error($MYSQL_CONN) );
-
-               // 8. update weblog settings
-               $query = 'UPDATE ' . tableName('nucleus_blog')
-                               . " SET bname='" . addslashes($blog_name) . "',"
-                               . " bshortname='" . addslashes($blog_shortname) . "',"
-                               . " burl='" . addslashes($config_indexurl) . "'"
-                               . " WHERE bnumber=1";
-
-               sql_query($query, $MYSQL_CONN) or _doError(_ERROR20 . ': ' . sql_error($MYSQL_CONN) );
-
-               // 9. update item date
-               $query = 'UPDATE ' . tableName('nucleus_item')
-                               . " SET itime='" . date('Y-m-d H:i:s', time() ) ."'"
-                               . " WHERE inumber=1";
-
-               sql_query($query,$MYSQL_CONN) or _doError(_ERROR21 . ': ' . sql_error($MYSQL_CONN) );
-
-               global $aConfPlugsToInstall, $aConfSkinsToImport;
-               $aSkinErrors = array();
-               $aPlugErrors = array();
-
-               if ( (count($aConfPlugsToInstall) > 0) || (count($aConfSkinsToImport) > 0) )
-               {
-                       // 10. set global variables
-                       global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_PREFIX;
-
-                       $MYSQL_HOST = $mysql_host;
-                       $MYSQL_USER = $mysql_user;
-                       $MYSQL_PASSWORD = $mysql_password;
-                       $MYSQL_DATABASE = $mysql_database;
-                       $MYSQL_PREFIX = ( $mysql_usePrefix == 1 ) ? $mysql_prefix : '';
-
-                       global $DIR_NUCLEUS, $DIR_MEDIA, $DIR_SKINS, $DIR_PLUGINS, $DIR_LANG, $DIR_LIBS;
-
-                       $DIR_NUCLEUS = $config_adminpath;
-                       $DIR_MEDIA = $config_mediapath;
-                       $DIR_SKINS = $config_skinspath;
-                       $DIR_PLUGINS = $DIR_NUCLEUS . 'plugins/';
-                       $DIR_LANG = $DIR_NUCLEUS . 'language/';
-                       $DIR_LIBS = $DIR_NUCLEUS . 'libs/';
-
-                       // close database connection (needs to be closed if we want to include globalfunctions.php)
-                       sql_close($MYSQL_CONN);
-
-                       $manager = '';
-                       include_once($DIR_LIBS . 'globalfunctions.php');
-
-                       // 11. install custom skins
-                       $aSkinErrors = installCustomSkins($manager);
-                       $defskinQue  = 'SELECT `sdnumber` as result FROM ' . sql_table('skin_desc') . ' WHERE `sdname` = "default"';
-                       $defSkinID   = quickQuery($defskinQue);
-                       $updateQuery = 'UPDATE ' . sql_table('blog') . ' SET `bdefskin` = ' . intval($defSkinID) . ' WHERE `bnumber` = 1';
-                       sql_query($updateQuery);
-                       $updateQuery = 'UPDATE ' . sql_table('config') . ' SET `value` = ' . intval($defSkinID). ' WHERE `name` = "BaseSkin"';
-                       sql_query($updateQuery);
-
-                       // 12. install NP_Ping, if decided
-                       if ( $weblog_ping == 1 )
-                       {
-                               global $aConfPlugsToInstall;
-                               array_push($aConfPlugsToInstall, 'NP_Ping');
-                       }
-
-                       // 13. install custom plugins
-                       $aPlugErrors = installCustomPlugs($manager);
-               }
-
-               // 14. Write config file ourselves (if possible)
-               $bConfigWritten = 0;
-
-               if ( @file_exists('config.php') && is_writable('config.php') && $fp = @fopen('config.php', 'w') )
-               {
-                       $config_data = '<' . '?php' . "\n\n";
-                       //$config_data .= "\n"; (extraneous, just added extra \n to previous line
-                       $config_data .= "       // mySQL connection information\n";
-                       $config_data .= "       \$MYSQL_HOST = '" . $mysql_host . "';\n";
-                       $config_data .= "       \$MYSQL_USER = '" . $mysql_user . "';\n";
-                       $config_data .= "       \$MYSQL_PASSWORD = '" . $mysql_password . "';\n";
-                       $config_data .= "       \$MYSQL_DATABASE = '" . $mysql_database . "';\n";
-                       $config_data .= "       \$MYSQL_PREFIX = '" . (($mysql_usePrefix == 1)?$mysql_prefix:'') . "';\n";
-                       $config_data .= "       // new in 3.50. first element is db handler, the second is the db driver used by the handler\n";
-                       $config_data .= "       // default is \$MYSQL_HANDLER = array('mysql','mysql');\n";
-                       $config_data .= "       //\$MYSQL_HANDLER = array('mysql','mysql');\n";
-                       $config_data .= "       //\$MYSQL_HANDLER = array('pdo','mysql');\n";
-                       $config_data .= "       \$MYSQL_HANDLER = array('".$MYSQL_HANDLER[0]."','".$MYSQL_HANDLER[1]."');\n";
-                       $config_data .= "\n";
-                       $config_data .= "       // main nucleus directory\n";
-                       $config_data .= "       \$DIR_NUCLEUS = '" . $config_adminpath . "';\n";
-                       $config_data .= "\n";
-                       $config_data .= "       // path to media dir\n";
-                       $config_data .= "       \$DIR_MEDIA = '" . $config_mediapath . "';\n";
-                       $config_data .= "\n";
-                       $config_data .= "       // extra skin files for imported skins\n";
-                       $config_data .= "       \$DIR_SKINS = '" . $config_skinspath . "';\n";
-                       $config_data .= "\n";
-                       $config_data .= "       // these dirs are normally sub dirs of the nucleus dir, but \n";
-                       $config_data .= "       // you can redefine them if you wish\n";
-                       $config_data .= "       \$DIR_PLUGINS = \$DIR_NUCLEUS . 'plugins/';\n";
-                       $config_data .= "       \$DIR_LANG = \$DIR_NUCLEUS . 'language/';\n";
-                       $config_data .= "       \$DIR_LIBS = \$DIR_NUCLEUS . 'libs/';\n";
-                       $config_data .= "\n";
-                       $config_data .= "       // include libs\n";
-                       $config_data .= "       include(\$DIR_LIBS.'globalfunctions.php');\n";
-                       $config_data .= "?" . ">";
-
-                       $result = @fputs($fp, $config_data, i18n::strlen($config_data) );
-                       fclose($fp);
-
-                       if ( $result )
-                       {
-                               $bConfigWritten = 1;
-                       } // end if
-
-               } // end if
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-       <title><?php echo _TITLE; ?></title>
-       <style>@import url('nucleus/styles/manual.css');</style>
-</head>
-<body>
-       <div style='text-align:center'><img src='./nucleus/styles/logo.gif' /></div> <!-- Nucleus logo -->
-
-<?php
-               $aAllErrors = array_merge($aSkinErrors, $aPlugErrors);
-
-               if ( count($aAllErrors) > 0 )
-               {
-                       echo '<h1>' . _TITLE2 . '</h1>';
-                       echo '<ul><li>' . implode('</li><li>', $aAllErrors) . '</li></ul>';
-               }
-
-               // begin if: config file not written
-               if ( !$bConfigWritten )
-               {
-?>
-               <h1><?php echo _TITLE3; ?></h1>
-
-               <?php echo _TEXT10; ?>
-
-               <pre><code>&lt;?php
-       // mySQL connection information
-       $MYSQL_HOST = '<b><?php echo $mysql_host?></b>';
-       $MYSQL_USER = '<b><?php echo $mysql_user?></b>';
-       $MYSQL_PASSWORD = '<i><b>xxxxxxxxxxx</b></i>';
-       $MYSQL_DATABASE = '<b><?php echo $mysql_database?></b>';
-       $MYSQL_PREFIX = '<b><?php echo ($mysql_usePrefix == 1)?$mysql_prefix:''?></b>';
-
-       // new in 3.50. first element is db handler, the second is the db driver used by the handler
-       // default is $MYSQL_HANDLER = array('mysql','mysql');
-       //$MYSQL_HANDLER = array('mysql','mysql');
-       //$MYSQL_HANDLER = array('pdo','mysql');
-       $MYSQL_HANDLER = array('mysql','');
-
-       // main nucleus directory
-       $DIR_NUCLEUS = '<b><?php echo $config_adminpath?></b>';
-
-       // path to media dir
-       $DIR_MEDIA = '<b><?php echo $config_mediapath?></b>';
-
-       // extra skin files for imported skins
-       $DIR_SKINS = '<b><?php echo $config_skinspath?></b>';
-
-       // these dirs are normally sub dirs of the nucleus dir, but
-       // you can redefine them if you wish
-       $DIR_PLUGINS = $DIR_NUCLEUS . 'plugins/';
-       $DIR_LANG = $DIR_NUCLEUS . 'language/';
-       $DIR_LIBS = $DIR_NUCLEUS . 'libs/';
-
-       // include libs
-       include($DIR_LIBS.'globalfunctions.php');
-?&gt;</code></pre>
-
-       <?php echo _TEXT11; ?>
-
-       <div class="note">
-       <?php echo _TEXT12; ?>
-       </div>
-
-<?php
-               }
-               // else: config file written
-               else
-               {
-?>
-
-       <h1><?php echo _TITLE4; ?></h1>
-
-       <?php echo _TEXT13; ?>
-
-<?php
-               } // end if
-?>
-
-       <h1><?php echo _TITLE5; ?></h1>
-
-       <?php echo _TEXT14; ?>
-
-       <ul>
-               <li><?php echo _TEXT14_L1; ?></li>
-               <li><?php echo _TEXT14_L2; ?></li>
-       </ul>
-
-       <h1><?php echo _HEADER10; ?></h1>
-
-       <?php echo _TEXT15; ?>
-
-       <ul>
-               <li><?php echo _TEXT15_L1; ?></li>
-               <li><?php echo _TEXT15_L2; ?></li>
-       </ul>
-
-       <?php echo _TEXT16; ?>
-
-       <h1><?php echo _HEADER11; ?></h1>
-
-       <p><?php echo _TEXT16_H; ?>
-               <ul>
-                       <li><a href="<?php echo $config_adminurl?>"><?php echo _TEXT16_L1; ?></a></li>
-                       <li><a href="<?php echo $config_indexurl?>"><?php echo _TEXT16_L2; ?></a></li>
-               </ul>
-       </p>
-
-</body>
-</html>
-
-<?php
-       } // end function doInstall()
-
-
-       /**
-        * Install custom plugins
-        */
-       function installCustomPlugs(&$manager)
-       {
-               global $aConfPlugsToInstall, $DIR_LIBS;
-
-               $aErrors = array();
-
-               if ( count($aConfPlugsToInstall) == 0 )
-               {
-                       return $aErrors;
-               }
-
-               $res = sql_query('SELECT * FROM ' . sql_table('plugin') );
-               $numCurrent = sql_num_rows($res);
-
-               foreach ( $aConfPlugsToInstall as $plugName )
-               {
-                       // do this before calling getPlugin (in case the plugin id is used there)
-                       $query = 'INSERT INTO ' . sql_table('plugin') . ' (`porder`, `pfile`) VALUES (' . (++$numCurrent) . ', "' . addslashes($plugName) . '")';
-                       sql_query($query);
-
-                       // get and install the plugin
-                       $manager->clearCachedInfo('installedPlugins');
-                       $plugin =& $manager->getPlugin($plugName);
-                       $plugin->plugid = $numCurrent;
-
-                       if ( !$plugin )
-                       {
-                               sql_query('DELETE FROM ' . sql_table('plugin') . ' WHERE `pfile` = \'' . addslashes($plugName) . '\'');
-                               $numCurrent--;
-                               array_push($aErrors, _ERROR22 . $plugName);
-                               continue;
-                       } // end if
-
-                       $plugin->install();
-               } // end loop
-
-               // SYNC PLUGIN EVENT LIST
-               sql_query('DELETE FROM ' . sql_table('plugin_event') );
-
-               // loop over all installed plugins
-               $res = sql_query('SELECT `pid`, `pfile` FROM ' . sql_table('plugin') );
-
-               while ( $o = sql_fetch_object($res) )
-               {
-                       $pid = $o->pid;
-                       $plug =& $manager->getPlugin($o->pfile);
-
-                       if ( $plug )
-                       {
-                               $eventList = $plug->getEventList();
-
-                               foreach ( $eventList as $eventName )
-                               {
-                                       sql_query('INSERT INTO ' . sql_table('plugin_event') . ' (`pid`, `event`) VALUES (' . $pid . ', \'' . $eventName . '\')');
-                               } // end loop
-
-                       } // end if
-
-               } // end loop
-
-               return $aErrors;
-       } // end function installCustomPlugs()
-
-
-       /**
-        * Install custom skins
-        * Prepares the installation of custom skins
-        */
-       function installCustomSkins(&$manager)
-       {
-               global $aConfSkinsToImport, $DIR_LIBS, $DIR_SKINS, $manager;
-
-               $aErrors = array();
-
-               if ( empty($manager) )
-               {
-                       $manager = new MANAGER;
-               }
-
-               if ( count($aConfSkinsToImport) == 0 )
-               {
-                       return $aErrors;
-               }
-
-               // load skinie class
-               include_once($DIR_LIBS . 'skinie.php');
-
-               $importer = new SKINIMPORT();
-
-               foreach ( $aConfSkinsToImport as $skinName )
-               {
-                       $importer->reset();
-                       $skinFile = $DIR_SKINS . $skinName . '/skinbackup.xml';
-
-                       if ( !@file_exists($skinFile) )
-                       {
-                               array_push($aErrors, _ERROR23_1 . $skinFile . ' : ' . _ERROR23_2);
-                               continue;
-                       } // end if
-
-                       $error = $importer->readFile($skinFile);
-
-                       if ( $error )
-                       {
-                               array_push($aErrors, _ERROR24 . $skinName . ' : ' . $error);
-                               continue;
-                       } // end if
-
-                       $error = $importer->writeToDatabase(1);
-
-                       if ( $error )
-                       {
-                               array_push($aErrors, _ERROR24 . $skinName . ' : ' . $error);
-                               continue;
-                       } // end if
-
-               } // end loop
-
-               return $aErrors;
-       } // end function installCustomSkins()
-
-
-       /**
-        * Check if some important files of the Nucleus CMS installation are available
-        * Give an error if one or more files are not accessible
-        */
-       function doCheckFiles()
-       {
-               $missingfiles = array();
-               $files = array(
-                       'install.sql',
-                       'index.php',
-                       'action.php',
-                       'nucleus/index.php',
-                       'nucleus/libs/globalfunctions.php',
-                       'nucleus/libs/ADMIN.php',
-                       'nucleus/libs/BLOG.php',
-                       'nucleus/libs/COMMENT.php',
-                       'nucleus/libs/COMMENTS.php',
-                       'nucleus/libs/ITEM.php',
-                       'nucleus/libs/MEMBER.php',
-                       'nucleus/libs/SKIN.php',
-                       'nucleus/libs/TEMPLATE.php',
-                       'nucleus/libs/MEDIA.php',
-                       'nucleus/libs/ACTIONLOG.php',
-                       'nucleus/media.php'
-               );
-
-               $count = count($files);
-
-               for ( $i = 0; $i < $count; $i++ )
-               {
-
-                       if ( !is_readable($files[$i]) )
-                       {
-                               array_push($missingfiles, _ERROR25_1 . $files[$i] . _ERROR25_2);
-                       } // end if
-
-               } // end loop
-
-               if ( count($missingfiles) > 0 )
-               {
-                       showErrorMessages($missingfiles);
-               } // end if
-
-       } // end function doCheckFiles()
-
-
-       /**
-        * Updates the configuration in the database
-        *
-        * @param string $name name of the config var
-        * @param string $value new value of the config var
-        * @return int
-        */
-       function updateConfig($name, $value)
-       {
-               global $MYSQL_CONN;
-               $name = addslashes($name);
-               $value = trim(addslashes($value) );
-
-               $query = 'UPDATE ' . tableName('nucleus_config')
-                               . " SET `value` = '$value'"
-                               . " WHERE `name` = '$name'";
-
-               sql_query($query, $MYSQL_CONN) or _doError(_ERROR26 . ': ' . sql_error($MYSQL_CONN) );
-               return sql_insert_id($MYSQL_CONN);
-       }
-
-
-       /**
-        * Replaces double backslashs
-        *
-        * @param string $input string that could have double backslashs
-        * @return string
-        */
-       function replace_double_backslash($input)
-       {
-               return str_replace('\\', '/', $input);
-       }
-
-
-       /**
-        * Checks if a string ends with a slash
-        *
-        * @param string $input
-        * @return string
-        */
-       function ends_with_slash($input)
-       {
-               return ( i18n::strrpos($input, '/') == i18n::strlen($input) - 1);
-       }
-
-
-       /**
-        * Checks if email address is valid
-        *
-        * @param string $address address which should be tested
-        * @return bool
-        */
-       function _isValidMailAddress($address)
-       {
-
-               if ( preg_match("/^[a-zA-Z0-9\._-]+@+[A-Za-z0-9\._-]+\.+[A-Za-z]{2,4}$/", $address) )
-               {
-                       return TRUE;
-               }
-               else
-               {
-                       return FALSE;
-               } // end if
-
-       }
-
-
-       /*
-        * Check if short blog names and nicknames are allowed
-        * Returns true if the given string is a valid shortname
-        * logic: only letters and numbers are allowed, no spaces allowed
-        *
-        * FIX: function eregi is deprecated since PHP 5.3.0
-        *
-        * @param string $name name which should be tested
-        * @return bool
-        */
-       function _isValidShortName($name)
-       {
-
-               if ( preg_match("/^[a-z0-9]+$/i", $name) )
-               {
-                       return TRUE;
-               }
-               else
-               {
-                       return FALSE;
-               } // end if
-
-       }
-
-
-       /*
-        * Check if a display name is allowed
-        * Returns true if the given string is a valid display name
-        *
-        * FIX: function eregi is deprecated since PHP 5.3.0
-        *
-        * @param string $name name which should be tested
-        * @return bool
-        */
-       function _isValidDisplayName($name)
-       {
-       
-               if ( preg_match("/^[a-z0-9]+[a-z0-9 ]*[a-z0-9]+$/i", $name) )
-               {
-                       return TRUE;
-               }
-               else
-               {
-                       return FALSE;
-               } // end if
-
-       }
-
-
-       /**
-        * Shows error message
-        *
-        * @param string $msg error message
-        */
-       function _doError($message)
-       {
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-       <title><?php echo _TITLE; ?></title>
-       <style>@import url('nucleus/styles/manual.css');</style>
-</head>
-<body>
-       <div style="text-align: center;"><img src="./nucleus/styles/logo.gif" /></div>
-       <h1><?php echo _ERROR27; ?></h1>
-
-       <p> <?php echo _ERROR28; ?>: "<?php echo $message; ?>" </p>
-       <p> <a href="install.php" onclick="history.back(); return false;"><?php echo _TEXT17; ?></a> </p>
-</body>
-</html>
-
-<?php
-               exit;
-       }
-
-
-       /*
-        * Shows error messages
-        *
-        * @param array $errors array with error messages
-        */
-       function showErrorMessages($errors)
-       {
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-       <title><?php echo _TITLE; ?></title>
-       <style>@import url('nucleus/styles/manual.css');</style>
-</head>
-<body>
-       <div style='text-align:center'><img src='./nucleus/styles/logo.gif' /></div> <!-- Nucleus logo -->
-       <h1><?php echo _ERROR27; ?></h1>
-
-       <p><?php echo _ERROR29; ?>:</p>
-
-       <ul>
-
-<?php
-       while ( $msg = array_shift($errors) )
-       {
-               echo '<li>', $msg, '</li>';
-       }
-?>
-
-       </ul>
-
-       <p><a href="install.php" onclick="history.back();return false;"><?php echo _TEXT17; ?></a></p>
-</body>
-</html>
-
-<?php
-       exit;
-       }
-
-
-       /* for the non-php systems that decide to show the contents:
-?></div>
-<?php
-*/
-?>
\ No newline at end of file
diff --git a/install/index.php b/install/index.php
new file mode 100644 (file)
index 0000000..748c4d2
--- /dev/null
@@ -0,0 +1,1369 @@
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2007 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ *
+ * This script will install the Nucleus tables in your SQL-database,
+ * and initialize the data in those tables.
+ *
+ * Below is a friendly way of letting users on non-php systems know that Nucleus won't run there.
+ * ?><div style="font-size: xx-large;"> Your web server is not properly configured to run PHP scripts and will not be able to install Nucleus. </div> <div style="display: none;"><?php
+ */
+
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2007 The Nucleus Group
+ * @version $Id: index.php 1651 2012-02-03 14:57:11Z sakamocchi $
+ */
+
+$minimum_php_version = '5.0.6';
+$minimum_mysql_version = '3.23';
+
+// begin if: server's PHP version is below the minimum; halt installation
+if ( phpversion() < $minimum_php_version )
+{
+       _doError(_ERROR31);
+} // end if
+
+/**
+ * This part of the ./install/index.php code allows for customization of the install process.
+ * When distributing plugins or skins together with a Nucleus installation, the
+ * configuration below will instruct to install them
+ *
+ * -- Start Of Configurable Part --
+ **/
+
+/**
+ * array with names of plugins to install. Plugin files must be present in the nucleus/plugin/ directory
+ *
+ * example:
+ *             array('NP_TrackBack', 'NP_MemberGoodies')
+ **/
+$aConfPlugsToInstall = array('NP_SkinFiles', 'NP_SecurityEnforcer', 'NP_Text');
+
+/**
+ * array with skins to install. skins must be present under the skins/ directory with
+ * a subdirectory having the same name that contains a skinbackup.xml file
+ *
+ * example:
+ *             array('base', 'rsd')
+ **/
+$aConfSkinsToImport = array('atom', 'rss2.0', 'rsd', 'default');
+
+/**
+ * -- End Of Configurable Part --
+ **/
+
+// don't give warnings for uninitialized vars
+error_reporting(E_ERROR | E_WARNING | E_PARSE);
+
+// make sure there's no unnecessary escaping: # set_magic_quotes_runtime(0);
+if ( version_compare(PHP_VERSION, '5.3.0', '<') )
+{
+    ini_set('magic_quotes_runtime', '0');
+} // end if
+
+// if there are some plugins or skins to import, do not include vars in globalfunctions.php again... so set a flag
+if ( (count($aConfPlugsToInstall) > 0) || (count($aConfSkinsToImport) > 0) )
+{
+       global $CONF;
+       $CONF['installscript'] = 1;
+} // end if
+
+if ( !class_exists('i18n', FALSE) )
+{
+       include('../nucleus/libs/i18n.php');
+
+       if ( !i18n::init('UTF-8', './locales') )
+       {
+               exit('Failed to initialize iconv or mbstring extension. Would you please contact the administrator of your PHP server?');
+       } // end if
+} // end if
+
+// we will use postVar, getVar, ... methods instead of $_GET, $_POST ...
+include_once('../nucleus/libs/vars4.1.0.php');
+
+// include core classes that are needed for login & plugin handling
+include_once('../nucleus/libs/mysql.php');
+
+## added for 3.5 sql_* wrapper
+global $MYSQL_HANDLER;
+
+//set the handler if different from mysql (or mysqli) # $MYSQL_HANDLER = array('pdo','mysql');
+if ( !isset($MYSQL_HANDLER) )
+{
+       $MYSQL_HANDLER = array('mysql', '');
+} // end if
+
+include_once('../nucleus/libs/sql/' . $MYSQL_HANDLER[0] . '.php');
+## end new for 3.5 sql_* wrapper
+
+/* TODO: if something input related to locale, sdet it, else set default */
+include('./locales/en_Latn_US.UTF-8.php');
+i18n::set_current_locale('en_Latn_US');
+
+/* send HTTP header */
+header('Content-Type: application/xhtml+xml; charset=' . i18n::get_current_charset());
+
+// check if mysql support is installed; this check may not make sense, as is, in a version past 3.5x
+if ( !function_exists('mysql_query') )
+{
+       _doError(_ERROR1);
+} // end if
+
+if ( postVar('action') == 'go' )
+{
+       doInstall();
+}
+else
+{
+       showInstallForm();
+}
+
+exit;
+
+
+/**
+ * Display the form for installation settings
+ */
+function showInstallForm()
+{
+       // 0. pre check if all necessary files exist
+       doCheckFiles();
+
+       echo "<?xml version=\"1.0\" encoding=\"" . i18n::get_current_charset() . "\" ?>\n";
+       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+       echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\" lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\">\n";
+?>
+       <head>
+               <title><?php echo _TITLE; ?></title>
+               <link rel="stylesheet" type="text/css" href="../nucleus/documentation/styles/manual.css" />
+               <script type="text/javascript">
+               <!--
+                       var submitcount = 0;
+
+                       // function to make sure the submit button only gets pressed once
+                       function checkSubmit()
+                       {
+
+                               if ( submitcount == 0 )
+                               {
+                                       submitcount++;
+                                       return true;
+                               }
+                               else
+                               {
+                                       return false;
+                               }
+
+                       }
+               -->
+               </script>
+       </head>
+       <body>
+               <div style="text-align: center;"><img src="../nucleus/styles/logo.gif" alt="<?php echo _ALT_NUCLEUS_CMS_LOGO; ?>" /></div>
+               <form method="post" action="./index.php">
+
+               <h1><?php echo _HEADER1; ?></h1>
+
+               <?php echo _TEXT1; ?>
+
+               <h1><?php echo _HEADER2; ?></h1>
+
+               <?php echo _TEXT2; ?>
+
+               <ul>
+                       <li> PHP: <?php echo phpversion(); ?> </li>
+                       <li> MySQL:
+
+<?php
+       // Turn on output buffer
+       // Needed to repress the output of the sql function that are
+       // not part of php (in this case the @ operator doesn't work)
+       ob_start();
+
+       // note: this piece of code is taken from phpMyAdmin
+       $conn = sql_connect_args('localhost', '', '');
+       $result = @sql_query('SELECT VERSION() AS version', $conn);
+
+       if ( $result != FALSE && sql_num_rows($result) > 0 )
+       {
+               $row = sql_fetch_array($result);
+               $match = i18n::explode('.', $row['version']);
+       }
+       else
+       {
+               $result = @sql_query('SHOW VARIABLES LIKE \'version\'', $conn);
+
+               if ( $result != FALSE && @sql_num_rows($result) > 0 )
+               {
+                       $row = sql_fetch_row($result);
+                       $match = i18n::explode('.', $row[1]);
+               }
+               else
+               {
+                       //$output = shell_exec('mysql -V');
+                       $output = ( function_exists('shell_exec') ) ? @shell_exec('mysql -V') : '0.0.0';
+                       preg_match('@[0-9]+\.[0-9]+\.[0-9]+@', $output, $version);
+                       $match = i18n::explode('.', $version[0]);
+
+                       if ( $match[0] == '' )
+                       {
+                               $match[0] = '0';
+                               $match[1] = '0';
+                               $match[2] = '0';
+                       } // end if
+
+               } // end if
+
+       } // end if
+
+       @sql_disconnect($conn);
+
+       //End and clean output buffer
+       ob_end_clean();
+
+       $mysqlVersion = implode($match, '.');
+       $minVersion = '3.23';
+
+       if ( $mysqlVersion == '0.0.0' )
+       {
+               echo _NOTIFICATION1;
+       }
+       else
+       {
+               echo $mysqlVersion;
+       }
+
+       if ( $mysqlVersion < $minVersion )
+       {
+               echo ' <strong>', _TEXT2_WARN2 , $minVersion, '</strong>';
+       }
+?>
+
+                       </li>
+               </ul>
+
+<?php
+       // tell people how they can have their config file filled out automatically
+       if ( @file_exists('../config.php') && @!is_writable('../config.php') )
+       {
+?>
+
+               <h1><?php echo _HEADER3; ?></h1>
+
+<?php
+       echo _TEXT3;
+
+       } // end if
+?>
+
+               <h1><?php echo _HEADER4; ?></h1>
+
+               <?php echo _TEXT4; ?>
+
+               <fieldset>
+                       <legend><?php echo _TEXT4_TAB_HEAD; ?></legend>
+                       <table>
+                               <tr>
+                                       <td><label for="if_mySQL_host"><?php echo _TEXT4_TAB_FIELD1; ?>:</label></td>
+                                       <td><input id="if_mySQL_host" name="mySQL_host" value="<?php echo i18n::hsc(@ini_get('mysql.default_host') )?>" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_mySQL_user"><?php echo _TEXT4_TAB_FIELD2; ?>:</label></td>
+                                       <td><input id="if_mySQL_user" name="mySQL_user" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_mySQL_password"><?php echo _TEXT4_TAB_FIELD3; ?>:</label></td>
+                                       <td><input id="if_mySQL_password" name="mySQL_password" type="password" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_mySQL_database"><?php echo _TEXT4_TAB_FIELD4; ?>:</label></td>
+                                       <td><input id="if_mySQL_database" name="mySQL_database" /> (<input name="mySQL_create" value="1" type="checkbox" id="mySQL_create" /><label for="mySQL_create"><?php echo _TEXT4_TAB_FIELD4_ADD; ?></label>)</td>
+                               </tr>
+                       </table>
+               </fieldset>
+
+               <fieldset>
+                       <legend><?php echo _TEXT4_TAB2_HEAD; ?></legend>
+                       <table>
+                               <tr>
+                                       <td><input name="mySQL_usePrefix" value="1" type="checkbox" id="mySQL_usePrefix" /><label for="mySQL_usePrefix"><?php echo _TEXT4_TAB2_FIELD; ?>:</label></td>
+                                       <td><input name="mySQL_tablePrefix" value="" /></td>
+                               </tr>
+                       </table>
+
+                       <?php echo _TEXT4_TAB2_ADD; ?>
+
+               </fieldset>
+
+               <h1><?php echo _HEADER5; ?></h1>
+
+               <?php echo _TEXT5; ?>
+
+<?php
+       // no need to this all! dirname(__FILE__) is all we need -- moraes
+       /*
+       // discover full path
+       $fullPath = serverVar('PATH_TRANSLATED');
+
+       if ($fullPath == '') {
+               $fullPath = serverVar('SCRIPT_FILENAME');
+       }
+
+       $base_path = str_replace('./index.php', '', $fullPath);
+       $base_path = replace_double_backslash($base_path);
+       $base_path = replace_double_backslash($base_path);
+
+       // add slash at end if necessary
+       if (!ends_with_slash($base_path) ) {
+               $base_path .= '/';
+       }
+       */
+
+       /**
+        * In the code below, there used to be if conditions within the form's HTML that conditionally echoed the URLs.
+        *
+        * For example:
+        *              if ($base_path) . . .
+        * Or:
+        *              if ($url) . . .
+        *
+        * I removed this and simplified below, because PHP's type casting will make these always evaluate to TRUE.
+        * At least currently, $base_path will always be non-empty, since the trailing slash is appended to it.
+        * Similarly, $index_url will always be non-empty, since the 'http://' is prepended to it.
+        * Non-empty, non-zero strings evaluated in if conditions are always cast to boolean TRUE.
+        * The if conditions were accomplishing nothing (currently) and we should avoid using such comparisons, anyway.
+        * If we need to check for a blank/empty string, use empty().
+        *
+        * I was initially replacing those if conditions with ternary operators for empty(), but then I realized
+        * they will never be empty.
+        *
+        * In addition, I decided to remove the PHP logic from within the form and set up separate variables (they were
+        * all just $url before), so the form just echos the values as needed.
+        * - gregorlove 7/13/2011 5:56 PM
+        */
+       
+       /* base path */
+       $base_path = realpath(dirname(__FILE__) . '/..');
+       $pwd = preg_replace("#{$base_path}/#", '', dirname(__FILE__));
+       
+       # Index URL
+       $index_url = 'http://' . serverVar('HTTP_HOST') . serverVar('PHP_SELF');
+       $index_url = preg_replace("#{$pwd}/index.php#", '', $index_url);
+       $index_url = replace_double_backslash($index_url);
+
+       // add slash at end if necessary
+       if ( !ends_with_slash($base_path) )
+       {
+               $base_path .= '/';
+       }
+       if ( !ends_with_slash($index_url) )
+       {
+               $index_url .= '/';
+       }
+
+       # Admin URL and path
+       $admin_url = $index_url . 'nucleus/';
+       $admin_path = $base_path . 'nucleus/';
+
+       # Media URL and path
+       $media_url = $index_url . 'media/';
+       $media_path = $base_path . 'media/';
+
+       # Skins URL and path
+       $skins_url = $index_url . 'skins/';
+       $skins_path = $base_path . 'skins/';
+
+       # Plugins URL
+       $plugins_url = $admin_url . 'plugins/';
+
+       # Action URL
+       $action_url = $index_url . 'action.php';
+
+?>
+
+               <fieldset>
+                       <legend><?php echo _TEXT5_TAB_HEAD; ?></legend>
+                       <table>
+                               <tr>
+                                       <td><label for="if_IndexURL"><?php echo _TEXT5_TAB_FIELD1;?>:</label></td>
+                                       <td><input id="if_IndexURL" name="IndexURL" size="60" value="<?php echo $index_url; ?>" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_AdminURL"><?php echo _TEXT5_TAB_FIELD2;?>:</label></td>
+                                       <td><input id="if_AdminURL" name="AdminURL" size="60" value="<?php echo $admin_url; ?>" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_AdminPath"><?php echo _TEXT5_TAB_FIELD3;?>:</label></td>
+                                       <td><input id="if_AdminPath" name="AdminPath" size="60" value="<?php echo $admin_path; ?>" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_MediaURL"><?php echo _TEXT5_TAB_FIELD4;?>:</label></td>
+                                       <td><input id="if_MediaURL" name="MediaURL" size="60" value="<?php echo $media_url; ?>" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_MediaPath"><?php echo _TEXT5_TAB_FIELD5;?>:</label></td>
+                                       <td><input id="if_MediaPath" name="MediaPath" size="60" value="<?php echo $media_path; ?>" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_SkinsURL"><?php echo _TEXT5_TAB_FIELD6;?>:</label></td>
+                                       <td><input id="if_SkinsURL" name="SkinsURL" size="60" value="<?php echo $skins_url; ?>" />
+                                               <br />(used by imported skins)
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_SkinsPath"><?php echo _TEXT5_TAB_FIELD7;?>:</label></td>
+                                       <td><input id="if_SkinsPath" name="SkinsPath" size="60" value="<?php echo $skins_path; ?>" />
+                                               <br />(<?php echo _TEXT5_TAB_FIELD7_2;?>)
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_PluginURL"><?php echo _TEXT5_TAB_FIELD8;?>:</label></td>
+                                       <td><input id="if_PluginURL" name="PluginURL" size="60" value="<?php echo $plugins_url; ?>" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_ActionURL"><?php echo _TEXT5_TAB_FIELD9;?>:</label></td>
+                                       <td><input id="if_ActionURL" name="ActionURL" size="60" value="<?php echo $action_url; ?>" />
+                                               <br />(<?php echo _TEXT5_TAB_FIELD9_2;?>)
+                                       </td>
+                               </tr>
+                       </table>
+               </fieldset>
+
+               <?php echo _TEXT5_2; ?>
+
+               <h1><?php echo _HEADER6; ?></h1>
+
+               <?php echo _TEXT6; ?>
+
+               <fieldset>
+                       <legend><?php echo _TEXT6_TAB_HEAD; ?></legend>
+                       <table>
+                               <tr>
+                                       <td><label for="if_User_name"><?php echo _TEXT6_TAB_FIELD1; ?>:</label></td>
+                                       <td><input id="if_User_name" name="User_name" value="" /> <small>(<?php echo _TEXT6_TAB_FIELD1_2; ?>)</small></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_User_realname"><?php echo _TEXT6_TAB_FIELD2; ?>:</label></td>
+                                       <td><input id="if_User_realname" name="User_realname" value="" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_User_password"><?php echo _TEXT6_TAB_FIELD3; ?>:</label></td>
+                                       <td><input id="if_User_password" name="User_password" type="password" value="" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_User_password2"><?php echo _TEXT6_TAB_FIELD4; ?>:</label></td>
+                                       <td><input id="if_User_password2" name="User_password2" type="password" value="" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_User_email"><?php echo _TEXT6_TAB_FIELD5; ?>:</label></td>
+                                       <td><input id="if_User_email" name="User_email" value="" /> <small>(<?php echo _TEXT6_TAB_FIELD5_2; ?>)</small></td>
+                               </tr>
+                       </table>
+               </fieldset>
+
+               <h1><?php echo _HEADER7; ?></h1>
+
+               <?php echo _TEXT7; ?>
+
+               <fieldset>
+                       <legend><?php echo _TEXT7_TAB_HEAD; ?></legend>
+                       <table>
+                               <tr>
+                                       <td><label for="if_Blog_name"><?php echo _TEXT7_TAB_FIELD1; ?>:</label></td>
+                                       <td><input id="if_Blog_name" name="Blog_name" size="60" value="My Nucleus CMS" /></td>
+                               </tr>
+                               <tr>
+                                       <td><label for="if_Blog_shortname"><?php echo _TEXT7_TAB_FIELD2; ?>:</label></td>
+                                       <td><input id="if_Blog_shortname" name="Blog_shortname" value="mynucleuscms" /> <small>(<?php echo _TEXT7_TAB_FIELD2_2; ?>)</small></td>
+                               </tr>
+                       </table>
+               </fieldset>
+
+               <h1><?php echo _HEADER8; ?></h1>
+
+               <fieldset>
+                       <legend><?php echo _TEXT8_TAB_HEADER; ?></legend>
+                       <table>
+                               <tr>
+                                       <td><input name="Weblog_ping" value="1" type="checkbox" /><label for="Weblog_ping"><?php echo _TEXT8_TAB_FIELD1; ?></label></td>
+                               </tr>
+                       </table>
+               </fieldset>
+
+               <h1><?php echo _HEADER9; ?></h1>
+
+               <?php echo _TEXT9; ?>
+
+               <p><input name="action" value="go" type="hidden" /> <input type="submit" value="<?php echo _BUTTON1; ?>" onclick="return checkSubmit();" /></p>
+
+               </form>
+       </body>
+</html>
+
+<?php
+} // end function showInstallForm()
+
+
+/**
+ * Add a table prefix if it is used
+ *
+ * @param string $input table name with prefix
+ * @return string
+ */
+function tableName($input)
+{
+       global $mysql_usePrefix, $mysql_prefix;
+
+       if ( $mysql_usePrefix == 1 )
+       {
+               return $mysql_prefix . $input;
+       }
+       else
+       {
+               return $input;
+       } // end if
+
+}
+
+
+/**
+ * The installation process itself
+ */
+function doInstall()
+{
+       global $mysql_usePrefix, $mysql_prefix, $weblog_ping;
+
+       // 0. put all POST-vars into vars
+       $mysql_host = postVar('mySQL_host');
+       $mysql_user = postVar('mySQL_user');
+       $mysql_password = postVar('mySQL_password');
+       $mysql_database = postVar('mySQL_database');
+       $mysql_create = postVar('mySQL_create');
+       $mysql_usePrefix = postVar('mySQL_usePrefix');
+       $mysql_prefix = postVar('mySQL_tablePrefix');
+       $config_indexurl = postVar('IndexURL');
+       $config_adminurl = postVar('AdminURL');
+       $config_adminpath = postVar('AdminPath');
+       $config_mediaurl = postVar('MediaURL');
+       $config_skinsurl = postVar('SkinsURL');
+       $config_pluginurl = postVar('PluginURL');
+       $config_actionurl = postVar('ActionURL');
+       $config_mediapath = postVar('MediaPath');
+       $config_skinspath = postVar('SkinsPath');
+       $user_name = postVar('User_name');
+       $user_realname = postVar('User_realname');
+       $user_password = postVar('User_password');
+       $user_password2 = postVar('User_password2');
+       $user_email = postVar('User_email');
+       $blog_name = postVar('Blog_name');
+       $blog_shortname = postVar('Blog_shortname');
+       $config_adminemail = $user_email;
+       $config_sitename = $blog_name;
+       $weblog_ping = postVar('Weblog_ping');
+
+       $config_indexurl = replace_double_backslash($config_indexurl);
+       $config_adminurl = replace_double_backslash($config_adminurl);
+       $config_mediaurl = replace_double_backslash($config_mediaurl);
+       $config_skinsurl = replace_double_backslash($config_skinsurl);
+       $config_pluginurl = replace_double_backslash($config_pluginurl);
+       $config_actionurl = replace_double_backslash($config_actionurl);
+       $config_adminpath = replace_double_backslash($config_adminpath);
+       $config_skinspath = replace_double_backslash($config_skinspath);
+
+       // 1. check all the data
+       $errors = array();
+
+       if ( !$mysql_database )
+       {
+               array_push($errors, _ERROR2);
+       }
+
+       if ( ($mysql_usePrefix == 1) && (i18n::strlen($mysql_prefix) == 0) )
+       {
+               array_push($errors, _ERROR3);
+       }
+
+       if ( ($mysql_usePrefix == 1) && (!preg_match('/^[a-zA-Z0-9_]+$/i', $mysql_prefix) ) )
+       {
+               array_push($errors, _ERROR4);
+       }
+
+       // TODO: add action.php check
+       if ( !ends_with_slash($config_indexurl) || !ends_with_slash($config_adminurl) || !ends_with_slash($config_mediaurl) || !ends_with_slash($config_pluginurl) || !ends_with_slash($config_skinsurl) )
+       {
+               array_push($errors, _ERROR5);
+       }
+
+       if ( !ends_with_slash($config_adminpath) )
+       {
+               array_push($errors, _ERROR6);
+       }
+
+       if ( !ends_with_slash($config_mediapath) )
+       {
+               array_push($errors, _ERROR7);
+       }
+
+       if ( !ends_with_slash($config_skinspath) )
+       {
+               array_push($errors, _ERROR8);
+       }
+
+       if ( !is_dir($config_adminpath) )
+       {
+               array_push($errors, _ERROR9);
+       }
+
+       if ( !_isValidMailAddress($user_email) )
+       {
+               array_push($errors, _ERROR10);
+       }
+
+       if ( !_isValidDisplayName($user_name) )
+       {
+               array_push($errors, _ERROR11);
+       }
+
+       if ( !$user_password || !$user_password2 )
+       {
+               array_push($errors, _ERROR12);
+       }
+
+       if ( $user_password != $user_password2 )
+       {
+               array_push($errors, _ERROR13);
+       }
+
+       if ( !_isValidShortName($blog_shortname) )
+       {
+               array_push($errors, _ERROR14);
+       }
+
+       if ( sizeof($errors) > 0 )
+       {
+               showErrorMessages($errors);
+       }
+
+       // 2. try to log in to mySQL
+
+       global $MYSQL_CONN;
+
+       // this will need to be changed if we ever allow
+       $MYSQL_CONN = @sql_connect_args($mysql_host, $mysql_user, $mysql_password);
+
+       if ( $MYSQL_CONN == FALSE )
+       {
+               _doError(_ERROR15 . ': ' . sql_error() );
+       }
+
+       // 3. try to create database (if needed)
+       if ( $mysql_create == 1 )
+       {
+               sql_query('CREATE DATABASE ' . $mysql_database, $MYSQL_CONN) or _doError(_ERROR16 . ': ' . sql_error($MYSQL_CONN) );
+       }
+
+       // 4. try to select database
+       sql_select_db($mysql_database, $MYSQL_CONN) or _doError(_ERROR17);
+
+       // 5. execute queries
+       $filename = 'install.sql';
+       $fd = fopen($filename, 'r');
+       $queries = fread($fd, filesize($filename) );
+       fclose($fd);
+
+       $queries = preg_split('#(;\n|;\r)#', $queries);
+
+       $aTableNames = array(
+               'nucleus_actionlog',
+               'nucleus_ban',
+               'nucleus_blog',
+               'nucleus_category',
+               'nucleus_comment',
+               'nucleus_config',
+               'nucleus_item',
+               'nucleus_karma',
+               'nucleus_member',
+               'nucleus_plugin',
+               'nucleus_skin',
+               'nucleus_template',
+               'nucleus_team',
+               'nucleus_activation',
+               'nucleus_tickets'
+       );
+
+       // these are unneeded (one of the replacements above takes care of them)
+       //                      'nucleus_plugin_event',
+       //                      'nucleus_plugin_option',
+       //                      'nucleus_plugin_option_desc',
+       //                      'nucleus_skin_desc',
+       //                      'nucleus_template_desc',
+
+       $aTableNamesPrefixed = array(
+               $mysql_prefix . 'nucleus_actionlog',
+               $mysql_prefix . 'nucleus_ban',
+               $mysql_prefix . 'nucleus_blog',
+               $mysql_prefix . 'nucleus_category',
+               $mysql_prefix . 'nucleus_comment',
+               $mysql_prefix . 'nucleus_config',
+               $mysql_prefix . 'nucleus_item',
+               $mysql_prefix . 'nucleus_karma',
+               $mysql_prefix . 'nucleus_member',
+               $mysql_prefix . 'nucleus_plugin',
+               $mysql_prefix . 'nucleus_skin',
+               $mysql_prefix . 'nucleus_template',
+               $mysql_prefix . 'nucleus_team',
+               $mysql_prefix . 'nucleus_activation',
+               $mysql_prefix . 'nucleus_tickets'
+       );
+
+       // these are unneeded (one of the replacements above takes care of them)
+       //                      $mysql_prefix . 'nucleus_plugin_event',
+       //                      $mysql_prefix . 'nucleus_plugin_option',
+       //                      $mysql_prefix . 'nucleus_plugin_option_desc',
+       //                      $mysql_prefix . 'nucleus_skin_desc',
+       //                      $mysql_prefix . 'nucleus_template_desc',
+
+       $count = count($queries);
+
+       for ( $idx = 0; $idx < $count; $idx++ )
+       {
+               $query = trim($queries[$idx]);
+               // echo "QUERY = <small>" . i18n::hsc($query) . "</small><p>";
+
+               if ( $query )
+               {
+
+                       if ( $mysql_usePrefix == 1 )
+                       {
+                               $query = str_replace($aTableNames, $aTableNamesPrefixed, $query);
+                       } // end if
+
+                       sql_query($query, $MYSQL_CONN) or _doError(_ERROR30 . ' (<small>' . i18n::hsc($query) . '</small>): ' . sql_error($MYSQL_CONN) );
+               } // end if
+
+       } // end loop
+
+       // 5a make first post
+       $newpost = "INSERT INTO ". tableName('nucleus_item') ." VALUES (1, '" . _1ST_POST_TITLE . "', '" . _1ST_POST . "', '" . _1ST_POST2 . "', 1, 1, '2005-08-15 11:04:26', 0, 0, 0, 1, 0, 1);";
+       sql_query($newpost,$MYSQL_CONN) or _doError(_ERROR18 . ' (<small>' . i18n::hsc($newpost) . '</small>): ' . sql_error($MYSQL_CONN) );
+
+       // 6. update global settings
+       updateConfig('IndexURL', $config_indexurl);
+       updateConfig('AdminURL', $config_adminurl);
+       updateConfig('MediaURL', $config_mediaurl);
+       updateConfig('SkinsURL', $config_skinsurl);
+       updateConfig('PluginURL', $config_pluginurl);
+       updateConfig('ActionURL', $config_actionurl);
+       updateConfig('AdminEmail', $config_adminemail);
+       updateConfig('SiteName', $config_sitename);
+
+       // 7. update GOD member
+       $query = 'UPDATE ' . tableName('nucleus_member')
+                       . " SET mname='" . addslashes($user_name) . "',"
+                       . " mrealname='" . addslashes($user_realname) . "',"
+                       . " mpassword='" . md5(addslashes($user_password) ) . "',"
+                       . " murl='" . addslashes($config_indexurl) . "',"
+                       . " memail='" . addslashes($user_email) . "',"
+                       . " madmin=1, mcanlogin=1"
+                       . " WHERE mnumber=1";
+
+       sql_query($query,$MYSQL_CONN) or _doError(_ERROR19 . ': ' . sql_error($MYSQL_CONN) );
+
+       // 8. update weblog settings
+       $query = 'UPDATE ' . tableName('nucleus_blog')
+                       . " SET bname='" . addslashes($blog_name) . "',"
+                       . " bshortname='" . addslashes($blog_shortname) . "',"
+                       . " burl='" . addslashes($config_indexurl) . "'"
+                       . " WHERE bnumber=1";
+
+       sql_query($query, $MYSQL_CONN) or _doError(_ERROR20 . ': ' . sql_error($MYSQL_CONN) );
+
+       // 9. update item date
+       $query = 'UPDATE ' . tableName('nucleus_item')
+                       . " SET itime='" . date('Y-m-d H:i:s', time() ) ."'"
+                       . " WHERE inumber=1";
+
+       sql_query($query,$MYSQL_CONN) or _doError(_ERROR21 . ': ' . sql_error($MYSQL_CONN) );
+
+       global $aConfPlugsToInstall, $aConfSkinsToImport;
+       $aSkinErrors = array();
+       $aPlugErrors = array();
+
+       if ( (count($aConfPlugsToInstall) > 0) || (count($aConfSkinsToImport) > 0) )
+       {
+               // 10. set global variables
+               global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_PREFIX;
+
+               $MYSQL_HOST = $mysql_host;
+               $MYSQL_USER = $mysql_user;
+               $MYSQL_PASSWORD = $mysql_password;
+               $MYSQL_DATABASE = $mysql_database;
+               $MYSQL_PREFIX = ( $mysql_usePrefix == 1 ) ? $mysql_prefix : '';
+
+               global $DIR_NUCLEUS, $DIR_MEDIA, $DIR_SKINS, $DIR_PLUGINS, $DIR_LANG, $DIR_LIBS;
+
+               $DIR_NUCLEUS = $config_adminpath;
+               $DIR_MEDIA = $config_mediapath;
+               $DIR_SKINS = $config_skinspath;
+               $DIR_PLUGINS = $DIR_NUCLEUS . 'plugins/';
+               $DIR_LANG = $DIR_NUCLEUS . 'language/';
+               $DIR_LIBS = $DIR_NUCLEUS . 'libs/';
+
+               // close database connection (needs to be closed if we want to include globalfunctions.php)
+               sql_close($MYSQL_CONN);
+
+               $manager = '';
+               include_once($DIR_LIBS . 'globalfunctions.php');
+
+               // 11. install custom skins
+               $aSkinErrors = installCustomSkins($manager);
+               $defskinQue  = 'SELECT `sdnumber` as result FROM ' . sql_table('skin_desc') . ' WHERE `sdname` = "default"';
+               $defSkinID   = quickQuery($defskinQue);
+               $updateQuery = 'UPDATE ' . sql_table('blog') . ' SET `bdefskin` = ' . intval($defSkinID) . ' WHERE `bnumber` = 1';
+               sql_query($updateQuery);
+               $updateQuery = 'UPDATE ' . sql_table('config') . ' SET `value` = ' . intval($defSkinID). ' WHERE `name` = "BaseSkin"';
+               sql_query($updateQuery);
+
+               // 12. install NP_Ping, if decided
+               if ( $weblog_ping == 1 )
+               {
+                       global $aConfPlugsToInstall;
+                       array_push($aConfPlugsToInstall, 'NP_Ping');
+               }
+
+               // 13. install custom plugins
+               $aPlugErrors = installCustomPlugs($manager);
+       }
+
+       // 14. Write config file ourselves (if possible)
+       $bConfigWritten = 0;
+
+       if ( @file_exists('../config.php') && is_writable('../config.php') && $fp = @fopen('../config.php', 'w') )
+       {
+               $config_data = '<' . '?php' . "\n\n";
+               //$config_data .= "\n"; (extraneous, just added extra \n to previous line
+               $config_data .= "       // mySQL connection information\n";
+               $config_data .= "       \$MYSQL_HOST = '" . $mysql_host . "';\n";
+               $config_data .= "       \$MYSQL_USER = '" . $mysql_user . "';\n";
+               $config_data .= "       \$MYSQL_PASSWORD = '" . $mysql_password . "';\n";
+               $config_data .= "       \$MYSQL_DATABASE = '" . $mysql_database . "';\n";
+               $config_data .= "       \$MYSQL_PREFIX = '" . (($mysql_usePrefix == 1)?$mysql_prefix:'') . "';\n";
+               $config_data .= "       // new in 3.50. first element is db handler, the second is the db driver used by the handler\n";
+               $config_data .= "       // default is \$MYSQL_HANDLER = array('mysql','mysql');\n";
+               $config_data .= "       //\$MYSQL_HANDLER = array('mysql','mysql');\n";
+               $config_data .= "       //\$MYSQL_HANDLER = array('pdo','mysql');\n";
+               $config_data .= "       \$MYSQL_HANDLER = array('".$MYSQL_HANDLER[0]."','".$MYSQL_HANDLER[1]."');\n";
+               $config_data .= "\n";
+               $config_data .= "       // main nucleus directory\n";
+               $config_data .= "       \$DIR_NUCLEUS = '" . $config_adminpath . "';\n";
+               $config_data .= "\n";
+               $config_data .= "       // path to media dir\n";
+               $config_data .= "       \$DIR_MEDIA = '" . $config_mediapath . "';\n";
+               $config_data .= "\n";
+               $config_data .= "       // extra skin files for imported skins\n";
+               $config_data .= "       \$DIR_SKINS = '" . $config_skinspath . "';\n";
+               $config_data .= "\n";
+               $config_data .= "       // these dirs are normally sub dirs of the nucleus dir, but \n";
+               $config_data .= "       // you can redefine them if you wish\n";
+               $config_data .= "       \$DIR_PLUGINS = \$DIR_NUCLEUS . 'plugins/';\n";
+               $config_data .= "       \$DIR_LANG = \$DIR_NUCLEUS . 'language/';\n";
+               $config_data .= "       \$DIR_LIBS = \$DIR_NUCLEUS . 'libs/';\n";
+               $config_data .= "\n";
+               $config_data .= "       // include libs\n";
+               $config_data .= "       include(\$DIR_LIBS.'globalfunctions.php');\n";
+               $config_data .= "?" . ">";
+
+               $result = @fputs($fp, $config_data, i18n::strlen($config_data) );
+               fclose($fp);
+
+               if ( $result )
+               {
+                       $bConfigWritten = 1;
+               } // end if
+
+       } // end if
+       echo "<?xml version=\"1.0\" encoding=\"" . i18n::get_current_charset() . "\" ?>\n";
+       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+       echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\" lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\">\n";
+?>
+<head>
+       <title><?php echo _TITLE; ?></title>
+       <style>@import url('../nucleus/styles/manual.css');</style>
+</head>
+<body>
+       <div style='text-align:center'><img src='../nucleus/styles/logo.gif' /></div> <!-- Nucleus logo -->
+
+<?php
+       $aAllErrors = array_merge($aSkinErrors, $aPlugErrors);
+
+       if ( count($aAllErrors) > 0 )
+       {
+               echo '<h1>' . _TITLE2 . '</h1>';
+               echo '<ul><li>' . implode('</li><li>', $aAllErrors) . '</li></ul>';
+       }
+
+       // begin if: config file not written
+       if ( !$bConfigWritten )
+       {
+?>
+               <h1><?php echo _TITLE3; ?></h1>
+
+               <?php echo _TEXT10; ?>
+
+               <pre><code>&lt;?php
+       // mySQL connection information
+       $MYSQL_HOST = '<b><?php echo $mysql_host?></b>';
+       $MYSQL_USER = '<b><?php echo $mysql_user?></b>';
+       $MYSQL_PASSWORD = '<i><b>xxxxxxxxxxx</b></i>';
+       $MYSQL_DATABASE = '<b><?php echo $mysql_database?></b>';
+       $MYSQL_PREFIX = '<b><?php echo ($mysql_usePrefix == 1)?$mysql_prefix:''?></b>';
+
+       // new in 3.50. first element is db handler, the second is the db driver used by the handler
+       // default is $MYSQL_HANDLER = array('mysql','mysql');
+       //$MYSQL_HANDLER = array('mysql','mysql');
+       //$MYSQL_HANDLER = array('pdo','mysql');
+       $MYSQL_HANDLER = array('mysql','');
+
+       // main nucleus directory
+       $DIR_NUCLEUS = '<b><?php echo $config_adminpath?></b>';
+
+       // path to media dir
+       $DIR_MEDIA = '<b><?php echo $config_mediapath?></b>';
+
+       // extra skin files for imported skins
+       $DIR_SKINS = '<b><?php echo $config_skinspath?></b>';
+
+       // these dirs are normally sub dirs of the nucleus dir, but
+       // you can redefine them if you wish
+       $DIR_PLUGINS = $DIR_NUCLEUS . 'plugins/';
+       $DIR_LANG = $DIR_NUCLEUS . 'language/';
+       $DIR_LIBS = $DIR_NUCLEUS . 'libs/';
+
+       // include libs
+       include($DIR_LIBS.'globalfunctions.php');
+?&gt;</code></pre>
+
+       <?php echo _TEXT11; ?>
+
+       <div class="note">
+       <?php echo _TEXT12; ?>
+       </div>
+
+<?php
+       }
+       // else: config file written
+       else
+       {
+?>
+
+       <h1><?php echo _TITLE4; ?></h1>
+
+       <?php echo _TEXT13; ?>
+
+<?php
+       } // end if
+?>
+
+       <h1><?php echo _TITLE5; ?></h1>
+
+       <?php echo _TEXT14; ?>
+
+       <ul>
+               <li><?php echo _TEXT14_L1; ?></li>
+               <li><?php echo _TEXT14_L2; ?></li>
+       </ul>
+
+       <h1><?php echo _HEADER10; ?></h1>
+
+       <?php echo _TEXT15; ?>
+
+       <ul>
+               <li><?php echo _TEXT15_L1; ?></li>
+               <li><?php echo _TEXT15_L2; ?></li>
+       </ul>
+
+       <?php echo _TEXT16; ?>
+
+       <h1><?php echo _HEADER11; ?></h1>
+
+       <p><?php echo _TEXT16_H; ?>
+               <ul>
+                       <li><a href="<?php echo $config_adminurl?>"><?php echo _TEXT16_L1; ?></a></li>
+                       <li><a href="<?php echo $config_indexurl?>"><?php echo _TEXT16_L2; ?></a></li>
+               </ul>
+       </p>
+
+</body>
+</html>
+
+<?php
+} // end function doInstall()
+
+
+/**
+ * Install custom plugins
+ */
+function installCustomPlugs(&$manager)
+{
+       global $aConfPlugsToInstall, $DIR_LIBS;
+
+       $aErrors = array();
+
+       if ( count($aConfPlugsToInstall) == 0 )
+       {
+               return $aErrors;
+       }
+
+       $res = sql_query('SELECT * FROM ' . sql_table('plugin') );
+       $numCurrent = sql_num_rows($res);
+
+       foreach ( $aConfPlugsToInstall as $plugName )
+       {
+               // do this before calling getPlugin (in case the plugin id is used there)
+               $query = 'INSERT INTO ' . sql_table('plugin') . ' (`porder`, `pfile`) VALUES (' . (++$numCurrent) . ', "' . addslashes($plugName) . '")';
+               sql_query($query);
+
+               // get and install the plugin
+               $manager->clearCachedInfo('installedPlugins');
+               $plugin =& $manager->getPlugin($plugName);
+               $plugin->plugid = $numCurrent;
+
+               if ( !$plugin )
+               {
+                       sql_query('DELETE FROM ' . sql_table('plugin') . ' WHERE `pfile` = \'' . addslashes($plugName) . '\'');
+                       $numCurrent--;
+                       array_push($aErrors, _ERROR22 . $plugName);
+                       continue;
+               } // end if
+
+               $plugin->install();
+       } // end loop
+
+       // SYNC PLUGIN EVENT LIST
+       sql_query('DELETE FROM ' . sql_table('plugin_event') );
+
+       // loop over all installed plugins
+       $res = sql_query('SELECT `pid`, `pfile` FROM ' . sql_table('plugin') );
+
+       while ( $o = sql_fetch_object($res) )
+       {
+               $pid = $o->pid;
+               $plug =& $manager->getPlugin($o->pfile);
+
+               if ( $plug )
+               {
+                       $eventList = $plug->getEventList();
+
+                       foreach ( $eventList as $eventName )
+                       {
+                               sql_query('INSERT INTO ' . sql_table('plugin_event') . ' (`pid`, `event`) VALUES (' . $pid . ', \'' . $eventName . '\')');
+                       } // end loop
+
+               } // end if
+
+       } // end loop
+
+       return $aErrors;
+} // end function installCustomPlugs()
+
+
+/**
+ * Install custom skins
+ * Prepares the installation of custom skins
+ */
+function installCustomSkins(&$manager)
+{
+       global $aConfSkinsToImport, $DIR_LIBS, $DIR_SKINS, $manager;
+
+       $aErrors = array();
+
+       if ( empty($manager) )
+       {
+               $manager = new MANAGER;
+       }
+
+       if ( count($aConfSkinsToImport) == 0 )
+       {
+               return $aErrors;
+       }
+
+       // load skinie class
+       include_once($DIR_LIBS . 'skinie.php');
+
+       $importer = new SKINIMPORT();
+
+       foreach ( $aConfSkinsToImport as $skinName )
+       {
+               $importer->reset();
+               $skinFile = $DIR_SKINS . $skinName . '/skinbackup.xml';
+
+               if ( !@file_exists($skinFile) )
+               {
+                       array_push($aErrors, _ERROR23_1 . $skinFile . ' : ' . _ERROR23_2);
+                       continue;
+               } // end if
+
+               $error = $importer->readFile($skinFile);
+
+               if ( $error )
+               {
+                       array_push($aErrors, _ERROR24 . $skinName . ' : ' . $error);
+                       continue;
+               } // end if
+
+               $error = $importer->writeToDatabase(1);
+
+               if ( $error )
+               {
+                       array_push($aErrors, _ERROR24 . $skinName . ' : ' . $error);
+                       continue;
+               } // end if
+
+       } // end loop
+
+       return $aErrors;
+} // end function installCustomSkins()
+
+
+/**
+ * Check if some important files of the Nucleus CMS installation are available
+ * Give an error if one or more files are not accessible
+ */
+function doCheckFiles()
+{
+       $missingfiles = array();
+       $files = array(
+               './install.sql',
+               '../index.php',
+               '../action.php',
+               '../nucleus/index.php',
+               '../nucleus/libs/globalfunctions.php',
+               '../nucleus/libs/ADMIN.php',
+               '../nucleus/libs/BLOG.php',
+               '../nucleus/libs/COMMENT.php',
+               '../nucleus/libs/COMMENTS.php',
+               '../nucleus/libs/ITEM.php',
+               '../nucleus/libs/MEMBER.php',
+               '../nucleus/libs/SKIN.php',
+               '../nucleus/libs/TEMPLATE.php',
+               '../nucleus/libs/MEDIA.php',
+               '../nucleus/libs/ACTIONLOG.php',
+               '../nucleus/media.php'
+       );
+       
+       $count = count($files);
+
+       for ( $i = 0; $i < $count; $i++ )
+       {
+
+               if ( !is_readable($files[$i]) )
+               {
+                       array_push($missingfiles, _ERROR25_1 . $files[$i] . _ERROR25_2);
+               } // end if
+
+       } // end loop
+
+       if ( count($missingfiles) > 0 )
+       {
+               showErrorMessages($missingfiles);
+       } // end if
+
+} // end function doCheckFiles()
+
+
+/**
+ * Updates the configuration in the database
+ *
+ * @param string $name name of the config var
+ * @param string $value new value of the config var
+ * @return int
+ */
+function updateConfig($name, $value)
+{
+       global $MYSQL_CONN;
+       $name = addslashes($name);
+       $value = trim(addslashes($value) );
+
+       $query = 'UPDATE ' . tableName('nucleus_config')
+                       . " SET `value` = '$value'"
+                       . " WHERE `name` = '$name'";
+
+       sql_query($query, $MYSQL_CONN) or _doError(_ERROR26 . ': ' . sql_error($MYSQL_CONN) );
+       return sql_insert_id($MYSQL_CONN);
+}
+
+
+/**
+ * Replaces double backslashs
+ *
+ * @param string $input string that could have double backslashs
+ * @return string
+ */
+function replace_double_backslash($input)
+{
+       return str_replace('\\', '/', $input);
+}
+
+
+/**
+ * Checks if a string ends with a slash
+ *
+ * @param string $input
+ * @return string
+ */
+function ends_with_slash($input)
+{
+       return ( i18n::strrpos($input, '/') == i18n::strlen($input) - 1);
+}
+
+
+/**
+ * Checks if email address is valid
+ *
+ * @param string $address address which should be tested
+ * @return bool
+ */
+function _isValidMailAddress($address)
+{
+
+       if ( preg_match("/^[a-zA-Z0-9\._-]+@+[A-Za-z0-9\._-]+\.+[A-Za-z]{2,4}$/", $address) )
+       {
+               return TRUE;
+       }
+       else
+       {
+               return FALSE;
+       } // end if
+
+}
+
+
+/*
+ * Check if short blog names and nicknames are allowed
+ * Returns true if the given string is a valid shortname
+ * logic: only letters and numbers are allowed, no spaces allowed
+ *
+ * FIX: function eregi is deprecated since PHP 5.3.0
+ *
+ * @param string $name name which should be tested
+ * @return bool
+ */
+function _isValidShortName($name)
+{
+
+       if ( preg_match("/^[a-z0-9]+$/i", $name) )
+       {
+               return TRUE;
+       }
+       else
+       {
+               return FALSE;
+       } // end if
+
+}
+
+
+/*
+ * Check if a display name is allowed
+ * Returns true if the given string is a valid display name
+ *
+ * FIX: function eregi is deprecated since PHP 5.3.0
+ *
+ * @param string $name name which should be tested
+ * @return bool
+ */
+function _isValidDisplayName($name)
+{
+
+       if ( preg_match("/^[a-z0-9]+[a-z0-9 ]*[a-z0-9]+$/i", $name) )
+       {
+               return TRUE;
+       }
+       else
+       {
+               return FALSE;
+       } // end if
+
+}
+
+
+/**
+ * Shows error message
+ *
+ * @param string $msg error message
+ */
+function _doError($message)
+{
+       echo "<?xml version=\"1.0\" encoding=\"" . i18n::get_current_charset() . "\" ?>\n";
+       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+       echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\" lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\">\n";
+?>
+<head>
+       <title><?php echo _TITLE; ?></title>
+       <style>@import url('../nucleus/styles/manual.css');</style>
+</head>
+<body>
+       <div style="text-align: center;"><img src="../nucleus/styles/logo.gif" /></div>
+       <h1><?php echo _ERROR27; ?></h1>
+
+       <p> <?php echo _ERROR28; ?>: "<?php echo $message; ?>" </p>
+       <p> <a href="./index.php" onclick="history.back(); return false;"><?php echo _TEXT17; ?></a> </p>
+</body>
+</html>
+
+<?php
+       exit;
+}
+
+
+/*
+ * Shows error messages
+ *
+ * @param array $errors array with error messages
+ */
+function showErrorMessages($errors)
+{
+       echo "<?xml version=\"1.0\" encoding=\"" . i18n::get_current_charset() . "\" ?>\n";
+       echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+       echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\" lang=\"" . preg_replace('#_#', '-', i18n::get_current_locale()) . "\">\n";
+?>
+<head>
+       <title><?php echo _TITLE; ?></title>
+       <style>@import url('../nucleus/styles/manual.css');</style>
+</head>
+<body>
+       <div style='text-align:center'><img src='../nucleus/styles/logo.gif' /></div> <!-- Nucleus logo -->
+       <h1><?php echo _ERROR27; ?></h1>
+
+       <p><?php echo _ERROR29; ?>:</p>
+
+       <ul>
+
+<?php
+while ( $msg = array_shift($errors) )
+{
+       echo '<li>', $msg, '</li>';
+}
+?>
+       </ul>
+       <p><a href="./index.php" onclick="history.back();return false;"><?php echo _TEXT17; ?></a></p>
+</body>
+</html>
+
+<?php
+exit;
+}
+
+
+/* for the non-php systems that decide to show the contents:
+?></div>
+<?php
+*/
\ No newline at end of file
similarity index 100%
rename from install.sql
rename to install/install.sql
similarity index 99%
rename from install_lang_english.php
rename to install/locales/en_Latn_US.UTF-8.php
index 92ad6a1..c551e58 100644 (file)
@@ -153,5 +153,3 @@ define('_1ST_POST_TITLE',   'Welcome to Nucleus CMS v3.6');
 define('_1ST_POST',    'This is the first post on your Nucleus CMS. Nucleus offers you the building blocks you need to create a web presence. Whether you want to
 create a personal blog, a family page, or an online business site, Nucleus CMS can help you achieve your goals.<br /> <br /> We\\\'ve loaded this first entry with links and information to get you started. Though you can delete this entry, it will eventually scroll off the main page as you add content to your site. Add your comments while you learn to work with Nucleus CMS, or bookmark this page so you can come back to it when you need to.');
 define('_1ST_POST2',   '<b>Home - <a href=\"http://nucleuscms.org/\" title=\"Nucleus CMS home\">nucleuscms.org</a></b><br /> Welcome to the world of Nucleus CMS. In 2001 a set of PHP scripts were let loose on the open Internet. Those scripts, which took user-generated data and used it to dynamically create html pages, contained the ideas and the algorithms that are the core of today\\\'s Nucleus CMS. Though Nucleus CMS 3.5 is far more flexible and powerful than the scripts from which it emerged, it still expresses the values that guided its birth: flexibility, security, and computational elegance.<br /> <br /> Thanks to an international community of sophisticated developers and designers, Nucleus CMS remains simple enough for anyone to learn, and expandable enough to allow you to build almost any website you can imagine. Nucleus CMS lets you integrate text, images, and user comments in a seamless package that will make your web presence as serious, professional, personal, or fun as you want it to be. We hope you enjoy its power.<br /> <br /> <b>Documentation - <a href=\"http://docs.nucleuscms.org/\" title=\"Nucleus CMS Documentation\">docs.nucleuscms.org</a></b><br /> The install process places a <a href=\"nucleus/documentation/\">user</a> and a <a href=\"nucleus/documentation/devdocs/\">developer</a> documentation on your web server. Pop-up <a href=\"/nucleus/documentation/help.html\">help</a> is available throughout the administration area to assist you in maintaining and customizing your site. When in the Nucleus CMS admin area, click on this symbol <img src=\"nucleus/documentation/icon-help.gif\" width=\"15\" height=\"15\" alt=\"help icon\" /> for context-sensitive help. You can also read this documentation online under <a href=\"http://docs.nucleuscms.org/\" title=\"Nucleus CMS Documentation\">docs.nucleuscms.org</a>.<br /> <br /> <b>Frequently Asked Questions - <a nicetitle=\"Nucleus CMS FAQ\" href=\"http://faq.nucleuscms.org/\">faq.nucleuscms.org</a></b><br /> If you need more information about managing, extending or troubleshooting your Nucleus CMS the Nucleus FAQ is the first place to search information. Over 170 frequently asked questions are answered from experienced Nucleus users.<br /> <br /> <b>Support - <a href=\"http://forum.nucleuscms.org/\" title=\"Nucleus CMS Support Forum\">forum.nucleuscms.org</a></b><br /> Should you require assistance, please don\\\'t hesitate to <a href=\"http://forum.nucleuscms.org/faq.php\">join</a> the 6,800+ registered users on our forums. With its built-in search capability of the 73,000+ posted articles, your answers are just a few clicks away. Remember: almost any question you think of has already been asked on the forums, and almost anything you want to do with Nucleus has been tried and explained there. Be sure to check them out.<br /> <br /> <b>Demonstration - <a href=\"http://demo.nucleuscms.org/\" title=\"Nucleus CMS Demonstration\">demo.nucleuscms.org</a></b><br /> Want to play around, test changes or tell a friend or relative about Nucleus CMS? Visit our live <a href=\"http://demo.nucleuscms.org/\">demo site</a>.<br /> <br /> <b>Skins - <a href=\"http://skins.nucleuscms.org/\" title=\"Nucleus CMS Skins\">skins.nucleuscms.org</a></b><br /> The combination of multi-weblogs and skins/templates make for a powerful duo in personalizing your site or designing one for a friend, relative or business client. Import new skins to change the look of your website, or create your own skins and share them with the Nucleus community! Help designing or modifying skins is only a few clicks away in the Nucleus forums.<br /> <br /> <b>Plugins - <a href=\"http://plugins.nucleuscms.org/\" title=\"Nucleus plugins\">plugins.nucleuscms.org</a></b><br /> Looking to add some extra functionality to the base Nucleus CMS package? Our <a href=\"http://wiki.nucleuscms.org/plugin\">plugin repository</a> gives you plenty of ways to extend and expand what Nucleus CMS can do; your imagination and creativity are the only limit on how Nucleus CMS can work for you.<br /> <br /> <b>Development - <a href=\"http://dev.nucleuscms.org/\" title=\"Nucleus Development\">dev.nucleuscms.org</a></b><br /> If you need more information about the Nucleus development you can find Informations in the developer documents at <a href=\"http://dev.nucleuscms.org/\" title=\"Nucleus Development\">dev.nucleuscms.org</a> or in the <a href=\"http://forum.nucleuscms.org/\">Support Forum</a>. Sourceforge.net graciously hosts our <a href=\"http://sourceforge.net/projects/nucleuscms/\">Open Source project page</a> which contains our software downloads and CVS repository.<br /> <br /> <b>Donators</b><br /> We would like to thank these <a href=\"http://nucleuscms.org/donators.php\">nice people</a> for their <a href=\"http://nucleuscms.org/donate.php\">support</a>. <em>Thanks all!</em><br /> <br /> <b>Vote for Nucleus CMS</b><br /> Like Nucleus CMS? Vote for us at <a href=\"http://www.hotscripts.com/Detailed/13368.html?RID=nucleus@demuynck.org\">HotScripts</a> and <a href=\"http://www.opensourcecms.com/index.php?option=content&task=view&id=145\">opensourceCMS</a>.<br /> <br /> <b>License</b><br /> When we speak of free software, we are referring to freedom, not price. Our <a href=\"http://www.gnu.org/licenses/gpl.html\">General Public Licenses</a> are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.');
-
-?>
diff --git a/install/locales/ja_Jpan_JP.UTF-8.php b/install/locales/ja_Jpan_JP.UTF-8.php
new file mode 100644 (file)
index 0000000..a4f46fc
--- /dev/null
@@ -0,0 +1,510 @@
+<?php
+/*
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
+ * Copyright (C) 2002-2011 The Nucleus Group
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * (see nucleus/documentation/index.html#license for more info)
+ */
+
+/**
+ * @license http://nucleuscms.org/license.txt GNU General Public License
+ * @copyright Copyright (C) 2002-2011 The Nucleus Group
+ * @version $Id: install_lang_japanese.php 1189 2011-03-28 14:45:08Z sakamocchi $
+ */
+define('_ERROR1',                              '使用中のPHPはMySQLをサポートしていません :(');
+define('_ERROR2',                              'データベース名が見つかりません');
+define('_ERROR3',                              '「データベースプリフィックスを使用する」が選択されていますが、プリフィックスが設定されていません。');
+define('_ERROR4',                              'プリフィックスに使用できる文字は A-Z、a-z、0-9 と _(アンダーバー)のみです。');
+define('_ERROR5',                              'URLのいづれかが「/(スラッシュ)」で終わっていないか、または機能決定ファイルのURLが「action.php」で終わっていません。');
+define('_ERROR6',                              '管理エリアのディレクトリパスが「/(スラッシュ)」で終わっていません。');
+define('_ERROR7',                              'アップロードしたファイルが格納されるディレクトリパスが「/(スラッシュ)」で終わっていません。');
+define('_ERROR8',                              'テーマファイルのディレクトリパスが「/(スラッシュ)」で終わっていません。');
+define('_ERROR9',                              '管理エリアのディレクトリパスがサーバ上に存在しません。');
+define('_ERROR9_2',                            '<tt>action.php</tt>ファイルへのURLが別のサーバを指しています。');
+define('_ERROR9_3',                            '<tt>action.php</tt>ファイルへのURLにファイルが存在しません。');
+define('_ERROR10',                             'メールアドレスが不正です。');
+define('_ERROR11',                             '「表示される名前」に使用できない文字が含まれています。(使用できる文字:a-z と 0-9、最初と最後以外の空白)');
+define('_ERROR12',                             'パスワードが入力されていません。');
+define('_ERROR13',                             '入力された二つのパスワードが一致しません。');
+define('_ERROR14',                             '「ブログの短縮名(略称)」に使用できない文字が含まれています。(使用できる文字:a-z と 0-9。空白は使用できません)');
+define('_ERROR15',                             'mySQL serverに接続できませんでした。');
+define('_ERROR16',                             'データベースを作成できませんでした。作成の権限があるかどうか確認してください。SQL エラーの内容');
+define('_ERROR17',                             'データベースを見つけられませんでした。データベースが存在するか確認してください。');
+define('_ERROR18',                             '次のクエリの実行中にエラーが発生しました');
+define('_ERROR19',                             '「メンバー設定」の実行中にエラーが発生しました');
+define('_ERROR20',                             '「blog設定」の実行中にエラーが発生しました');
+define('_ERROR21',                             '次のクエリの実行中にエラーが発生しました');
+define('_ERROR22',                             'プラグイン「%s」をインストールできませんでした。');
+define('_ERROR23_1',                   'テーマファイル「%s」が読み込めませんでした。');
+define('_ERROR23_2',                   'ファイルが見つかりません。');
+define('_ERROR24',                             'テーマ「%s」をインポートできませんでした。');
+define('_ERROR25_1',                   'プログラムのコアファイル <b>');
+define('_ERROR25_2',                   '</b> が見つからない、もしくは読み出し禁止になっています。');
+define('_ERROR26',                             '設定の更新中にエラーが発生しました。実行したクエリは次の通りです');
+define('_ERROR27',                             'エラー!');
+define('_ERROR28',                             'エラーメッセージは次の通りです');
+define('_ERROR29',                             '複数のエラーを発見しました');
+define('_ERROR30',                             'クエリの実行中にエラーが発生しました');
+
+define('_NOTIFICATION1',               '判別不能');
+
+define('_ALT_NUCLEUS_CMS_LOGO',        'Nucleus CMS ロゴ');
+define('_TITLE',                               'Nucleusのインストール');
+define('_TITLE2',                              'テーマ・プラグインのインストールエラー');
+define('_TITLE3',                              'インストールはほぼ完了しました!');
+define('_TITLE4',                              'インストールは完了しました!');
+define('_TITLE5',                              'スパムとの戦い');
+
+define('_HEADER1',                             'Nucleusのインストール');
+define('_TEXT1',                               '<p>MySQLテーブルのセットアップと、config.php に入力するための情報を表示します(config.phpのパーミッションを0666にしておけば、後者の作業は自動的に行われます)。これをなす為に、いくつかの情報を入力する必要があります。</p><p>すべての欄の入力が必要です。オプション情報は、インストールが完了後Nucleusの管理領域から設定可能です。</p>');
+
+define('_HEADER2',                             'PHP と MySQL のバージョン');
+define('_TEXT2',                               '<p>以下はあなたのウェブホストにおけるPHPとMySQLサーバーのバージョンです。Nucleusのサポートフォーラムに問題を報告する時は、この情報を書き添えてください。</p>');
+define('_TEXT2_WARN1',                 ' 注意: Nucleusの動作には少なくともバージョン %s が必要です');
+define('_TEXT2_WARN2',                 '警告! 動作しているPHPのバージョンが古く、正常な動作を保証できません。インストール作業を中止します。PHP5以上が使えないかどうか、サーバ管理者に確認して下さい。');
+
+define('_HEADER3',                             'config.phpの自動設定');
+define('_TEXT3',                               '<strong style="color:red;">config.phpへの書き込みができません。</strong>config.phpのパーミッションを<strong>666</strong>にしておけば、スクリプトが自動で設定情報を書き込みます。ただし、Nucleusのインストール完了後、<strong><em style="font-color:#f00;">必ず</em></strong>パーミッションを<strong>444</strong>に変更してください(<a href="../nucleus/documentation/tips.html#filepermissions">パーミッション変更の簡易ガイド</a>)。</p>');
+
+define('_HEADER4',                             'MySQLのログイン情報');
+define('_TEXT4',                               '<p>データベースのログイン情報を入力してください。この情報が分からない場合は、システム管理者かホスティング元に確認をとってください。ほとんどの場合、ホスト名は「localhost」です。もしNucleusがあなたのサーバのPHP設定から「default MySQL host」を検出していれば「ホスト名」に既に記入されているはずですが、この情報が正確であるという保証はありません。</p>');
+define('_TEXT4_TAB_HEAD',              '基本のデータベース設定');
+define('_TEXT4_TAB_FIELD1',            'ホスト名');
+define('_TEXT4_TAB_FIELD2',            'ユーザー名');
+define('_TEXT4_TAB_FIELD3',            'パスワード');
+define('_TEXT4_TAB_FIELD4',            'データベース名');
+define('_TEXT4_TAB_FIELD4_ADD',        'データベースを作成する必要がある');
+
+define('_TEXT4_TAB2_HEAD',             '高度なデータベース設定');
+define('_TEXT4_TAB2_FIELD',            '異なるテーブル・プリフィックスを使用する');
+define('_TEXT4_TAB2_ADD',              '<p><strong>通常はここを変更する必要はありません。</strong>ひとつのデータベースに複数のNucleusをインストールしたい場合にこの設定を用います。</p>');
+
+define('_HEADER5',                             'ディレクトリとURL');
+define('_TEXT5',                               '<p>ディレクトリとURLを下記の設定でインストールします。特殊なディレクトリ構成で運用したい場合は、ここで変更できます。ディレクトリのパス及びURLはスラッシュ「/」で閉じてください。</p>');
+
+define('_TEXT5_TAB_HEAD',              'ディレクトリとURL');
+define('_TEXT5_TAB_FIELD1',            'サイトの<strong>URL</strong>');
+define('_TEXT5_TAB_FIELD2',            '管理エリアの<strong>URL</strong>');
+define('_TEXT5_TAB_FIELD3',            '管理エリアの<strong>ディレクトリ</strong>');
+define('_TEXT5_TAB_FIELD4',            'アップロードしたファイルが格納される<strong>URL</strong>');
+define('_TEXT5_TAB_FIELD5',            'アップロードしたファイルが格納される<strong>ディレクトリ</strong>');
+define('_TEXT5_TAB_FIELD6',            'スキンファイルの<strong>URL</strong>');
+define('_TEXT5_TAB_FIELD7',            'スキンファイルの<strong>ディレクトリ</strong>');
+define('_TEXT5_TAB_FIELD7_2',  'インポートしたスキンで使用するファイル');
+define('_TEXT5_TAB_FIELD8',            'プラグインが格納されている<strong>URL</strong>');
+define('_TEXT5_TAB_FIELD9',            '機能決定ファイルの<strong>URL</strong>');
+define('_TEXT5_TAB_FIELD9_2',  '<tt>action.php</tt>ファイルへのhttp://から始まるURL');
+define('_TEXT5_2',                             '<p class="note"><strong>付記:</strong> 相対パスではなく<strong>絶対パスを使用してください</strong>。絶対パスはほとんどの場合、<tt>/home/username/public_html/</tt>のようにスラッシュから始まります。よく解らない場合はサーバ管理者に質問してください。</p>');
+
+define('_HEADER6',                             '管理権限をもつユーザー');
+define('_TEXT6',                               '<p>以下に、サイトの最初のユーザーを作成するための情報を入力してください。</p>');
+define('_TEXT6_TAB_HEAD',              'サイトの管理者');
+define('_TEXT6_TAB_FIELD1',            '表示される名前(ログインID)');
+define('_TEXT6_TAB_FIELD1_2',  '使用できる文字:a-z と 0-9、最初と最後以外の空白');
+define('_TEXT6_TAB_FIELD2',            '本名(ハンドル名)');
+define('_TEXT6_TAB_FIELD3',            'パスワード');
+define('_TEXT6_TAB_FIELD4',            'パスワード(確認入力)');
+define('_TEXT6_TAB_FIELD5',            'メールアドレス');
+define('_TEXT6_TAB_FIELD5_2',  '利用可能なメールアドレスを入れてください');
+
+define('_HEADER7',                             'ブログのデータ');
+define('_TEXT7',                               '<p>デフォルトのブログを作成するための情報を入力してください。このブログの名前は、サイト名としても利用されます。</p>');
+define('_TEXT7_TAB_HEAD',              'ブログのデータ');
+define('_TEXT7_TAB_FIELD1',            'ブログの名前');
+define('_TEXT7_TAB_FIELD2',            'ブログの短縮名(略称)');
+define('_TEXT7_TAB_FIELD2_2',  '使用できる文字:a-z と 0-9、空白は不可');
+
+define('_HEADER8',                             '更新Ping');
+//define('_HEADER8',                           'インストールするプラグインとテーマの選択');
+define('_TEXT8_TAB_HEADER',            '更新Ping');
+define('_TEXT8_TAB_PLUGINDEP', '以下のプラグインに依存します。%s'); //<addsatona date="2008-09-03" />
+//define('_TEXT8_TAB_HEADER',          'プラグインの選択');
+define('_TEXT8_TAB_HEADER2',   'テーマの選択');
+define('_TEXT8_TAB_FIELD1',            '更新Ping送信プラグイン <a href="http://www.google.com/search?hl=ja&amp;q=NP_Ping&amp;lr=lang_ja">NP_Ping</a> をインストールする (更新Pingを送信するプラグインは他にもあります。)');
+
+define('_HEADER9',                             'データの送信');
+define('_TEXT9',                               '<p>上に書いてきたデータが正しいか確かめてください。よければデータベース・テーブルと最初のデータを設定するために下のボタンを押してください。少し時間がかかるかもしれませんがご辛抱を。<strong>ボタンをクリックするのは一回だけにしてください。</strong></p>');
+
+define('_TEXT10',                              '<p>データベーステーブルの初期値入力が成功しました。後は<i>config.php</i>を書き換えるだけです。以下に書き換えるべき内容を表示します(mysqlのパスワードはマスクされています。ここは実際のものに書き換えてください)</p>');
+define('_TEXT11',                              '<p>あなたのコンピュータ上のファイルを書き換えたら、FTPを使ってウェブサーバにアップロードしてください。ASCIIモードで送信してファイルを上書きします。</p>');
+define('_TEXT12',                              '<b>付記:</b> <i>config.php</i>の最初や終わりにスペースを空けないようにしましょう。実行時にエラーを引き起こす原因となります。<br />したがって、config.phpの最初の文字は "&lt;"で最後の文字は"&gt;"としなければなりません。');
+define('_TEXT13',                              '<p>Nucleusはインストールされ、<code>config.php</code>はアップデートされました。</p><p>セキュリティのため<code>config.php</code>のパーミッションを444に戻すことを忘れないでください(<a href="../nucleus/documentation/tips.html#filepermissions">パーミッション変更の簡易ガイド</a>)。</p>');
+define('_TEXT14',                              '<p>Nucleusは誰でもブログにコメントを残すことができる様になっているので、このままではスパムの温床になる危険があります。以下の方法によってブログを保護することをお勧めします:</p>');
+define('_TEXT14_L1',                   'あなたがコメントを必要としないのであれば、管理エリアから「あなたのブログ」 &gt; 「ブログ設定」 とたどり、 「コメントを許可しますか?」 の設定を「いいえ」にすることで、コメント投稿フォームを非表示にすることができます。');
+define('_TEXT14_L2',                   'スパムを撃退・管理する為のプラグインをインストールすることも可能です:<a href="http://japan.nucleuscms.org/wiki/plugins_by_category#supamutsuru">Nucleus Japan wiki</a> (ブックマークをお勧めします)');
+define('_HEADER10',                            'インストールファイルの削除');
+define('_TEXT15',                              '<p>ウェブサーバから /install/ ディレクトリを削除してください:</p>');
+define('_TEXT15_L1',                   '<b>install/install.sql</b>:テーブルの構造を内包するファイル');
+define('_TEXT15_L2',                   '<b>install/index.php</b>:このファイル');
+//define('_TEXT15_L3',                 '<b>install_lang_japanese.php</b>:インストーラの言語ファイル');
+define('_TEXT15_L3',                   '<b>install/install_lang_japanese.php</b>:インストーラの言語ファイル');
+define('_TEXT16',                      '<p>もしこのディレクトリを削除していなければ、管理領域を開くことができません。</p>');
+
+define('_HEADER11',                            'ウェブサイトの確認');
+define('_TEXT16_H',                            'ウェブサイトを使う準備が整いました。');
+define('_TEXT16_L1',                   '管理領域にログインしてサイトの設定を行う');
+define('_TEXT16_L2',                   'すぐにサイトへ行ってみる');
+
+define('_TEXT17',                              '戻る');
+
+define('_BUTTON1',                             'インストールを実行する');
+
+// General category
+define('_GENERALCAT_NAME',             '総合');
+define('_GENERALCAT_DESC',             '投稿した記事に合うカテゴリが無い時にこのカテゴリを使用すると良いでしょう');
+define('_1ST_POST_TITLE',              'Nucleus CMS バージョン3.64へようこそ');
+define('_1ST_POST',                            'ウェブサイトの作成を補助する積み木がここにあります。それは心躍るブログになるかもしれませんし、見る人を和ませる家族のサイトになるかもしれませんし、実り多い趣味のサイトになるかもしれません。あるいは現在のあなたには想像がつかないものになることだってあるでしょう。<br />
+<br />用途が思いつきませんでしたか? それならここへ来て正解です。なぜならあなた同様私たちにもわからないのですから。');
+define('_1ST_POST2',                   'これはサイトにおける最初のエントリーです。スタートを切りやすいように、リンクと情報を入れておきました。<br />
+<br />
+この記事を削除することもできますが、どちらにせよ記事を追加していくことによってやがてメインページからは見えなくなります。Nucleusを扱ううちに生じたメモをコメントとして追加し、将来アクセスできるようにこのページをブックマークしておくのも手です。<br />
+<br />
+<b>リンク</b><br />
+<br />
+Nucleus CMSの<a href="http://nucleuscms.org">本家</a>と<a href="http://japan.nucleuscms.org">日本語公式</a>ページ。<br />
+<br />
+Nucleus CMSのSourceForge<a href="http://sourceforge.net/projects/nucleuscms/">プロジェクト</a>(<a href="http://sourceforge.jp/projects/nucleus-jp/">日本版</a>)ページ。<br />
+<br />
+Nucleus CMSの<a href="http://wakka.xiffy.nl/Plugin/">プラグイン倉庫</a>と<a href="http://japan.nucleuscms.org/wiki/plugins">日本語のリスト</a>ページ。<br />
+<br />
+<b>ドキュメント - <a href="http://docs.nucleuscms.org/">docs.nucleuscms.org</a></b><br />
+<br />
+Nucleusの<a href="http://japan.nucleuscms.org/faq.php">FAQ(よくある質問集)</a>(<a href="http://nucleuscms.org/faq.php">原文</a>)ページ。<br />
+<br />
+インストール方法等は<a href="nucleus/documentation/">ユーザー向け</a>と<a href="nucleus/documentation/devdocs/">開発者向け</a>文書がファイルに含まれています。<br />
+<br />
+ポップアップ<a href="./nucleus/documentation/help.html">ヘルプ</a>が管理エリアのいたるところにあり、サイトのカスタマイズやデザインを手助けしてくれることでしょう。<br />
+<br />
+一度用意されているドキュメントに目を通したら、<a href="http://wiki.nucleuscms.org/">Wiki</a>(<a href="http://japan.nucleuscms.org/wiki/">日本版</a>)を訪れてください。ユーザーの書いたハウツーや小技が掲載されています。<br />
+<br />
+<b>サポート</b><br />
+<br />
+<a href="http://forum.nucleuscms.org/">forum.nucleuscms.org</a>(本家)<br />
+<a href="http://japan.nucleuscms.org/bb/">japan.nucleuscms.org/bb/</a>(日本版)<br />
+<br />
+<a href="http://forum.nucleuscms.org/groupcp.php?g=3">moderators</a>とサポートフォーラムで活動する全てのボランティアに感謝します。<br />
+<br />
+- <a href="http://edmondhui.homeip.net/blog/">admun</a> - Ottawa, ON, Canada<br />
+- <a href="http://www.tamizhan.com/">anand</a> - Bangalore, India<br />
+- <a href="http://hcgtv.com">hcgtv</a> - Miami, Florida, USA<br />
+- <a href="http://www.adrenalinsports.nl/">ikeizer</a> - Maastricht<br />
+- <a href="http://www.tipos.com.br/">moraes</a> - Brazil<br />
+- <a href="http://roelg.nl/">roel </a>- The Netherlands<br />
+- <a href="http://budts.be/weblog/">TeRanEX </a>- Ekeren, Antwerp, Belgium<br />
+- <a href="http://www.trentadams.com/">Trent </a>- Alberta, Canada<br />
+- <a href="http://xiffy.nl/weblog/">xiffy </a>- Deventer<br />
+<br />
+もし手助けが必要なら、1400を超える登録ユーザーのいる私たちのフォーラムに参加してください。23,000を超える投稿された記事を検索できるようになっておりますので、求める答えに数回のクリックでたどり着けるかもしれません。<br />
+<br />
+<b>Personalization - <a href="http://skins.nucleuscms.org/">skins.nucleuscms.org</a></b><br />
+<br />
+マルチウェブログとスキン/テンプレートの組み合わせは強力な相乗効果を生み出します。個人的なサイト作成、友人や親戚あるいはクライアントに対するサイトデザインいずれに対してもです。<br />
+<br />
+636の登録された<a href="http://nucleuscms.org/sites.php">Nucleusで運用されているサイト</a>(<a href="http://japan.nucleuscms.org/sites.php">日本版</a>)の中から特色あるサイトをサンプルとしてご紹介します。<br />
+<br />
+Personal blogs<br />
+- <a href="http://bloggard.com/">bloggard.com</a> - The Adventures of Bloggard<br />
+- <a href="http://www.yetanotherblog.de/">yetanotherblog.de</a> - Yet Another Blog<br />
+<br />
+Hobby, Travel and News sites<br />
+- <a href="http://adrenalinsports.nl/">adrenalinsports.nl</a> - Extreme sports<br />
+- <a href="http://groningen-info.de/">groningen-info.de</a> - Neues aus Groningen. Fr Leute aus Duitsland.<br />
+<br />
+<b>Nucleus Developer Network - <a href="http://dev.nucleuscms.org/">dev.nucleuscms.org</a></b><br />
+<br />
+The NUDN is a hub for developer sites and programming resources.<br />
+<br />
+NUDN satellite sites, handles, location and UTC offset:<br />
+- <a href="http://karma.nucleuscms.org/">karma</a> - Izegem +02<br />
+- <a href="http://edmondhui.homeip.net/blog/">admun</a> - Ottawa -04<br />
+- <a href="http://dev.budts.be/nucleus/">TeRanEX</a> - Ekeren +02<br />
+<br />
+Sourceforge.net graciously hosts our <a href="http://sourceforge.net/projects/nucleuscms/">SVN repository</a>.<br />
+<br />
+Want to play around or test changes, visit our demo site at <a href="http://demo.nucleuscms.org/">demo.nucleuscms.org</a>.<br />
+<br />
+Not sure what plugins to use, visit the <a href="http://showcase.trentadams.com/">showcase site</a> where you can see plugins at play in their native habitat.<br />
+<br />
+Then visit the plugin repository at <a href="http://plugins.nucleuscms.org/">plugins.nucleuscms.org</a> for download and installation instructions.<br />
+<br />
+<b>寄付者一覧</b><br />
+<br />
+以下の<a href="http://nucleuscms.org/donators.php">素晴らしい人々</a>による<a href="http://nucleuscms.org/donate.php">援助</a>感謝を捧げます。<em>ありがとう!</em><br />
+<ul class="donatorlist">
+    <li><a href="http://www.GamblingHelper.com/">GamblingHelper</a></li>
+    <li>Michel Machado</li>
+    <li>株式会社ウェッジ</li>
+    <li><a href="http://feelbmx.com">BMX Bikes</a></li>
+    <li><a href="http://badmintonholic.com/">Badminton Blog</a></li>
+    <li><a href="http://www.pbcohen.com/">PB Cohen Creations</a></li>
+
+    <li><a href="http://uboxy.com/">Uboxy Blog</a></li>
+    <li>LeadsClick</li>
+    <li>大崎 勉</li>
+    <li>Marina Silva</li>
+    <li><a href="http://www.kevinhaynes.com/">Kevin Haynes</a></li>
+    <li><a href="http://www.kouzelnicek.com/">Martin Samanek</a></li>
+
+    <li><a href="http://www.siteexecutivo.com/">Andre DaSilva</a></li>
+    <li>Charlotte Schmitz</li>
+    <li><a href="http://okazaki.incoming.jp/matatabi/">Shinsuke Okazaki</a></li>
+    <li><a href="http://www.hinokiya.com/">Hinoki-ya</a></li>
+    <li><a href="http://yumisaiki.spaces.live.com/Blog/cns!54B00F8893DF1285!452.entry">Yumi Saiki</a></li>
+    <li><a href="http://www.bs-kitanagoya.jp/smm/">Yoshihiko Hirano</a></li>
+
+    <li>Abtech</li>
+    <li>Masao Yamamoto</li>
+    <li><a href="http://www.powermelon.com/pm/">Koshin</a> <a href="http://area88.shiftweb.net/modoki2/">Yaegashi</a></li>
+    <li><a href="http://www.turkcebilgi.net/">Turkce Bilgi</a></li>
+    <li>John Nowak</li>
+
+    <li>Rie Go</li>
+    <li><a href="http://blog.kkj-net.com/">blog.kkj-net.com</a></li>
+    <li><a href="http://www.winscp.net/">WinSCP FTP cient</a></li>
+    <li><a href="http://blogs.waytorussia.net/">Way to Russia Guides</a></li>
+    <li><a href="http://blog.gilmalonzo.com/">Gil Malonzo</a></li>
+    <li><a href="http://www.yosiah.com/blog/">Yosiah\\\'s Blog</a></li>
+
+    <li><a href="http://www.kritische-masse.de/">Kritische Masse</a></li>
+    <li><a href="http://www.grid8400.nl/">grid8400</a></li>
+    <li><a href="http://dailypuppy.com/">Daily Puppy</a></li>
+    <li><a href="http://content-management-directory.com/">CMS Directory</a></li>
+    <li>William Jobes</li>
+    <li><a href="http://stefanjuhl.com/">Stefan Juhl</a></li>
+
+    <li><a href="http://www.p2p-blog.com/">P2P Blog</a></li>
+    <li><a href="http://www.l-word.org/">The L Word Fansite</a></li>
+    <li><a href="http://www.3gz.com/nb3/">NEUT\\\'s BUTT 3G\\\'Z</a></li>
+    <li><a href="http://www.bloghouston.net/">blogHOUSTON</a></li>
+    <li><a href="http://www.osalt.com/">Open Source as Alternative</a></li> 
+    <li><a href="http://www.yetanotherblog.de/">Yet Another Blog</a></li>
+
+    <li><a href="http://www.landi.com/">Landi.com</a></li>
+    <li><a href="http://www.aerodeon.com/">Aerodon</a></li>
+    <li><a href="http://www.iluminada.com/">iluminada design</a></li>
+    <li><a href="http://www.c-kn.de/">Computertechnik Krienke &amp; Nolte GbR.</a></li>
+    <li>Mohamed Sakkal</li>
+
+    <li>Paul Kirkwood</li>
+    <li><a href="http://www.collicott.net/jess/">Hello...and you are?</a></li>
+    <li><a href="http://www.about-nokia.com/">About Nokia</a></li>
+    <li><a href="http://www.diabeticdialogue.com/">Diabetic Dialogue</a></li>
+    <li><a href="http://desoft.co.uk/">DeSoft</a></li>
+    <li><a href="http://circle.club.or.jp/">Jun Yamane</a></li>
+
+    <li><a href="http://www.fogelholm.com/">Fogelholm</a></li>
+    <li><a href="http://web.ics.purdue.edu/~smith60">To Be Determined</a></li>
+    <li><a href="http://firefox.myip.org/">Julia W</a></li>
+    <li><a href="http://larscapes.com/">Larscapes</a></li>
+    <li>Normann Rashid</li>
+    <li>Giles Anderson</li>
+
+    <li><a href="http://www.presaromana.com/weblog/marilyn.php">Marinela Niculescu Matei</a></li>
+    <li><a href="http://www.janantoon.be/">Jan Marien</a></li>
+    <li><a href="http://backchannel.ca/">Robert Birt</a></li>
+    <li><a href="http://www.catogeorge.com/">Brian Betz</a></li>
+    <li><a href="http://www.nlborrels.com/">NLBorrels.com</a>
+    <li>Jacqueline Hall</li>
+
+    <li>Kevin Kennedy</li>
+    <li><a href="http://lo.gs.di.gs/">Shinsaku Chikura</a></li>
+    <li><a href="http://www.torontomusicians.org/">Margaret Stowe</a></li>
+    <li><a href="http://hcgtv.com/">Bert Garcia</a></li>
+    <li><a href="http://www.randyray.name/">Randy Ray</a></li>
+    <li><a href="http://www.sa-to-shi.net/">Satoshi Shimazaki</a></li>
+
+    <li><a href="http://reddustrec.net/">dkex</a></li>
+    <li><a href="http://blog.datoka.jp/">Yu (blog.datoka.jp)</a></li>
+    <li>GamblingHelper</li>
+    <li><a href="http://sites.proliphus.com/blueZhift/blog/">Thomas McKibben</a></li>
+    <li>Robert Seyfriedsberger</li>
+    <li><a href="http://www.toxicologie.nl/">Toxicologie.nl</a></li>
+
+    <li>Gordon Shum</li>
+    <li><a href="http://www.subsim.com/">Neal Stevens</a></li>
+    <li>Oliver Kirstein</li>
+    <li><a href="http://www.dominiek.be/">Dominiek</a></li>
+    <li><a href="http://www.aardschok.net/">Aardschok</a></li>
+    <li><a href="http://www.nieuwevoordeur.be/">nieuwevoordeur.be</a></li>
+
+    <li><a href="http://www.scene24.net/">Scene24</a></li>
+    <li><a href="http://www.eug.be/">Eug\\\'s Weblog</a></li>
+    <li><a href="http://www.bloggard.com/">The Adventures of Bloggard</a></li>
+    <li><a href="http://www.voltos.com/">Arthur Cronos from Voltos</a></li>
+    <li><a href="http://www.domilog.be/">Domi\\\'s Weblog</a></li>
+    <li>Infodoma</li>       
+    <li><a href="http://carvingcode.com/">carvingCode.com</a></li>
+
+    <li><a href="http://www.traweb.com/">Traweb</a></li>
+    <li><a href="http://gene.mm2u.com/">Gene\\\'s MoBlog</a></li>
+    <li><a href="http://interfacethis.com/">InterfaceThis</a></li>
+    <li><a href="http://www.thefinsters.com/flog/">The Finster Log</a></li>
+    <li><a href="http://www.mrhop.com/">Hop Nguyen</a></li>
+    <li><a href="http://www.zwavel.com/~zwavelaars" title="Zwavelaars">Zwavelaars</a></li>
+
+    <li><a href="http://beefcake.nl/">Joaquin Scholten</a></li> 
+    <li><a href="http://www.roelgroeneveld.com/">Roel Groeneveld</a></li>
+    <li><a href="http://lvb.net/">LVBlog</a></li>
+    <li><a href="http://xandermol.com/">Xander Mol</a></li>
+    <li>Danilo Massa</li>
+    <li><a href="http://www.adrenalinsports.nl/">Irmo Keizer</a></li>
+
+    <li><a href="http://www.jasonkrogh.com/">Jason Krogh</a></li>
+    <li><a href="http://www.higuchi.com/">Osamu Higuchi</a></li>
+    <li><a href="http://www.trentadams.com/">Trent Adams</a></li>
+    <li><a href="http://www.ppcw.net/">Arne Hess</a></li>
+    <li><a href="http://hsbluebird.com/">The Bluebird</a></li>
+    <li>Rainer Bickel</li>
+
+    <li>Fritz Elfers</li>
+    <li><a href="http://www.thegadgetreview.com/" rel="nofollow">Sony Gadgets and Reviews</a></li>
+    <li><a href="http://www.goinginto.com/" rel="nofollow">Going Into</a></li>  
+    <li><a href="http://www.uncoverthenet.com/" rel="nofollow">Uncover the Net</a></li>
+    <li><a href="http://www.webatlas.org/" rel="nofollow">Web Atlas</a></li>
+    <li><a href="http://www.ipnlighting.com/" rel="nofollow">IPN Lighting</a></li>
+
+    <li><a href="http://cheapweb.us/" rel="nofollow">CheapWeb.us</a></li>
+    <li><a href="http://www.webmaster-toolkit.com/" rel="nofollow">Free Webmaster Tools and Resources</a></li>
+    <li><a href="http://01FTP.com/" rel="nofollow">01FTP.com</a></li>
+    <li><a href="http://www.cashdoctors.com.au/" rel="nofollow">Cash Doctors</a></li>
+    <li><a href="http://www.online-casinos.com/blackjack/basic-strategy-calculator.php" rel="nofollow">Blackjack Strategy</a></li>
+
+    <li>Rusty Kirkpatrick</li>
+    <li><a href="http://www.klatschmagazin.com/">Nachrichten</a></li>
+    <li><a href="http://edwardkhoo.com/">Edward Khoo</a></li>
+    <li><a href="http://www.webmaster-resource.de/">Webmaster Partnerprogramme</a></li>
+    <li><a href="http://www.ilmainen-sanakirja.com/">sanakirja</a></li>
+    <li>株式会社ウェッジ</li>
+
+    <li>Trendmetrix Software</li>
+    <li>Andrius Povilavicius</li>
+    <li><a href="http://oss.digirati.com.br/">OSS by Digirati</a></li>
+    <li>Lets Go Banners, Inc.</li>
+    <li><a href="http://www.wailani.co.jp/cms/">Wailani SCUBA Diving Shop</a></li>
+    <li><a href="http://www.mathewbrowne.com">Mathew Browne</a></li>
+
+    <li><a href="http://digilondon.com">DigiLondon</a></li>
+    <li>Martin Samanek</li>
+    <li>Kumiko Miyata</li>
+    <li><a href="http://sena-cos.com/blog/">SenaCos</a></li>
+    <li><a href="http://www.copywriting911.com/" rel="nofollow">Copywriting</a></li>
+    <li><a href="http://www.esrating.com/" rel="nofollow">ESRating</a></li>
+
+    <li><a href="http://blog.gilmalonzo.com/">Help The World Help You</a></li>
+    <li><a href="http://review.kmlog.com/">Shoichi Tanaka</a></li>
+    <li>Makoto Sata</li>
+    <li><a href="http://www.mywebhit.com">Sergey Rusak</a></li>
+    <li><a href="http://hexu.info/">HEXU</a></li>
+    <li>Jason Juric</li>
+
+    <li><a href="http://www.blog.bikeusa.cz/">Bike USA</a>
+    <li><a href="http://arudius.sourceforge.net/">Arudius</a></li>
+    <li><a href="http://www.prioriti.in/webinfo/">Prioriti</a></li>
+    <li><a href="http://www.couol.com/">Thomas Metters</a></li>
+    <li><a href="http://www.g-i-b-f.de/">Amerikanische Bulldogge Forum</a></li>
+    <li><a href="http://www.albablu.it/">Albablu.it</a></li>
+
+    <li><a href="http://noppo.info/">Toru Kobayashi</a></li>
+    <li><a href="http://www.toolsfordepression.com/">Tools for Depression</a></li>
+    <li><a href="http://www.las-vegas-tv.de/">Las Vegas TV-Serie</a></li>
+    <li>David White</li>
+    <li>Walter Williams</li>
+    <li>Kenn R Stevens</li>
+
+    <li>Artur Pasikowski</li>
+    <li><a href="http://www.brainalmeltdown.net/cybbis/blog">Cybbis</a></li>
+    <li><a href="http://www.gamingwhore.com/">Gaming Whore</a></li>
+    <li><a href="http://www.coldscripts.com/PHP/Scripts/Content-Management/Personal-Publishing/Blogs/">ColdScripts.com</a></li>
+    <li>Munekatsu Takamura</li>
+    <li><a href="http://www.gratisblog.com/">GratisBlog.com</a></li>
+
+    <li><a href="http://www.strickforum.de/weblog/">Strickforum Blog</a></li>
+    <li>Nicola Pieroni</li>
+    <li><a href="http://www.laberflash.de/">herr grotesk</a></li>
+    <li><a href="http://www.westchesterfishing.com/">WestchesterFishing.com</a></li>
+    <li><a href="http://www.heinecke.com/blog">Hasko Heinecke</a></li>
+    <li><a href="http://matthewblog.com/">Matthew Wilson</a></li>
+
+    <li><a href="http://www.pokeefe.com/">Patrick O\\\'Keefe</a></li>
+    <li><a href="http://carfilhiot.co.uk/">Carfilhiot</a></li>
+    <li>Markus Kunz</li>
+    <li><a href="http://www.cphere.net/">Nadim Kobeissi</a></li>
+    <li><a href="http://www.webpagefx.com/">Webpagefx: Website Design Harrisburg</a></li>
+    <li>Yoshikazu Nakajima</li>
+
+    <li><a href="http://www.jamier.net/">Jamie R. Rytlewski</a></li>
+    <li>Madolyn Piper</li>
+    <li><a href="http://www.mixburnrip.de/">Janko Roettgers</a></li>
+    <li>Lukas Loesche</li>
+    <li><a href="http://www.brandweerdematen.nl/">Brandweer de Maten</a></li>
+    <li>Andy Fuchs</li>
+
+    <li><a href="http://www.sumoforce.com/">Sumoforce</a></li>
+    <li><a href="http://love.silverindigo.com/">Al\\\'ky\\\'mie</a></li>
+    <li><a href="http://www.pejo.us/">Peter Johnson</a></li>
+    <li><a href="http://www.triv.nl/">TriV Internet Solutions</a></li>
+    <li>Margaret Stowe</li>
+    <li><a href="http://www.zenkey.org/">zenkey dot org</a></li>
+
+    <li><a href="http://www.golb.org/">Blots of Info</a></li>
+    <li><a href="http://www.zonderpartij.be/">Rudi De Kerpel</a></li>
+    <li><a href="http://staylorx.com/">Steve Taylor</a></li>
+    <li><a href="http://lmhcave.com/">Malcolm Farnsworth</a></li>
+    <li>Birgit Kellner</li>
+    <li><a href="http://www.tobiasly.com/">Toby Johnson</a></li>
+
+    <li><a href="http://www.kapingamarangi.be/">Kapingamarangi</a></li>
+    <li><a href="http://www.pallalink.net/">Pallalink</a></li>
+    <li><a href="http://publiustx.net/">PubliusTX Weblog</a></li>
+    <li><a href="http://www.reductioadabsurdum.net/">Reductio Ad Absurdum</a></li>
+    <li><a href="http://www.gagaweb.org/">GagaWeb</a></li>
+    <li><a href="http://www.videokid.be/">Videokid</a></li>
+
+    <li>Jon Marr</li>
+    <li><a href="http://www.docblog.org/">Luigi Cristiano</a></li>
+    <li>J Keith Lehman</li>
+    <li>Bohemian Cachet</li>
+    <li>Jesus Mourazos</li>
+    <li><a href="http://ltp-design.com/">Stephen Jones</a></li>
+
+    <li>Alwin Hawkins</li>
+    <li><a href="http://jstigall.bloomington.in.us">Justin Stigall</a></li>
+    <li><a href="http://www.itismylife.com/">It is my life</a></li>
+    <li>Greg Morrill</li>
+    <li><a href="http://www.dutchsubmarines.com/">Dutch Submarines</a></li>
+    <li><a href="http://www.7thwatch.com/">Seventh Watch Design Studios</a></li>        
+    <li><a href="http://www.macnet2.com/">MacNetv2</a></li> 
+    <li>Richard Noordhof</li>
+
+    <li><a href="http://www.usaflightinsurance.com/" rel="nofollow">USF</a></li>
+    <li><a href="http://www.roses-nationwide.com/" rel="nofollow">Flower Delivery</a></li>
+    <li><a href="http://www.hbstrippers.com/" rel="nofollow">Hunks &amp; Babes Inc.</a></li>
+    <li><a href="http://www.patrickgavin.com/" rel="nofollow">Search Engine Optimization</a></li>
+
+    <li><a href="http://www.OttawaDivorce.com/" rel="nofollow">OttawaDivorce</a></li>
+    <li><a href="http://www.envisupply.com/" rel="nofollow">Envisupply: Environmental Rentals</a></li>  
+    <li><a href="http://www.lsasbestoslaw.com/" rel="nofollow">L&amp;S Mesothelioma Firm</a></li>
+    <li><a href="http://www.european-wall-tapestries.com/" rel="nofollow">European Wall Tapestries</a>
+    <li><a href="http://www.batteryvalues.com/" rel="nofollow">Battery Values</a>
+    <li><a href="http://www.seobook.com/" rel="nofollow">SEO Book</a></li>
+
+    <li><a href="http://oha.nu/" rel="nofollow">One-Handed Apps</a></li>
+    <li><a href="http://www.iceposter.com/" rel="nofollow">Dream Prints, Inc.</a></li>  
+    <li><a href="http://www.zergdir.com/" rel="nofollow">Zerg Directory</a>
+    <li><a href="http://www.kriegsgefangenschaft.at/" rel="nofollow">Kriegsgefangenschaft</a></li>
+    <li><a href="http://www.travel-plus-rewards.com/" rel="nofollow">Reward Credit Cards</a></li>
+    <li><a href="http://www.zionsvillecandlecompany.com/" rel="nofollow">Chris Anderson</a></li>
+
+    <li>Forex25</li>
+    <li><a href="http://www.dubaishortstay.com" rel="nofollow"> Dubai Short Stay</a></li>
+</ul>
+
+Nucleusが気に入りましたか? <a href="http://www.hotscripts.com/Detailed/13368.html?RID=nucleus@demuynck.org">HotScripts</a>や<a href="http://www.opensourcecms.com/index.php?option=content&task=view&id=145">opensourceCMS</a>での投票をお願いします。<br />
+<br />
+<b>ライセンス</b><br />
+<br />
+私たちがフリー・ソフトウェアについて口にする場合は自由のことに言及しているのであって、価格のことではありません。私たちの<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public Licenses(一般公有使用許諾書)</a>(<a href="http://www.gnu.org/licenses/gpl.ja.html">日本語訳(参考)</a>と<a href="http://www.atmarkit.co.jp/aig/03linux/gpl.html">概要</a>)は、フリー・ソフトウェアの複製物を自由に頒布できること(そして、望むならこのサービスに対して対価を請求できること)、ソース・コードを実際に受け取るか希望しさえすれば入手することが可能であること、入手したソフトウェアを変更したり新しいフリー・プログラムの一部として使用できること、以上の各内容を行なうことができるということをユーザ自身が知っていることを実現できるようにデザインされています。');