Source for file install_inc.php
Documentation is available at install_inc.php
// Copyright (c) 2002-2003, Luis Argerich, Garland Foster, Eduardo Polidor, et. al.
// All Rights Reserved. See below for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details.
function set_menu( $pInstallFiles, $pStep ) {
global $gBitSmarty, $gBitUser, $gBitDbType, $done, $failedcommands, $app;
// here we set up the menu
for( $done = 0; $done < $pStep; $done++ ) {
$pInstallFiles[$done]['state'] = 'complete';
$pInstallFiles[$done]['icon'] = 'icon-ok';
// if the page is done, we can display the menu item as done and increase the progress bar
if( $failedcommands || !empty( $error ) ) {
$pInstallFiles[$pStep]['state'] = 'error';
$pInstallFiles[$pStep]['icon'] = 'dialog-error';
} elseif( !empty( $warning ) ) {
$pInstallFiles[$pStep]['state'] = 'warning';
$pInstallFiles[$pStep]['icon'] = 'dialog-warning';
} elseif( $app == "_done" ) {
$pInstallFiles[$pStep]['state'] = 'complete';
$pInstallFiles[$pStep]['icon'] = 'icon-ok';
$pInstallFiles[$pStep]['state'] = 'current';
$pInstallFiles[$pStep]['icon'] = 'media-playback-start';
foreach( $pInstallFiles as $key => $menu_step ) {
if( !isset ( $menu_step['state'] ) ) {
if( !empty( $gBitDbType ) && $gBitUser->isAdmin() && !$_SESSION['first_install'] ) {
$pInstallFiles[$key]['state'] = 'complete';
$pInstallFiles[$key]['icon'] = 'icon-ok';
$pInstallFiles[$key]['state'] = 'uncompleted';
$pInstallFiles[$key]['icon'] = 'spacer';
// assign all this work to the template
$gBitSmarty->assign( 'step', $pStep );
$gBitSmarty->assign( 'menu_steps', $pInstallFiles );
$gBitSmarty->assign( 'progress', ( ceil( 100 / ( count( $pInstallFiles ) ) * $done ) ) );
* Global flag to indicate we are installing
define( 'BIT_INSTALL', 'TRUE' );
// Uncomment to switch to role team model ...
//define( 'ROLE_MODEL', 'TRUE' );
// use relative path if no CONFIG_INC path specified - we know we are in installer here...
$config_file = empty($_SERVER['CONFIG_INC']) ? '../config/kernel/config_inc.php' : $_SERVER['CONFIG_INC'];
// We can't call clean_file_path here even though we would like to.
$config_file = (strpos($_SERVER["SERVER_SOFTWARE"],"IIS") ? str_replace( "/", "\\", $config_file) : $config_file);
// DO THIS FIRST! Before we include any kernel stuff to avoid duplicate defines
if( isset ( $_REQUEST['submit_db_info'] ) ) {
if ( $_REQUEST['db'] == "firebird" && empty( $gBitDbName ) ) {
// Should only be called when creating the datatabse
require_once("create_firebird_database.php");
FirebirdCreateDB($_REQUEST['host'], $_REQUEST['user'], $_REQUEST['pass'], $_REQUEST['name'], $_REQUEST['fbpath']);
if ( empty( $gBitDbType ) ) {
$tmpHost = $_REQUEST['host'];
if ($_REQUEST['db'] == 'mssql' && get_magic_quotes_gpc() == 1) { // pull doubled up slashes from config
require_once( 'create_config_inc.php' );
"gBitDbType" => $_REQUEST['db'],
"gBitDbHost" => $tmpHost,
"gBitDbUser" => $_REQUEST['user'],
"gBitDbPassword" => $_REQUEST['pass'],
"gBitDbName" => $_REQUEST['name'],
"gBitDbCaseSensitivity" => $_REQUEST['dbcase'],
"bit_db_prefix" => $_REQUEST['prefix'],
"bit_root_url" => $_REQUEST['baseurl'],
"auto_bug_submit" => !empty( $_REQUEST['auto_bug_submit'] ) ? 'TRUE' : 'FALSE',
"is_live" => !empty( $_REQUEST['is_live'] ) ? 'TRUE' : 'FALSE',
require_once("../kernel/setup_inc.php");
require_once( 'BitInstaller.php' );
require_once( USERS_PKG_PATH. 'RoleUser.php' );
require_once( USERS_PKG_PATH. 'BitUser.php' );
// set some preferences during installation
global $gBitInstaller, $gBitSystem, $gBitThemes;
// IF DB has not been created yet, then packages will not have been scanned yet.
// and even if they have been scanned, then they will only include active packages,
// not all packages. So we scan again here including all packages.
$gBitSystem->scanPackages( 'bit_setup_inc.php', TRUE, 'all', TRUE, TRUE );
$gBitInstaller->mPackages = $gBitSystem->mPackages;
// we need this massive array available during install to work out if bitweaver has already been installed
// this array is so massive that it will kill system with too little memory allocated to php
$dbTables = $gBitInstaller->verifyInstalledPackages( 'all' );
// set prefs to display help during install
$gBitSystem->setConfig( 'site_online_help', 'y' );
$gBitSystem->setConfig( 'site_form_help', 'y' );
$gBitSystem->setConfig( 'site_help_popup', 'n' );
$failedcommands = array();
$gBitLanguage->mLanguage = 'en';
// Empty SCRIPT_NAME and incorrect SCRIPT_NAME due to php-cgiwrap - wolff_borg
if( empty( $_SERVER['SCRIPT_NAME'] )) {
$_SERVER['SCRIPT_NAME'] = $_SERVER['SCRIPT_URL'];
if( empty( $_REQUEST['baseurl'] )) {
$bit_root_url = substr( $_SERVER['SCRIPT_NAME'], 0, strpos( $_SERVER['SCRIPT_NAME'], 'install/' ));
if( !empty( $_POST['signin'] ) ) {
$gBitInstaller->login( $_REQUEST['user'], $_REQUEST['pass'] );
} elseif( !empty( $_COOKIE[$gBitUser->getSiteCookieName()] ) && ( $gBitUser->mUserId = $gBitUser->getUserIdFromCookieHash( $_COOKIE[$gBitUser->getSiteCookieName()] ))) {
$userInfo = $gBitUser->getUserInfo( array( 'user_id' => $gBitUser->mUserId ) );
// User is valid and not due to change pass..
$gBitUser->mInfo = $userInfo;
// if we came from anywhere appart from some installer page, nuke all settings in the _SESSION and set first_install FALSE
( !isset ( $_SESSION['first_install'] )
|| $_SESSION['first_install'] != TRUE )
|| ( isset ( $_SESSION['upgrade'] ) && $_SESSION['upgrade'] != TRUE )
|| !isset ( $_SERVER['HTTP_REFERER'] )
|| isset ( $_SERVER['HTTP_REFERER'] ) && (
( !strpos( $_SERVER['HTTP_REFERER'],'install/install.php' ))
&& ( !strpos( $_SERVER['HTTP_REFERER'],'install/upgrade.php' ))
&& ( !strpos( $_SERVER['HTTP_REFERER'],'install/migrate.php' ))
unset ( $_SESSION['upgrade'] );
$_SESSION['first_install'] = FALSE;
// this is needed because some pages display some additional information during a first install
$gBitSmarty->assign( 'first_install', $_SESSION['first_install'] );
|