Version: 1.0 Release date: 08 July 2003 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. */ //config file exists now so require it to get the properties. require_once('../Group-Office.php'); $CONFIG_FILE = $GO_CONFIG->get_config_file(); require_once('install.inc'); function print_head() { echo 'Group-Office Installation'; echo '
'; echo '
'; echo ''; echo ''; echo '

Group-Office installation

'; } function print_foot() { echo '
'; } //destroy session when user closes browser ini_set('session.cookie_lifetime','0'); //get the path of this script $script_path = __FILE__; if ($script_path == '') { print_head(); echo 'Fatal error: Could not get the path of the this script. The server variable \'SCRIPT_FILENAME\' and \'PATH_TRANSLATED\' are not set.'; echo '

Correct this and refresh this page. If you are not able to correct this try the manual installation described in the file \'INSTALL\''; print_foot(); exit(); } //check ifconfig exists and if the config file is writable $config_location1 = '/etc/Group-Office/'.$_SERVER['SERVER_NAME'].str_replace($_SERVER['DOCUMENT_ROOT'],'', $GO_CONFIG->root_path).'config.php'; $config_location2 = $GO_CONFIG->root_path.'config.php'; if(!file_exists($CONFIG_FILE)) { print_head(); echo 'The configuration file does not exist. You must create a writable configuration file at one of the following locations:
'; echo '
  1. '.$config_location1.'
  2. '; echo '
  3. '.$config_location2.'
'; echo 'The first location is more secure because the sensitive information is kept outside the document root but it does require root privileges on this machine.
The second advantage is that you will be able to seperate the source from the configuration. This can be very usefull with multiple installations on one machine.'; echo 'If you choose this location then you have to make sure that in Apache\'s httpd.conf the following is set:

'; echo ''; echo 'UseCanonicalName On
'; echo 'This is to make sure it always finds your configuration file at the correct location.'; echo '

'; echo '$ touch config.php (Or FTP an empty config.php to the server)
'; echo '$ chmod 777 config.php


'; print_foot(); exit(); }elseif (!is_writable($CONFIG_FILE)) { print_head(); echo 'The configuration file \''.$CONFIG_FILE.'\' exists but is not writable. If you wish to make changes then you have to make \''.$CONFIG_FILE.'\' writable during the configuration process.'; echo '

Correct this and refresh this page.'; echo '

$ chmod 777 '.$CONFIG_FILE.'
'; print_foot(); exit(); } // require_once functions.inc which we need for validate_email(), // just in case Group-Office.php has not already included it. //require_once( $GO_CONFIG->root_path . 'functions.inc' ); $task = isset($_POST['task']) ? $_POST['task'] : ''; if ($_SERVER['REQUEST_METHOD'] =='POST') { switch($task) { case 'administrator': $pass1=trim($_POST['pass1']); $pass2=trim($_POST['pass2']); $email=trim($_POST['email']); $username=trim($_POST['username']); if ($pass1 == '' || $username=='') { $feedback = 'Please enter a password and a username!'; }elseif( strlen($pass1) < 4) { $feedback = 'Password can\'t be shorter then 4 characters!'; }elseif($pass1 != $pass2) { $feedback = 'Passwords did not match!'; }elseif(!validate_email( $email )) { $feedback = 'Invalid E-mail address!'; }else { $GO_USERS->get_users(); $new_user_id = $GO_USERS->nextid("users"); $GO_GROUPS->query("DELETE FROM db_sequence WHERE seq_name='groups'"); $GO_GROUPS->query("DELETE FROM groups"); $admin_group_id = $GO_GROUPS->add_group($new_user_id, 'Admins'); $root_group_id = $GO_GROUPS->add_group($new_user_id, 'Everyone'); $new_user_id = $GO_USERS->add_user( smart_addslashes($username), // Username smart_addslashes($pass1), // Password '', // First Name '', // Middle Name '', // Last Name '', // Initials '', // Title 'M', // Sex '', // Birthday smart_addslashes($email), // eMail Address '', // Work Phone '', // Home Phone '', // Fax '', // Cellular '', // Country '', // State '', // City '', // ZIP '', // Address '', // Company '', // Work Country '', // Work State '', // Work City '', // Work ZIP '', // Work Address '', // Work Fax '', // Homepage '', // Department '', // Function '', // Language '', // Theme '', // Start module true, // Visible to everybody? $new_user_id ); $old_umask = umask(000); mkdir($GO_CONFIG->file_storage_path.smart_stripslashes($username), $GO_CONFIG->create_mode); umask($old_umask); //grant administrator privileges $GO_GROUPS->add_user_to_group($new_user_id, $GO_CONFIG->group_root); $_SESSION['completed']['administrator'] = true; } break; case 'test': $_SESSION['completed']['test'] = true; break; case 'license': $_SESSION['completed']['license'] = true; break; case 'release_notes': $_SESSION['completed']['release_notes'] = true; break; case 'database_connection': $db = new db(); $db->Halt_On_Error = 'no'; $GO_CONFIG->db_host = smart_stripslashes($_POST['db_host']); $GO_CONFIG->db_name = smart_stripslashes($_POST['db_name']); $GO_CONFIG->db_user = smart_stripslashes($_POST['db_user']); $GO_CONFIG->db_pass = smart_stripslashes($_POST['db_pass']); if(@$db->connect($GO_CONFIG->db_name, $GO_CONFIG->db_host, $GO_CONFIG->db_user, $GO_CONFIG->db_pass)) { if (save_config($GO_CONFIG)) { $_SESSION['completed']['database_connection'] = true; } }else { $feedback ='Failed to connect to database'; } break; case 'database_structure': $db = new db(); $db->Halt_On_Error = 'no'; if (!$db->connect($GO_CONFIG->db_name, $GO_CONFIG->db_host, $GO_CONFIG->db_user, $GO_CONFIG->db_pass)) { print_head(); echo 'Can\'t connect to database!'; echo '

Correct this and refresh this page.'; print_foot(); exit(); }else { if($_POST['upgrade'] == 'true') { $old_version = intval(str_replace('.', '', $_POST['db_version'])); $new_version = intval(str_replace('.', '', $GO_CONFIG->version)); require_once($GO_CONFIG->root_path.'lib/updates.inc'); if (!isset($updates[$old_version])) { //invalid version, abort upgrade $feedback = 'The version number you entered is invalid'; }else { for ($cur_ver=$old_version;$cur_ver<$new_version;$cur_ver++) { if (isset($updates[$cur_ver])) { while($query = array_shift($updates[$cur_ver])) { @$db->query($query); } } if (file_exists($GO_CONFIG->root_path.'lib/scripts/'.$cur_ver.'.inc')) { echo 'Running update script for version '.$cur_ver.'...
'; require_once($GO_CONFIG->root_path.'lib/scripts/'.$cur_ver.'.inc'); } } $db_version = $GO_CONFIG->version; install_required_modules(); $_SESSION['completed']['database_structure'] = true; //store the version number for future upgrades $GO_CONFIG->save_setting('version', $GO_CONFIG->version); //Upgrade modules $GO_MODULES->get_modules(); while($GO_MODULES->next_record()) { $module_info = $GO_MODULES->get_module_info($GO_MODULES->f('id')); if($module_info) { $installed_version = intval(str_replace('.', '', $GO_MODULES->f('version'))); $new_version = intval(str_replace('.', '',$module_info['version'])); if($installed_version < $new_version) { $update_file = $GO_CONFIG->root_path.'modules/'.$GO_MODULES->f('id').'/sql/'.$GO_MODULES->f('id').'.updates.inc'; if(file_exists($update_file)) { require_once($update_file); for ($cur_ver=$installed_version;$cur_ver<$new_version;$cur_ver++) { if (isset($updates[$cur_ver])) { while($query = array_shift($updates[$cur_ver])) { @$db->query($query); } } } } for ($cur_ver=$installed_version;$cur_ver<$new_version;$cur_ver++) { if (file_exists($GO_CONFIG->root_path.'modules/'.$GO_MODULES->f('id').'/sql/'.$cur_ver.'.inc')) { echo 'Running update script for module \''.$GO_MODULES->f('id').'\' version '.$cur_ver.'...
'; require_once($GO_CONFIG->root_path.'modules/'.$GO_MODULES->f('id').'/sql/'.$cur_ver.'.inc'); } } } $sql = "UPDATE modules SET version='".$module_info['version']."' WHERE id='".$GO_MODULES->f('id')."'"; $db->query($sql); } } } }else { if(!isset($_POST['fresh_install'])) { //delete all existing users $delete=new $go_users_class(); $delete->Halt_On_Error = 'no'; $GO_USERS->get_users(); while($GO_USERS->next_record()) { $delete->delete_user($GO_USERS->f('id')); } $GO_MODULES->get_modules(); $delete_module = new GO_MODULES(); $delete_module->Halt_On_Error = 'no'; while($GO_MODULES->next_record()) { $delete_module->delete_module($GO_MODULES->f('id')); } } //create new empty database //table is empty create the structure $queries = get_sql_queries($GO_CONFIG->root_path."lib/sql/groupoffice.sql"); while ($query = array_shift($queries)) { $db->query($query); } //store the version number for future upgrades $GO_CONFIG->save_setting('version', $GO_CONFIG->version); $db_version = $GO_CONFIG->version; install_required_modules(); $_SESSION['completed']['database_structure'] = true; } } break; case 'userdir': if (!is_writable($_POST['userdir'])) { $feedback = 'The path you entered is not writable.
Please correct this and try again.
'; }elseif($_POST['max_file_size'] > return_bytes(ini_get('upload_max_filesize'))) { $feedback = 'You entered a greater upload size then the PHP configuration allows.
Please correct this and try again.
'; } if (substr($_POST['userdir'], -1) != '/') $_POST['userdir'] = $_POST['userdir'].'/'; $GO_CONFIG->file_storage_path=smart_stripslashes($_POST['userdir']); $GO_CONFIG->create_mode=smart_stripslashes($_POST['create_mode']); $GO_CONFIG->max_file_size=smart_stripslashes($_POST['max_file_size']); if (save_config($GO_CONFIG) && !isset($feedback)) { //check for userdirs $GO_USERS->get_users(); while($GO_USERS->next_record()) { if(!file_exists($GO_CONFIG->file_storage_path.$GO_USERS->f('username'))) { mkdir($GO_CONFIG->file_storage_path.$GO_USERS->f('username')); } } $_SESSION['completed']['userdir'] = true; } break; case 'local_path': if (!is_writable($_POST['local_path'])) { $feedback = 'The path you entered is not writable.
Please correct this and try again.
'; }else { if (substr($_POST['local_path'], -1) != '/') $_POST['local_path'] = $_POST['local_path'].'/'; if (substr($_POST['local_url'], -1) != '/') $_POST['local_url'] = $_POST['local_url'].'/'; $GO_CONFIG->local_path=smart_stripslashes($_POST['local_path']); $GO_CONFIG->local_url=smart_stripslashes($_POST['local_url']); if (save_config($GO_CONFIG)) { $_SESSION['completed']['local_path'] = true; } } break; case 'tmpdir': $tmpdir=smart_stripslashes($_POST['tmpdir']); if (!is_writable($tmpdir)) { $feedback = 'The path you entered is not writable.
Please correct this and try again.
'; }else { if (substr($tmpdir, -1) != '/') $tmpdir = $tmpdir.'/'; $GO_CONFIG->tmpdir=$tmpdir; if (save_config($GO_CONFIG)) { $_SESSION['completed']['tmpdir'] = true; } } break; case 'title': if ($_POST['title'] == '') { $feedback = 'You didn\'t enter a title.'; }elseif(!validate_email($_POST['webmaster_email'])) { $feedback = 'You entered an invalid e-mail address.'; }else { $GO_CONFIG->webmaster_email = smart_stripslashes($_POST['webmaster_email']); $GO_CONFIG->title = smart_stripslashes($_POST['title']); if (save_config($GO_CONFIG)) { $_SESSION['completed']['title'] = true; } } break; case 'url': $host = smart_stripslashes(trim($_POST['host'])); $full_url = smart_stripslashes(trim($_POST['full_url'])); if ($host != '' && $full_url != '') { if ($host != '/') { if (substr($host , -1) != '/') $host = $host.'/'; if (substr($host , 0, 1) != '/') $host = '/'.$host; } if(substr($full_url,-1) != '/') $full_url = $full_url.'/'; $GO_CONFIG->host = $host; $GO_CONFIG->full_url = $full_url; if (save_config($GO_CONFIG)) { $_SESSION['completed']['url'] = true; } }else { $feedback = 'You didn\'t enter both fields.'; } break; case 'theme': $GO_CONFIG->theme = smart_stripslashes($_POST['theme']); $GO_CONFIG->login_screen = smart_stripslashes($_POST['login_screen']); $GO_CONFIG->allow_themes = ($_POST['allow_themes'] == 'true') ? true : false; if (save_config($GO_CONFIG)) { $_SESSION['completed']['theme'] = true; } break; case 'allow_password_change': $GO_CONFIG->allow_password_change = ($_POST['allow_password_change'] == 'true') ? true : false; if (save_config($GO_CONFIG)) { $_SESSION['completed']['allow_password_change'] = true; } break; case 'allow_registration': $GO_CONFIG->allow_registration = ($_POST['allow_registration'] == 'true') ? true : false; if (save_config($GO_CONFIG)) { $_SESSION['completed']['allow_registration'] = true; } break; case 'language': $GO_CONFIG->language = $_POST['language']; if (save_config($GO_CONFIG)) { $_SESSION['completed']['language'] = true; } break; case 'smtp': if($_POST['max_attachment_size'] > return_bytes(ini_get('upload_max_filesize'))) { $feedback = 'You entered a greater upload size then the PHP configuration allows.
Please correct this and try again.
'; } $GO_CONFIG->mailer = $_POST['mailer']; $GO_CONFIG->smtp_port = isset($_POST['smtp_port']) ? smart_stripslashes(trim($_POST['smtp_port'])) : ''; $GO_CONFIG->smtp_server= isset($_POST['smtp_server']) ? smart_stripslashes(trim($_POST['smtp_server'])) : ''; $GO_CONFIG->max_attachment_size= smart_stripslashes(trim($_POST['max_attachment_size'])); $GO_CONFIG->email_connectstring_options = smart_stripslashes(trim($_POST['email_connectstring_options'])); if (save_config($GO_CONFIG) && !isset($feedback)) { $_SESSION['completed']['smtp'] = true; } break; case 'send_info': if ($_REQUEST['info'] != 'no') { $body = "Group-Office title: ".$GO_CONFIG->title."\r\n"; $body = "Group-Office version: ".$GO_CONFIG->version."\r\n"; $body .= "Usage: ".$_REQUEST['info']."\r\n"; $body .= "Users: ".$_REQUEST['users']."\r\n"; $body .= "Host: ".$GO_CONFIG->full_url."\r\n"; $body .= "Webmaster: ".$GO_CONFIG->webmaster_email."\r\n"; if ($_REQUEST['email'] != '') { $body .= "Contact about Group-Office Professional at: ".$_REQUEST['email']."\r\n"; $body .= "Name: ".$_REQUEST['name']."\r\n"; } sendmail('notify@intermesh.nl', $GO_CONFIG->webmaster_email, $GO_CONFIG->title, "Group-Office usage information", $body); } $_SESSION['completed']['send_info'] = true; break; case 'new_database': $_SESSION['completed']['new_database'] = true; break; case 'existing_database': $_SESSION['completed']['new_database'] = true; $_SESSION['completed']['create_database'] = true; break; case 'create_database': if($_POST['db_host'] == '' || $_POST['db_user'] == '' || $_POST['db_name'] == '' || $_POST['host_allow'] == '') { $feedback ='You did not fill in all the required fields'; }elseif($_POST['db_pass1'] != $_POST['db_pass2']) { $feedback ='Passwords did not match'; }else { $GO_CONFIG->db_name = ''; $GO_CONFIG->db_pass = ''; $GO_CONFIG->db_user = ''; $GO_CONFIG->db_host = ''; $db = new db(); $db->Halt_On_Error = 'no'; $GO_CONFIG->db_host = smart_stripslashes($_POST['db_host']); $GO_CONFIG->db_name = smart_stripslashes($_POST['db_name']); $GO_CONFIG->db_user = smart_stripslashes($_POST['db_user']); $GO_CONFIG->db_pass = smart_stripslashes($_POST['db_pass1']); if(@$db->connect('mysql', smart_stripslashes($_POST['db_host']), smart_stripslashes($_POST['admin_user']), smart_stripslashes($_POST['admin_pass']))) { $sql = 'CREATE DATABASE `'.$_POST['db_name'].'`;'; if($db->query($sql)) { $sql = "GRANT ALL PRIVILEGES ON ".smart_addslashes($_POST['db_name']).".* TO ". "'".$_POST['db_user']."'@'".smart_addslashes($_POST['host_allow'])."' ". "IDENTIFIED BY '".smart_addslashes($_POST['db_pass1'])."' WITH GRANT OPTION"; if($db->query($sql)) { $db->query("FLUSH PRIVILEGES;"); if (save_config($GO_CONFIG)) { $_SESSION['completed']['create_database'] = true; $_SESSION['completed']['database_connection'] = true; } }else { $feedback ='Failed to create user.
'. 'MySQL Error: '.$db->Errno.' '.$db->Error.'
'; } }else { $feedback ='Failed to create database.
'. 'MySQL Error: '.$db->Errno.' '.$db->Error.'
';; } }else { $feedback ='Failed to connect to database as administrator.
'. 'MySQL Error: '.$db->Errno.' '.$db->Error.'
'; } } break; } }else { unset($_SESSION); } //Store all options in config array during install $_SESSION['completed'] = isset($_SESSION['completed']) ? $_SESSION['completed'] : array(); if(!isset($_SESSION['completed']['test'])) { print_head(); echo ''; require_once($GO_CONFIG->root_path.'install/test.inc'); if(isset($fatal_error)) { echo '

Because of a fatal error in your system setup the installation can\'t continue. Please fix the errors above first.

'; }else { echo '
'; } print_foot(); exit(); } if (!isset($_SESSION['completed']['license'])) { if(file_exists('../LICENSE.GPL')) { $license = '../LICENSE.GPL'; }else { $license = '../LICENSE.PRO'; } print_head(); echo ''; echo 'Do you agree to the terms of the license agreement?

'; echo ''; echo '

'; print_foot(); exit(); } if (!isset($_SESSION['completed']['release_notes'])) { print_head(); echo ''; echo 'Please read the release notes

'; echo ''; echo '

'; print_foot(); exit(); } if(!isset($_SESSION['completed']['new_database'])) { print_head(); echo '

Do you wish to create a new database and user or do you want to use an existing database and user?

'; echo ''; echo '  '; echo '

'; echo ''; print_foot(); exit(); } if(!isset($_SESSION['completed']['create_database'])) { print_head(); if (isset($feedback)) { echo $feedback.'

'; } ?> Enter the administrator username and password and fill in the other fields to create a new database and user for Group-Office.

Host: db_host; ?>
Administrator username:
Administrator password:
 
Database: db_name; ?>
Allow connections from host ('%' for any host):
Username: db_user; ?>
Password:
Confirm password:


'; } ?> Create a database now and fill in the values to connect to your database.
The database user should have permission to perform select-, insert-, update- and delete queries. It must also be able to lock tables.

If you are upgrading then now is the last time to back up your database! Fill in the fields and click at 'Continue' to upgrade your database structure.

$ mysql -u root -p
mysql> CREATE DATABASE groupoffice;
mysql> GRANT ALL PRIVILEGES ON groupoffice.* TO 'groupoffice'@'localhost'
           -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> quit;


Host:
Database:
Username:
Password:

Halt_On_Error = 'no'; if (!@$db->connect($GO_CONFIG->db_name, $GO_CONFIG->db_host, $GO_CONFIG->db_user, $GO_CONFIG->db_pass)) { print_head(); echo 'Can\'t connect to database!'; echo '

Correct this and refresh this page.'; print_foot(); exit(); }else { $settings_exist = false; $db->query("SHOW TABLES"); if ($db->num_rows() > 0) { //structure exists see if the settings table exists while ($db->next_record()) { if ($db->f(0) == 'settings') { $settings_exist = true; break; } } } if ($settings_exist) { $db->query("SELECT value FROM settings WHERE name='version'"); if ($db->next_record()) { $db_version=str_replace('.','', $db->f('value')); require_once($GO_CONFIG->root_path.'lib/updates.inc'); if (!isset($updates[$db_version])) { $db_version = false; } }else { $db_version = false; } print_head(); if (isset($feedback)) { echo $feedback.'

'; } ?> Group-Office has detected a previous installation of Group-Office. Do you wish to keep the existing data and perform an upgrade?
Group-Office was unable to detect your old Group-Office version.'. 'The installer needs your old version number to determine updates that might apply.
'. 'Please enter the version number below if you wish to perform an upgrade.'; } ?>

'; }else { echo ''; } ?>
Version:'; $db_version = isset($db_version) ? $db_version : $GO_CONFIG->db_version; echo '
  
'. ''. ''; echo 'Group-Office succesfully connected to your database!
'. 'Click on \'Continue\' to create the tables for the Group-Office '. 'base system. This can take some time. Don\'t interupt this process.

'; echo '
'; print_foot(); exit(); } } } //the title of Group-Office if (!isset($_SESSION['completed']['title'])) { print_head(); if (isset($feedback)) { echo $feedback.'

'; } ?> Enter a title for your Group-Office and webmaster email address for your application.
The email address will receive information about new registered users.

title; $webmaster_email = isset($_POST['webmaster_email']) ? $_POST['webmaster_email'] : $GO_CONFIG->webmaster_email; ?>
Title:
Webmaster E-mail:


'; } ?> Enter a relative and an absolute url.

Example:
Relative URL: /groupoffice/
Absolute URL: http://www.intermesh.nl/groupoffice/


Relative URL: host; ?>
Absolute URL: full_url; ?>


'; } ?> Group-Office needs a place to store user data. Create a writable path for this purpose now and enter it in the box below.
The path should be have 0777 permissions or should be owned by the webserver user. You probably need to be root to do the last.
Also enter a maximum number of bytes to upload and a valid octal value for the file permissions.

$ su
$ mkdir /home/groupoffice
$ chown apache:apache /home/groupoffice


file_storage_path; ?>
User home directory:
Maximum upload size (Current PHP configuration allows bytes):
Create mode:
create_mode); if (strlen($create_mode_string) == 3) { $create_mode_string = '0'.$create_mode_string; } }else { $create_mode_string = smart_stripslashes($_POST['create_mode']); } ?>


'; } if($GO_CONFIG->local_path == '') { $GO_CONFIG->local_path = $GO_CONFIG->root_path.'local/'; $GO_CONFIG->local_url = $GO_CONFIG->host.'local/'; } ?> Group-Office needs a place to store local data. Create a writable path for this purpose now and enter it in the box below.
The path should be have 0777 permissions or should be owned by the webserver user. You probably need to be root to do the last.
This path also needs to be accessible through a webbrowser so please provide the URL to access this path too.

$ su
$ mkdir local_path; ?>
$ chown apache:apache local_path; ?>


local_path; ?> local_url; ?>
Local path:
Local URL:


'; } ?> Group-Office needs a place to store temporarily data such as session data or file uploads. Create a writable path for this purpose now and enter it in the box below.
The /tmp directory is a good option.

tmpdir; ?>
Temporarily files directory:


'; } ?> Select the default theme for Group-Office and whether users are allowed to change the theme or not.

Default theme: get_themes(); $dropbox = new dropbox(); $dropbox->add_arrays($themes, $themes); $dropbox->print_dropbox("theme", $GO_CONFIG->theme); ?>
Login screen style: get_login_screens(); $dropbox = new dropbox(); $dropbox->add_arrays($login_screens, $login_screens); $dropbox->print_dropbox("login_screen", $GO_CONFIG->login_screen); ?>
Allow: allow_themes; $allow_themes = $allow_themes ? 'true' : 'false'; $dropbox = new dropbox(); $dropbox->add_value('true', 'Yes'); $dropbox->add_value('false', 'No'); $dropbox->print_dropbox('allow_themes', $allow_themes); ?>


'; } ?> Do you want to allow users to change their password?

Allow: allow_password_change; $allow_password_change = $allow_password_change ? 'true' : 'false'; $dropbox = new dropbox(); $dropbox->add_value('true', 'Yes'); $dropbox->add_value('false', 'No'); $dropbox->print_dropbox('allow_password_change', $allow_password_change); ?>


'; } ?> Do you want to allow anyone to register as a user?

Allow: allow_registration; $allow_registration = $allow_registration ? 'true' : 'false'; $dropbox = new dropbox(); $dropbox->add_value('true', 'Yes'); $dropbox->add_value('false', 'No'); $dropbox->print_dropbox('allow_registration', $allow_registration); ?>


'; } ?> Select your language. Group-Office will use default regional settings based on this setting. If your language is not in the list please select the closest match.
It would be nice if you added your missing language to the language/languages.inc file and send it to info@intermesh.nl!

Language: get_languages(); while($language = array_shift($languages)) { $dropbox->add_value($language['code'], $language['description']); } $dropbox->print_dropbox("language", $GO_CONFIG->language); ?>


'; } ?> Group-Office has the ability to send and receive e-mail. Please configure your SMTP server.
Leave this blank use the php mail() function but then you won't be able use CC and BCC headers!

Mailer: add_value('mail', 'PHP Mail() Function (Not recommended)'); $dropbox->add_value('sendmail', 'Use local sendmail'); $dropbox->add_value('qmail', 'Use local Qmail'); $dropbox->add_value('smtp', 'Use remote SMTP'); $dropbox->print_dropbox('mailer', $GO_CONFIG->mailer, 'onchange="javascript:change_mailer()"'); ?>
SMTP server:
SMTP port:
Maximum size of attachments:
Current PHP configuration allows bytes

Some servers require some connection string options when connecting to an IMAP or POP-3 server using the PHP IMAP extension. For example most Redhat systems require '/notls' or '/novalidate-cert'. If you are not sure then leave this field blank.

Connection options:

get_user(1)) { print_head(); if (isset($feedback)) { echo $feedback.'

'; } ?> Group-Office needs an administrator account. The username will be 'administrator'. Please create a password for 'administrator'.

Username:
Password:
Confirm password:
E-mail: webmaster_email;?>


'; } ?> Intermesh would like to know that you are using Group-Office to find out how many people are using Group-Office. Please select an Option. (If you already sent information before, please select 'No').

add_option('no', ""); echo "No, Don't send information to Intermesh
"; $radio_list->add_option('business', ""); echo "Yes, tell Intermesh that I'm using Group-Office for business purpose.
"; $radio_list->add_option('personal', ""); echo "Yes, tell Intermesh that I'm using Group-Office for personal use or I'm just testing."; ?>
How many users do you have in Group-Office? add_value('< 5', '< 5'); $dropbox->add_value('20-30', '20-30'); $dropbox->add_value('30-50', '30-50'); $dropbox->add_value('50-75', '50-75'); $dropbox->add_value('75-100', '75-100'); $dropbox->add_value('100-150', '100-150'); $dropbox->add_value('150-200', '150-200'); $dropbox->add_value('300-400', '300-400'); $dropbox->add_value('> 400', '> 400'); $dropbox->print_dropbox('users', $users); ?>
If you would like to receive information about Group-Office Professional please fill in a name and an e-mail address where Intermesh may contact you:
webmaster_email; $name = isset($name)? $name : ''; ?>
E-mail:
Name:

Installation complete!

Please make sure '' is not writable anymore now and remove the install directory.

$ chmod 644
$ rm -Rf root_path.'install/'; ?>


If you don't have shell access then you should download Group-Office.php, delete Group-Office.php from the server and upload it back to the server. This way you change the ownership to your account.

When you are done log in to Group-Office with the administrator account.

You can also configure external authentication servers such as an IMAP, POP-3 or LDAP server. Take a look at 'auth_sources.dist' for more information about this.

For troubleshooting please consult the FAQ included with the package. If that doesn't help post on the forums.
Developers should take a look at modules/example/index.php