parseConfig($file, 'inicommented'); $out = $root->toArray(); $rs = &$out['root']; global $_IC_VALID_VALUE, $_IC_VALID_BOOL; foreach ($_IC_VALID_VALUE as $item) { if (array_key_exists($item, $rs)) { define($item, $rs[$item]); } } // Boolean options are slightly special - if they're set to any of // 'false', '0', or 'no' (all case-insentitive) then the value will // be a boolean false, otherwise if there is anything set it'll // be true. foreach ($_IC_VALID_BOOL as $item) { if (array_key_exists($item, $rs)) { $val = $rs[$item]; if (!$val) { define($item, false); } else if (strtolower($val) == 'false' || strtolower($val) == 'no' || $val == '0') { define($item, false); } else { define($item, true); } } } // Special handling for some config options if ($val = @$rs['INCLUDE_PATH']) { ini_set('include_path', $val); } if ($val = @$rs['SESSION_SAVE_PATH']) { ini_set('session.save_path', $val); } // Database global $DBParams; $DBParams['dbtype'] = @$rs['DATABASE_TYPE']; $DBParams['prefix'] = @$rs['DATABASE_PREFIX']; $DBParams['dsn'] = @$rs['DATABASE_DSN']; $DBParams['db_session_table'] = @$rs['DATABASE_SESSION_TABLE']; $DBParams['dba_handler'] = @$rs['DATABASE_DBA_HANDLER']; $DBParams['directory'] = @$rs['DATABASE_DIRECTORY']; $DBParams['timeout'] = @$rs['DATABASE_TIMEOUT']; if ($DBParams['dbtype'] == 'SQL' && $DBParams['db_session_table']) { define('USE_DB_SESSION', true); } // Expiry stuff global $ExpiryParams; $ExpiryParams['major'] = array( 'max_age' => @$rs['MAJOR_MAX_AGE'], 'min_age' => @$rs['MAJOR_MIN_AGE'], 'min_keep' => @$rs['MAJOR_MIN_KEEP'], 'keep' => @$rs['MAJOR_KEEP'], 'max_keep' => @$rs['MAJOR_MAX_KEEP'] ); $ExpiryParams['minor'] = array( 'max_age' => @$rs['MINOR_MAX_AGE'], 'min_age' => @$rs['MINOR_MIN_AGE'], 'min_keep' => @$rs['MINOR_MIN_KEEP'], 'keep' => @$rs['MINOR_KEEP'], 'max_keep' => @$rs['MINOR_MAX_KEEP'] ); $ExpiryParams['author'] = array( 'max_age' => @$rs['AUTHOR_MAX_AGE'], 'min_age' => @$rs['AUTHOR_MIN_AGE'], 'min_keep' => @$rs['AUTHOR_MIN_KEEP'], 'keep' => @$rs['AUTHOR_KEEP'], 'max_keep' => @$rs['AUTHOR_MAX_KEEP'] ); // User authentication global $USER_AUTH_ORDER; $USER_AUTH_ORDER = preg_split('/\s*:\s*/', @$rs['USER_AUTH_ORDER']); // LDAP bind options global $LDAP_SET_OPTION; $optlist = preg_split('/\s*:\s*/', @$rs['LDAP_SET_OPTION']); foreach ($optlist as $opt) { $bits = preg_split('/\s*=\s*/', $opt, 2); if (count($bits) == 2) { $LDAP_SET_OPTION[$bits[0]] = $bits[1]; } else { // Possibly throw some sort of error? } } // Now it's the external DB authentication stuff's turn global $DBAuthParams; $DBAP_MAP = array('DBAUTH_AUTH_DSN' => 'auth_dsn', 'DBAUTH_AUTH_CHECK' => 'auth_check', 'DBAUTH_AUTH_USER_EXISTS' => 'auth_user_exists', 'DBAUTH_AUTH_CRYPT_METHOD' => 'auth_crypt_method', 'DBAUTH_AUTH_UPDATE' => 'auth_update', 'DBAUTH_AUTH_CREATE' => 'auth_create', 'DBAUTH_PREF_SELECT' => 'pref_select', 'DBAUTH_PREF_UPDATE' => 'pref_update', 'DBAUTH_IS_MEMBER' => 'is_member', 'DBAUTH_GROUP_MEMBERS' => 'group_members', 'DBAUTH_USER_GROUPS' => 'user_groups' ); foreach ($DBAP_MAP as $rskey => $apkey) { $val = @$rs[$rskey]; if ($val) { $DBAuthParams[$apkey] = $val; } } // Default Wiki pages global $GenericPages; $GenericPages = preg_split('/\s*:\s*/', @$rs['DEFAULT_WIKI_PAGES']); // Wiki name regexp. Should be a define(), but too many places want // to use it as a variable for me to be bothered changing them all. // Major TODO item, there. global $WikiNameRegexp; $WikiNameRegexp = @$rs['WIKI_NAME_REGEXP']; // Another "too-tricky" redefine global $KeywordLinkRegexp; $keywords = preg_split('/\s*:\s*/', @$rs['KEYWORDS']); $KeywordLinkRegexp = '(?<=' . implode('|^', $keywords) . ')[[:upper:]].*$'; global $DisabledActions; $DisabledActions = preg_split('/\s*:\s*/', @$rs['DISABLED_ACTIONS']); }