aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornikrou <nikrou@piwigo.org>2009-12-04 18:59:05 +0000
committernikrou <nikrou@piwigo.org>2009-12-04 18:59:05 +0000
commiteaacc88183222375ee7d07b5f811ba6bf7cbc34e (patch)
treeecd994411eba782a997ee9c0ffc1d9b48354a48a
parentfdfaefd17a7b3c91d214a60a27524bb138df3552 (diff)
Feature 1255 : migration script
git-svn-id: http://piwigo.org/svn/trunk@4423 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/template/goto/install.tpl10
-rw-r--r--install.php125
-rw-r--r--install/db/84-database.php77
3 files changed, 178 insertions, 34 deletions
diff --git a/admin/template/goto/install.tpl b/admin/template/goto/install.tpl
index 27ab605a0..6976d8ccc 100644
--- a/admin/template/goto/install.tpl
+++ b/admin/template/goto/install.tpl
@@ -162,11 +162,11 @@ TD {
</form>
{else}
<p>
- <br />
- <input type="button" name="home" value="{'home'|@translate}" onClick="window.open('index.php');"/>
- <input type="button" name="admin" value="{'admin'|@translate}" onClick="window.open('admin.php');"/>
+ <input type="button" name="home" value="{'home'|@translate}" onClick="window.open('index.php');">
+ <input type="button" name="admin" value="{'admin'|@translate}" onClick="window.open('admin.php');">
</p>
+{if !isset($migration)}
<div class="infos">
<ul>
<li>{'Subscribe to Piwigo Announcements Newsletter'|@translate}</li>
@@ -174,10 +174,10 @@ TD {
</div>
<p>
- <br />
- <input type="button" name="subscribe" value="{'Subscribe %s'|@translate|@sprintf:$F_ADMIN_EMAIL}" onClick="window.open('{$SUBSCRIBE_BASE_URL}{$F_ADMIN_EMAIL}');"/>
+ <input type="button" name="subscribe" value="{'Subscribe %s'|@translate|@sprintf:$F_ADMIN_EMAIL}" onClick="window.open('{$SUBSCRIBE_BASE_URL}{$F_ADMIN_EMAIL}');">
</p>
{/if}
+{/if}
</div> {* content *}
<div style="text-align: center">{$L_INSTALL_HELP}</div>
</div> {* the_page *}
diff --git a/install.php b/install.php
index 2f66dc7b7..81f936a32 100644
--- a/install.php
+++ b/install.php
@@ -122,9 +122,31 @@ $admin_mail = (!empty($_POST['admin_mail'])) ? $_POST['admin_mail'] : '';
$infos = array();
$errors = array();
+// database config file migration : mysql.inc.php et config_database.inc.php
+$old_config_file = PHPWG_ROOT_PATH . 'include/mysql.inc.php';
+$config_file = PHPWG_ROOT_PATH . 'include/config_database.inc.php';
+if (!file_exists($config_file) && file_exists($old_config_file))
+{
+ $step = 3;
+ include $old_config_file;
+ $file_content = '<?php
+$conf[\'dblayer\'] = \'mysql\';
+$conf[\'db_base\'] = \''.$cfgBase.'\';
+$conf[\'db_user\'] = \''.$cfgUser.'\';
+$conf[\'db_password\'] = \''.$cfgPassword.'\';
+$conf[\'db_host\'] = \''.$cfgHote.'\';
+
+$prefixeTable = \''.$prefixeTable.'\';
+
+define(\'PHPWG_INSTALLED\', true);
+define(\'PWG_CHARSET\', \''.PWG_CHARSET.'\');
+define(\'DB_CHARSET\', \''.DB_CHARSET.'\');
+define(\'DB_COLLATE\', \''.DB_COLLATE.'\');
+
+?'.'>';
+}
// Open config.php ... if it exists
-$config_file = PHPWG_ROOT_PATH.'include/config_database.inc.php';
-if (@file_exists($config_file))
+elseif (@file_exists($config_file))
{
include($config_file);
// Is Piwigo already installed ?
@@ -175,9 +197,12 @@ else {
}
define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
-load_language( 'common.lang', '', array('language'=>$language, 'target_charset'=>'utf-8') );
-load_language( 'admin.lang', '', array('language'=>$language, 'target_charset'=>'utf-8') );
-load_language( 'install.lang', '', array('language'=>$language, 'target_charset'=>'utf-8') );
+if ($step != 3)
+{
+ load_language('common.lang', '', array('language' => $language, 'target_charset'=>'utf-8'));
+ load_language('admin.lang', '', array('language' => $language, 'target_charset'=>'utf-8'));
+ load_language('install.lang', '', array('language' => $language, 'target_charset'=>'utf-8'));
+}
//------------------------------------------------- check php version
if (version_compare(PHP_VERSION, REQUIRED_PHP_VERSION, '<'))
@@ -188,8 +213,11 @@ if (version_compare(PHP_VERSION, REQUIRED_PHP_VERSION, '<'))
//----------------------------------------------------- template initialization
include( PHPWG_ROOT_PATH .'include/template.class.php');
$template = new Template(PHPWG_ROOT_PATH.'admin/template/goto', 'roma');
-$template->set_filenames( array('install'=>'install.tpl') );
-$step = 1;
+$template->set_filenames( array('install' => 'install.tpl') );
+if (!isset($step))
+{
+ $step = 1;
+}
//---------------------------------------------------------------- form analyze
if ( isset( $_POST['install'] ))
{
@@ -352,39 +380,78 @@ INSERT INTO piwigo_config (param,value,comment)
}
//------------------------------------------------------ start template output
-$dbengines = available_engines();
+if ($step == 3)
+{
+ @umask(0111);
+ // writing the new configuration file
+ if ( !($fp = @fopen( $config_file, 'w' )))
+ {
+ $html_content = htmlentities( $file_content, ENT_QUOTES );
+ $html_content = nl2br( $html_content );
+ $error_copy = l10n('Copy the text in pink between hyphens and paste it into the file "include/config_database.inc.php"(Warning : config_database.inc.php must only contain what is in pink, no line return or space character)');
+ $error_copy .= '<br>--------------------------------------------------------------------<br>';
+ $error_copy .= '<span class="sql_content">' . $html_content . '</span>';
+ $error_copy .= '<br>--------------------------------------------------------------------<br>';
+ }
+ else
+ {
+ @fputs($fp, $file_content, strlen($file_content));
+ @fclose($fp);
-foreach (get_languages('utf-8') as $language_code => $language_name)
+ @unlink($old_config_file);
+ header("Location: index.php");
+ exit();
+ }
+
+ $template->assign(
+ array(
+ 'T_CONTENT_ENCODING' => 'utf-8',
+ 'migration' => true
+ ));
+}
+else
{
- if ($language == $language_code)
+ $dbengines = available_engines();
+
+ foreach (get_languages('utf-8') as $language_code => $language_name)
{
- $template->assign('language_selection', $language_code);
+ if ($language == $language_code)
+ {
+ $template->assign('language_selection', $language_code);
+ }
+ $languages_options[$language_code] = $language_name;
}
- $languages_options[$language_code] = $language_name;
+ $template->assign('language_options', $languages_options);
+
+ $template->assign(
+ array(
+ 'T_CONTENT_ENCODING' => 'utf-8',
+ 'RELEASE' => PHPWG_VERSION,
+ 'F_ACTION' => 'install.php?language=' . $language,
+ 'F_DB_ENGINES' => $dbengines,
+ 'F_DB_LAYER' => $dblayer,
+ 'F_DB_HOST' => $dbhost,
+ 'F_DB_USER' => $dbuser,
+ 'F_DB_NAME' => $dbname,
+ 'F_DB_PREFIX' => $table_prefix,
+ 'F_ADMIN' => $admin_name,
+ 'F_ADMIN_EMAIL' => $admin_mail,
+ 'L_INSTALL_HELP' => sprintf(l10n('install_help'), PHPWG_URL.'/forum'),
+ ));
}
-$template->assign('language_options', $languages_options);
-
-$template->assign(
- array(
- 'T_CONTENT_ENCODING' => 'utf-8',
- 'RELEASE' => PHPWG_VERSION,
- 'F_ACTION' => 'install.php?language=' . $language,
- 'F_DB_ENGINES' => $dbengines,
- 'F_DB_LAYER' => $dblayer,
- 'F_DB_HOST' => $dbhost,
- 'F_DB_USER' => $dbuser,
- 'F_DB_NAME' => $dbname,
- 'F_DB_PREFIX' => $table_prefix,
- 'F_ADMIN' => $admin_name,
- 'F_ADMIN_EMAIL' => $admin_mail,
- 'L_INSTALL_HELP' => sprintf(l10n('install_help'), PHPWG_URL.'/forum'),
- ));
//------------------------------------------------------ errors & infos display
if ($step == 1)
{
$template->assign('install', true);
}
+elseif ($step == 3)
+{
+ if (isset($error_copy))
+ {
+ array_push($errors, $error_copy);
+ }
+}
else
{
array_push($infos, l10n('install_end_message'));
diff --git a/install/db/84-database.php b/install/db/84-database.php
new file mode 100644
index 000000000..9543d9db0
--- /dev/null
+++ b/install/db/84-database.php
@@ -0,0 +1,77 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | 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 |
+// | |
+// | This program 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 this program; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+ die('Hacking attempt!');
+}
+
+$upgrade_description = 'Update configuration filename for database.
+configuration variables will change too.';
+
+$old_config_file = PHPWG_ROOT_PATH .'include/mysql.inc.php';
+$new_config_file = PHPWG_ROOT_PATH .'include/config_database.inc.php';
+
+include_once $old_config_file;
+
+$file_content = '<?php
+$conf[\'dblayer\'] = \'mysql\';
+$conf[\'db_base\'] = \''.$cfgBase.'\';
+$conf[\'db_user\'] = \''.$cfgUser.'\';
+$conf[\'db_password\'] = \''.$cfgPassword.'\';
+$conf[\'db_host\'] = \''.$cfgHote.'\';
+
+$prefixeTable = \''.$prefixeTable.'\';
+
+define(\'PHPWG_INSTALLED\', true);
+define(\'PWG_CHARSET\', \''.PWG_CHARSET.'\');
+define(\'DB_CHARSET\', \''.DB_CHARSET.'\');
+define(\'DB_COLLATE\', \''.DB_COLLATE.'\');
+
+?'.'>';
+
+@umask(0111);
+// writing the configuration file
+if ( !($fp = @fopen( $config_file, 'w' )))
+{
+ $html_content = htmlentities( $file_content, ENT_QUOTES, 'utf-8' );
+ $html_content = nl2br( $html_content );
+ $error_copy = l10n('step1_err_copy');
+ $error_copy .= '<br>--------------------------------------------------------------------<br>';
+ $error_copy .= '<span class="sql_content">' . $html_content . '</span>';
+ $error_copy .= '<br>--------------------------------------------------------------------<br>';
+}
+@fputs($fp, $file_content, strlen($file_content));
+@fclose($fp);
+
+if (isset($error_copy))
+{
+ array_push($page['errors'], $error_copy);
+}
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>