Commit d9775ac8 by Scott

Coding style (install page)

parent 9bfb8f6c
...@@ -20,60 +20,59 @@ ...@@ -20,60 +20,59 @@
More about this license: http://www.question2answer.org/license.php More about this license: http://www.question2answer.org/license.php
*/ */
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
header('Location: ../'); header('Location: ../');
exit; exit;
} }
require_once QA_INCLUDE_DIR.'db/install.php'; require_once QA_INCLUDE_DIR.'db/install.php';
qa_report_process_stage('init_install'); qa_report_process_stage('init_install');
// Define database failure handler for install process, if not defined already (file could be included more than once) // Define database failure handler for install process, if not defined already (file could be included more than once)
if (!function_exists('qa_install_db_fail_handler')) { if (!function_exists('qa_install_db_fail_handler')) {
/**
function qa_install_db_fail_handler($type, $errno=null, $error=null, $query=null) * Handler function for database failures during the installation process
/*
Handler function for database failures during the installation process
*/ */
function qa_install_db_fail_handler($type, $errno=null, $error=null, $query=null)
{ {
global $pass_failure_from_install; global $pass_failure_from_install;
$pass_failure_type=$type; $pass_failure_type = $type;
$pass_failure_errno=$errno; $pass_failure_errno = $errno;
$pass_failure_error=$error; $pass_failure_error = $error;
$pass_failure_query=$query; $pass_failure_query = $query;
$pass_failure_from_install=true; $pass_failure_from_install = true;
require QA_INCLUDE_DIR.'qa-install.php'; require QA_INCLUDE_DIR.'qa-install.php';
qa_exit('error'); qa_exit('error');
} }
}
}
$success=''; $success = '';
$errorhtml=''; $errorhtml = '';
$suggest=''; $suggest = '';
$buttons=array(); $buttons = array();
$fields=array(); $fields = array();
$fielderrors=array(); $fielderrors = array();
$hidden=array(); $hidden = array();
// Process user handling higher up to avoid 'headers already sent' warning // Process user handling higher up to avoid 'headers already sent' warning
if (!isset($pass_failure_type) && qa_clicked('super')) {
if (!isset($pass_failure_type) && qa_clicked('super')) {
require_once QA_INCLUDE_DIR.'db/users.php'; require_once QA_INCLUDE_DIR.'db/users.php';
require_once QA_INCLUDE_DIR.'app/users-edit.php'; require_once QA_INCLUDE_DIR.'app/users-edit.php';
$inemail=qa_post_text('email'); $inemail = qa_post_text('email');
$inpassword=qa_post_text('password'); $inpassword = qa_post_text('password');
$inhandle=qa_post_text('handle'); $inhandle = qa_post_text('handle');
$fielderrors=array_merge( $fielderrors = array_merge(
qa_handle_email_filter($inhandle, $inemail), qa_handle_email_filter($inhandle, $inemail),
qa_password_validate($inpassword) qa_password_validate($inpassword)
); );
...@@ -81,14 +80,14 @@ ...@@ -81,14 +80,14 @@
if (empty($fielderrors)) { if (empty($fielderrors)) {
require_once QA_INCLUDE_DIR.'app/users.php'; require_once QA_INCLUDE_DIR.'app/users.php';
$userid=qa_create_new_user($inemail, $inpassword, $inhandle, QA_USER_LEVEL_SUPER); $userid = qa_create_new_user($inemail, $inpassword, $inhandle, QA_USER_LEVEL_SUPER);
qa_set_logged_in_user($userid, $inhandle); qa_set_logged_in_user($userid, $inhandle);
qa_set_option('feedback_email', $inemail); qa_set_option('feedback_email', $inemail);
$success.="Congratulations - Your Question2Answer site is ready to go!\n\nYou are logged in as the super administrator and can start changing settings.\n\nThank you for installing Question2Answer."; $success .= "Congratulations - Your Question2Answer site is ready to go!\n\nYou are logged in as the super administrator and can start changing settings.\n\nThank you for installing Question2Answer.";
}
} }
}
// Output start of HTML early, so we can see a nicely-formatted list of database queries when upgrading // Output start of HTML early, so we can see a nicely-formatted list of database queries when upgrading
...@@ -104,7 +103,7 @@ ...@@ -104,7 +103,7 @@
th, td { padding: 2px; } th, td { padding: 2px; }
th { text-align: right; font-weight: normal; } th { text-align: right; font-weight: normal; }
td { text-align: left; } td { text-align: left; }
.msg-success { color: #080; } .msg-success { color: #090; }
.msg-error { color: #b00; } .msg-error { color: #b00; }
</style> </style>
</head> </head>
...@@ -112,27 +111,29 @@ ...@@ -112,27 +111,29 @@
<?php <?php
if (isset($pass_failure_type)) { // this page was requested due to query failure, via the fail handler if (isset($pass_failure_type)) {
// this page was requested due to query failure, via the fail handler
switch ($pass_failure_type) { switch ($pass_failure_type) {
case 'connect': case 'connect':
$errorhtml.='Could not establish database connection. Please check the username, password and hostname in the config file, and if necessary set up the appropriate MySQL user and privileges.'; $errorhtml .= 'Could not establish database connection. Please check the username, password and hostname in the config file, and if necessary set up the appropriate MySQL user and privileges.';
break; break;
case 'select': case 'select':
$errorhtml.='Could not switch to the Question2Answer database. Please check the database name in the config file, and if necessary create the database in MySQL and grant appropriate user privileges.'; $errorhtml .= 'Could not switch to the Question2Answer database. Please check the database name in the config file, and if necessary create the database in MySQL and grant appropriate user privileges.';
break; break;
case 'query': case 'query':
global $pass_failure_from_install; global $pass_failure_from_install;
if (@$pass_failure_from_install) if (@$pass_failure_from_install)
$errorhtml.="Question2Answer was unable to perform the installation query below. Please check the user in the config file has CREATE and ALTER permissions:\n\n".qa_html($pass_failure_query."\n\nError ".$pass_failure_errno.": ".$pass_failure_error."\n\n"); $errorhtml .= "Question2Answer was unable to perform the installation query below. Please check the user in the config file has CREATE and ALTER permissions:\n\n".qa_html($pass_failure_query."\n\nError ".$pass_failure_errno.": ".$pass_failure_error."\n\n");
else else
$errorhtml.="A Question2Answer database query failed when generating this page.\n\nA full description of the failure is available in the web server's error log file."; $errorhtml .= "A Question2Answer database query failed when generating this page.\n\nA full description of the failure is available in the web server's error log file.";
break; break;
} }
}
} else { // this page was requested by user GET/POST, so handle any incoming clicks on buttons else {
// this page was requested by user GET/POST, so handle any incoming clicks on buttons
qa_db_connect('qa_install_db_fail_handler'); qa_db_connect('qa_install_db_fail_handler');
if (qa_clicked('create')) { if (qa_clicked('create')) {
...@@ -143,134 +144,143 @@ ...@@ -143,134 +144,143 @@
require_once QA_INCLUDE_DIR.'db/admin.php'; require_once QA_INCLUDE_DIR.'db/admin.php';
require_once QA_INCLUDE_DIR.'app/format.php'; require_once QA_INCLUDE_DIR.'app/format.php';
qa_db_page_move(qa_db_page_create(get_option('blogname'), QA_PAGE_FLAGS_EXTERNAL, get_option('home'), null, null, null), 'O', 1);
// create link back to WordPress home page // create link back to WordPress home page
qa_db_page_move(qa_db_page_create(get_option('blogname'), QA_PAGE_FLAGS_EXTERNAL, get_option('home'), null, null, null), 'O', 1);
$success.='Your Question2Answer database has been created and integrated with your WordPress site.'; $success .= 'Your Question2Answer database has been created and integrated with your WordPress site.';
} else
$success.='Your Question2Answer database has been created for external user identity management. Please read the online documentation to complete integration.';
} else }
$success.='Your Question2Answer database has been created.'; else {
$success .= 'Your Question2Answer database has been created for external user identity management. Please read the online documentation to complete integration.';
}
}
else {
$success .= 'Your Question2Answer database has been created.';
}
} }
if (qa_clicked('nonuser')) { if (qa_clicked('nonuser')) {
qa_db_install_tables(); qa_db_install_tables();
$success.='The additional Question2Answer database tables have been created.'; $success .= 'The additional Question2Answer database tables have been created.';
} }
if (qa_clicked('upgrade')) { if (qa_clicked('upgrade')) {
qa_db_upgrade_tables(); qa_db_upgrade_tables();
$success.='Your Question2Answer database has been updated.'; $success .= 'Your Question2Answer database has been updated.';
} }
if (qa_clicked('repair')) { if (qa_clicked('repair')) {
qa_db_install_tables(); qa_db_install_tables();
$success.='The Question2Answer database tables have been repaired.'; $success .= 'The Question2Answer database tables have been repaired.';
} }
if (qa_clicked('module')) { if (qa_clicked('module')) {
$moduletype=qa_post_text('moduletype'); $moduletype = qa_post_text('moduletype');
$modulename=qa_post_text('modulename'); $modulename = qa_post_text('modulename');
$module=qa_load_module($moduletype, $modulename); $module = qa_load_module($moduletype, $modulename);
$queries=$module->init_queries(qa_db_list_tables()); $queries = $module->init_queries(qa_db_list_tables());
if (!empty($queries)) { if (!empty($queries)) {
if (!is_array($queries)) if (!is_array($queries))
$queries=array($queries); $queries = array($queries);
foreach ($queries as $query) foreach ($queries as $query)
qa_db_upgrade_query($query); qa_db_upgrade_query($query);
} }
$success.='The '.$modulename.' '.$moduletype.' module has completed database initialization.'; $success .= 'The '.$modulename.' '.$moduletype.' module has completed database initialization.';
} }
} }
if (qa_db_connection(false) !== null && !@$pass_failure_from_install) { if (qa_db_connection(false) !== null && !@$pass_failure_from_install) {
$check=qa_db_check_tables(); // see where the database is at $check = qa_db_check_tables(); // see where the database is at
switch ($check) { switch ($check) {
case 'none': case 'none':
if (@$pass_failure_errno==1146) // don't show error if we're in installation process if (@$pass_failure_errno == 1146) // don't show error if we're in installation process
$errorhtml=''; $errorhtml = '';
$errorhtml.='Welcome to Question2Answer. It\'s time to set up your database!'; $errorhtml .= 'Welcome to Question2Answer. It\'s time to set up your database!';
if (QA_FINAL_EXTERNAL_USERS) { if (QA_FINAL_EXTERNAL_USERS) {
if (defined('QA_FINAL_WORDPRESS_INTEGRATE_PATH')) if (defined('QA_FINAL_WORDPRESS_INTEGRATE_PATH')) {
$errorhtml.="\n\nWhen you click below, your Question2Answer site will be set up to integrate with the users of your WordPress site <a href=\"".qa_html(get_option('home'))."\" target=\"_blank\">".qa_html(get_option('blogname'))."</a>. Please consult the online documentation for more information."; $errorhtml .= "\n\nWhen you click below, your Question2Answer site will be set up to integrate with the users of your WordPress site <a href=\"".qa_html(get_option('home'))."\" target=\"_blank\">".qa_html(get_option('blogname'))."</a>. Please consult the online documentation for more information.";
else }
$errorhtml.="\n\nWhen you click below, your Question2Answer site will be set up to integrate with your existing user database and management. Users will be referenced with database column type ".qa_html(qa_get_mysql_user_column_type()).". Please consult the online documentation for more information."; else {
$errorhtml .= "\n\nWhen you click below, your Question2Answer site will be set up to integrate with your existing user database and management. Users will be referenced with database column type ".qa_html(qa_get_mysql_user_column_type()).". Please consult the online documentation for more information.";
}
$buttons=array('create' => 'Create Database'); $buttons = array('create' => 'Create Database');
} else { }
$errorhtml.="\n\nWhen you click below, your Question2Answer database will be set up to manage user identities and logins internally.\n\nIf you want to offer a single sign-on for an existing user base or website, please consult the online documentation before proceeding."; else {
$buttons=array('create' => 'Create Database including User Management'); $errorhtml .= "\n\nWhen you click below, your Question2Answer database will be set up to manage user identities and logins internally.\n\nIf you want to offer a single sign-on for an existing user base or website, please consult the online documentation before proceeding.";
$buttons = array('create' => 'Create Database including User Management');
} }
break; break;
case 'old-version': case 'old-version':
// don't show error if we need to upgrade
if (!@$pass_failure_from_install) if (!@$pass_failure_from_install)
$errorhtml=''; // don't show error if we need to upgrade $errorhtml = '';
$errorhtml.='Your Question2Answer database needs to be upgraded for this version of the software.'; // don't show error before this // don't show error before this
$buttons=array('upgrade' => 'Upgrade Database'); $errorhtml .= 'Your Question2Answer database needs to be upgraded for this version of the software.';
$buttons = array('upgrade' => 'Upgrade Database');
break; break;
case 'non-users-missing': case 'non-users-missing':
$errorhtml='This Question2Answer site is sharing its users with another Q2A site, but it needs some additional database tables for its own content. Please click below to create them.'; $errorhtml = 'This Question2Answer site is sharing its users with another Q2A site, but it needs some additional database tables for its own content. Please click below to create them.';
$buttons=array('nonuser' => 'Create Tables'); $buttons = array('nonuser' => 'Create Tables');
break; break;
case 'table-missing': case 'table-missing':
$errorhtml.='One or more tables are missing from your Question2Answer database.'; $errorhtml .= 'One or more tables are missing from your Question2Answer database.';
$buttons=array('repair' => 'Repair Database'); $buttons = array('repair' => 'Repair Database');
break; break;
case 'column-missing': case 'column-missing':
$errorhtml.='One or more Question2Answer database tables are missing a column.'; $errorhtml .= 'One or more Question2Answer database tables are missing a column.';
$buttons=array('repair' => 'Repair Database'); $buttons = array('repair' => 'Repair Database');
break; break;
default: default:
require_once QA_INCLUDE_DIR.'db/admin.php'; require_once QA_INCLUDE_DIR.'db/admin.php';
if ( (!QA_FINAL_EXTERNAL_USERS) && (qa_db_count_users()==0) ) { if (!QA_FINAL_EXTERNAL_USERS && qa_db_count_users() == 0) {
$errorhtml.="There are currently no users in the Question2Answer database.\n\nPlease enter your details below to create the super administrator:"; $errorhtml .= "There are currently no users in the Question2Answer database.\n\nPlease enter your details below to create the super administrator:";
$fields=array( $fields = array(
'handle' => array('label'=>'Username:', 'type'=>'text'), 'handle' => array('label' => 'Username:', 'type' => 'text'),
'password' => array('label'=>'Password:', 'type'=>'password'), 'password' => array('label' => 'Password:', 'type' => 'password'),
'email' => array('label'=>'Email address:', 'type'=>'text'), 'email' => array('label' => 'Email address:', 'type' => 'text'),
); );
$buttons=array('super' => 'Create Super Administrator'); $buttons = array('super' => 'Create Super Administrator');
}
} else { else {
$tables=qa_db_list_tables(); $tables = qa_db_list_tables();
$moduletypes=qa_list_module_types(); $moduletypes = qa_list_module_types();
foreach ($moduletypes as $moduletype) { foreach ($moduletypes as $moduletype) {
$modules=qa_load_modules_with($moduletype, 'init_queries'); $modules = qa_load_modules_with($moduletype, 'init_queries');
foreach ($modules as $modulename => $module) { foreach ($modules as $modulename => $module) {
$queries=$module->init_queries($tables); $queries = $module->init_queries($tables);
if (!empty($queries)) { // also allows single query to be returned if (!empty($queries)) {
$errorhtml=strtr(qa_lang_html('admin/module_x_database_init'), array( // also allows single query to be returned
$errorhtml = strtr(qa_lang_html('admin/module_x_database_init'), array(
'^1' => qa_html($modulename), '^1' => qa_html($modulename),
'^2' => qa_html($moduletype), '^2' => qa_html($moduletype),
'^3' => '', '^3' => '',
'^4' => '', '^4' => '',
)); ));
$buttons=array('module' => 'Initialize Database'); $buttons = array('module' => 'Initialize Database');
$hidden['moduletype']=$moduletype; $hidden['moduletype'] = $moduletype;
$hidden['modulename']=$modulename; $hidden['modulename'] = $modulename;
break; break;
} }
} }
...@@ -278,14 +288,14 @@ ...@@ -278,14 +288,14 @@
} }
break; break;
} }
} }
if (empty($errorhtml)) { if (empty($errorhtml)) {
if (empty($success)) if (empty($success))
$success='Your Question2Answer database has been checked with no problems.'; $success = 'Your Question2Answer database has been checked with no problems.';
$suggest='<a href="'.qa_path_html('admin', null, null, QA_URL_FORMAT_SAFEST).'">Go to admin center</a>'; $suggest = '<a href="'.qa_path_html('admin', null, null, QA_URL_FORMAT_SAFEST).'">Go to admin center</a>';
} }
?> ?>
...@@ -293,19 +303,19 @@ ...@@ -293,19 +303,19 @@
<?php <?php
if (strlen($success)) if (strlen($success))
echo '<p class="msg-success">'.nl2br(qa_html($success)).'</p>'; echo '<p class="msg-success">'.nl2br(qa_html($success)).'</p>';
if (strlen($errorhtml)) if (strlen($errorhtml))
echo '<p class="msg-error">'.nl2br($errorhtml).'</p>'; echo '<p class="msg-error">'.nl2br($errorhtml).'</p>';
if (strlen($suggest)) if (strlen($suggest))
echo '<p>'.$suggest.'</p>'; echo '<p>'.$suggest.'</p>';
// Very simple general form display logic (we don't use theme since it depends on tons of DB options) // Very simple general form display logic (we don't use theme since it depends on tons of DB options)
if (count($fields)) { if (count($fields)) {
echo '<table>'; echo '<table>';
foreach ($fields as $name => $field) { foreach ($fields as $name => $field) {
...@@ -320,15 +330,16 @@ ...@@ -320,15 +330,16 @@
} }
echo '</table>'; echo '</table>';
} }
foreach ($buttons as $name => $value) foreach ($buttons as $name => $value)
echo '<input type="submit" name="'.qa_html($name).'" value="'.qa_html($value).'">'; echo '<input type="submit" name="'.qa_html($name).'" value="'.qa_html($value).'">';
foreach ($hidden as $name => $value) foreach ($hidden as $name => $value)
echo '<input type="hidden" name="'.qa_html($name).'" value="'.qa_html($value).'">'; echo '<input type="hidden" name="'.qa_html($name).'" value="'.qa_html($value).'">';
qa_db_disconnect(); qa_db_disconnect();
?> ?>
</form> </form>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment