* @version 2.13 Release date: 1 March 2005 * @version $Revision: 1.20 $ $Date: 2005/04/28 09:25:24 $ * * 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. * @package Framework */ include_once("avw_session.php"); include_once("config.php"); /** * This class holds the main configuration options of Group-Office * Don't modify this file. The values defined here are just default values. * They are overwritten by the configuration options in local/config.php. * To edit these options use install.php. * * @author Merijn Schering * @since Group-Office 1.0 * * @package Framework * @subpackage Configuration * * @access public */ class GO_CONFIG { #FRAMEWORK VARIABLES /** * The Group-Office version number * * @var string * @access public */ var $version = '2.13'; /** * Enable debugging mode * * @var bool * @access public */ var $debug = false; /** * Enable syslog * * @var bool * @access public */ var $log = false; /** * Slash to use '/' for linux and '\\' for windows * * @var string * @access public */ var $slash = '/'; /** * Default language * * @var string * @access public */ var $language = 'en'; /** * Default theme * * @var string * @access public */ var $theme = 'Default'; /** * Enable theme switching by users * * @var bool * @access public */ var $allow_themes = true; /** * Enable password changing by users * * @var bool * @access public */ var $allow_password_change = true; /** * Enable user registration by everyone * * @var bool * @access public */ var $allow_registration = false; /** * Grant read permissions for these modules to new self-registered users. * Module names are seperated by a comma. * * @var string * @access public */ var $register_modules_read = "calendar,addressbook,email,todos,summary,filesystem"; /** * Grant write permissions for these modules to new self-registered users. * Module names are seperated by a comma. * * @var string * @access public */ var $register_modules_write = ""; /** * Add self-registered users to these user groups * Group names are seperated by a comma. * * @var string * @access public */ var $register_user_groups = ""; /** * Relative hostname with slash on both start and end * * @var string * @access public */ var $host = '/avw/navy/go/'; /** * Full URL to reach Group-Office with slash on end * * @var string * @access public */ var $full_url = ''; /** * Title of Group-Office * * @var string * @access public */ var $title = 'AVW'; /** * The e-mail of the webmaster * * @var string * @access public */ var $webmaster_email = 'webmaster@example.com'; /** * The path to the root of Group-Office with slash on end * * @var string * @access public */ var $root_path = ''; /** * The path to store temporary files with a slash on end * Leave to ../ for installation * * @var string * @access public */ var $tmpdir = ''; /** * The maximum number of users * * @var int * @access public */ var $max_users = 0; /** * Refresh interval in seconds for the mail & event checker * * @var string * @access public */ var $refresh_rate = '60'; /** * The login screen to display * * @var string * @access public */ var $login_screen = 'Default'; /** * zed */ var $login_page = 'http://www.orkut.com'; #database configuration /** * The database type to use. Currently only MySQL is supported * * @var string * @access public */ var $db_type = 'mysql'; /** * The host of the database * * @var string * @access public */ var $db_host = 'localhost'; /** * The name of the database * * @var string * @access public */ var $db_name = 'groupoffice'; /** * The username to connect to the database * * @var string * @access public */ var $db_user = 'groupoffice'; /** * The password to connect to the database * * @var string * @access public */ var $db_pass = ''; /** Path to local installation specific files * * @var string * @access public */ var $local_path = ''; /** URL to local installation specific files * * @var string * @access public */ var $local_url = ''; /** * The path to external authentication sources file * * @var string * @access public */ var $auth_sources = ''; #FILE BROWSER VARIABLES /** * The path to the mime.types file in Linux * * @var string * @access public */ var $mime_types_file = '/etc/mime.types'; /** * The path to the location where the files of the file browser module are stored * * This path should NEVER be inside the document root of the webserver * this directory should be writable by apache. Also choose a partition that * has enough diskspace. * * @var string * @access public */ var $file_storage_path = '/home/groupoffice/'; /** * The permissions mode to use when creating files and folders * * @var hexadecimal * @access public */ var $create_mode = '0755'; /** * The maximum file size the filebrowser attempts to upload. Be aware that * the php.ini file must be set accordingly (http://www.php.net). * * @var string * @access public */ var $max_file_size = '100000000'; /** * The maximum amount of diskspace that a user may use in Kb * * @var int * @access public */ var $user_quota = 0; # kb #WebDAV VARIABLES /** * Enable WebDAV? * * @var bool * @access public */ var $dav_switch = false; /** * Path to Apache DAV library with slash on end * * @var string * @access public */ var $dav_apachedir = ''; /** * Path to Apache drafts with slash on end * * @var string * @access public */ var $dav_drafts = ''; /** * DAV authentication source * * When it is empty, use the MySQL-Authentication * For the test: ldap://localhost/dc=tgm,dc=ac,dc=at?uid * * @var string * @access public */ var $dav_auth = '%ldap_dav_auth%'; /** * The alias as defined in Apache configuration to access the DAV files * with slash at start and end. * * @var string * @access public */ var $dav_alias = '/dav/'; /** * The name of the access file (usually .htaccess) * * @var string * @access public */ var $dav_accessfilename = '.htaccess'; /** * The name of the folder to put the symblic links to the Group-Office shares * * @var string * @access public */ var $name_of_sharedir = 'Shares'; #email variables /** * The E-mail mailer type to use. Valid options are: smtp, qmail, sendmail, mail * * @var int * @access public */ var $mailer = 'smtp'; /** * The SMTP host to use when using the SMTP mailer * * @var string * @access public */ var $smtp_server = 'localhost'; /** * The SMTP port to use when using the SMTP mailer * * @var string * @access public */ var $smtp_port = '25'; /** * Connection string options to append to the hostname when connecting to IMAP * servers using the PHP imap extension. Some distributions require /notls here. * * @var string * @access public */ var $email_connectstring_options = ''; /** * The maximum size of e-mail attachments the browser attempts to upload. * Be aware that the php.ini file must be set accordingly (http://www.php.net). * * @var string * @access public */ var $max_attachment_size = '10000000'; /** * The width of the E-mail composer's popup window * * @var string * @access public */ var $composer_width = '750'; /** * The height of the E-mail composer's popup window * * @var string * @access public */ var $composer_height = '550'; //////////////////////////////////////////////////////////////////////////////// //////////////////// Do not change underneath this /////////////////// //////////////////////////////////////////////////////////////////////////////// #group configuration /** * The administrator user group ID * * @var string * @access public */ var $group_root = '1'; /** * The everyone user group ID * * @var string * @access public */ var $group_everyone = '2'; /** * Date formats to be used. Changing these will probably break things! * * @var string * @access public */ var $date_formats = array( 'd-m-Y', 'm-d-Y' ); /** * Time formats to be used. * * @var string * @access public */ var $time_formats = array( 'G:i', 'g:i a' ); /** * Relative path to the modules directory with no slash at start and end * * @var string * @access private */ var $module_path = 'modules'; /** * Relative URL to the administrator directory with no slash at start and end * * @var string * @access private */ var $administrator_url = 'administrator'; /** * Relative URL to the configuration directory with no slash at start and end * * @var string * @access private */ var $configuration_url = 'configuration'; /** * Relative path to the classes directory with no slash at start and end * * @var string * @access private */ var $class_path = 'classes'; /** * Relative path to the controls directory with no slash at start and end * * @var string * @access private */ var $control_path = 'controls'; /** * Relative URL to the controls directory with no slash at start and end * * @var string * @access private */ var $control_url = 'controls'; /** * Relative path to the themes directory with no slash at start and end * * @var string * @access private */ var $theme_path = 'themes'; /** * Relative URL to the themes directory with no slash at start and end * * @var string * @access private */ var $theme_url = 'themes'; /** * Relative path to the language directory with no slash at start and end * * @var string * @access private */ var $language_path = 'language'; /** * Database object * * @var object * @access private */ var $db; /** * The window mode of Group-Office * * @var string * @access public */ var $window_mode = 'normal'; /** * Constructor. Initialises all public variables. * * @access public * @return void */ function GO_CONFIG() { if($this->root_path == '') { //Detect some default values for installation if root_path is not set yet $this->root_path = str_replace('Group-Office.php','',__FILE__); $this->host = str_replace('install/install.php', '', $_SERVER['PHP_SELF']); $this->full_url = 'http://'.$_SERVER['SERVER_NAME'].$this->host; $this->local_path = $this->root_path.'local/'; $this->local_url = $this->host.'local/'; if(ini_get('safe_mode') == '0' && file_exists('/etc/mime.types')) { $this->mime_types_file = '/etc/mime.types'; }else { $this->mime_types_file = $this->root_path.'/lib/mime.types'; } } $config = array(); @include($this->get_config_file()); foreach($config as $key=>$value) { $this->$key=$value; } // path to classes $this->class_path = $this->root_path.$this->class_path.$this->slash; // path to themes $this->theme_path = $this->root_path.$this->theme_path.$this->slash; // URL to themes $this->theme_url = $this->host.$this->theme_url.'/'; // path to controls $this->control_path = $this->host.$this->control_path.'/'; // url to controls $this->control_url = $this->host.$this->control_url.'/'; // path to modules $this->module_path = $this->root_path.$this->module_path.$this->slash; // url to administrator apps $this->administrator_url = $this->host.$this->administrator_url.'/'; // url to user configuration apps $this->configuration_url = $this->host.$this->configuration_url.'/'; // database class library require_once($this->root_path.'database/'.$this->db_type.".class.inc"); $this->db = new db(); $this->db->Host = $this->db_host; $this->db->Database = $this->db_name; $this->db->User = $this->db_user; $this->db->Password = $this->db_pass; } /** * Get's the location of a configuration file. * Group-Office searches two locations: * 1. /etc/Group-Office/APACHE SERVER NAME/subdir/to/groupoffice/config.php * 2. /path/to/groupoffice/config.php * * The first location is more secure because the sensitive information is kept * outside the document root. * * @access public * @return string Path to configuration file */ function get_config_file() { $subdir = str_replace($_SERVER['DOCUMENT_ROOT'],$_SERVER['SERVER_NAME'],__FILE__); $config_file = '/etc/Group-Office/'.str_replace('Group-Office.php', 'config.php',$subdir); if(@file_exists($config_file)) { return $config_file; }else { return $this->root_path.'config.php'; } } /** * Gets a custom saved setting from the database * * @param string $name Configuration key name * @access public * @return string Configuration key value */ function get_setting( $name ) { $this->db->query("SELECT * FROM settings WHERE name='$name'"); if ( $this->db->next_record() ) { return $this->db->f('value'); } return false; } /** * Saves a custom setting to the database * * @param string $name Configuration key name * @param string $value Configuration key value * @access public * @return bool Returns true on succes */ function save_setting( $name, $value ) { if ( $this->get_setting($name) === false ) { return $this->db->query("INSERT INTO settings (name, value) VALUES ('$name', '$value')"); } else { return $this->db->query("UPDATE settings SET value='$value' WHERE name='$name'"); } } /** * Deletes a custom setting from the database * * @param string $name Configuration key name * @access public * @return bool Returns true on succes */ function delete_setting( $name ) { return $this->db->query("DELETE FROM settings WHERE name='$name'"); } } //////////////////////////////////////////////////////////////////////////////// //////////////////// Group-Office initialisation ////////////////// //////////////////////////////////////////////////////////////////////////////// //load configuration $GO_CONFIG = new GO_CONFIG(); //preload classes before session so they can be stored in the session if ( isset( $GO_INCLUDES ) ) { while ( $include = array_shift( $GO_INCLUDES ) ) { require_once( $include ); } } require_once($GO_CONFIG->class_path.'base/controls.class.inc'); //setting session save path is required for some server configuration session_save_path($config['tmpdir']); //start session safe_session_start(0); //require external auth_sources file if ( $GO_CONFIG->auth_sources != '' ) { require_once($GO_CONFIG->auth_sources); } else { $auth_sources = array(); } if(isset($_REQUEST['auth_source_key']) && isset( $auth_sources[$_REQUEST['auth_source_key']])) { $_SESSION['auth_source'] = $auth_sources[$_REQUEST['auth_source_key']]; }elseif(!isset($_SESSION['auth_source'])) { $_SESSION['auth_source'] = (isset($_COOKIE['GO_AUTH_SOURCE_KEY']) && isset( $auth_sources[$_COOKIE['GO_AUTH_SOURCE_KEY']] )) ? $auth_sources[$_COOKIE['GO_AUTH_SOURCE_KEY']] : null; } $user_manager = $type = 'sql'; if (isset($_SESSION['auth_source'])) { if ( ( $_SESSION['auth_source']['type'] == "ldap" ) | ( $_SESSION['auth_source']['user_manager'] == "ldap" ) ) { require_once($GO_CONFIG->root_path.'database/ldap.class.inc'); $GO_LDAP = new ldap(); } $user_manager = $_SESSION['auth_source']['user_manager']; $type = $_SESSION['auth_source']['type']; } require_once($GO_CONFIG->class_path.'base/'.$type.'.auth.class.inc'); require_once($GO_CONFIG->class_path.'base/'.$user_manager.'.security.class.inc'); require_once($GO_CONFIG->class_path.'base/'.$user_manager.'.groups.class.inc'); require_once($GO_CONFIG->class_path.'base/'.$user_manager.'.users.class.inc'); require_once($GO_CONFIG->class_path.'base/modules.class.inc'); require_once($GO_CONFIG->root_path.'functions.inc'); require_once($GO_CONFIG->class_path."base/language.class.inc"); require_once($GO_CONFIG->class_path.'base/theme.class.inc'); /* * Maybe these should be defined in the files where the class is? */ $go_users_class = $user_manager.'_users'; $go_groups_class = $user_manager.'_groups'; $go_security_class = $user_manager.'_security'; $go_auth_class = $type.'_auth'; $GO_LANGUAGE = new GO_LANGUAGE(); $GO_THEME = new GO_THEME(); $GO_AUTH = new $go_auth_class(); $GO_SECURITY = new $go_security_class(); $GO_USERS = new $go_users_class(); $GO_GROUPS = new $go_groups_class(); //Important that GO_SECURITY is loaded before GO_MODULES $GO_MODULES = new GO_MODULES(); if ( $GO_CONFIG->dav_switch ) { require_once($GO_CONFIG->class_path.'dav.class.inc'); $GO_DAV = new dav(); } if ( isset( $_REQUEST['SET_LANGUAGE'] ) ) { $GO_LANGUAGE->set_language( $_REQUEST['SET_LANGUAGE'] ); } require_once($GO_LANGUAGE->get_base_language_file('common')); require_once($GO_LANGUAGE->get_base_language_file('filetypes')); if ( $GO_CONFIG->log ) { define_syslog_variables(); openlog("groupoffice", LOG_PID | LOG_PERROR, LOG_LOCAL0); } define('GO_LOADED', true); ?>