'nagiosql_install']); /* POST parameters */ $arrLocale = array('zh_CN', 'de_DE', 'da_DK', 'en_GB', 'fr_FR', 'it_IT', 'ja_JP', 'nl_NL', 'pl_PL', 'pt_BR', 'ru_RU', 'es_ES'); $chkLocale = filter_input(INPUT_POST, 'selLanguage'); if (!in_array($chkLocale, $arrLocale, true)) { $chkLocale = 'no'; } /* Language settings */ if (extension_loaded('gettext')) { if ($chkLocale === 'no') { if (0 === strpos(filter_input(INPUT_SERVER, 'HTTP_ACCEPT_LANGUAGE'), 'de')) { $chkLocale = 'de_DE'; } else { $chkLocale = 'en_GB'; } } putenv('LC_ALL=' . $chkLocale . '.' . $preEncode); putenv('LANG=' . $chkLocale . '.' . $preEncode); setlocale(LC_ALL, $chkLocale . '.' . $preEncode); bindtextdomain($chkLocale, $preLocale); bind_textdomain_codeset($chkLocale, $preEncode); textdomain($chkLocale); $arrTemplate['NAGIOS_FAQ'] = $myInstClass->translate('Online Documentation'); /* Language selection field */ $arrTemplate['LANGUAGE'] = $myInstClass->translate('Language'); foreach ($myInstClass->getLangData() as $key => $elem) { /** @noinspection HtmlUnknownAttribute */ $strLangOpt .= "\n"; if ($key !== $chkLocale) { $strLangOpt = str_replace(' {sel}', '', $strLangOpt); } else { $strLangOpt = str_replace(' {sel}', ' selected', $strLangOpt); } } $arrTemplate['LANG_OPTION'] = $strLangOpt; } else { $intError = 1; $strErrorMessage .= 'Installation cannot continue, please make sure you have the php-gettext extension loaded!'; } /* Checking current installation /* /* Does the settings file exist? */ if (file_exists($filConfig) && is_readable($filConfig)) { $preSettings = parse_ini_file($filConfig, true); /* Are there any database connection data? */ if (isset($preSettings['db']['server'], $preSettings['db']['port'], $preSettings['db']['database'], $preSettings['db']['username'], $preSettings['db']['password'])) { /* Old mysql db module is no longer supported */ if (!isset($preSettings['db']['type']) || ($preSettings['db']['type'] === 'mysql') || ($preSettings['db']['type'] === '')) { $preSettings['db']['type'] = 'mysqli'; } /* Copy settings to session */ $_SESSION['SETS'] = $preSettings; /* Select database */ $intDBFallback = 0; if (($preSettings['db']['type'] === 'mysqli') && extension_loaded('mysqli')) { /* Initialize mysqli class */ $myDBClass = new functions\MysqliDbClass; /* Set DB parameters */ $myDBClass->arrParams['server'] = $preSettings['db']['server']; $myDBClass->arrParams['port'] = $preSettings['db']['port']; $myDBClass->arrParams['username'] = $preSettings['db']['username']; $myDBClass->arrParams['password'] = $preSettings['db']['password']; $myDBClass->arrParams['database'] = $preSettings['db']['database']; $myDBClass->hasDBConnection(); if ($myDBClass->error === true) { $strErrorMessage .= $myInstClass->translate('Database connection failed. Upgrade not available!') . '
'; $strErrorMessage .= str_replace('::', '
', $myDBClass->strErrorMessage) . '
'; } else { $strSQL = 'SELECT `category`, `name`, `value` FROM `tbl_settings`'; $booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount); if ($booReturn === false) { $strErrorMessage .= $myInstClass->translate('Settings table not available or wrong. Upgrade not available!') . '
'; $strErrorMessage .= str_replace('::', '
', $myDBClass->strErrorMessage) . '
'; } elseif ($intDataCount !== 0) { foreach ($arrDataLines as $elem) { $preSettings[$elem['category']][$elem['name']] = $elem['value']; } $intUpdate = 1; } } } else { $strErrorMessage .= $myInstClass->translate('Invalid database type in settings file (config/settings.php). Upgrade not available!') . '
'; } } else { $strErrorMessage .= $myInstClass->translate('Database values in settings file are missing (config/settings.php). Upgrade not available!') . '
'; } } else { $strErrorMessage .= $myInstClass->translate('Settings file not found or not readable (config/settings.php). Upgrade not available!') . '
'; } /* Initial settings (new installation) */ $filInit = 'functions/initial_settings.php'; if (file_exists($filInit) && is_readable($filInit)) { $preInit = parse_ini_file($filInit, true); $_SESSION['init_settings'] = $preInit; } else { $strErrorMessage .= $myInstClass->translate('Default values file is not available or not readable (install/functions/initial_settings.php). Installation possible, but without predefined data!') . '
'; } /* Build content */ $arrTemplate['PAGETITLE'] = '[NagiosQL] ' . $myInstClass->translate('Installation wizard'); $arrTemplate['MAIN_TITLE'] = $myInstClass->translate('Welcome to the NagiosQL installation wizard'); $arrTemplate['TEXT_PART_1'] = $myInstClass->translate('This wizard will help you to install and configure NagiosQL.'); $arrTemplate['TEXT_PART_2'] = $myInstClass->translate('For questions please visit') . ': '; $arrTemplate['TEXT_PART_3'] = $myInstClass->translate("First let's check your local environment and find out if everything NagiosQL needs is available."); $arrTemplate['TEXT_PART_4'] = $myInstClass->translate('The basic requirements are:'); $arrTemplate['TEXT_PART_5'] = $myInstClass->translate('PHP 7.2.0 or above (PHP 8 is recommended) including:'); $arrTemplate['TEXT_PHP_REQ_1'] = $myInstClass->translate('PHP database module:') . ' ' . $myInstClass->translate('supported types are') . ' mysqli'; $arrTemplate['TEXT_PHP_REQ_2'] = $myInstClass->translate('PHP module:') . ' session'; $arrTemplate['TEXT_PHP_REQ_3'] = $myInstClass->translate('PHP module:') . ' gettext'; $arrTemplate['TEXT_PHP_REQ_6'] = $myInstClass->translate('PHP module:') . ' filter'; $arrTemplate['TEXT_PHP_REQ_8'] = $myInstClass->translate('PHP module:') . ' FTP ' . $myInstClass->translate('(optional)'); $arrTemplate['TEXT_PHP_REQ_10'] = $myInstClass->translate('PECL extension:') . ' SSH ' . $myInstClass->translate('(optional)'); $arrTemplate['TEXT_PART_6'] = $myInstClass->translate('php.ini options') . ':'; $arrTemplate['TEXT_INI_REQ_1'] = $myInstClass->translate('file_uploads on (for upload features)'); $arrTemplate['TEXT_INI_REQ_2'] = $myInstClass->translate('session.auto_start needs to be off'); $arrTemplate['TEXT_INI_REQ_3'] = $myInstClass->translate('date.timezone should be set to your local timezone'); $arrTemplate['TEXT_PART_7'] = $myInstClass->translate('A database server'); $arrTemplate['TEXT_PART_8'] = $myInstClass->translate('Nagios 2.x/3.x/4.x'); $arrTemplate['TEXT_PART_9'] = $myInstClass->translate('NagiosQL version') . ' ' . $strVersion; $arrTemplate['LOCALE'] = $chkLocale; $arrTemplate['ONLINE_DOC'] = $myInstClass->translate('Online documentation'); /* New installation or upgrade */ $arrTemplate['NEW_INSTALLATION'] = $myInstClass->translate('START INSTALLATION'); $arrTemplate['UPDATE'] = $myInstClass->translate('START UPDATE'); $arrTemplate['DISABLE_NEW'] = ''; $arrTemplate['UPDATE_ERROR'] = '
' . $strErrorMessage . '
'; if ($intUpdate === 1) { $arrTemplate['DISABLE_UPDATE'] = ''; } else { $arrTemplate['DISABLE_UPDATE'] = "disabled=\disabled\""; } if ($intError === 1) { $arrTemplate['DISABLE_NEW'] = "disabled=\disabled\""; $arrTemplate['DISABLE_UPDATE'] = "disabled=\disabled\""; } /* Write content */ $strContent = $myInstClass->parseTemplate($arrTemplate, $preContent); echo $strContent;