2001-07-30 17:59:25 +02:00
< ? php
/************************************************************************** \
* phpGroupWare - Setup *
* http :// www . phpgroupware . org *
* -------------------------------------------- *
* This program is free software ; you can redistribute it and / or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation ; either version 2 of the License , or ( at your *
* option ) any later version . *
\ **************************************************************************/
/* $Id$ */
2001-12-18 03:25:55 +01:00
$phpgw_info = array ();
2001-11-21 16:01:43 +01:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ] = array (
2001-07-30 17:59:25 +02:00
'noheader' => True ,
'nonavbar' => True ,
2001-09-12 18:49:41 +02:00
'currentapp' => 'home' ,
2001-07-30 17:59:25 +02:00
'noapi' => True
);
include ( './inc/functions.inc.php' );
2001-12-18 03:20:31 +01:00
/*
Authorize the user to use setup app and load the database
Does not return unless user is authorized
*/
2002-03-03 22:53:00 +01:00
if ( ! $GLOBALS [ 'phpgw_setup' ] -> auth ( 'Config' ))
2001-12-18 03:20:31 +01:00
{
Header ( 'Location: index.php' );
exit ;
}
2001-07-30 17:59:25 +02:00
2002-03-03 22:53:00 +01:00
$tpl_root = $GLOBALS [ 'phpgw_setup' ] -> html -> setup_tpl_dir ( 'setup' );
2002-08-12 01:54:58 +02:00
$setup_tpl = CreateObject ( 'setup.Template' , $tpl_root );
2001-07-30 17:59:25 +02:00
$setup_tpl -> set_file ( array (
'T_head' => 'head.tpl' ,
'T_footer' => 'footer.tpl' ,
'T_alert_msg' => 'msg_alert_msg.tpl' ,
'T_config_pre_script' => 'config_pre_script.tpl' ,
'T_config_post_script' => 'config_post_script.tpl'
));
2001-11-15 00:17:27 +01:00
/* Following to ensure windows file paths are saved correctly */
set_magic_quotes_runtime ( 0 );
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> loaddb ();
2001-07-30 17:59:25 +02:00
2001-09-21 22:14:04 +02:00
/* Guessing default values. */
$GLOBALS [ 'current_config' ][ 'hostname' ] = $HTTP_HOST ;
2001-09-12 18:49:41 +02:00
$GLOBALS [ 'current_config' ][ 'files_dir' ] = ereg_replace ( '/setup' , '/files' , dirname ( $SCRIPT_FILENAME ));
2002-03-03 22:53:00 +01:00
if ( @ is_dir ( '/tmp' ))
2001-07-30 17:59:25 +02:00
{
2001-09-12 18:49:41 +02:00
$GLOBALS [ 'current_config' ][ 'temp_dir' ] = '/tmp' ;
2001-07-30 17:59:25 +02:00
}
else
{
2001-09-12 18:49:41 +02:00
$GLOBALS [ 'current_config' ][ 'temp_dir' ] = '/path/to/temp/dir' ;
2001-07-30 17:59:25 +02:00
}
2002-04-29 21:49:24 +02:00
if ( @ get_var ( 'cancel' , Array ( 'POST' )))
2001-07-30 17:59:25 +02:00
{
Header ( 'Location: index.php' );
exit ;
}
/* Check api version, use correct table */
2002-03-03 22:53:00 +01:00
$setup_info = $GLOBALS [ 'phpgw_setup' ] -> detection -> get_db_versions ();
if ( $GLOBALS [ 'phpgw_setup' ] -> alessthanb ( $setup_info [ 'phpgwapi' ][ 'currentver' ], '0.9.10pre7' ))
2001-07-30 17:59:25 +02:00
{
$configtbl = 'config' ;
}
else
{
$configtbl = 'phpgw_config' ;
}
2002-04-29 21:49:24 +02:00
$newsettings = get_var ( 'newsettings' , Array ( 'POST' ));
if ( @ get_var ( 'submit' , Array ( 'POST' )) && @ $newsettings )
2001-07-30 17:59:25 +02:00
{
2002-08-14 01:39:39 +02:00
$datetime = CreateObject ( 'phpgwapi.datetime' );
switch ( intval ( $newsettings [ 'daytime_port' ]))
{
case 13 :
$newsettings [ 'tz_offset' ] = $datetime -> getntpoffset ();
break ;
case 80 :
$newsettings [ 'tz_offset' ] = $datetime -> gethttpoffset ();
break ;
default :
$newsettings [ 'tz_offset' ] = $datetime -> getbestguess ();
break ;
}
unset ( $datetime );
print_debug ( 'TZ_OFFSET' , $newsettings [ 'tz_offset' ]);
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> db -> transaction_begin ();
2001-07-30 17:59:25 +02:00
/* This is only temp: */
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> db -> query ( " DELETE FROM $configtbl WHERE config_name='useframes' " );
$GLOBALS [ 'phpgw_setup' ] -> db -> query ( " INSERT INTO $configtbl (config_app,config_name, config_value) values ('phpgwapi','useframes','never') " );
2001-07-30 17:59:25 +02:00
2002-03-03 22:53:00 +01:00
while ( list ( $setting , $value ) = @ each ( $newsettings ))
2001-07-30 17:59:25 +02:00
{
2001-12-26 18:21:24 +01:00
/* echo '<br>Updating: ' . $setting . '=' . $value; */
2001-12-21 23:41:44 +01:00
/* Don't erase passwords, since we also do not print them below */
2001-12-21 23:44:09 +01:00
if ( ! ereg ( 'passwd' , $setting ) && ! ereg ( 'password' , $setting ) && ! ereg ( 'root_pw' , $setting ))
2001-12-21 23:41:44 +01:00
{
2002-03-03 22:53:00 +01:00
@ $GLOBALS [ 'phpgw_setup' ] -> db -> query ( " DELETE FROM $configtbl WHERE config_name=' " . $setting . " ' " );
2001-12-21 23:41:44 +01:00
}
2001-07-30 17:59:25 +02:00
if ( $value )
{
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> db -> query ( " INSERT INTO $configtbl (config_app,config_name, config_value) VALUES ('phpgwapi',' " . $GLOBALS [ 'phpgw_setup' ] -> db -> db_addslashes ( $setting )
. " ',' " . $GLOBALS [ 'phpgw_setup' ] -> db -> db_addslashes ( $value ) . " ') " );
2001-07-30 17:59:25 +02:00
}
}
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> db -> transaction_commit ();
2001-07-30 17:59:25 +02:00
/* Add cleaning of app_sessions per skeeter, but with a check for the table being there, just in case */
2002-03-03 22:53:00 +01:00
$tablenames = $GLOBALS [ 'phpgw_setup' ] -> db -> table_names ();
2001-07-30 17:59:25 +02:00
while ( list ( $key , $val ) = @ each ( $tablenames ))
{
$tables [] = $val [ 'table_name' ];
}
2002-03-03 22:53:00 +01:00
if ( in_array ( 'phpgw_app_sessions' , $tables ))
2001-07-30 17:59:25 +02:00
{
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> db -> lock ( array ( 'phpgw_app_sessions' ));
@ $GLOBALS [ 'phpgw_setup' ] -> db -> query ( " DELETE FROM phpgw_app_sessions WHERE sessionid = '0' and loginid = '0' and app = 'phpgwapi' and location = 'config' " , __LINE__ , __FILE__ );
@ $GLOBALS [ 'phpgw_setup' ] -> db -> query ( " DELETE FROM phpgw_app_sessions WHERE app = 'phpgwapi' and location = 'phpgw_info_cache' " , __LINE__ , __FILE__ );
$GLOBALS [ 'phpgw_setup' ] -> db -> unlock ();
2001-07-30 17:59:25 +02:00
}
2002-03-03 22:53:00 +01:00
if ( $newsettings [ 'auth_type' ] == 'ldap' )
2001-07-30 17:59:25 +02:00
{
Header ( 'Location: ' . $newsettings [ 'webserver_url' ] . '/setup/ldap.php' );
exit ;
}
else
{
Header ( 'Location: index.php' );
exit ;
}
}
2002-03-03 22:53:00 +01:00
if ( $newsettings [ 'auth_type' ] != 'ldap' )
2001-07-30 17:59:25 +02:00
{
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> html -> show_header ( lang ( 'Configuration' ), False , 'config' , $ConfigDomain . '(' . $phpgw_domain [ $ConfigDomain ][ " db_type " ] . ')' );
2001-07-30 17:59:25 +02:00
}
2002-03-03 22:53:00 +01:00
@ $GLOBALS [ 'phpgw_setup' ] -> db -> query ( " SELECT * FROM $configtbl " );
while ( @ $GLOBALS [ 'phpgw_setup' ] -> db -> next_record ())
2001-07-30 17:59:25 +02:00
{
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'current_config' ][ $GLOBALS [ 'phpgw_setup' ] -> db -> f ( 'config_name' )] = $GLOBALS [ 'phpgw_setup' ] -> db -> f ( 'config_value' );
2001-07-30 17:59:25 +02:00
}
2002-03-03 22:53:00 +01:00
if ( $GLOBALS [ 'current_config' ][ 'files_dir' ] == '/path/to/dir/phpgroupware/files' )
2001-07-30 17:59:25 +02:00
{
2001-11-21 16:01:43 +01:00
$GLOBALS [ 'current_config' ][ 'files_dir' ] = $GLOBALS [ 'phpgw_info' ][ 'server' ][ 'server_root' ] . '/files' ;
2001-07-30 17:59:25 +02:00
}
2002-04-29 21:49:24 +02:00
if ( $GLOBALS [ 'error' ] == 'badldapconnection' )
2001-07-30 17:59:25 +02:00
{
/* Please check the number and dial again :) */
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> html -> show_alert_msg ( 'Error' ,
2001-07-30 17:59:25 +02:00
lang ( 'There was a problem trying to connect to your LDAP server. <br>'
. 'please check your LDAP server configuration' ) . '.' );
}
$setup_tpl -> pparse ( 'out' , 'T_config_pre_script' );
2001-09-21 22:14:04 +02:00
/* Now parse each of the templates we want to show here */
class phpgw
{
var $common ;
var $accounts ;
var $applications ;
var $db ;
}
2001-11-21 16:01:43 +01:00
$GLOBALS [ 'phpgw' ] = new phpgw ;
$GLOBALS [ 'phpgw' ] -> common = CreateObject ( 'phpgwapi.common' );
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw' ] -> db = $GLOBALS [ 'phpgw_setup' ] -> db ;
2001-09-21 22:14:04 +02:00
$cfg_apps = array ( 'phpgwapi' , 'admin' , 'preferences' );
while ( list (, $cfg_app ) = each ( $cfg_apps ))
{
2002-08-12 01:54:58 +02:00
$t = CreateObject ( 'setup.Template' , $GLOBALS [ 'phpgw' ] -> common -> get_tpl_dir ( $cfg_app ));
2001-09-21 22:14:04 +02:00
$t -> set_unknowns ( 'keep' );
$t -> set_file ( array ( 'config' => 'config.tpl' ));
$t -> set_block ( 'config' , 'body' , 'body' );
$t -> set_var ( 'th_bg' , '486591' );
$t -> set_var ( 'th_text' , 'FFFFFF' );
$t -> set_var ( 'row_on' , 'DDDDDD' );
$t -> set_var ( 'row_off' , 'EEEEEE' );
$vars = $t -> get_undefined ( 'body' );
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> hook ( 'config' , $cfg_app );
2001-09-21 22:14:04 +02:00
2002-03-03 22:53:00 +01:00
while ( list ( $null , $value ) = each ( $vars ))
2001-09-21 22:14:04 +02:00
{
$valarray = explode ( '_' , $value );
$type = $valarray [ 0 ];
$new = $newval = '' ;
while ( $chunk = next ( $valarray ))
{
$new [] = $chunk ;
}
$newval = implode ( ' ' , $new );
switch ( $type )
{
case 'lang' :
$t -> set_var ( $value , lang ( $newval ));
break ;
case 'value' :
$newval = ereg_replace ( ' ' , '_' , $newval );
2001-12-21 23:38:03 +01:00
/* Don't show passwords in the form */
if ( ereg ( 'passwd' , $value ) || ereg ( 'password' , $value ) || ereg ( 'root_pw' , $value ))
{
$t -> set_var ( $value , '' );
}
else
{
2002-04-29 21:49:24 +02:00
$t -> set_var ( $value , @ $current_config [ $newval ]);
2001-12-21 23:38:03 +01:00
}
2001-09-21 22:14:04 +02:00
break ;
case 'selected' :
$configs = array ();
$config = '' ;
$newvals = explode ( ' ' , $newval );
$setting = end ( $newvals );
2002-03-03 22:53:00 +01:00
for ( $i = 0 ; $i < ( count ( $newvals ) - 1 ); $i ++ )
2001-09-21 22:14:04 +02:00
{
$configs [] = $newvals [ $i ];
}
$config = implode ( '_' , $configs );
/* echo $config . '=' . $current_config[$config]; */
2002-04-29 21:49:24 +02:00
if ( @ $current_config [ $config ] == $setting )
2001-09-21 22:14:04 +02:00
{
$t -> set_var ( $value , ' selected' );
}
else
{
$t -> set_var ( $value , '' );
}
break ;
case 'hook' :
$newval = ereg_replace ( ' ' , '_' , $newval );
$t -> set_var ( $value , $newval ( $current_config ));
break ;
default :
$t -> set_var ( $value , '' );
break ;
}
}
$t -> pfp ( 'out' , 'body' );
unset ( $t );
}
2001-07-30 17:59:25 +02:00
$setup_tpl -> set_var ( 'more_configs' , lang ( 'Please login to phpgroupware and run the admin application for additional site configuration' ) . '.' );
$setup_tpl -> set_var ( 'lang_submit' , lang ( 'submit' ));
$setup_tpl -> set_var ( 'lang_cancel' , lang ( 'cancel' ));
$setup_tpl -> pparse ( 'out' , 'T_config_post_script' );
2002-03-03 22:53:00 +01:00
$GLOBALS [ 'phpgw_setup' ] -> html -> show_footer ();
2001-07-30 17:59:25 +02:00
?>