0) { // clears any current theme output to prevent broken design ob_end_clean(); // prevents browser content encoding error header('Content-Encoding: none'); } $success = ''; $errorhtml = ''; $suggest = ''; $buttons = array(); $fields = array(); $fielderrors = array(); $hidden = array(); // Process user handling higher up to avoid 'headers already sent' warning if (!isset($pass_failure_type) && qa_clicked('super')) { require_once QA_INCLUDE_DIR.'db/admin.php'; require_once QA_INCLUDE_DIR.'db/users.php'; require_once QA_INCLUDE_DIR.'app/users-edit.php'; if (qa_db_count_users() == 0) { // prevent creating multiple accounts $inemail = qa_post_text('email'); $inpassword = qa_post_text('password'); $inhandle = qa_post_text('handle'); $fielderrors = array_merge( qa_handle_email_filter($inhandle, $inemail), qa_password_validate($inpassword) ); if (empty($fielderrors)) { require_once QA_INCLUDE_DIR.'app/users.php'; $userid = qa_create_new_user($inemail, $inpassword, $inhandle, QA_USER_LEVEL_SUPER); qa_set_logged_in_user($userid, $inhandle); 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."; } } } // Output start of HTML early, so we can see a nicely-formatted list of database queries when upgrading ?> sitename, QA_PAGE_FLAGS_EXTERNAL, '../', null, null, null), 'O', 1); $success .= 'Your Question2Answer database has been created and integrated with your Joomla! 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.'; } } if (qa_clicked('nonuser')) { qa_db_install_tables(); $success .= 'The additional Question2Answer database tables have been created.'; } if (qa_clicked('upgrade')) { qa_db_upgrade_tables(); $success .= 'Your Question2Answer database has been updated.'; } if (qa_clicked('repair')) { qa_db_install_tables(); $success .= 'The Question2Answer database tables have been repaired.'; } qa_initialize_postdb_plugins(); if (qa_clicked('module')) { $moduletype = qa_post_text('moduletype'); $modulename = qa_post_text('modulename'); $module = qa_load_module($moduletype, $modulename); $queries = $module->init_queries(qa_db_list_tables()); if (!empty($queries)) { if (!is_array($queries)) $queries = array($queries); foreach ($queries as $query) qa_db_upgrade_query($query); } $success .= 'The '.$modulename.' '.$moduletype.' module has completed database initialization.'; } } if (qa_db_connection(false) !== null && !@$pass_failure_from_install) { $check = qa_db_check_tables(); // see where the database is at switch ($check) { case 'none': if (@$pass_failure_errno == 1146) // don't show error if we're in installation process $errorhtml = ''; $errorhtml .= 'Welcome to Question2Answer. It\'s time to set up your database!'; if (QA_FINAL_EXTERNAL_USERS) { 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 ".qa_html(get_option('blogname')).". Please consult the online documentation for more information."; } elseif (defined('QA_FINAL_JOOMLA_INTEGRATE_PATH')) { $jconfig = new JConfig(); $errorhtml .= "\n\nWhen you click below, your Question2Answer site will be set up to integrate with the users of your Joomla! site ".$jconfig->sitename.". It's also recommended to install the Joomla QAIntegration plugin for additional user-access control. 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' => 'Set up the 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."; $buttons = array('create' => 'Set up the Database including User Management'); } break; case 'old-version': // don't show error if we need to upgrade if (!@$pass_failure_from_install) $errorhtml = ''; // don't show error before this $errorhtml .= 'Your Question2Answer database needs to be upgraded for this version of the software.'; $buttons = array('upgrade' => 'Upgrade the Database'); break; 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.'; $buttons = array('nonuser' => 'Set up the Tables'); break; case 'table-missing': $errorhtml .= 'One or more tables are missing from your Question2Answer database.'; $buttons = array('repair' => 'Repair the Database'); break; case 'column-missing': $errorhtml .= 'One or more Question2Answer database tables are missing a column.'; $buttons = array('repair' => 'Repair the Database'); break; default: require_once QA_INCLUDE_DIR.'db/admin.php'; 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:"; $fields = array( 'handle' => array('label' => 'Username:', 'type' => 'text'), 'password' => array('label' => 'Password:', 'type' => 'password'), 'email' => array('label' => 'Email address:', 'type' => 'email'), ); $buttons = array('super' => 'Set up the Super Administrator'); } else { $tables = qa_db_list_tables(); $moduletypes = qa_list_module_types(); foreach ($moduletypes as $moduletype) { $modules = qa_load_modules_with($moduletype, 'init_queries'); foreach ($modules as $modulename => $module) { $queries = $module->init_queries($tables); if (!empty($queries)) { // also allows single query to be returned $errorhtml = strtr(qa_lang_html('admin/module_x_database_init'), array( '^1' => qa_html($modulename), '^2' => qa_html($moduletype), '^3' => '', '^4' => '', )); $buttons = array('module' => 'Initialize the Database'); $hidden['moduletype'] = $moduletype; $hidden['modulename'] = $modulename; break; } } } } break; } } if (empty($errorhtml)) { if (empty($success)) $success = 'Your Question2Answer database has been checked with no problems.'; $suggest = 'Go to admin center'; } ?>
'.nl2br(qa_html($success)).'

'; if (strlen($errorhtml)) echo '

'.nl2br($errorhtml).'

'; if (strlen($suggest)) echo '

'.$suggest.'

'; // Very simple general form display logic (we don't use theme since it depends on tons of DB options) if (count($fields)) { echo ''; foreach ($fields as $name => $field) { echo ''; echo ''; echo ''; if (isset($fielderrors[$name])) echo ''; else echo ''; echo ''; } echo '
'.qa_html($field['label']).''.qa_html($fielderrors[$name]).'
'; } foreach ($buttons as $name => $value) echo ''; foreach ($hidden as $name => $value) echo ''; qa_db_disconnect(); ?>