289 lines
8.6 KiB
Diff
289 lines
8.6 KiB
Diff
|
--- piwigo/admin/include/functions_install.inc.php
|
||
|
+++ piwigo/admin/include/functions_install.inc.php
|
||
|
@@ -21,6 +21,7 @@
|
||
|
* @param string $replaced
|
||
|
* @param string $replacing
|
||
|
*/
|
||
|
+
|
||
|
function execute_sqlfile($filepath, $replaced, $replacing, $dblayer)
|
||
|
{
|
||
|
$sql_lines = file($filepath);
|
||
|
@@ -91,17 +92,15 @@ function activate_core_plugins()
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
- * Connect to database during installation. Uses $_POST.
|
||
|
+ * Connect to database during installation.
|
||
|
*
|
||
|
- * @param array &$infos - populated with infos
|
||
|
* @param array &$errors - populated with errors
|
||
|
*/
|
||
|
-function install_db_connect(&$infos, &$errors)
|
||
|
+function install_db_connect($dbhost, $dbuser, $dbpasswd, $dbname, &$errors)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
- pwg_db_connect($_POST['dbhost'], $_POST['dbuser'],
|
||
|
- $_POST['dbpasswd'], $_POST['dbname']);
|
||
|
+ pwg_db_connect($dbhost, $dbuser, $dbpasswd, $dbname);
|
||
|
pwg_db_check_version();
|
||
|
}
|
||
|
catch (Exception $e)
|
||
|
@@ -110,4 +109,101 @@ function install_db_connect(&$infos, &$errors)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
-?>
|
||
|
\ No newline at end of file
|
||
|
+/**
|
||
|
+ * Create and initialize database
|
||
|
+ *
|
||
|
+ * @param object languages - languages informations
|
||
|
+ * @param string language - default language
|
||
|
+ * @param string prefixeTable - prefix of database names
|
||
|
+ */
|
||
|
+function initialize_db($languages, $language, $prefixeTable, &$errors=[])
|
||
|
+{
|
||
|
+ include_once(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php');
|
||
|
+ $result = pwg_query("SHOW TABLES LIKE '${prefixeTable}activity';");
|
||
|
+ if(pwg_db_num_rows($result))
|
||
|
+ {
|
||
|
+ $errors[] = l10n('The database is already imported');
|
||
|
+ return;
|
||
|
+ }
|
||
|
+ // tables creation, based on piwigo_structure.sql
|
||
|
+ execute_sqlfile(
|
||
|
+ PHPWG_ROOT_PATH.'install/piwigo_structure-mysql.sql',
|
||
|
+ DEFAULT_PREFIX_TABLE,
|
||
|
+ $prefixeTable,
|
||
|
+ 'mysql'
|
||
|
+ );
|
||
|
+ // We fill the tables with basic informations
|
||
|
+ execute_sqlfile(
|
||
|
+ PHPWG_ROOT_PATH.'install/config.sql',
|
||
|
+ DEFAULT_PREFIX_TABLE,
|
||
|
+ $prefixeTable,
|
||
|
+ 'mysql'
|
||
|
+ );
|
||
|
+
|
||
|
+ $query = '
|
||
|
+INSERT INTO '.$prefixeTable.'config (param,value,comment)
|
||
|
+ VALUES (\'secret_key\',md5('.pwg_db_cast_to_text(DB_RANDOM_FUNCTION.'()').'),
|
||
|
+ \'a secret key specific to the gallery for internal use\');';
|
||
|
+ pwg_query($query);
|
||
|
+
|
||
|
+ conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION));
|
||
|
+ conf_update_param('gallery_title', pwg_db_real_escape_string(l10n('Just another Piwigo gallery')));
|
||
|
+
|
||
|
+ conf_update_param(
|
||
|
+ 'page_banner',
|
||
|
+ '<h1>%gallery_title%</h1>'."\n\n<p>".pwg_db_real_escape_string(l10n('Welcome to my photo gallery')).'</p>'
|
||
|
+ );
|
||
|
+
|
||
|
+ // fill languages table, only activate the current language
|
||
|
+ $languages->perform_action('activate', $language);
|
||
|
+
|
||
|
+ // fill $conf global array
|
||
|
+ load_conf_from_db();
|
||
|
+
|
||
|
+ // PWG_CHARSET is required for building the fs_themes array in the
|
||
|
+ // themes class
|
||
|
+ if (!defined('PWG_CHARSET'))
|
||
|
+ {
|
||
|
+ define('PWG_CHARSET', 'utf-8');
|
||
|
+ }
|
||
|
+ activate_core_themes();
|
||
|
+ activate_core_plugins();
|
||
|
+
|
||
|
+ $insert = array(
|
||
|
+ 'id' => 1,
|
||
|
+ 'galleries_url' => PHPWG_ROOT_PATH.'galleries/',
|
||
|
+ );
|
||
|
+ mass_inserts(SITES_TABLE, array_keys($insert), array($insert));
|
||
|
+
|
||
|
+}
|
||
|
+
|
||
|
+/**
|
||
|
+ * Add first admin in database
|
||
|
+ *
|
||
|
+ * @param string admin_name - admin name
|
||
|
+ * @param string admin_pass1 - admin password
|
||
|
+ * @param string admin_main - admin email
|
||
|
+ * @param string admin_language - language of admin
|
||
|
+ */
|
||
|
+function add_admin($admin_name, $admin_pass1, $admin_mail, $language)
|
||
|
+{
|
||
|
+ // webmaster admin user
|
||
|
+ $inserts = array(
|
||
|
+ array(
|
||
|
+ 'id' => 1,
|
||
|
+ 'username' => $admin_name,
|
||
|
+ 'password' => md5($admin_pass1),
|
||
|
+ 'mail_address' => $admin_mail,
|
||
|
+ ),
|
||
|
+ array(
|
||
|
+ 'id' => 2,
|
||
|
+ 'username' => 'guest',
|
||
|
+ ),
|
||
|
+ );
|
||
|
+ mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts);
|
||
|
+
|
||
|
+ create_user_infos(array(1,2), array('language' => $language));
|
||
|
+
|
||
|
+}
|
||
|
+
|
||
|
+?>
|
||
|
--- piwigo/admin/include/functions_upgrade.php
|
||
|
+++ piwigo/admin/include/functions_upgrade.php
|
||
|
@@ -319,4 +319,30 @@ function upgrade_db_connect()
|
||
|
my_error(l10n($e->getMessage()), true);
|
||
|
}
|
||
|
}
|
||
|
+
|
||
|
+/**
|
||
|
+ * Mark all upgrades as done.
|
||
|
+ * Available upgrades must be ignored after a fresh installation. To
|
||
|
+ * make PWG avoid upgrading, we must tell it upgrades have already been
|
||
|
+ * made.
|
||
|
+ */
|
||
|
+function mark_all_upgrades_as_done() {
|
||
|
+ list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
|
||
|
+ define('CURRENT_DATE', $dbnow);
|
||
|
+ $datas = array();
|
||
|
+ foreach (get_available_upgrade_ids() as $upgrade_id)
|
||
|
+ {
|
||
|
+ $datas[] = array(
|
||
|
+ 'id' => $upgrade_id,
|
||
|
+ 'applied' => CURRENT_DATE,
|
||
|
+ 'description' => 'upgrade included in installation',
|
||
|
+ );
|
||
|
+ }
|
||
|
+ mass_inserts(
|
||
|
+ UPGRADE_TABLE,
|
||
|
+ array_keys($datas[0]),
|
||
|
+ $datas
|
||
|
+ );
|
||
|
+}
|
||
|
+
|
||
|
?>
|
||
|
--- piwigo/install.php
|
||
|
+++ piwigo/install.php
|
||
|
@@ -166,6 +166,7 @@ if (@file_exists($config_file))
|
||
|
|
||
|
include(PHPWG_ROOT_PATH . 'include/constants.php');
|
||
|
include(PHPWG_ROOT_PATH . 'admin/include/functions.php');
|
||
|
+include(PHPWG_ROOT_PATH . 'admin/include/functions_upgrade.php');
|
||
|
|
||
|
include(PHPWG_ROOT_PATH . 'admin/include/languages.class.php');
|
||
|
$languages = new languages('utf-8');
|
||
|
@@ -253,11 +254,10 @@ if (!isset($step))
|
||
|
//---------------------------------------------------------------- form analyze
|
||
|
include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$dblayer.'.inc.php');
|
||
|
include(PHPWG_ROOT_PATH . 'admin/include/functions_install.inc.php');
|
||
|
-include(PHPWG_ROOT_PATH . 'admin/include/functions_upgrade.php');
|
||
|
|
||
|
if (isset($_POST['install']))
|
||
|
{
|
||
|
- install_db_connect($infos, $errors);
|
||
|
+ install_db_connect($dbhost, $dbuser, $dbpasswd, $dbname, $errors);
|
||
|
pwg_db_check_charset();
|
||
|
|
||
|
$webmaster = trim(preg_replace('/\s{2,}/', ' ', $admin_name));
|
||
|
@@ -328,93 +328,9 @@ define(\'DB_COLLATE\', \'\');
|
||
|
@fputs($fp, $file_content, strlen($file_content));
|
||
|
@fclose($fp);
|
||
|
|
||
|
- // tables creation, based on piwigo_structure.sql
|
||
|
- execute_sqlfile(
|
||
|
- PHPWG_ROOT_PATH.'install/piwigo_structure-mysql.sql',
|
||
|
- DEFAULT_PREFIX_TABLE,
|
||
|
- $prefixeTable,
|
||
|
- 'mysql'
|
||
|
- );
|
||
|
- // We fill the tables with basic informations
|
||
|
- execute_sqlfile(
|
||
|
- PHPWG_ROOT_PATH.'install/config.sql',
|
||
|
- DEFAULT_PREFIX_TABLE,
|
||
|
- $prefixeTable,
|
||
|
- 'mysql'
|
||
|
- );
|
||
|
-
|
||
|
- $query = '
|
||
|
-INSERT INTO '.$prefixeTable.'config (param,value,comment)
|
||
|
- VALUES (\'secret_key\',md5('.pwg_db_cast_to_text(DB_RANDOM_FUNCTION.'()').'),
|
||
|
- \'a secret key specific to the gallery for internal use\');';
|
||
|
- pwg_query($query);
|
||
|
-
|
||
|
- conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION));
|
||
|
- conf_update_param('gallery_title', pwg_db_real_escape_string(l10n('Just another Piwigo gallery')));
|
||
|
-
|
||
|
- conf_update_param(
|
||
|
- 'page_banner',
|
||
|
- '<h1>%gallery_title%</h1>'."\n\n<p>".pwg_db_real_escape_string(l10n('Welcome to my photo gallery')).'</p>'
|
||
|
- );
|
||
|
-
|
||
|
- // fill languages table, only activate the current language
|
||
|
- $languages->perform_action('activate', $language);
|
||
|
-
|
||
|
- // fill $conf global array
|
||
|
- load_conf_from_db();
|
||
|
-
|
||
|
- // PWG_CHARSET is required for building the fs_themes array in the
|
||
|
- // themes class
|
||
|
- if (!defined('PWG_CHARSET'))
|
||
|
- {
|
||
|
- define('PWG_CHARSET', 'utf-8');
|
||
|
- }
|
||
|
- activate_core_themes();
|
||
|
- activate_core_plugins();
|
||
|
-
|
||
|
- $insert = array(
|
||
|
- 'id' => 1,
|
||
|
- 'galleries_url' => PHPWG_ROOT_PATH.'galleries/',
|
||
|
- );
|
||
|
- mass_inserts(SITES_TABLE, array_keys($insert), array($insert));
|
||
|
-
|
||
|
- // webmaster admin user
|
||
|
- $inserts = array(
|
||
|
- array(
|
||
|
- 'id' => 1,
|
||
|
- 'username' => $admin_name,
|
||
|
- 'password' => md5($admin_pass1),
|
||
|
- 'mail_address' => $admin_mail,
|
||
|
- ),
|
||
|
- array(
|
||
|
- 'id' => 2,
|
||
|
- 'username' => 'guest',
|
||
|
- ),
|
||
|
- );
|
||
|
- mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts);
|
||
|
-
|
||
|
- create_user_infos(array(1,2), array('language' => $language));
|
||
|
-
|
||
|
- // Available upgrades must be ignored after a fresh installation. To
|
||
|
- // make PWG avoid upgrading, we must tell it upgrades have already been
|
||
|
- // made.
|
||
|
- list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
|
||
|
- define('CURRENT_DATE', $dbnow);
|
||
|
- $datas = array();
|
||
|
- foreach (get_available_upgrade_ids() as $upgrade_id)
|
||
|
- {
|
||
|
- $datas[] = array(
|
||
|
- 'id' => $upgrade_id,
|
||
|
- 'applied' => CURRENT_DATE,
|
||
|
- 'description' => 'upgrade included in installation',
|
||
|
- );
|
||
|
- }
|
||
|
- mass_inserts(
|
||
|
- UPGRADE_TABLE,
|
||
|
- array_keys($datas[0]),
|
||
|
- $datas
|
||
|
- );
|
||
|
-
|
||
|
+ initialize_db($languages, $language, $prefixeTable);
|
||
|
+ add_admin($admin_name, $admin_pass1, $admin_mail, $language);
|
||
|
+ mark_all_upgrades_as_done();
|
||
|
if ($is_newsletter_subscribe)
|
||
|
{
|
||
|
fetchRemote(
|