0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
webcalendar
/
1.2.0-4
/
standard
/
htdocs
/
install
/
[
Home
]
File: index.php
<?php /* $Id: index.php,v 1.109.2.13 2008/09/28 00:47:57 cknudsen Exp $ * * Page Description: * Main page for install/config of db settings. * This page is used to create/update includes/settings.php. * * Input Parameters: * OPTIONAL tzoffset If after logging in, adding tzoffset to * the URL ( http://yourserver/install/index.php?tzoffset=2 ) * will adjust all existing events in the database +2 hours. * OPTIONAL cutoffdate (YYYYMMDD) When adjusting the tzoffset * the URL ( http://yourserver/install/index.php?tzoffset=2&cutoffdate=20070110 ) * will adjust all events <= 20070110 in the database +2 hours. * This is very handy if your server changes timezones after installation. * * NEW RELEASE UPDATE PROCEDURES: * - Update WEBCAL_PROGRAM_VERSION default value in default_config.php * This should be of the format "v1.0.0" * - Make sure the last entry in all the upgrade-*.sql files reference * this same version. For example, for "v1.0.0", there should be a * comment of the format: /*upgrade_v1.0.0 */ /* ( Don't remove this line as it leads to nested C-Style comments ) * If there are NO db changes, then you should just modify the * the last comment to be the new version number. If there are * db changes, you should create a new entry in the *.sql files * that detail the SQL to upgrade. * - Update the $PROGRAM_VERSION and $PROGRAM_DATE variables defined * in includes/config.php. The $PROGRAM_VERSION needs to be the * same value (e.g. "v1.0.0") that was defined above. * - Update the version/date in ChangeLog and NEWS files. * - Update UPGRADING.html documentation. * * ABOUT VERSION NUMBERS: * From now on, we should only be using "vN.N.N" format for versions. * (No more "v.1.12+CVS", for example.) This may be confusing for CVS * users since they may download a CVS snapshot that says its "1.1.4", * but it's really not quite the official "1.1.4" since we will using * 1.1.4 in CVS until the official 1.1.4 release is made. * * You can mark the version with "+CVS" or something similar in NEWS * and/or ChangeLog since these are not used in the code. * * Security: * The first time this page is accessed, there are no security * precautions. The user is prompted to generate a config password. * From then on, users must know this password to make any changes * to the settings in settings.php./ * * TODO: * Change all references from postgresql to pgsql */ $show_all_errors = false; define ( '__WC_BASEDIR', '..' ); include_once '../includes/translate.php'; include_once '../includes/dbi4php.php'; include_once '../includes/config.php'; include_once '../includes/formvars.php'; include_once 'default_config.php'; include_once 'install_functions.php'; include_once 'sql/upgrade_matrix.php'; $file = '../includes/settings.php'; $fileDir = '../includes'; //change this path if needed $firebird_path = 'c:/program files/firebird/firebird_1_5/examples/employee.fdb'; clearstatcache (); // We may need time to run extensive database loads if ( ! get_php_setting ( 'safe_mode' ) ) set_time_limit ( 240 ); // If we're using SQLLite, it seems that magic_quotes_sybase must be on //ini_set('magic_quotes_sybase', 'On'); // Check for proper auth settings if ( ! empty ( $_SERVER['PHP_AUTH_USER'] ) ) $PHP_AUTH_USER= $_SERVER['PHP_AUTH_USER']; //We'll always use browser defined languages reset_language ( 'none' ); //Some common translations used in the install script // translate ( 'WebCalendar Installation Wizard' ) translate ( 'Step' ) $wizardStr = translate ( 'WebCalendar Installation Wizard Step XXX' ); $passwordStr = translate ( 'Password' ); $singleUserStr = translate ( 'Single-User' ); $loginStr = translate ( 'Login' ); $failureStr = '<b>' . translate ( 'Failure Reason' ) . ': </b>'; $manualStr = translate ( 'You must manually create database' ); $cachedirStr = translate ( 'Database Cache Directory' ); $logoutStr = translate ( 'Logout' ); $testSettingsStr = translate ( 'Test Settings' ); $createNewStr = translate ( 'Create New' ); $datebaseNameStr = translate ( 'Database Name' ); $backStr = translate ( 'Back' ); $nextStr = translate ( 'Next' ); $tzSuccessStr = translate ( 'Timezone Conversion Successful' ); // translate ( 'Error Unable to write to file' ) $errorFileWriteStr = translate ( 'Error Unable to write to file XXX.', true ); $failure = $failureStr . '<blockquote>'; $selected = ' selected="selected" '; $checked = ' checked="checked" '; // First pass at settings.php. // We need to read it first in order to get the md5 password. $magic = @get_magic_quotes_runtime (); @set_magic_quotes_runtime (0); $fd = @fopen ( $file, 'rb', true ); $settings = array (); $password = ''; $forcePassword = false; if ( ! empty ( $fd ) ) { while ( ! feof ( $fd ) ) { $buffer = fgets ( $fd, 4096 ); $buffer = trim ( $buffer, "\r\n " ); if ( preg_match ( "/^(\S+):\s*(.*)/", $buffer, $matches ) ) { if ( $matches[1] == 'install_password' ) { $password = $matches[2]; $settings['install_password'] = $password; } } } fclose ( $fd ); // File exists, but no password. Force them to create a password. if ( empty ( $password ) ) { $forcePassword = true; } } @set_magic_quotes_runtime ($magic); session_start (); $doLogin = false; // Set default Application Name if ( ! isset ( $_SESSION['application_name'] ) ) { $_SESSION['application_name'] = 'WebCalendar'; } // Set Server URL if ( ! isset ( $_SESSION['server_url'] ) ) { if ( ! empty ( $_SERVER['HTTP_HOST'] ) && ! empty ( $_SERVER['REQUEST_URI'] ) ) { $ptr = strpos ( $_SERVER['REQUEST_URI'], '/install', 2 ); if ( $ptr > 0 ) { $uri = substr ( $_SERVER['REQUEST_URI'], 0, $ptr + 1 ); $SERVER_URL = "http://" . $_SERVER['HTTP_HOST']; if ( ! empty ( $_SERVER['SERVER_PORT'] ) && $_SERVER['SERVER_PORT'] != 80 ) $SERVER_URL .= ': ' . $_SERVER['SERVER_PORT']; $SERVER_URL .= $uri; $_SESSION['server_url'] = $SERVER_URL; } } } // Handle "Logout" button if ( 'logout' == getGetValue ( 'action' ) ) { session_destroy (); Header ( 'Location: index.php' ); exit; } // If password already exists, check for valid session. if ( @file_exists ( $file ) && ! empty ( $password ) && ( empty ( $_SESSION['validuser'] ) || $_SESSION['validuser'] != $password ) ) { // Make user login $doLogin = true; } $pwd = getPostValue ( 'password3' ); if ( @file_exists ( $file ) && ! empty ( $pwd ) ) { if ( md5 ($pwd) == $password ) { $_SESSION['validuser'] = $password; ?> <html><head><title>Password Accepted</title> <meta http-equiv="refresh" content="0; index.php" /> </head> <body onLoad="alert('<?php etranslate ( 'Successful Login', true ) ?>');"> </body></html> <?php exit; } else { // Invalid password $_SESSION['validuser'] = ''; ?> <html><head><title>Password Incorrect</title> <meta http-equiv="refresh" content="0; index.php" /> </head> <body onLoad="alert('<?php etranslate ( 'Invalid Login' ) ?>'); document.go(-1)"> </body></html> <?php exit; } } $safevarstring = 'Safe Mode Allowed Vars (' . translate ( 'required only if Safe Mode is On' ) . ')'; $allowurlstring = 'Allow URL fopen (' . translate ( 'required only if Remote Calendars are used' ) . ')'; //[0]Display Text [1]ini_get name [2]required value [3]ini_get string search value $php_settings = array ( array ('Safe Mode','safe_mode','OFF', false), array ( $safevarstring,'safe_mode_allowed_env_vars','TZ', 'TZ'), array ('Register Globals','register_globals','OFF', false), array ('Display Errors','display_errors','ON', false), array ('File Uploads','file_uploads','ON', false), array ($allowurlstring,'allow_url_fopen','ON', false), ); // set up array to test for some constants (display name, constant name, preferred value ) $php_constants = array ( //array (' CRYPT_STD_DES', CRYPT_STD_DES, 1) //future expansion // array ('CRYPT_STD_DES',CRYPT_STD_DES, 1) // array ('CRYPT_MD5',CRYPT_MD5, 1) // array ('CRYPT_BLOWFISH',CRYPT_BLOWFISH, 1) ); $gdstring = 'GD (' . translate ( 'needed for Gradient Image Backgrounds' ) . ')'; $php_modules = array ( array ($gdstring,'imagepng','ON'), ); $pwd1 = getPostValue ( 'password1' ); $pwd2 = getPostValue ( 'password2' ); if ( @file_exists ( $file ) && $forcePassword && ! empty ( $pwd1 ) ) { if ( $pwd1 != $pwd2 ) { echo translate ( 'Passwords do not match' ) . "!<br />\n"; exit; } $fd = @fopen ( $file, 'a+b', false ); if ( empty ( $fd ) ) { echo '<html><body>' . translate ( 'Unable to write password to settings.php file' ) . '.</body></html>'; exit; } fwrite ( $fd, "<?php\r\n" ); fwrite ( $fd, 'install_password: ' . md5 ($pwd1) . "\r\n" ); fwrite ( $fd, "?>\r\n" ); fclose ( $fd ); ?> <html><head><title>Password Updated</title> <meta http-equiv="refresh" content="0; index.php" /> </head> <body onLoad="alert('<?php etranslate ( 'Password has been set', true ) ?>');"> </body></html> <?php exit; } $magic = @get_magic_quotes_runtime (); @set_magic_quotes_runtime (0); $fd = @fopen ( $file, 'rb', false ); if ( ! empty ( $fd ) ) { while ( ! feof ( $fd ) ) { $buffer = fgets ( $fd, 4096 ); $buffer = trim ( $buffer, "\r\n " ); if ( preg_match ( "/^#|\/\*/", $buffer ) ) continue; if ( preg_match ( "/^<\?/", $buffer ) ) // start php code continue; if ( preg_match ( "/^\?>/", $buffer ) ) // end php code continue; if ( preg_match ( "/(\S+):\s*(.*)/", $buffer, $matches ) ) { $settings[$matches[1]] = $matches[2]; } } fclose ( $fd ); } @set_magic_quotes_runtime ($magic); $action = getGetValue ( 'action' ); // We were set here because of a mismatch of $PROGRAM_VERSION // A simple way to ensure that UPGRADING.html gets read and processed if ( ! empty ( $action ) && $action == 'mismatch' ) { $_SESSION['old_program_version'] = $version = getGetValue ( 'version' ); } // Go to the proper page if ( ! empty ( $action ) && $action == 'switch' ) { $page = getGetValue ( 'page' ); switch ( $page ){ case 2: if ( ! empty ( $_SESSION['validuser'] ) ){ $_SESSION['step'] = $page; $onload = 'db_type_handler();'; } break; case 3: if ( ! empty ( $_SESSION['validuser'] ) && ! empty ( $_SESSION['db_success'] ) ){ $_SESSION['step'] = $page; } break; case 4: if ( ! empty ( $_SESSION['validuser'] ) && ! empty ( $_SESSION['db_success'] ) && empty ( $_SESSION['db_create'] ) ){ $_SESSION['step'] = $page; $onload = 'auth_handler();'; } break; default: $_SESSION['step'] = 1; } } // We're doing a database installation yea ha! if ( ! empty ( $action ) && $action == 'install' ){ // We'll grab database settings from settings.php $db_persistent = false; $db_type = $settings['db_type']; $db_host = $settings['db_host']; $db_database = $settings['db_database']; $db_login = $settings['db_login']; $db_password = $settings['db_password']; $real_db = $db_database; if ( $db_type == 'sqlite' ) $real_db = get_full_include_path ( $db_database ); if ( $db_password == 'none' ) $db_password =''; // We might be displaying sql only $display_sql = getPostValue('display_sql'); $c = dbi_connect ( $db_host, $db_login, $db_password, $real_db, false ); // It's possible that the tables were created manually // and we just want to do the database population routines if ( $c && ! empty ( $_SESSION['install_file'] ) ) { $sess_install = $_SESSION['install_file']; $install_filename = ( $sess_install == 'tables' ? 'tables':'upgrade'); switch ( $db_type ) { case 'mysql': $install_filename .= '-mysql.sql'; break; case 'mysqli': $install_filename .= '-mysql.sql'; break; case 'mssql': $install_filename .= '-mssql.sql'; break; case 'ibm_db2': $install_filename .= '-db2.sql'; break; case 'oracle': $install_filename .= '-oracle.sql'; break; case 'ibase': $install_filename .= '-ibase.sql'; break; case 'postgresql': $install_filename .= '-postgres.sql'; break; case 'odbc': $underlying_db = "-" . $_SESSION['odbc_db'] . '.sql'; $install_filename .= $underlying_db; break; case 'sqlite': include_once 'sql/tables-sqlite.php'; populate_sqlite_db ( $real_db, $c ); $install_filename = ''; break; default: } db_populate ( $install_filename, $display_sql ); } if ( empty ( $display_sql ) ){ //Convert passwords to md5 hashes if needed $res = dbi_execute ( 'SELECT cal_login, cal_passwd FROM webcal_user', array (), false, $show_all_errors ); if ( $res ) { while ( $row = dbi_fetch_row ( $res ) ) { if ( strlen ( $row[1] ) < 30 ) { dbi_execute ( 'UPDATE webcal_user SET cal_passwd = ? WHERE cal_login = ?', array ( md5 ( $row[1] ), $row[0] ) ); } } dbi_free_result ( $res ); } // If new install, run 0 GMT offset //just to set webcal_config.WEBCAL_TZ_CONVERSION if ( $_SESSION['old_program_version'] == 'new_install' ) { convert_server_to_GMT (); } //for upgrade to v1.1b we need to convert existing categories //and repeating events do_v11b_updates (); //v1.1e requires converting webcal_site_extras to webcal_reminders do_v11e_updates (); // Update the version info get_installed_version( true ); $_SESSION['blank_database'] = ''; } //end if $display_sql } //end database installation //Set the value of the underlying database for ODBC connections if ( ! empty ( $action ) && $action == 'set_odbc_db' ){ $_SESSION['odbc_db'] = getPostValue( 'odbc_db' ); } $post_action = getPostValue ( 'action' ); $post_action2 = getPostValue ( 'action2' ); // Is this a db create? // If so, just test the connection, show the result and exit. if ( ! empty ( $post_action2 ) && $post_action2== $createNewStr && ! empty ( $_SESSION['validuser'] ) && ! empty ( $_SESSION['db_noexist'] )) { $_SESSION['db_success'] = false; $db_persistent = false; $db_type = getPostValue ( 'form_db_type' ); $db_host = getPostValue ( 'form_db_host' ); $db_database = getPostValue ( 'form_db_database' ); $db_login = getPostValue ( 'form_db_login' ); $db_password = getPostValue ( 'form_db_password' ); $db_cachedir = getPostValue ( 'form_db_cachedir' ); //Allow ODBC field to be visible if needed $onload = 'db_type_handler();'; if ( $db_password == 'none' ) $db_password =''; // We don't use the normal dbi_execute because we need to know // the difference between no conection and no database if ( $db_type == 'mysql' ) { $c = dbi_connect ( $db_host, $db_login, $db_password, 'mysql', false ); if ( $c ) { dbi_execute ( "CREATE DATABASE $db_database;", array (), false, $show_all_errors); if ( ! @mysql_select_db ( $db_database ) ) { $response_msg = $failure . dbi_error () . "</blockquote>\n"; } else { $_SESSION['db_noexist'] = false; $_SESSION['old_program_version'] = 'new_install'; } } else { $response_msg = $failure . dbi_error () . "</blockquote>\n"; } } else if ( $db_type == 'mssql' ) { $c = dbi_connect ( $db_host, $db_login, $db_password, 'master', false); if ( $c ) { dbi_execute ( "CREATE DATABASE $db_database;", array (), false, $show_all_errors); if ( ! @mssql_select_db ( $db_database ) ) { $response_msg = $failure . dbi_error () . "</blockquote>\n"; } else { $_SESSION['db_noexist'] = false; $_SESSION['old_program_version'] = 'new_install'; } } else { $response_msg = $failure . dbi_error () . "</blockquote>\n"; } } else if ( $db_type == 'postgresql' ) { $c = dbi_connect ( $db_host, $db_login, $db_password, 'template1', false); if ( $c ) { dbi_execute ( "CREATE DATABASE $db_database", array (), false, $show_all_errors); $_SESSION['db_noexist'] = false; } else { $response_msg = $failure . dbi_error () . "</blockquote>\n"; } } else if ( $db_type == 'ibase' ) { $response_msg = $failure . $manualStr . "</blockquote>\n"; } // TODO code remainig database types //allow bypass of TZ Conversion $_SESSION['tz_conversion'] = 'Y'; //Force a db test now $post_action = $testSettingsStr; } // Is this a db connection test? // If so, just test the connection, show the result and exit. if ( ! empty ( $post_action ) && $post_action == $testSettingsStr && ! empty ( $_SESSION['validuser'] ) ) { $response_msg = ''; $response_msg2 = ''; $_SESSION['db_success'] = false; $db_persistent = getPostValue ( 'db_persistent' ); $db_type = getPostValue ( 'form_db_type' ); $db_host = getPostValue ( 'form_db_host' ); $db_database = getPostValue ( 'form_db_database' ); $db_login = getPostValue ( 'form_db_login' ); $db_password = getPostValue ( 'form_db_password' ); $db_cachedir = getPostValue ( 'form_db_cachedir' ); //Allow field length to change if needed $onload = 'db_type_handler();'; //disable warnings show_errors (); $real_db = $db_database; if ( $db_type == 'sqlite' ) $real_db = get_full_include_path ( $db_database ); if ( $db_password == 'none' ) $db_password =''; $c = dbi_connect ( $db_host, $db_login, $db_password, $real_db, false ); //enable warnings show_errors ( true); if ( $c ) { $_SESSION['db_success'] = true; // Do some queries to try to determine the previous version get_installed_version (); $response_msg = '<b>' .translate ( 'Connection Successful' ) . '</b> ' . translate ( 'Please go to next page to continue installation' ) . '.'; } else { $response_msg = $failure . dbi_error () . "</blockquote>\n"; // See if user is valid, but database doesn't exist // The normal call to dbi_connect simply return false for both conditions if ( $db_type == 'mysql' ) { $c = mysql_connect ( $db_host, $db_login, $db_password ); } else if ( $db_type == 'mssql' ) { $c = mssql_connect ( $db_host, $db_login, $db_password ); } else if ( $db_type == 'postgresql' ) { $c = dbi_connect ( $db_host, $db_login, $db_password, 'template1', false); } else if ( $db_type == 'ibase' ) { //TODO figure out how to remove this hardcoded link $c = dbi_connect ( $db_host, $db_login, $db_password, $firebird_path, false); } //TODO Code remaining database types if ( $c ) { // credentials are valid, but database doesn't exist $response_msg = translate ( 'Correct your entries or click the Create New button to continue installation' ); $_SESSION['db_noexist'] = true; } else { if ( $db_type == 'ibase' ) { $response_msg = $failure . $manualStr . "</blockquote>\n"; } else { $response_msg = $failure . dbi_error () . "</blockquote>\n" . translate ( 'Correct your entries and try again' ); } } } //end if ($c) //test db_cachedir directory for write permissions if ( strlen ( $db_cachedir ) > 0 ) { if ( ! @is_dir ( $db_cachedir ) ) { $response_msg2 = $failureStr . $cachedirStr . ' ' . translate ( 'does not exist' ); } else if ( ! @is_writable ( $db_cachedir ) ) { $response_msg2 = $failureStr . $cachedirStr . ' ' . translate ( 'is not writable' ); } else { } } } // Is this a Timezone Convert? //Manual tzoffset input in URL $tzoffset = getGetValue ( 'tzoffset' ); if ( ! empty ( $tzoffset ) ) { $action = 'tz_convert'; } // If so, run it if ( ! empty ( $action ) && $action == 'tz_convert' && ! empty ( $_SESSION['validuser'] ) ) { $cutoffdate = getIntValue ( 'cutoffdate' ); $db_persistent = false; $db_type = $settings['db_type']; $db_host = $settings['db_host']; $db_database = $settings['db_database']; $db_login = $settings['db_login']; $db_password = $settings['db_password']; $db_cachedir = getPostValue ( 'form_db_cachedir' ); // Avoid false visibilty of single user login $onload = 'auth_handler();'; $real_db = $db_database; if ( $db_type == 'sqlite' ) $real_db = get_full_include_path ( $db_database ); if ( $db_password == 'none' ) $db_password =''; $c = dbi_connect ( $db_host, $db_login, $db_password, $real_db, false ); if ( $c ) { $ret = convert_server_to_GMT ( $tzoffset, $cutoffdate ); if ( substr ( $ret, 3, 21 ) == 'Conversion Successful' ) { $_SESSION['tz_conversion'] = 'Success'; $response_msg = $tzSuccessStr; } else { $response_msg = translate ( 'Error Converting Timezone' ); } } else { $response_msg = $failure . dbi_error () . "</blockquote>\n"; } } // Is this a call to phpinfo ()? if ( ! empty ( $action ) && $action == 'phpinfo' ) { if ( ! empty ( $_SESSION['validuser'] ) ) { phpinfo (); } else { etranslate ( 'You are not authorized.' ); } exit; } // Session check counter if ( isset ( $_SESSION['check'] ) ){ $_SESSION['check']++; } else { $_SESSION['check'] = 0; } $exists = false; $exists = @file_exists ( $file ); $canWrite = false; if ( $exists ) { $canWrite = is_writable ( $file ); } else { // check to see if we can create the settings file. $testFd = @fopen ( $file, 'w+b', false ); if ( @file_exists ( $file ) ) { $canWrite = true; $exists = true; $forcePassword = true; } @fclose ( $testFd ); } // If we are handling a form POST, then take that data and put it in settings // array. $x = getPostValue ( 'form_db_type' ); if ( empty ( $x ) ) { // No form was posted. Set defaults if none set yet. if ( ! @file_exists ( $file ) || count ( $settings ) == 1) { $settings['db_type'] = 'mysql'; $settings['db_host'] = 'localhost'; $settings['db_database'] = 'intranet'; $settings['db_login'] = 'root'; $settings['db_password'] = 'none'; $settings['db_persistent'] = 'false'; $settings['db_cachedir'] =( file_exists ( '/tmp' ) && is_writable ( '/tmp' ) ? '/tmp' : '' ); $settings['readonly'] = 'false'; $settings['user_inc'] = 'user.php'; $settings['install_password'] = ''; $settings['single_user_login'] = ''; $settings['use_http_auth'] = 'false'; $settings['single_user'] = 'false'; } } else { $settings['db_type'] = getPostValue ( 'form_db_type' ); $settings['db_host'] = getPostValue ( 'form_db_host' ); $settings['db_database'] = getPostValue ( 'form_db_database' ); $settings['db_login'] = getPostValue ( 'form_db_login' ); $settings['db_password'] = getPostValue ( 'form_db_password' ); $settings['db_persistent'] = getPostValue ( 'form_db_persistent' ); $settings['db_cachedir'] = getPostValue ( 'form_db_cachedir' ); $settings['readonly'] =( ! isset ( $settings['readonly'] )? 'false':$settings['readonly']); $settings['user_inc'] =( ! isset ( $settings['user_inc'] )? 'user.php':$settings['user_inc']); $settings['install_password'] = ( ! isset ( $settings['install_password'] )? '' :$settings['install_password']); $settings['single_user_login'] = ( ! isset ( $settings['single_user_login'] )? '': $settings['single_user_login']); $settings['use_http_auth'] = ( ! isset ( $settings['use_http_auth'] )? 'false':$settings['use_http_auth']); $settings['single_user'] = ( ! isset ( $settings['single_user'] )? 'false': $settings['single_user']); } $y = getPostValue ( 'app_settings' ); if ( ! empty ( $y ) ) { $settings['single_user_login'] = getPostValue ( 'form_single_user_login' ); $settings['readonly'] = getPostValue ( 'form_readonly' ); $settings['mode'] = getPostValue ( 'form_mode' ); if ( getPostValue ( 'form_user_inc' ) == 'http' ) { $settings['use_http_auth'] = 'true'; $settings['single_user'] = 'false'; $settings['user_inc'] = 'user.php'; } else if ( getPostValue ( 'form_user_inc' ) == 'none' ) { $settings['use_http_auth'] = 'false'; $settings['single_user'] = 'true'; $settings['user_inc'] = 'user.php'; } else { $settings['use_http_auth'] = 'false'; $settings['single_user'] = 'false'; $settings['user_inc'] = getPostValue ( 'form_user_inc' ); } //Save Application Name and Server URL $db_persistent = false; $db_type = $settings['db_type']; $db_password = ( $settings['db_password'] == 'none' ? '' : $settings['db_password'] ); $_SESSION['application_name'] = getPostValue ( 'form_application_name' ); $_SESSION['server_url'] = getPostValue ( 'form_server_url' ); $db_database = $settings['db_database']; if ( $db_type == 'sqlite' ) $db_database = get_full_include_path ( $db_database ); $c = dbi_connect ( $settings['db_host'], $settings['db_login'], $db_password, $db_database, false ); if ( $c ) { if ( isset ( $_SESSION['application_name'] ) ) { dbi_execute ("DELETE FROM webcal_config WHERE cal_setting = 'APPLICATION_NAME'"); dbi_execute ("INSERT INTO webcal_config ( cal_setting, cal_value ) " . "VALUES ('APPLICATION_NAME', ?)", array ( $_SESSION['application_name'] ) ); } if ( isset ( $_SESSION['server_url'] ) ) { dbi_execute ("DELETE FROM webcal_config WHERE cal_setting = 'SERVER_URL'"); dbi_execute ("INSERT INTO webcal_config ( cal_setting, cal_value ) " . "VALUES ('SERVER_URL', ?)", array ( $_SESSION['server_url'] ) ); } } $do_load_admin = getPostValue ( 'load_admin' ); if ( ! empty ( $do_load_admin ) ) { //add default admin user if not exists db_load_admin (); //check if an Admin account exists $_SESSION['admin_exists'] = db_check_admin (); } $setup_complete = true; } // Save settings to file now. if ( ! empty ( $x ) || ! empty ( $y ) ){ $fd = @fopen ( $file, 'w+b', false ); if ( empty ( $fd ) ) { if ( @file_exists ( $file ) ) { $onloadDetailStr = translate ( 'Please change the file permissions of this file', true ); } else { $onloadDetailStr = translate ( 'Please change includes dir permission', true ); } $onload = "alert('" . $errorFileWriteStr . $file. "\\n" . $onloadDetailStr . ".');"; } else { fwrite ( $fd, "<?php\r\n" ); fwrite ( $fd, '/* updated via install/index.php on ' . date ( 'r' ) . "\r\n" ); foreach ( $settings as $k => $v ) { if ( $v != '<br />' && $v != '' ) fwrite ( $fd, $k . ': ' . $v . "\r\n" ); } fwrite ( $fd, "# end settings.php */\r\n?>\r\n" ); fclose ( $fd ); if ( $post_action != $testSettingsStr && $post_action2 != $createNewStr ){ $onload .= "alert('" . translate ( 'Your settings have been saved', true ) . ".\\n\\n');"; } // Change to read/write by us only (only applies if we created file) // and read-only by all others. Would be nice to make it 600, but // the send_reminders.php script is usually run under a different // user than the web server. @chmod ( $file, 0644 ); } } //print_r ( $_SESSION); echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head><title>WebCalendar Setup Wizard</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <?php include '../includes/js/visible.php'; ?> <script language="JavaScript" type="text/javascript"> <!-- <![CDATA[ <?php if ( ! empty ( $_SESSION['validuser'] ) ) { ?> function testPHPInfo () { var url; url = "index.php?action=phpinfo"; //alert ( "URL:\n" + url ); window.open ( url, 'wcTestPHPInfo', 'width=800,height=600,resizable=yes,scrollbars=yes' ); } <?php } ?> function validate ( form ) { var form = document.form_app_settings; var err = ""; // only check is to make sure single-user login is specified if // in single-user mode // find id of single user object var listid = 0; for ( i = 0; i < form.form_user_inc.length; i++ ) { if ( form.form_user_inc.options[i].value == "none" ) listid = i; } if ( form.form_user_inc.options[listid].selected ) { if ( form.form_single_user_login.value.length == 0 ) { // No single user login specified alert ("<?php etranslate ( 'Error you must specify a Single-User Login', true ) ?> "); form.form_single_user_login.focus (); return false; } } if ( form.form_server_url.value == "" ) { err += "<?php etranslate ( 'Server URL is required.', true ) ?>" + "\n"; form.form_server_url.select (); form.form_server_url.focus (); } else if ( form.form_server_url.value.charAt ( form.form_server_url.value.length - 1 ) != '/' ) { err += "<?php etranslate ( 'Server URL must end with /.', true )?>\n"; form.form_server_url.select (); form.form_server_url.focus (); } if ( err != "" ) { alert ( "<?php etranslate ( 'Error', true ) ?>:\n\n" + err ); return false; } // Submit form... form.submit (); } function auth_handler () { var form = document.form_app_settings; // find id of single user object var listid = 0; for ( i = 0; i < form.form_user_inc.length; i++ ) { if ( form.form_user_inc.options[i].value == "none" ) listid = i; } if ( form.form_user_inc.options[listid].selected ) { makeVisible ( "singleuser" ); } else { makeInvisible ( "singleuser" ); } } function db_type_handler () { var form = document.dbform; // find id of db_type object var listid = 0; var selectvalue = form.form_db_type.value; if ( selectvalue == "sqlite" || selectvalue == "ibase" ) { form.form_db_database.size = 65; document.getElementById("db_name").innerHTML = "<?php echo $datebaseNameStr ?>" + ": " + "<?php etranslate ( 'Full Path (no backslashes)') ?>"; } else { form.form_db_database.size = 20; document.getElementById("db_name").innerHTML = "<?php echo $datebaseNameStr ?>" + ": "; } } function chkPassword () { var form = document.dbform; var db_pass = form.form_db_password.value; var illegalChars = /\#/; // do not allow #.../\#/ would stop all non-alphanumeric if (illegalChars.test(db_pass)) { alert( "<?php etranslate ( 'The password contains illegal characters.', true ) ?>"); form.form_db_password.select (); form.form_db_password.focus (); return false; } } //]]> --> </script> <style type="text/css"> body { background-color: #ffffff; font-family: Arial, Helvetica, sans-serif; margin: 0; } table { border: 0px solid #ccc; } th.pageheader { font-size: 18px; padding:10px; background-color: #eee; } th.header { font-size: 14px; background-color: #eee; } th.redheader { font-size: 14px; color: red; background-color: #eee; } td { padding: 5px; } td.prompt { font-weight: bold; padding-right: 20px; } td.subprompt { font-weight: bold; padding-right: 20px; font-size: 12px; } div.nav { margin: 0; border-bottom: 1px solid #000; } div.main { margin: 10px; } li { margin-top: 10px; } doc.li { margin-top: 5px; } .recommended { color: green; } .notrecommended { color: red; } </style> </head> <body <?php if ( ! empty ($onload) ) echo "onload=\"$onload\""; ?> > <?php //print_r ( $_SERVER ); if ( empty ( $_SESSION['step'] ) || $_SESSION['step'] < 2 ) {?> <table border="1" width="90%" align="center"> <tr><th class="pageheader" colspan="2"><?php echo str_replace ( 'XXX', translate ( '1' ), $wizardStr ) ?></th></tr> <tr><td colspan="2" width="50%"> <?php etranslate ( 'This installation wizard will guide you...' ) ?>:<br /> <ul> <li><a href="../docs/WebCalendar-SysAdmin.html" target="_docs">System Administrator's Guide</a></li> <li><a href="../docs/WebCalendar-SysAdmin.html#faq" target="_docs">FAQ</a></li> <li><a href="../docs/WebCalendar-SysAdmin.html#trouble" target="_docs">Troubleshooting</a></li> <li><a href="../docs/WebCalendar-SysAdmin.html#help" target="_docs">Getting Help</a></li> <li><a href="../UPGRADING.html" target="_docs">Upgrading Guide</a></li> <li><a href="http://www.k5n.us/dokuwiki/doku.php" target="_docs">User Supported Wiki</a></li> </ul> </td></tr> <tr><th class="header" colspan="2"><?php etranslate ( 'PHP Version Check' ) ?></th></tr> <tr><td> <?php etranslate ( 'Check to see if PHP 4.1.0 or greater is installed' ) ?>. </td> <?php $class = ( version_compare ( phpversion (), '4.1.0', '>=' ) ? '' : 'not' ) . 'recommended'; echo '<td class="' . $class . '"><img src="' . ( $class == 'recommended' ? 'recommended.gif' : 'not_recommended.jpg' ) . '" alt="" /> ' . translate ( 'PHP version' ) . ' ' . phpversion (); ?> </td></tr> <tr><th class="header" colspan="2"> <?php etranslate ( 'PHP Settings' ); if ( ! empty ( $_SESSION['validuser'] ) ) { ?> <input name="action" type="button" value="<?php etranslate ( 'Detailed PHP Info' ) ?>" onClick="testPHPInfo()" /> <?php } ?> </th></tr> <?php foreach ( $php_settings as $setting ) { ?> <tr><td class="prompt"><?php echo $setting[0];?></td> <?php $ini_get_result = get_php_setting ( $setting[1], $setting[3] ); $class = ( $ini_get_result == $setting[2] ) ? 'recommended' : 'notrecommended'; echo "<td class=\"$class\">"; if ($class == 'recommended') { echo '<img src="recommended.gif" alt=""/> '; } else { echo '<img src="not_recommended.jpg" alt=""/> '; } echo $ini_get_result; ?> </td></tr> <?php } foreach ( $php_constants as $constant ) { ?> <tr><td class="prompt"><?php echo $constant[0];?></td> <?php $class = ( $constant[1] ) == $constant[2] ? 'recommended' : 'notrecommended'; echo "<td class=\"$class\">"; if ($class == 'recommended') { echo '<img src="recommended.gif" alt=""/> ON'; } else { echo '<img src="not_recommended.jpg" alt=""/> OFF'; } ?> </td></tr> <?php } foreach ( $php_modules as $module ) { ?> <tr><td class="prompt"><?php echo $module[0];?></td> <?php $class = ( get_php_modules ( $module[1] ) == $module[2] ) ? 'recommended' : 'notrecommended'; echo "<td class=\"$class\">"; if ($class == 'recommended') { echo '<img src="recommended.gif" alt=""/> '; } else { echo '<img src="not_recommended.jpg" alt=""/> '; } echo get_php_modules ( $module[1] ); ?> </td></tr> <?php } ?> <tr><th class="header" colspan="2"><?php etranslate ( 'Session Check' ) ?></th></tr> <tr><td> <?php echo translate ( 'To test the proper operation of sessions, reload this page' ) . '<br />' . translate ( 'You should see the session counter increment each time' ) ?>.</td> <?php $class = ( $_SESSION['check'] > 0 ) ? 'recommended' : 'notrecommended'; echo "<td class=\"$class\">"; if ($_SESSION['check'] > 0) { echo '<img src="recommended.gif" alt=""/> '; } else { echo '<img src="not_recommended.jpg" alt=""/> '; } echo translate ( 'SESSION COUNTER' ) . ': ' . $_SESSION['check']; ?> </td></tr> <?php //if the settings file doesn't exist or we can't write to it, echo an error header.. if ( ! $exists || ! $canWrite ) { ?> <tr><th class="redheader" colspan="2"><?php echo translate ( 'Settings.php Status' ) . ': ' . translate ( 'Error' ) ?></th></tr> <?php //..otherwise, edit a regular header } else { ?> <tr><th class="header" colspan="2">Settings.php Status</th></tr> <?php } //if the settings file exists, but we can't write to it.. if ( $exists && ! $canWrite ) { ?> <tr><td> <img src="not_recommended.jpg" alt=""/> <?php etranslate ( 'The file permissions of settings.php are set...' ) ?>:</td><td> <blockquote><b> <?php echo realpath ( $file ); ?> </b></blockquote> </td></tr> <?php //or, if the settings file doesn't exist & we can't write to the includes directory.. } else if ( ! $exists && ! $canWrite ) { ?> <tr><td colspan="2"> <img src="not_recommended.jpg" alt=""/> <?php etranslate ( 'The file permissions of the includes directory are set...' ) ?>: <blockquote><b> <?php echo realpath ( $fileDir ); ?> </b></blockquote> </td></tr> <?php //if settings.php DOES exist & we CAN write to it.. } else { ?> <tr><td> <?php etranslate ( 'Your settings.php file appears to be valid' ) ?>.</td><td class="recommended"> <img src="recommended.gif" alt=""/> OK </td></tr> <?php if ( empty ( $_SESSION['validuser'] ) ) { ?> <tr><th colspan="2" class="header"><?php etranslate ( 'Configuration Wizard Password' ) ?></th></tr> <tr><td colspan="2" align="center" style="border:none"> <?php if ( $doLogin ) { ?> <form action="index.php" method="post" name="dblogin"> <table> <tr><th> <?php echo $passwordStr ?>:</th><td> <input name="password3" type="password" /> <input type="submit" value="<?php echo $loginStr ?>" /> </td></tr> </table> </form> <?php } else if ( $forcePassword ) { ?> <form action="index.php" method="post" name="dbpassword"> <table border="0"> <tr><th colspan="2" class="header"> <?php etranslate ( 'Create Settings File Password' ) ?> </th></tr> <tr><th> <?php echo $passwordStr ?>:</th><td> <input name="password1" type="password" /> </td></tr> <tr><th> <?php etranslate ( 'Password (again)' ) ?>:</th><td> <input name="password2" type="password" /> </td></tr> <tr><td colspan="2" align="center"> <input type="submit" value="<?php etranslate ( 'Set Password' ) ?>" /> </td></tr> </table> </form> <?php } } } ?> </td></tr></table> <?php if ( ! empty ( $_SESSION['validuser'] ) ) { ?> <table border="0" width="90%" align="center"> <tr><td align="center"> <form action="index.php?action=switch&page=2" method="post"> <input type="submit" value="<?php echo $nextStr ?> ->" /> </form> </td></tr> </table> <?php } //BEGIN STEP 2 } else if ( $_SESSION['step'] == 2 ) { ?> <table border="1" width="90%" align="center"> <tr><th class="pageheader" colspan="2"> <?php echo str_replace ( 'XXX', translate ( '2' ), $wizardStr ) ?> </th></tr> <tr><td colspan="2" width="50%"> <?php echo translate ( 'db setup directions...' )?>. </td></tr> <tr><th colspan="2" class="header"> <?php etranslate ( 'Database Status' ) ?> </th></tr> <tr><td> <ul> <!-- <li><?php etranslate ( 'Supported databases for your PHP installation' ) ?>: --> </li> <?php if ( ! empty ( $_SESSION['db_success'] ) && $_SESSION['db_success'] ) { ?> <li class="recommended"><img src="recommended.gif" alt=""/> <?php etranslate ( 'Your current database settings are able to access the database' ) ?>.</li> <?php if ( ! empty ( $response_msg ) && empty ( $response_msg2 ) ) { ?> <li class="recommended"><img src="recommended.gif" alt=""/> <?php echo $response_msg; ?></li> <?php } elseif ( empty ( $response_msg2 )&& empty ( $_SESSION['db_success'] ) ) {?> <li class="notrecommended"><img src="not_recommended.jpg" alt=""/> <b><?php etranslate ( 'Please Test Settings' ) ?></b></li> <?php } } else { ?> <li class="notrecommended"><img src="not_recommended.jpg" alt=""/> <?php etranslate ( 'Your current database settings are not able...' ) ?>.</li> <?php if ( ! empty ( $response_msg ) ) { ?> <li class="notrecommended"><img src="not_recommended.jpg" alt=""/> <?php echo $response_msg; ?></li> <?php } } if ( ! empty ( $response_msg2 ) ) { ?> <li class="notrecommended"><img src="not_recommended.jpg" alt=""/> <b><?php echo $response_msg2; ?></b></li> <?php } ?> </ul> </td></tr> <tr><th class="header" colspan="2"> <?php etranslate ( 'Database Settings' ) ?> </th></tr> <tr><td> <form action="index.php" method="post" name="dbform" onSubmit="return chkPassword()"> <table align="right" width="100%" border="0"> <tr><td rowspan="7" width="20%"> </td><td class="prompt" width="25%" valign="bottom"> <label for="db_type"><?php etranslate ( 'Database Type' ) ?>:</label></td><td valign="bottom"> <select name="form_db_type" id="db_type" onChange="db_type_handler();"> <?php $supported = array (); if ( function_exists ( 'db2_pconnect' ) ) $supported['ibm_db2'] = 'IBM DB2 Universal Database'; if ( function_exists ( 'ibase_connect' ) ) $supported['ibase'] = 'Interbase'; if ( function_exists ( 'mssql_connect' ) ) $supported['mssql'] = 'MS SQL Server'; if ( function_exists ( 'mysql_connect' ) ) $supported['mysql'] = 'MySQL'; if ( function_exists ( 'mysqli_connect' ) ) $supported['mysqli'] = 'MySQL (Improved)'; if ( function_exists ( 'OCIPLogon' ) ) $supported['oracle'] = 'Oracle (OCI)'; if ( function_exists ( 'odbc_pconnect' ) ) $supported['odbc'] = 'ODBC'; if ( function_exists ( 'pg_pconnect' ) ) $supported['postgresql'] = 'PostgreSQL'; if ( function_exists ( 'sqlite_open' ) ) $supported['sqlite'] = 'SQLite'; asort ( $supported ); foreach ( $supported as $key => $value ) { echo ' <option value="' . $key . '" ' . ( $settings['db_type'] == $key ? $selected : '' ) . '>' . $value . '</option>'; } $supported = array (); ?> </select> </td></tr> <tr><td class="prompt"> <label for="server"><?php etranslate ( 'Server' ) ?>:</label></td><td colspan="2"> <input name="form_db_host" id="server" size="20" value="<?php echo $settings['db_host'];?>" /> </td></tr> <tr><td class="prompt"> <label for="login"><?php echo $loginStr ?>:</label></td><td colspan="2"> <input name="form_db_login" id="login" size="20" value="<?php echo $settings['db_login'];?>" /> </td></tr> <tr><td class="prompt"> <label for="pass"><?php echo $passwordStr ?>:</label></td><td colspan="2"> <input name="form_db_password" id="pass" size="20" value="<?php echo $settings['db_password'];?>" /> </td></tr> <tr><td class="prompt" id="db_name"> <label for="database"><?php echo $datebaseNameStr ?>:</label></td><td colspan="2"> <input name="form_db_database" id="database" size="20" value="<?php echo $settings['db_database'];?>" /> </td></tr> <?php // This a workaround for postgresql. The db_type should be 'pgsql' but 'postgresql' is used // in a lot of places...so this is easier for now :( $real_db_type = ( $settings['db_type'] == 'postgresql' ? 'pgsql' : $settings['db_type'] ); if ( substr ( php_sapi_name (), 0, 3) <> 'cgi' && ini_get( $real_db_type . '.allow_persistent' ) ){ ?> <tr><td class="prompt"> <label for="conn_pers"><?php etranslate ( 'Connection Persistence' ) ?>:</label></td><td colspan="2"> <label><input name="form_db_persistent" value="true" type="radio"<?php echo ( $settings['db_persistent'] == 'true' ) ? $checked : ''; ?> /><?php etranslate ( 'Enabled' ) ?></label> <label><input name="form_db_persistent" value="false" type="radio"<?php echo ( $settings['db_persistent'] != 'true' )? $checked : ''; ?> /><?php etranslate ( 'Disabled' ) ?></label> <?php } else { // Need to set a default value ?> <input name="form_db_persistent" value="false" type="hidden" /> <?php } ?> </td></tr> <?php if ( function_exists ( 'file_get_contents' ) ) { ?> <tr><td class="prompt"><?php echo $cachedirStr ?>:</td> <td><?php if ( empty ( $settings['db_cachedir'] ) ) $settings['db_cachedir'] = ''; ?> <input type="text" size="70" name="form_db_cachedir" id="form_db_cachedir" value="<?php echo $settings['db_cachedir']; ?>"/></td></tr> <?php } //end test for file_get_contents if ( ! empty ( $_SESSION['validuser'] ) ) { ?> <tr><td align="center" colspan="3"> <?php $class = ( empty ( $_SESSION['db_success'] ) ? 'not' : '' ) . 'recommended'; echo "<input name=\"action\" type=\"submit\" value=\"" . $testSettingsStr . "\" class=\"$class\" />\n"; if ( ! empty ( $_SESSION['db_noexist'] ) && empty ( $_SESSION['db_success'] ) ){ echo "<input name=\"action2\" type=\"submit\" value=\"" . $createNewStr. "\" class=\"recommended\" />\n"; } ?> </td></tr> </table> </form> </td></tr></table> <?php } ?> <table border="0" width="90%" align="center"> <tr><td align="right" width="40%"> <form action="index.php?action=switch&page=1" method="post"> <input type="submit" value="<- <?php echo $backStr ?>" /> </form> </td><td align="center" width="20%"> <form action="index.php?action=switch&page=3" method="post"> <input type="submit" value="<?php echo $nextStr ?> ->" <?php echo ( empty ($_SESSION['db_success'] ) ? 'disabled' : '' ); ?> /> </form> </td><td align="left" width="40%"> <form action="" method="post"> <input type="button" value="<?php echo $logoutStr ?>" <?php echo ( empty ($_SESSION['validuser'] ) ? 'disabled' : '' ); ?> onclick="document.location.href='index.php?action=logout'" /> </form> </td></tr> </table> <?php } else if ( $_SESSION['step'] == 3 ) { //print_r ( $_SESSION); $_SESSION['db_updated'] = false; if ( $_SESSION['old_program_version'] == $PROGRAM_VERSION && empty ( $_SESSION['blank_database'] ) ){ $response_msg = translate ( 'All your database tables appear to be up to date. You may proceed to the') . ' ' . translate ( 'next page and complete your WebCalendar setup' ) .'.'; $_SESSION['db_updated'] = true; } else if ( $_SESSION['old_program_version'] == 'new_install' ) { $response_msg = translate ( 'This appears to be a new installation. If this is not correct, please') . ' ' . translate ( 'go back to the previous page and correct your settings' ) . '.'; } else if ( ! empty ( $_SESSION['blank_database'] ) ){ $response_msg =translate ( 'The database requires some data input' ) . '. ' . translate ( 'Click Update Database to complete the upgrade' ) . '.'; } else { $response_msg = translate ( 'This appears to be an upgrade from version' ) . ' ' . $_SESSION['old_program_version'] . ' ' . translate ( 'to' ) . ' ' . $PROGRAM_VERSION. '.'; } ?> <table border="1" width="90%" align="center"> <tr><th class="pageheader" colspan="2"><?php echo str_replace ( 'XXX', translate ( '3' ), $wizardStr )?></th></tr> <tr><td colspan="2" width="50%"> <?php echo translate ( 'In this section we will perform the required database changes to bring your database up to the required level' ) . ' ' . translate ( 'If you are using a fully supported database, this step will be performed automatically for you' ) . ' ' . translate ( 'If not, the required SQL can be displayed and you should be able' ) . ' ' . translate ( 'to cut & paste it into your database server query window' ) ?>. </td></tr> <tr><th colspan="2" class="header"><?php etranslate ( 'Database Status' ) ?></th></tr> <tr><td> <?php echo $response_msg; ?> </td></tr> <?php if ( ! empty ( $_SESSION['db_updated'] ) ){ ?> <tr><th colspan="2" class="header"><?php etranslate ( 'No database actions are required' ) ?></th></tr> <?php } else { ?> <tr><th colspan="2" class="redheader"><?php etranslate ( 'The following database actions are required' ) ?></th></tr> <?php if ( $settings['db_type'] == 'odbc' && empty ( $_SESSION['db_updated'] ) ) { if ( empty ( $_SESSION['odbc_db'] ) ) $_SESSION['odbc_db'] = 'mysql'; ?> <tr><td id="odbc_db" align="center" nowrap> <form action="index.php?action=set_odbc_db" method="post" name="set_odbc_db"> <b><?php etranslate ( 'ODBC Underlying Database' ) ?>:</b> <select name="odbc_db" onChange="document.set_odbc_db.submit();"> <option value="mysql" <?php echo $_SESSION['odbc_db'] == 'mysql'? $selected : '' ; ?> >MySQL</option> <option value="mssql" <?php echo $_SESSION['odbc_db'] == 'mssql'? $selected : '' ; ?> >MS SQL</option> <option value="oracle" <?php echo $_SESSION['odbc_db'] == 'oracle'? $selected : '' ; ?> >Oracle</option> <option value="postgresql" <?php echo $_SESSION['odbc_db'] == 'postgresql'? $selected : '' ; ?> >PostgreSQL</option> <option value="ibase" <?php echo $_SESSION['odbc_db'] == 'ibase'? $selected :'' ; ?> >Interbase</option> </select> </form> </td></tr> <?php } ?> <tr> <td class="recommended" align="center"> <?php if ( ! empty ( $settings['db_type'] ) && empty ( $_SESSION['blank_database'] ) && ( $settings['db_type'] == 'ibase' || $settings['db_type'] == 'oracle' ) ) { etranslate ( 'Automatic installation not supported' ) ?>. <?php } else { etranslate ( 'This may take several minutes to complete' ) ?>. <?php if ( $_SESSION['old_program_version'] == 'new_install' && empty ( $_SESSION['blank_database'] ) ){ ?> <form action="index.php?action=install" method="post"> <input type="submit" value="<?php etranslate ( 'Install Database' ) ?>" /> </form> <?php } else {//We're doing an upgrade ?> <form action="index.php?action=install" method="post"> <input type="hidden" name="install_file" value="<?php echo $_SESSION['install_file']; ?>" /> <input type="submit" value="<?php etranslate ( 'Update Database' ) ?>" /> </form> <?php } } ?> </td></tr> <?php if ( ! empty ( $settings['db_type'] ) && $settings['db_type'] != 'sqlite' && empty ( $_SESSION['blank_database'] ) ) { ?> <tr><td align="center"> <form action="index.php?action=install" method="post" name="display"> <input type="hidden" name="install_file" value="<?php echo $_SESSION['install_file']; ?>" /> <input type="hidden" name="display_sql" value="1" /> <input type="submit" value="<?php etranslate ( 'Display Required SQL' ) ?>" /><br /> <?php if ( ! empty ( $str_parsed_sql ) ) { ?> <textarea name="displayed_sql" cols="100" rows="12" ><?php echo $str_parsed_sql; ?></textarea> <br /> <p class="recommended"><?php etranslate ( 'Return to previous page after processing SQL.' ) ?></p> <?php } ?> </form> </td></tr> <?php } } ?> </table> <table border="0" width="90%" align="center"> <tr><td align="right" width="40%"> <form action="index.php?action=switch&page=2" method="post"> <input type="submit" value="<- <?php echo $backStr ?>" /> </form> </td><td align="center" width="20%"> <form action="index.php?action=switch&page=4" method="post"> <input type="submit" value="<?php echo $nextStr ?> ->" <?php echo ( empty ($_SESSION['db_updated'] ) ? 'disabled' : '' ); ?> /> </form> </td><td align="left" width="40%"> <form action="" method="post"> <input type="button" value="<?php echo $logoutStr ?>" <?php echo ( empty ($_SESSION['validuser'] ) ? 'disabled' : '' ); ?> onclick="document.location.href='index.php?action=logout'" /> </form> </td></tr> </table> <?php } else if ( $_SESSION['step'] == 4 ) { ?> <table border="1" width="90%" align="center"> <th class="pageheader" colspan="2"><?php echo str_replace ( 'XXX', translate ( '4' ), $wizardStr )?></th> <tr><td colspan="2" width="50%"> <?php etranslate ( 'This is the final step in setting up your WebCalendar Installation.' ) ?> </td></tr> <?php if ( ! empty ( $_SESSION['tz_conversion'] ) && $_SESSION['tz_conversion'] != 'Y' ) { ?> <th class="header" colspan="2"><?php etranslate ( 'Timezone Conversion' ) ?></th></tr> <tr><td colspan="2"> <?php if ( $_SESSION['tz_conversion'] != 'Success' ) {?> <form action="index.php?action=tz_convert" method="post"> <ul><li><?php /* translate ( 'It appears that you have' ) translate ( 'NOT' ) translate ( 'converted your existing WebCalendar event data to GMT.' ) translate ( 'If you have, you may ignore this notice and not proceed with the conversion.' ) translate ( 'If this is a new installation, you may also ignore this notice.' ) */ echo translate ( 'It appears that you have NOT converted your existing WebCalendar...' )?> </li></ul> <div align="center"> <input type="submit" value="<?php etranslate ( 'Convert Data to GMT') ?>:" /></div> </form> <?php } else if ( $_SESSION['tz_conversion'] == 'Success' ) { ?> <ul><li><?php echo $tzSuccessStr ?></li></ul> <?php } ?> </td></tr> <?php } //end Timezone Conversion ?> <th class="header" colspan="2"><?php etranslate ( 'Application Settings' ) ?></th> <tr><td colspan="2"><ul> <?php if ( empty ( $PHP_AUTH_USER ) ) { /* translate ( 'HTTP-based authentication was not detected' ) translate ( 'You will need to reconfigure your web server if you wish to' ) translate ( 'select Web Server from the User Authentication choices below.' ) */ echo '<li>'.translate ( 'HTTP-based authentication was not detected...' ) ?> </li> <?php } else { /* translate ( 'HTTP-based authentication was detected.' ) translate ( 'User authentication is being handled by your web server.' ) translate ( 'You should select Web Server from the list of User Authentication choices below.' ) */ echo '<li>'.translate ( 'HTTP-based authentication was detected...' )?> </li> <?php } ?> </ul></td></tr> <tr><td> <?php $will_load_admin = ( ( $_SESSION['old_program_version'] == 'new_install' )? $checked:''); ?> <table width="75%" align="center" border="0"><tr> <form action="index.php?action=switch&page=4" method="post" enctype='multipart/form-data' name="form_app_settings"> <input type="hidden" name="app_settings" value="1"/> <td class="prompt"><?php etranslate ( 'Create Default Admin Account' ) ?>:</td> <td><input type="checkbox" name="load_admin" value="Yes" <?php echo $will_load_admin ?> /><?php if ( $_SESSION['admin_exists'] == 0 ) { echo '<span class="notrecommended"> ( ' . translate ( 'Admin Account Not Found' ) . ' )</span>'; } ?></td></tr> <tr><td class="prompt"><?php etranslate ( 'Application Name' ) ?>:</td> <td> <input type="text" size="40" name="form_application_name" id="form_application_name" value="<?php echo $_SESSION['application_name'];?>" /></td></tr> <tr><td class="prompt"><?php etranslate ( 'Server URL' ) ?>:</td> <td> <input type="text" size="40" name="form_server_url" id="form_server_url" value="<?php echo $_SESSION['server_url'];?>" /></td></tr> <tr><td class="prompt"><?php etranslate ( 'User Authentication' ) ?>:</td> <td> <select name="form_user_inc" onChange="auth_handler()"> <?php echo "<option value=\"user.php\" " . ( $settings['user_inc'] == 'user.php' && $settings['use_http_auth'] != 'true' ? $selected : '' ) . ">". translate ( 'Web-based via WebCalendar (default)' ) . "</option>\n"; echo "<option value=\"http\" " . ( $settings['user_inc'] == 'user.php' && $settings['use_http_auth'] == 'true' ? $selected : '' ) . '>' // translate ( 'Web Server' ) translate ( 'Web Server (detected)' ) // translate ( 'Web Server (not detected)' ) . translate ( 'Web Server (' . ( empty ( $PHP_AUTH_USER ) ? 'not ' : '' ) . 'detected)' ) . "</option>\n"; if ( function_exists ( 'ldap_connect' ) ) { echo '<option value="user-ldap.php" ' . ( $settings['user_inc'] == 'user-ldap.php' ? $selected : '' ) . ">LDAP</option>\n"; } if ( function_exists ( 'yp_match' ) ) { echo '<option value="user-nis.php" ' . ( $settings['user_inc'] == 'user-nis.php' ? $selected : '' ) . ">NIS</option>\n"; } echo '<option value="user-imap.php" ' . ( $settings['user_inc'] == 'user-imap.php' ? $selected : '' ) . ">IMAP</option>\n"; echo '<option value="none" ' . ( $settings['user_inc'] == 'user.php' && $settings['single_user'] == 'true' ? $selected : '' ) . '>' . translate ( 'None (Single-User)' ) . "</option>\n</select>\n"; ?> </td> </tr> <tr id="singleuser"> <td class="prompt"> <?php echo $singleUserStr . ' ' . $loginStr ?>:</td> <td> <input name="form_single_user_login" size="20" value="<?php echo ( empty ( $settings['single_user_login'] ) ? '' : $settings['single_user_login'] );?>" /></td> </tr> <tr> <td class="prompt"><?php etranslate ( 'Read-Only' ) ?>:</td> <td> <input name="form_readonly" value="true" type="radio" <?php echo ( $settings['readonly'] == 'true' )? $checked : '';?> /><?php etranslate ( 'Yes' ) ?> <input name="form_readonly" value="false" type="radio" <?php echo ( $settings['readonly'] != 'true' )? $checked : '';?> /><?php etranslate ( 'No' ) ?> </td> </tr> <tr> <td class="prompt"><?php etranslate ( 'Environment' ) ?>:</td> <td> <select name="form_mode"> <?php if ( preg_match ( "/dev/", $settings['mode'] ) ) $mode = 'dev'; // development else $mode = 'prod'; //production ?> <option value="prod" <?php if ( $mode == 'prod' ) echo $selected; echo ">" . translate ( 'Production' ) ?></option> <option value="dev" <?php if ( $mode == 'dev' ) echo $selected; echo ">" . translate ( 'Development' ) ?></option> </select> </td> </tr> </table> </td></tr> <table width="80%" align="center"> <tr><td align="center"> <?php if ( ! empty ( $_SESSION['db_success'] ) && $_SESSION['db_success'] && empty ( $dologin ) ) { ?> <input name="action" type="button" value="<?php etranslate ( 'Save Settings' ) ?>" onClick="return validate();" /> <?php if ( ! empty ( $_SESSION['old_program_version'] ) && $_SESSION['old_program_version'] == $PROGRAM_VERSION && ! empty ( $setup_complete )) { ?> <input type="button" name="action2" value="<?php etranslate ( 'Launch WebCalendar' ) ?>" onClick="window.open( '../index.php', 'webcalendar');" /> <?php } } if ( ! empty ( $_SESSION['validuser'] ) ) { ?> <input type="button" value="<?php echo $logoutStr ?>" onclick="document.location.href='index.php?action=logout'" /> <?php } ?> </form> </td></tr></table> <?php } ?> </body> </html>