| Current Path : /home/m/a/g/magalijoj/www/blog/admin/install/ |
| Current File : /home/m/a/g/magalijoj/www/blog/admin/install/wizard.php |
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2005 Olivier Meunier and contributors. All rights
# reserved.
#
# DotClear 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.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
if (isset($_SERVER['DC_RC_PATH'])) {
define('DC_RC_PATH',$_SERVER['DC_RC_PATH']);
} elseif (isset($_SERVER['REDIRECT_DC_RC_PATH'])) {
define('DC_RC_PATH',$_SERVER['REDIRECT_DC_RC_PATH']);
} else {
define('DC_RC_PATH',dirname(__FILE__).'/../../inc/config.php');
}
# ClearBricks and DotClear classes auto-loader
if (@is_dir('/usr/lib/clearbricks')) {
define('CLEARBRICKS_PATH','/usr/lib/clearbricks');
} elseif (is_dir(dirname(__FILE__).'/../../inc/clearbricks')) {
define('CLEARBRICKS_PATH',dirname(__FILE__).'/../../inc/clearbricks');
} elseif (isset($_SERVER['CLEARBRICKS_PATH']) && is_dir($_SERVER['CLEARBRICKS_PATH'])) {
define('CLEARBRICKS_PATH',$_SERVER['CLEARBRICKS_PATH']);
}
if (!defined('CLEARBRICKS_PATH') || !is_dir(CLEARBRICKS_PATH)) {
exit('No clearbricks path defined');
}
require CLEARBRICKS_PATH.'/_common.php';
# Loading locales for detected language
$dlang = http::getAcceptLanguage();
if ($dlang) {
l10n::init();
l10n::set(dirname(__FILE__).'/../../locales/'.$dlang.'/main');
}
if (is_file(DC_RC_PATH)) {
exit(printf(__('The file <strong>%s</strong> already exists. If you need to reset any of the configuration items in this file, please delete it first or you may <a href="%s">continue to install</a>.'),
DC_RC_PATH,'index.php'));
}
$DBDRIVER = !empty($_POST['DBDRIVER']) ? $_POST['DBDRIVER'] : 'mysql';
$DBHOST = !empty($_POST['DBHOST']) ? $_POST['DBHOST'] : '';
$DBNAME = !empty($_POST['DBNAME']) ? $_POST['DBNAME'] : '';
$DBUSER = !empty($_POST['DBUSER']) ? $_POST['DBUSER'] : '';
$DBPASSWORD = !empty($_POST['DBPASSWORD']) ? $_POST['DBPASSWORD'] : '';
$DBPREFIX = !empty($_POST['DBPREFIX']) ? $_POST['DBPREFIX'] : 'dc_';
if (!empty($_POST))
{
try
{
# Tries to connect to database
try {
$con = dbLayer::init($DBDRIVER,$DBHOST,$DBNAME,$DBUSER,$DBPASSWORD);
} catch (Exception $e) {
throw new Exception('<p>'.__('Unable to connect to database, check your parameters.').'</p>');
}
# Checks system capabilites
require dirname(__FILE__).'/check.php';
if (!dcSystemCheck($con,$_e)) {
$can_install = false;
throw new Exception('<p>'.__('DotClear cannot be installed.').'</p><ul><li>'.implode('</li><li>',$_e).'</li></ul>');
}
# Check if dotclear is already installed
$schema = dbSchema::init($con);
if (in_array($DBPREFIX.'version',$schema->getTables())) {
throw new Exception(__('DotClear is already installed.'));
}
# Does config.php.in exist?
$config_in = dirname(__FILE__).'/../../inc/config.php.in';
if (!is_file($config_in)) {
throw new Exception(sprintf(__('File %s does not exist.'),$config_in));
}
# Can we write config.php
if (!is_writable(dirname(DC_RC_PATH))) {
throw new Exception(sprintf(__('Cannot write %s file.'),DC_RC_PATH));
}
# Creates config.php file
$full_conf = file_get_contents($config_in);
writeConfigValue('DC_DBDRIVER',$DBDRIVER,$full_conf);
writeConfigValue('DC_DBHOST',$DBHOST,$full_conf);
writeConfigValue('DC_DBUSER',$DBUSER,$full_conf);
writeConfigValue('DC_DBPASSWORD',$DBPASSWORD,$full_conf);
writeConfigValue('DC_DBNAME',$DBNAME,$full_conf);
writeConfigValue('DC_DBPREFIX',$DBPREFIX,$full_conf);
$admin_url = preg_replace('%install/wizard.php$%','',$_SERVER['REQUEST_URI']);
writeConfigValue('DC_ADMIN_URL',http::getHost().$admin_url,$full_conf);
writeConfigValue('DC_MASTER_KEY',md5(uniqid()),$full_conf);
$fp = @fopen(DC_RC_PATH,'wb');
if ($fp === false) {
throw new Exception(sprintf(__('Cannot write %s file.'),DC_RC_PATH));
}
fwrite($fp,$full_conf);
fclose($fp);
chmod(DC_RC_PATH, 0666);
$con->close();
http::redirect('index.php?wiz=1');
}
catch (Exception $e)
{
$err = $e->getMessage();
}
}
function writeConfigValue($name,$val,&$str)
{
$val = str_replace("'","\'",$val);
$str = preg_replace('/(\''.$name.'\')(.*?)$/ms','$1,\''.$val.'\');',$str);
}
header('Content-Type: text/html; charset=UTF-8');
?>
<!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"
xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="en" />
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
<meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />
<meta name="GOOGLEBOT" content="NOSNIPPET" />
<title>DotClear Install Wizard</title>
<style type="text/css">
@import url(../style/default.css);
</style>
</head>
<body id="dotclear-admin" class="install">
<div id="content">
<?php
echo
'<h1>'.__('Dotclear installation wizard').'</h1>';
if (!empty($err)) {
echo '<div class="error"><p><strong>'.__('Errors:').'</strong></p>'.$err.'</div>';
}
echo
'<h2>'.__('System information').'</h2>'.
'<p>'.__('Please provide the following information needed to create your configuration file.').'</p>'.
'<form action="wizard.php" method="post">'.
'<p><label class="required" title="'.__('Required field').'">'.__('Database type:').' '.
form::combo('DBDRIVER',array('MySQL'=>'mysql','PostgreSQL'=>'pgsql'),$DBDRIVER).'</label></p>'.
'<p><label>'.__('Database Host Name:').' '.
form::field('DBHOST',30,255,html::escapeHTML($DBHOST)).'</label></p>'.
'<p><label>'.__('Database Name:').' '.
form::field('DBNAME',30,255,html::escapeHTML($DBNAME)).'</label></p>'.
'<p><label>'.__('Database User Name:').' '.
form::field('DBUSER',30,255,html::escapeHTML($DBUSER)).'</label></p>'.
'<p><label>'.__('Database Password:').' '.
form::password('DBPASSWORD',30,255).'</label></p>'.
'<p><label class="required" title="'.__('Required field').'">'.__('Database Tables Prefix:').' '.
form::field('DBPREFIX',30,255,html::escapeHTML($DBPREFIX)).'</label></p>'.
'<p><input type="submit" value="'.__('save').'" /></p>'.
'</form>';
?>
</div>
</body>
</html>