/** * writes an INCOMPLETE config.ini file (containing only DB access variables) * * WARN: depending on your HTTP server installation, the file may be created * by user 'apache', so be sure that this user has write access * to the CoDev install directory * * @return NULL if Success, ErrorString if Failed */ function createConfigFile($db_mantis_host = 'localhost', $db_mantis_user = '******', $db_mantis_pass = '', $db_mantis_database = 'bugtracker', $proxy_host = NULL, $proxy_port = NULL) { Constants::$db_mantis_host = $db_mantis_host; Constants::$db_mantis_user = $db_mantis_user; Constants::$db_mantis_pass = $db_mantis_pass; Constants::$db_mantis_database = $db_mantis_database; if (!is_null($proxy_host) && !is_null($proxy_port)) { Constants::$proxy = $proxy_host . ':' . $proxy_port; } // this writes an INCOMPLETE config.ini file (containing only DB access variables) $retCode = Constants::writeConfigFile(); if (!$retCode) { throw new Exception("ERROR: Could not create file " . Constants::$config_file); } }
/** * get config from ini file */ public static function parseConfigFile() { // TODO workaround $file = self::$config_file; if (!file_exists($file)) { if (!self::$quiet) { self::$logger->error("ERROR: parseConfigFile() file " . $file . " NOT found !"); echo "ERROR: parseConfigFile() file " . $file . " NOT found !"; } return FALSE; } $ini_array = parse_ini_file($file, true); #print_r($ini_array); $general = $ini_array['general']; self::$codevInstall_timestamp = $general['codevInstall_timestamp']; self::$codevtt_logfile = $general['codevtt_logfile']; self::$codevOutputDir = $general['codevtt_output_dir']; self::$homepage_title = $general['homepage_title']; if (array_key_exists('logo_image', $general)) { self::$logoImage = $general['logo_image']; } self::$codevURL = $general['codevtt_url']; self::$codevRootDir = $general['codevtt_dir']; self::$mantisPath = $general['mantis_dir']; self::$mantisURL = $general['mantis_url']; $database = $ini_array['database']; self::$db_mantis_host = $database['db_mantis_host']; self::$db_mantis_database = $database['db_mantis_database']; self::$db_mantis_user = $database['db_mantis_user']; self::$db_mantis_pass = $database['db_mantis_pass']; $mantis = $ini_array['mantis']; self::$statusNames = Tools::doubleExplode(':', ',', $mantis['status_enum_string']); self::$priority_names = Tools::doubleExplode(':', ',', $mantis['priority_enum_string']); self::$resolution_names = Tools::doubleExplode(':', ',', $mantis['resolution_enum_string']); self::$severity_names = Tools::doubleExplode(':', ',', $mantis['severity_enum_string']); self::$bug_resolved_status_threshold = $mantis['bug_resolved_status_threshold']; self::$status_enum_workflow = json_decode($mantis['status_enum_workflow'], true); // jsonStr to array $status = $ini_array['status']; self::$status_new = $status['status_new']; self::$status_feedback = $status['status_feedback']; #self::$status_acknowledged = $status['status_acknowledged']; self::$status_open = $status['status_open']; self::$status_closed = $status['status_closed']; $resolution = $ini_array['resolution']; self::$resolution_fixed = $resolution['resolution_fixed']; self::$resolution_reopened = $resolution['resolution_reopened']; $relationships = $ini_array['relationships']; self::$relationship_constrained_by = $relationships['relationship_constrained_by']; self::$relationship_constrains = $relationships['relationship_constrains']; define('BUG_CUSTOM_RELATIONSHIP_CONSTRAINED_BY', $relationships['relationship_constrained_by']); define('BUG_CUSTOM_RELATIONSHIP_CONSTRAINS', $relationships['relationship_constrains']); $perf = $ini_array['perf']; if ($perf != null && array_key_exists('max_tooltips_per_page', $perf)) { self::$maxTooltipsPerPage = $perf['max_tooltips_per_page']; } $doodles = $ini_array['doodles']; if (is_array($doodles)) { $today = date("md"); self::$doodles = array(); // remove default doodles foreach ($doodles as $key => $value) { self::$doodles[$key] = $value; if (substr($key, 0, 11) === 'logo_image_' && (substr($key, 11, 4) <= $today && substr($key, 16, 4) >= $today) && file_exists(self::$codevRootDir . DIRECTORY_SEPARATOR . $value)) { self::$logoImage = $value; } } } $timesheets = $ini_array['timesheets']; if (null != $timesheets && array_key_exists('task_duration_list', $timesheets)) { self::$taskDurationList = Tools::doubleExplode(':', ',', $timesheets['task_duration_list']); } $internet = $ini_array['internet']; if (is_array($internet)) { if (array_key_exists('proxy', $internet)) { self::$proxy = $internet['proxy']; } if (array_key_exists('check_latest_version', $internet)) { self::$isCheckLatestVersion = $internet['check_latest_version']; } } $dashboards = $ini_array['dashboardDefaultPlugins']; if (is_array($dashboards)) { foreach ($dashboards as $domain => $plugins) { self::$dashboardDefaultPlugins[$domain] = explode(',', $plugins); } } $emailSettings = $ini_array['email']; if (is_array($emailSettings)) { foreach ($emailSettings as $key => $val) { self::$emailSettings[$key] = $val; } } // ----- /* FIXME WORKAROUND: SQL procedures still use codev_config_table.bug_resolved_status_threshold ! */ $desc = "bug resolved threshold as defined in Mantis (g_bug_resolved_status_threshold)"; self::$logger->warn("WORKAROUND update codev_config_table.bug_resolved_status_threshold = " . self::$bug_resolved_status_threshold); Config::getInstance()->setValue(Config::id_bugResolvedStatusThreshold, self::$bug_resolved_status_threshold, Config::configType_int, $desc); }