} } createCustomFields($isCreateExtIdField); echo "DEBUG 6/16 create ExternalTasks Project<br/>"; $extproj_id = createExternalTasksProject(T_("CodevTT_ExternalTasks"), T_("CodevTT ExternalTasks Project")); $adminLeader = UserCache::getInstance()->getUser($adminTeamLeaderId); echo "DEBUG 7/16 createAdminTeam with leader: " . $adminLeader->getName() . "<br/>"; createAdminTeam($adminTeamName, $adminTeamLeaderId); echo "DEBUG 8/16 update status list<br/>"; Constants::$status_new = $status_new; Constants::$status_feedback = $status_feedback; Constants::$status_open = $status_open; Constants::$status_closed = $status_closed; // Set path for .CSV reports (Excel) echo "DEBUG 9/16 add CodevTT output directory<br/>"; Constants::$codevOutputDir = $codevOutputDir; Constants::$codevtt_logfile = $codevOutputDir . '/logs/codevtt.log'; $retCode = Constants::writeConfigFile(); if (FALSE == $retCode) { echo "<span class='error_font'>ERROR: could not update config file: " . Constants::$config_file . "</span><br/>"; $installStepFailed = TRUE; exit; } echo "DEBUG 10/16 create Logger configuration file<br/>"; $errStr = createLog4phpFile(); if (NULL != $errStr) { echo "<span class='error_font'>" . $errStr . "</span><br/>"; $installStepFailed = TRUE; exit; } echo "DEBUG 11/16 create output directories (logs, reports, cache)<br/>";
/** * 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); }