2017-05-22 11:24:21 +02:00
< ? php
///////////////////////////////////////////////////////////////////////////////
//
// NagiosQL
//
///////////////////////////////////////////////////////////////////////////////
//
2017-10-20 15:00:08 +02:00
// (c) 2005-2017 by Martin Willisegger
2017-05-22 11:24:21 +02:00
//
// Project : NagiosQL
// Component : Installer Class
// Website : http://www.nagiosql.org
2017-10-20 15:00:08 +02:00
// Date : $LastChangedDate: 2017-06-22 11:54:45 +0200 (Thu, 22 Jun 2017) $
2017-05-22 11:24:21 +02:00
// Author : $LastChangedBy: martin $
2017-10-20 15:00:08 +02:00
// Version : 3.3.0
// Revision : $LastChangedRevision: 6 $
2017-05-22 11:24:21 +02:00
//
///////////////////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////////////////
//
// Class: Common install functions
//
///////////////////////////////////////////////////////////////////////////////////////////////
//
// Includes all functions used by the installer
//
// Name: naginstall
//
///////////////////////////////////////////////////////////////////////////////////////////////
class naginstall {
// Define class variables
var $filTemplate = " " ; // template file
2017-10-20 15:00:08 +02:00
var $myDBClass ; // Database class
2017-05-22 11:24:21 +02:00
///////////////////////////////////////////////////////////////////////////////////////////
// Class constructor
///////////////////////////////////////////////////////////////////////////////////////////
//
// Activities during class initialization
//
///////////////////////////////////////////////////////////////////////////////////////////
2017-10-20 15:00:08 +02:00
function __construct () {
2017-05-22 11:24:21 +02:00
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Parse template
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: $arrTemplate Array including template replacements
// $strTplFile Template file
// $intMode Mode (0=admin user/1=NagiosQL user
//
// Return values: none
//
///////////////////////////////////////////////////////////////////////////////////////////
function parseTemplate ( $arrTemplate , $strTplFile ) {
// Open template file
if ( file_exists ( $strTplFile ) && is_readable ( $strTplFile )) {
$strTemplate = " " ;
$datTplFile = fopen ( $strTplFile , 'r' );
while ( ! feof ( $datTplFile )) {
$strTemplate .= fgets ( $datTplFile );
}
foreach ( $arrTemplate AS $key => $elem ) {
if ( substr_count ( $strTemplate , " { " . $key . " } " ) != 0 ) {
$strTemplate = str_replace ( " { " . $key . " } " , $elem , $strTemplate );
}
}
return ( $strTemplate );
} else {
2017-10-20 15:00:08 +02:00
echo $this -> translate ( " Template file not found " ) . " : " . $strTplFile ;
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Translate text
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: $strLangString String to translate
//
// Return values: Translated string
//
///////////////////////////////////////////////////////////////////////////////////////////
function translate ( $strLangString ) {
$strLangString = gettext ( $strLangString );
$strLangString = str_replace ( '"' , '"' , $strLangString );
$strLangString = str_replace ( " ' " , ''' , $strLangString );
return $strLangString ;
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Return supported languages
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: none
//
// Return values: Array including supported languages
//
///////////////////////////////////////////////////////////////////////////////////////////
function getLangData () {
unset ( $arrLangSupported );
// English
$arrLangSupported [ 'en_GB' ][ 'description' ] = $this -> translate ( 'English' );
$arrLangSupported [ 'en_GB' ][ 'nativedescription' ] = 'English' ;
// German
$arrLangSupported [ 'de_DE' ][ 'description' ] = $this -> translate ( 'German' );
$arrLangSupported [ 'de_DE' ][ 'nativedescription' ] = 'Deutsch' ;
// Chinese (Simplified)
$arrLangSupported [ 'zh_CN' ][ 'description' ] = $this -> translate ( 'Chinese (Simplified)' );
$arrLangSupported [ 'zh_CN' ][ 'nativedescription' ] = '简体中文' ;
// Italian
$arrLangSupported [ 'it_IT' ][ 'description' ] = $this -> translate ( 'Italian' );
$arrLangSupported [ 'it_IT' ][ 'nativedescription' ] = 'Italiano' ;
// French
$arrLangSupported [ 'fr_FR' ][ 'description' ] = $this -> translate ( 'French' );
$arrLangSupported [ 'fr_FR' ][ 'nativedescription' ] = 'Français' ;
// Russian
$arrLangSupported [ 'ru_RU' ][ 'description' ] = $this -> translate ( 'Russian' );
$arrLangSupported [ 'ru_RU' ][ 'nativedescription' ] = 'Русский' ;
// Spanish
$arrLangSupported [ 'es_ES' ][ 'description' ] = $this -> translate ( 'Spanish' );
$arrLangSupported [ 'es_ES' ][ 'nativedescription' ] = 'Español' ;
// Brazilian Portuguese
$arrLangSupported [ 'pt_BR' ][ 'description' ] = $this -> translate ( 'Portuguese (Brazilian)' );
$arrLangSupported [ 'pt_BR' ][ 'nativedescription' ] = 'Português do Brasil' ;
// Dutch
$arrLangSupported [ 'nl_NL' ][ 'description' ] = $this -> translate ( 'Dutch' );
$arrLangSupported [ 'nl_NL' ][ 'nativedescription' ] = 'Nederlands' ;
// Danish
$arrLangSupported [ 'da_DK' ][ 'description' ] = $this -> translate ( 'Danish' );
$arrLangSupported [ 'da_DK' ][ 'nativedescription' ] = 'Dansk' ;
// No longer supported language due to missing translators
//
// // Japanese
// $arrLangSupported['ja_JP']['description'] = $this->translate('Japanese');
// $arrLangSupported['ja_JP']['nativedescription'] = '日本語';
//
// // Polish
// $arrLangSupported['pl_PL']['description'] = $this->translate('Polish');
// $arrLangSupported['pl_PL']['nativedescription'] = 'Polski';
//
// // Spanish (Argentina)
// $arrLangSupported['es_AR']['description'] = $this->translate('Spanish (Argentina)');
// $arrLangSupported['es_AR']['nativedescription'] = 'Español Argentina';
///
/// Currently not supported languages
//
// // Albanian
// $arrLangSupported['sq']['description'] = $clang->$this->translate('Albanian');
// $arrLangSupported['sq']['nativedescription'] = 'Shqipe';
//
// // Basque
// $arrLangSupported['eu']['description'] = $this->translate('Basque');
// $arrLangSupported['eu']['nativedescription'] = 'Euskara';
//
// // Bosnian
// $arrLangSupported['bs']['description'] = $this->translate('Bosnian');
// $arrLangSupported['bs']['nativedescription'] = 'Български';
//
// // Bulgarian
// $arrLangSupported['bg']['description'] = $this->translate('Bulgarian');
// $arrLangSupported['bg']['nativedescription'] = 'Български';
//
// // Catalan
// $arrLangSupported['ca']['description'] = $this->translate('Catalan');
// $arrLangSupported['ca']['nativedescription'] = 'Catalά';
//
// // Welsh
// $arrLangSupported['cy']['description'] = $this->translate('Welsh');
// $arrLangSupported['cy']['nativedescription'] = 'Cymraeg';
//
// // Chinese (Traditional - Hong Kong)
// $arrLangSupported['zh-Hant-HK']['description'] = $this->translate('Chinese (Traditional - Hong Kong)');
// $arrLangSupported['zh-Hant-HK']['nativedescription'] = '繁體中文語系';
//
// // Chinese (Traditional - Taiwan)
// $arrLangSupported['zh-Hant-TW']['description'] = $this->translate('Chinese (Traditional - Taiwan)');
// $arrLangSupported['zh-Hant-TW']['nativedescription'] = 'Chinese (Traditional - Taiwan)';
//
// // Croatian
// $arrLangSupported['hr']['description'] = $this->translate('Croatian');
// $arrLangSupported['hr']['nativedescription'] = 'Hrvatski';
//
// // Czech
// $arrLangSupported['cs']['description'] = $this->translate('Czech');
// $arrLangSupported['cs']['nativedescription'] = 'Česky';
//
// // Estonian
// $arrLangSupported['et']['description'] = $this->translate('Estonian');
// $arrLangSupported['et']['nativedescription'] = 'Eesti';
//
// // Finnish
// $arrLangSupported['fi']['description'] = $this->translate('Finnish');
// $arrLangSupported['fi']['nativedescription'] = 'Suomi';
//
// // Galician
// $arrLangSupported['gl']['description'] = $this->translate('Galician');
// $arrLangSupported['gl']['nativedescription'] = 'Galego';
//
// // German informal
// $arrLangSupported['de-informal']['description'] = $this->translate('German informal');
// $arrLangSupported['de-informal']['nativedescription'] = 'Deutsch (Du)';
//
// // Greek
// $arrLangSupported['el']['description'] = $this->translate('Greek');
// $arrLangSupported['el']['nativedescription'] = 'ελληνικά';
//
// // Hebrew
// $arrLangSupported['he']['description'] = $this->translate('Hebrew');
// $arrLangSupported['he']['nativedescription'] = ' עברית';
//
// // Hungarian
// $arrLangSupported['hu']['description'] = $this->translate('Hungarian');
// $arrLangSupported['hu']['nativedescription'] = 'Magyar';
//
// // Indonesian
// $arrLangSupported['id']['description'] = $this->translate('Indonesian');
// $arrLangSupported['id']['nativedescription'] = 'Bahasa Indonesia';
//
// // Lithuanian
// $arrLangSupported['lt']['description'] = $this->translate('Lithuanian');
// $arrLangSupported['lt']['nativedescription'] = 'Lietuvių';
//
// // Macedonian
// $arrLangSupported['mk']['description'] = $this->translate('Macedonian');
// $arrLangSupported['mk']['nativedescription'] = 'Македонски';
//
// // Norwegian Bokml
// $arrLangSupported['nb']['description'] = $this->translate('Norwegian (Bokmal)');
// $arrLangSupported['nb']['nativedescription'] = 'Norsk Bokmål';
//
// // Norwegian Nynorsk
// $arrLangSupported['nn']['description'] = $this->translate('Norwegian (Nynorsk)');
// $arrLangSupported['nn']['nativedescription'] = 'Norsk Nynorsk';
//
// // Portuguese
// $arrLangSupported['pt']['description'] = $this->translate('Portuguese');
// $arrLangSupported['pt']['nativedescription'] = 'Português';
//
// // Romanian
// $arrLangSupported['ro']['description'] = $this->translate('Romanian');
// $arrLangSupported['ro']['nativedescription'] = 'Românesc';
//
// // Slovak
// $arrLangSupported['sk']['description'] = $this->translate('Slovak');
// $arrLangSupported['sk']['nativedescription'] = 'Slovák';
//
// // Slovenian
// $arrLangSupported['sl']['description'] = $this->translate('Slovenian');
// $arrLangSupported['sl']['nativedescription'] = 'Slovenščina';
//
// // Serbian
// $arrLangSupported['sr']['description'] = $this->translate('Serbian');
// $arrLangSupported['sr']['nativedescription'] = 'Srpski';
//
// // Spanish (Mexico)
// $arrLangSupported['es-MX']['description'] = $this->translate('Spanish (Mexico)');
// $arrLangSupported['es-MX']['nativedescription'] = 'Español Mejicano';
//
// // Swedish
// $arrLangSupported['sv']['description'] = $this->translate('Swedish');
// $arrLangSupported['sv']['nativedescription'] = 'Svenska';
//
// // Turkish
// $arrLangSupported['tr']['description'] = $this->translate('Turkish');
// $arrLangSupported['tr']['nativedescription'] = 'Türkçe';
//
// // Thai
// $arrLangSupported['th']['description'] = $this->translate('Thai');
// $arrLangSupported['th']['nativedescription'] = 'ภาษาไทย';
//
// // Vietnamese
// $arrLangSupported['vi']['description'] = $this->translate('Vietnamese');
// $arrLangSupported['vi']['nativedescription'] = 'Tiếng Việt';
foreach ( $arrLangSupported as $key => $row ) {
$description [ $key ] = $row [ 'description' ];
$nativedescription [ $key ] = $row [ 'nativedescription' ];
}
array_multisort ( $description , SORT_ASC , $nativedescription , SORT_ASC , $arrLangSupported );
//uasort($arrLangSupported,"user_sort");
return $arrLangSupported ;
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Translate text
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: $strCode Language code
// $booNative Native code true/false
//
// Return values: Language name if found / false if not exist
//
///////////////////////////////////////////////////////////////////////////////////////////
function getLangNameFromCode ( $strCode , $booNative = true ) {
$arrLanguages = $this -> getLangData ();
if ( isset ( $arrLanguages [ $strCode ][ 'description' ])) {
if ( $booNative ) {
return $arrLanguages [ $strCode ][ 'description' ] . ' - ' . $arrLanguages [ $strCode ][ 'nativedescription' ];
} else {
return $arrLanguages [ $strCode ][ 'description' ];}
} else {
// else return false
return false ;
2017-05-22 11:24:21 +02:00
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Connect to database server as administrator
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
// $intMode Mode (0=admin user/1=NagiosQL user
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function openAdmDBSrv ( & $strStatusMessage , & $strErrorMessage , $intMode = 0 ) {
2017-10-20 15:00:08 +02:00
$intStatus = 0 ;
$this -> myDBClass -> dbconnect ();
if ( $this -> myDBClass -> error == true ) {
$strErrorMessage .= str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
$intStatus = 1 ;
}
2017-05-22 11:24:21 +02:00
if ( $intStatus == 0 ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " passed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Connect to database as administrator
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
// $intMode Mode (0=admin user/1=NagiosQL user
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function openDatabase ( & $strStatusMessage , & $strErrorMessage , $intMode = 0 ) {
2017-10-20 15:00:08 +02:00
$intStatus = 0 ;
// Connect to database
$booDB = $this -> myDBClass -> dbselect ();
if ( ! $booDB ) {
$strErrorMessage .= $this -> translate ( 'Error while connecting to database:' ) . " <br> " ;
$strErrorMessage .= str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage ) . " \n " ;
$intStatus = 1 ;
}
2017-05-22 11:24:21 +02:00
if ( $intStatus == 0 ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " passed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Check database version
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
// $strVersion Database version
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function checkDBVersion ( & $strStatusMessage , & $strErrorMessage , & $setVersion ) {
// Read version string from DB
2017-10-20 15:00:08 +02:00
if (( $_SESSION [ 'install' ][ 'dbtype' ] == " mysql " ) || ( $_SESSION [ 'install' ][ 'dbtype' ] == " mysqli " )) {
$this -> myDBClass -> getSingleDataset ( " SHOW VARIABLES LIKE 'version' " , $arrDataset );
$setVersion = $arrDataset [ 'Value' ];
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
$intVersion = version_compare ( $setVersion , " 4.1.0 " );
}
if ( $strDBError == " " ) {
// Is the currrent version supported?
if ( $intVersion >= 0 ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " supported " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " not supported " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
} else {
$strErrorMessage .= $strDBError . " <br> \n " ;
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
$setVersion = " unknown " ;
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Check NagiosQL version
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
// $arrUpdate Array including all update files
// $setVersion Current NagiosQL version string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function checkQLVersion ( & $strStatusMessage , & $strErrorMessage , & $arrUpdate , & $setVersion ) {
2017-10-20 15:00:08 +02:00
$strSQL = " SELECT `value` FROM `tbl_settings` WHERE `category`='db' AND `name`='version' " ;
$setVersion = $this -> myDBClass -> getFieldData ( $strSQL );
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
// Process result
if (( $strDBError == " " ) && ( $setVersion != " " )) {
// NagiosQL version supported?
$intVersionError = 0 ;
switch ( $setVersion ) {
case '3.0.0' : $arrUpdate [] = " sql/update_300_310.sql " ;
$arrUpdate [] = " sql/update_310_320.sql " ;
break ;
case '3.0.1' : $arrUpdate [] = " sql/update_302_303.sql " ;
$arrUpdate [] = " sql/update_304_310.sql " ;
$arrUpdate [] = " sql/update_310_320.sql " ;
break ;
case '3.0.2' : $arrUpdate [] = " sql/update_302_303.sql " ;
$arrUpdate [] = " sql/update_304_310.sql " ;
$arrUpdate [] = " sql/update_310_320.sql " ;
break ;
case '3.0.3' : $arrUpdate [] = " sql/update_304_310.sql " ;
$arrUpdate [] = " sql/update_310_320.sql " ;
break ;
case '3.0.4' : $arrUpdate [] = " sql/update_304_310.sql " ;
$arrUpdate [] = " sql/update_310_320.sql " ;
break ;
case '3.1.0' : $arrUpdate [] = " sql/update_310_320.sql " ;
break ;
case '3.1.1' : $arrUpdate [] = " sql/update_311_320.sql " ;
break ;
2017-10-20 15:00:08 +02:00
case '3.2.0' : $intVersionError = 2 ;
break ;
case '3.3.0' : $intVersionError = 2 ;
2017-05-22 11:24:21 +02:00
break ;
default : $intVersionError = 1 ;
break ;
}
if ( $intVersionError == 0 ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " supported " ) . " </span> ( " . $setVersion . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else if ( $intVersionError == 2 ) {
2017-10-20 15:00:08 +02:00
$strErrorMessage .= $this -> translate ( " Your NagiosQL installation is up to date - no further actions are needed! " ) . " <br> \n " ;
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " up-to-date " ) . " </span> ( " . $setVersion . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
} else {
2017-10-20 15:00:08 +02:00
$strErrorMessage .= $this -> translate ( " Updates to NagiosQL 3.2 and above are only supported from NagiosQL 3.0.0 and above! " ) . " <br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> ( " . $setVersion . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
} else {
2017-10-20 15:00:08 +02:00
$strErrorMessage .= $this -> translate ( " Error while selecting settings table. " ) . " <br> \n " ;
2017-05-22 11:24:21 +02:00
$strErrorMessage .= $strDBError . " <br> \n " ;
2017-10-20 15:00:08 +02:00
$strErrorMessage .= $this -> translate ( " Updates to NagiosQL 3.2 and above are only supported from NagiosQL 3.0.0 and above! " ) . " <br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Delete old NagiosQL database
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function dropDB ( & $strStatusMessage , & $strErrorMessage ) {
2017-10-20 15:00:08 +02:00
$booReturn = $this -> myDBClass -> insertData ( " DROP DATABASE " . $_SESSION [ 'install' ][ 'dbname' ]);
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
if ( $booReturn ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> ( " . $_SESSION [ 'install' ][ 'dbname' ] . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
$strErrorMessage .= $strDBError . " <br> \n " ;
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> ( " . $_SESSION [ 'install' ][ 'dbname' ] . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Create NagiosQL database
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function createDB ( & $strStatusMessage , & $strErrorMessage ) {
// Create database
2017-10-20 15:00:08 +02:00
if (( $_SESSION [ 'install' ][ 'dbtype' ] == " mysql " ) || ( $_SESSION [ 'install' ][ 'dbtype' ] == " mysqli " )) {
$strSQL = " CREATE DATABASE " . $_SESSION [ 'install' ][ 'dbname' ] . " DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci " ;
2017-05-22 11:24:21 +02:00
} else {
2017-10-20 15:00:08 +02:00
$strErrorMessage .= $this -> translate ( " Unsupported database type. " ) . " <br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> ( " . $_SESSION [ 'install' ][ 'dbname' ] . " ) " ;
return ( 1 );
2017-05-22 11:24:21 +02:00
}
2017-10-20 15:00:08 +02:00
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
if ( $booReturn ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> ( " . $_SESSION [ 'install' ][ 'dbname' ] . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
$strErrorMessage .= $strDBError . " <br> \n " ;
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> ( " . $_SESSION [ 'install' ][ 'dbname' ] . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
2017-10-20 15:00:08 +02:00
}
2017-05-22 11:24:21 +02:00
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Grant user to database
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function grantDBUser ( & $strStatusMessage , & $strErrorMessage ) {
// Grant user
2017-10-20 15:00:08 +02:00
if (( $_SESSION [ 'install' ][ 'dbtype' ] == " mysql " ) || ( $_SESSION [ 'install' ][ 'dbtype' ] == " mysqli " )) {
2017-05-22 11:24:21 +02:00
// does the user exist?
2017-10-20 15:00:08 +02:00
$intUserError = 0 ;
$booReturn = $this -> myDBClass -> insertData ( " FLUSH PRIVILEGES " );
$strSQL = " SELECT * FROM `mysql`.`user`
WHERE `Host` = '".$_SESSION[' install '][' localsrv ']."' AND `User` = '".$_SESSION[' install '][' dbuser ']."' " ;
$intCount = $this -> myDBClass -> countRows ( $strSQL );
if ( $intCount == 0 ) {
$strSQL = " CREATE USER ' " . $_SESSION [ 'install' ][ 'dbuser' ] . " '@' " . $_SESSION [ 'install' ][ 'localsrv' ] . " ' IDENTIFIED BY ' " . $_SESSION [ 'install' ][ 'dbpass' ] . " ' " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
if ( $booReturn == false ) {
2017-05-22 11:24:21 +02:00
$intUserError = 1 ;
2017-10-20 15:00:08 +02:00
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
}
2017-10-20 15:00:08 +02:00
} else if ( $this -> myDBClass -> strErrorMessage == " " ) {
$intUserError = 2 ;
2017-05-22 11:24:21 +02:00
} else {
$intUserError = 1 ;
2017-10-20 15:00:08 +02:00
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
}
if ( $intUserError != 1 ) {
2017-10-20 15:00:08 +02:00
$booReturn = $this -> myDBClass -> insertData ( " FLUSH PRIVILEGES " );
$strSQL = " GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON ` " . $_SESSION [ 'install' ][ 'dbname' ] . " `.*
TO '".$_SESSION[' install '][' dbuser ']."' @ '".$_SESSION[' install '][' localsrv ']."' " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
if ( $booReturn == false ) {
2017-05-22 11:24:21 +02:00
$intUserError = 1 ;
2017-10-20 15:00:08 +02:00
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
}
2017-10-20 15:00:08 +02:00
$booReturn = $this -> myDBClass -> insertData ( " FLUSH PRIVILEGES " );
2017-05-22 11:24:21 +02:00
}
}
if ( $intUserError != 1 ) {
if ( $intUserError == 2 ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> ( " . $this -> translate ( " Only added rights to existing user " ) . " : " . $_SESSION [ 'install' ][ 'dbuser' ] . " ) " ;
2017-05-22 11:24:21 +02:00
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
}
return ( 0 );
} else {
$strErrorMessage .= $strDBError . " <br> \n " ;
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
2017-10-20 15:00:08 +02:00
}
2017-05-22 11:24:21 +02:00
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Update NagiosQL database
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
// $arrUpdate Array including all update files
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function updateQLDB ( & $strStatusMessage , & $strErrorMessage , $arrUpdate ) {
if ( is_array ( $arrUpdate ) && ( count ( $arrUpdate ) != 0 )) {
$intUpdateOk = 0 ;
$intUpdateError = 0 ;
foreach ( $arrUpdate AS $elem ) {
if ( $intUpdateError == 0 ) {
if ( is_readable ( $elem )) {
$filSqlNew = fopen ( $elem , " r " );
if ( $filSqlNew ) {
$strSqlCommand = " " ;
$intSQLError = 0 ;
$intLineCount = 0 ;
while ( ! feof ( $filSqlNew )) {
$strLine = fgets ( $filSqlNew );
$strLine = trim ( $strLine );
if ( $intSQLError == 1 ) continue ; // skip if an error was found
$intLineCount ++ ;
2017-10-20 15:00:08 +02:00
if ( $strLine == " " ) continue ; // skip empty lines
2017-05-22 11:24:21 +02:00
if ( substr ( $strLine , 0 , 2 ) == " -- " ) continue ; // skip comment lines
$strSqlCommand .= $strLine ;
if ( substr ( $strSqlCommand , - 1 ) == " ; " ) {
2017-10-20 15:00:08 +02:00
$booReturn = $this -> myDBClass -> insertData ( $strSqlCommand );
if ( $booReturn == false ) {
2017-05-22 11:24:21 +02:00
$intSQLError = 1 ;
2017-10-20 15:00:08 +02:00
$strErrorMessage .= str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
$intError = 1 ;
}
$strSqlCommand = " " ;
}
}
if ( $intSQLError == 0 ) {
$intUpdateOk ++ ;
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> (Line: " . $intLineCount . " in file: " . $elem . " ) " ;
2017-05-22 11:24:21 +02:00
$intUpdateError ++ ;
}
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " SQL file is not readable or empty " ) . " ( " . $elem . " )<br> \n " ;
2017-05-22 11:24:21 +02:00
$intUpdateError ++ ;
}
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " SQL file is not readable or empty " ) . " ( " . $elem . " )<br> \n " ;
2017-05-22 11:24:21 +02:00
$intUpdateError ++ ;
}
}
}
if ( $intUpdateError == 0 ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
return ( 1 );
}
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " No SQL update files available " ) . " <br> \n " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Create NagiosQL administrator
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function createNQLAdmin ( & $strStatusMessage , & $strErrorMessage ) {
// Create admin user
2017-10-20 15:00:08 +02:00
$strSQL = " SELECT `id` FROM `tbl_language` WHERE `locale`=' " . $_SESSION [ 'install' ][ 'locale' ] . " ' " ;
$intLang = $this -> myDBClass -> getFieldData ( $strSQL ) + 0 ;
2017-05-22 11:24:21 +02:00
if ( $intLang == 0 ) $intLang = 1 ;
2017-10-20 15:00:08 +02:00
$strSQL = " INSERT INTO `tbl_user` (`id`, `username`, `alias`, `password`, `admin_enable`, `wsauth`, `active`,
`nodelete` , `language` , `domain` , `last_login` , `last_modified` )
VALUES ( 1 , '".$_SESSION[' install '][' qluser ']."' , 'Administrator' , md5 ( '".$_SESSION[' install '][' qlpass ']."' ),
'1' , '0' , '1' , '1' , '".$intLang."' , '1' , '' , NOW ()); " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
if ( $booReturn ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
$strErrorMessage .= $strDBError . " <br> \n " ;
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Update settings database
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function updateSettingsDB ( & $strStatusMessage , & $strErrorMessage ) {
// Checking initial settings
$arrInitial [] = array ( 'category' => 'db' , 'name' => 'version' , 'value' => $_SESSION [ 'install' ][ 'version' ]);
$arrInitial [] = array ( 'category' => 'db' , 'name' => 'type' , 'value' => $_SESSION [ 'install' ][ 'dbtype' ]);
2017-10-20 15:00:08 +02:00
foreach ( $_SESSION [ 'init_settings' ] AS $key => $elem ) {
2017-05-22 11:24:21 +02:00
if ( $key == 'db' ) continue ; // do not store db values to database
foreach ( $elem AS $key2 => $elem2 ) {
$arrInitial [] = array ( 'category' => $key , 'name' => $key2 , 'value' => $elem2 );
}
}
foreach ( $arrInitial AS $elem ) {
2017-10-20 15:00:08 +02:00
$strSQL1 = " SELECT `value` FROM `tbl_settings` WHERE `category`=' " . $elem [ 'category' ] . " '
AND `name` = '".$elem[' name ']."' " ;
$strSQL2 = " INSERT INTO `tbl_settings` (`category`, `name`, `value`)
VALUES ( '".$elem[' category ']."' , '".$elem[' name ']."' , '".$elem[' value ']."' ) " ;
$intCount = $this -> myDBClass -> countRows ( $strSQL1 );
if ( $intCount == 0 ) {
$booReturn = $this -> myDBClass -> insertData ( $strSQL2 );
if ( $booReturn == false ) {
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " Inserting initial data to settings database has failed: " ) . " 1<br> " ;
$strErrorMessage .= str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
return ( 1 );
2017-10-20 15:00:08 +02:00
}
} else if ( $this -> myDBClass -> strErrorMessage != " " ) {
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " Inserting initial data to settings database has failed: " ) . " 2<br> " ;
$strErrorMessage .= str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
return ( 1 );
2017-05-22 11:24:21 +02:00
}
}
// Update some values
$arrSettings [] = array ( 'category' => 'db' , 'name' => 'version' , 'value' => $_SESSION [ 'install' ][ 'version' ]);
if ( substr_count ( $_SERVER [ 'SERVER_PROTOCOL' ], " HTTPS " ) != 0 ) {
$arrSettings [] = array ( 'category' => 'path' , 'name' => 'protocol' , 'value' => 'https' );
} else {
$arrSettings [] = array ( 'category' => 'path' , 'name' => 'protocol' , 'value' => 'http' );
}
2017-10-20 15:00:08 +02:00
//$strBaseURL = str_replace("install/install.php","",$_SERVER["PHP_SELF"]);
//$arrSettings[] = array('category'=>'path','name'=>'base_url','value'=>$strBaseURL);
//$strBasePath = substr(realpath('.'),0,-7);
//$arrSettings[] = array('category'=>'path','name'=>'base_path','value'=>$strBasePath);
2017-05-22 11:24:21 +02:00
$arrSettings [] = array ( 'category' => 'data' , 'name' => 'locale' , 'value' => $_SESSION [ 'install' ][ 'locale' ]);
foreach ( $arrSettings AS $elem ) {
2017-10-20 15:00:08 +02:00
$strSQL = " UPDATE `tbl_settings` SET `value`=' " . $elem [ 'value' ] . " '
WHERE `category` = '".$elem[' category ']."' AND `name` = '".$elem[' name ']."' " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
if ( $booReturn == false ) {
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " Inserting initial data to settings database has failed: " );
$strErrorMessage .= str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
return ( 1 );
2017-05-22 11:24:21 +02:00
}
}
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Update settings file
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function updateSettingsFile ( & $strStatusMessage , & $strErrorMessage ) {
// open settings file
$strBaseURL = str_replace ( " install/install.php " , " " , $_SERVER [ " PHP_SELF " ]);
$strBasePath = substr ( realpath ( '.' ), 0 , - 7 );
$strE_ID = error_reporting ();
error_reporting ( 0 );
$filSettings = fopen ( $strBasePath . " config/settings.php " , " w " );
error_reporting ( $strE_ID );
if ( $filSettings ) {
// Write Database Configuration into settings.php
fwrite ( $filSettings , " <?php \n " );
fwrite ( $filSettings , " exit; \n " );
fwrite ( $filSettings , " ?> \n " );
fwrite ( $filSettings , " ;/////////////////////////////////////////////////////////////////////////////// \n " );
fwrite ( $filSettings , " ; \n " );
fwrite ( $filSettings , " ; NagiosQL \n " );
fwrite ( $filSettings , " ; \n " );
fwrite ( $filSettings , " ;/////////////////////////////////////////////////////////////////////////////// \n " );
fwrite ( $filSettings , " ; \n " );
fwrite ( $filSettings , " ; Project : NagiosQL \n " );
fwrite ( $filSettings , " ; Component: Database Configuration \n " );
fwrite ( $filSettings , " ; Website : http://www.nagiosql.org \n " );
fwrite ( $filSettings , " ; Date : " . date ( " F j, Y, g:i a " ) . " \n " );
fwrite ( $filSettings , " ; Version : " . $_SESSION [ 'install' ][ 'version' ] . " \n " );
fwrite ( $filSettings , " ; \n " );
fwrite ( $filSettings , " ;/////////////////////////////////////////////////////////////////////////////// \n " );
fwrite ( $filSettings , " [db] \n " );
fwrite ( $filSettings , " type = " . $_SESSION [ 'install' ][ 'dbtype' ] . " \n " );
fwrite ( $filSettings , " server = " . $_SESSION [ 'install' ][ 'dbserver' ] . " \n " );
fwrite ( $filSettings , " port = " . $_SESSION [ 'install' ][ 'dbport' ] . " \n " );
fwrite ( $filSettings , " database = " . $_SESSION [ 'install' ][ 'dbname' ] . " \n " );
fwrite ( $filSettings , " username = " . $_SESSION [ 'install' ][ 'dbuser' ] . " \n " );
fwrite ( $filSettings , " password = " . $_SESSION [ 'install' ][ 'dbpass' ] . " \n " );
fwrite ( $filSettings , " [path] \n " );
fwrite ( $filSettings , " base_url = " . $strBaseURL . " \n " );
fwrite ( $filSettings , " base_path = " . $strBasePath . " \n " );
fclose ( $filSettings );
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " Connot open/write to config/settings.php " ) . " <br> \n " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Update settings database
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function updateQLpath ( & $strStatusMessage , & $strErrorMessage ) {
// Update configuration target database
$strNagiosQLpath = str_replace ( " // " , " / " , $_SESSION [ 'install' ][ 'qlpath' ] . " / " );
$strNagiosPath = str_replace ( " // " , " / " , $_SESSION [ 'install' ][ 'nagpath' ] . " / " );
2017-10-20 15:00:08 +02:00
$strSQL = " UPDATE `tbl_configtarget` SET
`basedir` = '".$strNagiosQLpath."' ,
`hostconfig` = '".$strNagiosQLpath."hosts/' ,
`serviceconfig` = '".$strNagiosQLpath."services/' ,
`backupdir` = '".$strNagiosQLpath."backup/' ,
`hostbackup` = '".$strNagiosQLpath."backup/hosts/' ,
`servicebackup` = '".$strNagiosQLpath."backup/services/' ,
`nagiosbasedir` = '".$strNagiosPath."' ,
`importdir` = '".$strNagiosPath."objects/' ,
`conffile` = '".$strNagiosPath."nagios.cfg' ,
`last_modified` = NOW ()
WHERE `target` = 'localhost' " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
if ( $booReturn == false ) {
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " Inserting path data to database has failed: " ) . " " . str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage ) . " \n " ;
return ( 1 );
2017-05-22 11:24:21 +02:00
}
// Create real paths
if ( $_SESSION [ 'install' ][ 'createpath' ] == 1 ) {
if ( is_writable ( $strNagiosQLpath ) && is_dir ( $strNagiosQLpath ) && is_executable ( $strNagiosQLpath )) {
if ( ! file_exists ( $strNagiosQLpath . " hosts " )) mkdir ( $strNagiosQLpath . " hosts " , 0755 );
if ( ! file_exists ( $strNagiosQLpath . " services " )) mkdir ( $strNagiosQLpath . " services " , 0755 );
if ( ! file_exists ( $strNagiosQLpath . " backup " )) mkdir ( $strNagiosQLpath . " backup " , 0755 );
if ( ! file_exists ( $strNagiosQLpath . " backup/hosts " )) mkdir ( $strNagiosQLpath . " backup/hosts " , 0755 );
if ( ! file_exists ( $strNagiosQLpath . " backup/services " )) mkdir ( $strNagiosQLpath . " backup/services " , 0755 );
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> ( " . $this -> translate ( " Check the permissions of the created paths! " ) . " ) " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
$strErrorMessage .= $this -> translate ( " NagiosQL config path is not writeable - only database values updated " ) . " <br> \n " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Converting NagiosQL database to utf-8
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function convQLDB ( & $strStatusMessage , & $strErrorMessage ) {
2017-10-20 15:00:08 +02:00
$strDBError = " " ;
if ( $_SESSION [ 'install' ][ 'dbtype' ] == " mysqli " ) {
$strSQL = " ALTER DATABASE ` " . $_SESSION [ 'install' ][ 'dbname' ] . " ` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
2017-05-22 11:24:21 +02:00
}
if ( $strDBError == " " ) {
2017-10-20 15:00:08 +02:00
$strStatusMessage = " <span class= \" green \" > " . $this -> translate ( " done " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 0 );
} else {
2017-10-20 15:00:08 +02:00
$strErrorMessage .= $this -> translate ( " Database errors while converting to utf-8: " ) . " <br> " . $strDBError . " <br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . $this -> translate ( " failed " ) . " </span> " ;
2017-05-22 11:24:21 +02:00
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Converting NagiosQL database tables to utf-8
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function convQLDBTables ( & $strStatusMessage , & $strErrorMessage ) {
// Read version string from DB
2017-10-20 15:00:08 +02:00
if ( $_SESSION [ 'install' ][ 'dbtype' ] == " mysqli " ) {
$strSQL = " SHOW TABLES FROM ` " . $_SESSION [ 'install' ][ 'dbname' ] . " ` " ;
$booReturn = $this -> myDBClass -> getDataArray ( $strSQL , $arrDataset , $intDataCount );
if ( $intDataCount != 0 ) {
foreach ( $arrDataset AS $elem ) {
if ( $intError == 1 ) continue ;
$strSQL = " ALTER TABLE ` " . $elem [ 0 ] . " ` DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL );
if ( $booReturn == false ) {
$intError = 1 ;
$strDBError = str_replace ( " :: " , " <br> " , $this -> myDBClass -> strErrorMessage );
}
2017-05-22 11:24:21 +02:00
}
}
} else {
$strErrorMessage .= translate ( " Database type not defined! " ) . " ( " . $_SESSION [ 'install' ][ 'dbtype' ] . " )<br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . translate ( " failed " ) . " </span> " ;
return ( 1 );
}
if ( $strDBError == " " ) {
$strStatusMessage = " <span class= \" green \" > " . translate ( " done " ) . " </span> " ;
return ( 0 );
} else {
$strErrorMessage .= translate ( " Database errors while converting to utf-8: " ) . " <br> " . $strDBError . " <br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . translate ( " failed " ) . " </span> " ;
return ( 1 );
}
}
///////////////////////////////////////////////////////////////////////////////////////////
// Function: Converting NagiosQL database tables to utf-8
///////////////////////////////////////////////////////////////////////////////////////////
//
// Parameter: strStatusMessage Array variable for status message
// $strErrorMessage Error string
//
// Return values: Status variable (0=ok,1=failed)
//
///////////////////////////////////////////////////////////////////////////////////////////
function convQLDBFields ( & $strStatusMessage , & $strErrorMessage ) {
// Read version string from DB
2017-10-20 15:00:08 +02:00
$strSQL1 = " SHOW TABLES FROM ` " . $_SESSION [ 'install' ][ 'dbname' ] . " ` " ;
$booReturn = $this -> myDBClass -> getDataArray ( $strSQL1 , $arrDataset1 , $intDataCount1 );
if ( $intDataCount1 != 0 ) {
foreach ( $arrDataset1 AS $elem1 ) {
if ( $intError == 1 ) continue ;
$strSQL2 = " SHOW FULL FIELDS FROM ` " . $elem1 [ 0 ] . " ` WHERE (`Type` LIKE '%varchar%' OR `Type` LIKE '%enum%'
OR `Type` LIKE '%text%' ) AND Collation <> 'utf8_unicode_ci' " ;
$booReturn = $this -> myDBClass -> getDataArray ( $strSQL2 , $arrDataset2 , $intDataCount2 );
if ( $intDataCount2 != 0 ) {
foreach ( $arrDataset2 AS $elem2 ) {
if ( $intError2 == 1 ) continue ;
if (( $elem2 [ 5 ] === NULL ) && ( $elem2 [ 3 ] == 'YES' )){
$strDefault = " DEFAULT NULL " ;
} else if ( $elem2 [ 5 ] != '' ) {
$strDefault = " DEFAULT ' " . $elem2 [ 5 ] . " ' " ;
} else {
$strDefault = " " ;
2017-05-22 11:24:21 +02:00
}
2017-10-20 15:00:08 +02:00
if ( $elem2 [ 3 ] == 'YES' ) { $strNull = 'NULL' ; } else { $strNull = 'NOT NULL' ; }
$strSQL3 = " ALTER TABLE ` " . $elem [ 0 ] . " ` CHANGE ` " . $elem2 [ 0 ] . " ` ` " . $elem2 [ 0 ] . " ` " . $elem2 [ 1 ] . "
CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' $strNull $strDefault " ;
$booReturn = $this -> myDBClass -> insertData ( $strSQL3 );
if ( $booReturn == false ) {
$intError2 = 1 ;
$strDBError = " Table: " . $elem [ 0 ] . " - Field: " . $elem2 [ 0 ] . " " . $this -> myDBClass -> strErrorMessage ;
2017-05-22 11:24:21 +02:00
}
}
}
}
} else {
$strErrorMessage .= translate ( " Database type not defined! " ) . " ( " . $_SESSION [ 'install' ][ 'dbtype' ] . " )<br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . translate ( " failed " ) . " </span> " ;
return ( 1 );
}
if ( $strDBError == " " ) {
$strStatusMessage = " <span class= \" green \" > " . translate ( " done " ) . " </span> " ;
return ( 0 );
} else {
$strErrorMessage .= translate ( " Database errors while converting to utf-8: " ) . " <br> " . $strDBError . " <br> \n " ;
$strStatusMessage = " <span class= \" red \" > " . translate ( " failed " ) . " </span> " ;
return ( 1 );
}
}
}
?>