\n";
		print $error;
		print "";
	} /* }}} */
	protected function printWarning($error) { /* {{{ */
		print "
";
		print $error;
		print "
";
	} /* }}} */
	protected function printCheckError($resCheck) { /* {{{ */
		$hasError = false;
		foreach($resCheck as $keyRes => $paramRes) {
			if(isset($paramRes['type']) && $paramRes['type'] == 'error')
				$hasError = true;
			$errorMes = getMLText("settings_$keyRes"). " : " . getMLText("settings_".$paramRes["status"]);
			if (isset($paramRes["currentvalue"]))
				$errorMes .= "
 => " . getMLText("settings_currentvalue") . " : " . $paramRes["currentvalue"];
			if (isset($paramRes["suggestionvalue"]))
				$errorMes .= "
 => " . getMLText("settings_suggestionvalue") . " : " . $paramRes["suggestionvalue"];
			if (isset($paramRes["suggestion"]))
				$errorMes .= "
 => " . getMLText("settings_".$paramRes["suggestion"]);
			if (isset($paramRes["systemerror"]))
				$errorMes .= "
 => " . $paramRes["systemerror"];
			if(isset($paramRes['type']) && $paramRes['type'] == 'error')
				$this->printError($errorMes);
			else
				$this->printWarning($errorMes);
		}
		return $hasError;
	} /* }}} */
	protected function openDBConnection($settings) { /* {{{ */
		switch($settings->_dbDriver) {
			case 'mysql':
			case 'mysqli':
			case 'mysqlnd':
			case 'pgsql':
				$tmp = explode(":", $settings->_dbHostname);
				$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
				if(isset($tmp[1]))
					$dsn .= ";port=".$tmp[1];
				break;
			case 'sqlite':
				$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
				break;
		}
		$connTmp = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
		return $connTmp;
	} /* }}} */
	public function intro() { /* {{{ */
		$this->htmlStartPage("INSTALL");
		$this->globalBanner();
		$this->contentStart();
		$this->contentHeading("SeedDMS Installation for version ".SEEDDMS_VERSION);
		$this->contentContainerStart();
echo "".getMLText('settings_install_welcome_title')."
";
echo "".getMLText('settings_install_welcome_text')."
";
echo '' . getMLText("settings_start_install") . '
';
		$this->contentContainerEnd();
		$this->contentEnd();
		$this->htmlEndPage();
	} /* }}} */
	public function install($msg) { /* {{{ */
		$settings = $this->params['settings'];
		$configDir = $this->params['configdir'];
		$this->htmlStartPage("INSTALL");
		$this->globalBanner();
		$this->contentStart();
		$this->contentHeading("SeedDMS Installation for version ".SEEDDMS_VERSION);
		if(isset($msg))
			$this->warningMsg($msg);
		$this->contentContainerStart();
		/**
		 * Show phpinfo
		 */
		if (isset($_GET['phpinfo'])) {
			echo '' . getMLText("back") . '';
			phpinfo();
			$this->contentContainerEnd();
			$this->contentEnd();
			$this->htmlEndPage();
			exit();
		}
		/**
		 * check if ENABLE_INSTALL_TOOL shall be removed
		 */
		if (isset($_GET['disableinstall'])) { /* {{{ */
			if(file_exists($configDir."/ENABLE_INSTALL_TOOL")) {
				if(unlink($configDir."/ENABLE_INSTALL_TOOL")) {
					echo getMLText("settings_install_disabled");
					echo "
";
					echo '' . getMLText("settings_more_settings") .'';
				} else {
					echo getMLText("settings_cannot_disable");
					echo "
";
					echo '' . getMLText("back") . '';
				}
			} else {
				echo getMLText("settings_cannot_disable");
				echo "
";
				echo '' . getMLText("back") . '';
			}
			$this->contentContainerEnd();
			$this->contentEnd();
			$this->htmlEndPage();
			exit();
		} /* }}} */
		/**
		 * Check System
		 */
		if ($this->printCheckError( $settings->checkSystem())) { /* {{{ */
			if (function_exists("apache_get_version")) {
				echo "
Apache version: " . apache_get_version();
			}
			echo "
PHP version: " . phpversion();
			echo "
PHP include path: " . ini_get('include_path');
			echo '
';
			echo '
';
			echo '' . getMLText("refresh") . '';
			echo ' - ';
			echo '' . getMLText("version_info") . '';
			exit;
		} /* }}} */
		if (isset($_POST["action"])) $action=$_POST["action"];
		else if (isset($_GET["action"])) $action=$_GET["action"];
		else $action=NULL;
		$showform = true;
		if ($action=="setSettings") { /* {{{ */
			/**
			 * Get Parameters
			 */
			$settings->_rootDir = $_POST["rootDir"];
			$settings->_httpRoot = $_POST["httpRoot"];
			$settings->_contentDir = $_POST["contentDir"];
			$settings->_luceneDir = $_POST["luceneDir"];
			$settings->_stagingDir = $_POST["stagingDir"];
			$settings->_cacheDir = $_POST["cacheDir"];
			$settings->_extraPath = $_POST["extraPath"];
			$settings->_dbDriver = $_POST["dbDriver"];
			$settings->_dbHostname = $_POST["dbHostname"];
			$settings->_dbDatabase = $_POST["dbDatabase"];
			$settings->_dbUser = $_POST["dbUser"];
			$settings->_dbPass = $_POST["dbPass"];
			$settings->_coreDir = ''; //$_POST["coreDir"];
			$settings->_luceneClassDir = ''; //$_POST["luceneClassDir"];
			if(isset($settings->_extraPath))
				ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
			/**
			 * Check Parameters, require version 3.3.x
			 */
			$hasError = $this->printCheckError( $settings->check(substr(str_replace('.', '', SEEDDMS_VERSION), 0,2)));
			if (!$hasError) {
				// Create database
				if (isset($_POST["createDatabase"])) {
					$createOK = false;
					$errorMsg = "";
					$connTmp = $this->openDBConnection($settings);
					if ($connTmp) {
						// read SQL file
						if ($settings->_dbDriver=="mysql")
							$queries = file_get_contents("create_tables-innodb.sql");
						elseif($settings->_dbDriver=="sqlite")
							$queries = file_get_contents("create_tables-sqlite3.sql");
						elseif($settings->_dbDriver=="pgsql")
							$queries = file_get_contents("create_tables-postgres.sql");
						else
							die();
						// generate SQL query
						$queries = explode(";", $queries);
						// execute queries
						foreach($queries as $query) {
						// var_dump($query);
							$query = trim($query);
							if (!empty($query)) {
								$connTmp->exec($query);
								if ($connTmp->errorCode() != 0) {
									$errorMsg .= $connTmp->errorInfo()[2] . "
";
								}
							}
						}
					}
					// error ?
					if (empty($errorMsg))
						$createOK = true;
					$connTmp = null;
					// Show error
					if (!$createOK) {
						echo $errorMsg;
						$hasError = true;
					}
				} // create database
				if (!$hasError) {
					// Save settings
					$settings->save();
					$needsupdate = false;
					$connTmp = $this->openDBConnection($settings);
					if ($connTmp) {
						switch($settings->_dbDriver) {
							case 'mysql':
							case 'mysqli':
							case 'mysqlnd':
							case 'sqlite':
								$sql = 'select * from `tblVersion`';
								break;
							case 'pgsql':
								$sql = 'select * from "tblVersion"';
								break;
						}
						$res = $connTmp->query($sql);
						if($res) {
							if($rec = $res->fetch(PDO::FETCH_ASSOC)) {
								$updatedirs = array();
								$d = dir(".");
								while (false !== ($entry = $d->read())) {
									if(preg_match('/update-([0-9.]*)/', $entry, $matches)) {
										$updatedirs[] = $matches[1];
									}
								}
								$d->close();
								echo "Your current database schema has version ".$rec['major'].'.'.$rec['minor'].'.'.$rec['subminor'].". Please run all (if any)
of the update scripts below in the listed order.
";
								$connTmp = null;
								if($updatedirs) {
									asort($updatedirs);
									foreach($updatedirs as $updatedir) {
										if($updatedir > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
											$needsupdate = true;
											print "Database update to version ".$updatedir." needed
";
											if(file_exists('update-'.$updatedir.'/update.txt')) {
												print "Please read the comments on updating this version. Read now
";
											}
											print "Run the update script.
";
										}
									}
								} else {
									print "Your current database is up to date.
";
								}
							}
							if(!$needsupdate) {
								echo getMLText("settings_install_success");
								echo "
";
								echo getMLText("settings_delete_install_folder");
								echo "
";
								echo '' . getMLText("settings_disable_install") . '';
								echo "
";
								echo '' . getMLText("settings_more_settings") .'';
								$showform = false;
							}
						} else {
							print "You does not seem to have a valid database. The table tblVersion is missing.
";
						}
					}
				}
			}
			// Back link
			echo '
';
			echo '
';
		//	echo '' . getMLText("back") . '';
		} /* }}} */
		if($showform) { /* {{{ */
			/**
			 * Set parameters
			 */
		?>
	
_printDisclaimer = false;
		$settings->_footNote = false;
		// end of the page
		$this->contentContainerEnd();
		$this->contentEnd();
		$this->htmlEndPage();
	} /* }}} */
	public function update() { /* {{{ */
		$settings = $this->params['settings'];
		$this->htmlStartPage('Database update');
		$this->globalBanner();
		$this->contentStart();
		$this->contentHeading("SeedDMS Installation for version ".$_GET['version']);
		$this->contentContainerStart();
$sqlfile = "update.sql";
switch($settings->_dbDriver) {
	case 'mysql':
	case 'mysqli':
	case 'mysqlnd':
		$tmp = explode(":", $settings->_dbHostname);
		$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
		if(isset($tmp[1]))
			$dsn .= ";port=".$tmp[1];
		break;
	case 'sqlite':
		$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
		if(file_exists('update-'.$_GET['version'].'/update-sqlite3.sql'))
			$sqlfile = "update-sqlite3.sql";
		break;
	case 'pgsql':
		$tmp = explode(":", $settings->_dbHostname);
		$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
		if(isset($tmp[1]))
			$dsn .= ";port=".$tmp[1];
		if(file_exists('update-'.$_GET['version'].'/update-postgres.sql'))
			$sqlfile = "update-postgres.sql";
}
$db = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
if (!$db) {
	die;
}
$errorMsg = '';
$res = $db->query('select * from tblVersion');
$recs = $res->fetchAll(PDO::FETCH_ASSOC);
if(!empty($recs)) {
	$rec = $recs[0];
	if($_GET['version'] > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
		if(file_exists('update-'.$_GET['version'].'/'.$sqlfile)) {
			$queries = file_get_contents('update-'.$_GET['version'].'/'.$sqlfile);
			$queries = explode(";", $queries);
			// execute queries
			if($queries) {
				echo "Updating database schema
";
				foreach($queries as $query) {
					$query = trim($query);
					if (!empty($query)) {
						echo $query."
";
						if(false === $db->exec($query)) {
							$e = $db->ErrorInfo();
							$errorMsg .= $e[2] . "
";
						}
					}
				}
			}
		} else {
			echo "SQL file for update missing!
";
		}
	} else {
		echo "Database schema already up to date.
";
	}
	if(!$errorMsg) {
		if(file_exists('update-'.$_GET['version'].'/update.php')) {
			echo "Running update script
";
			include('update-'.$_GET['version'].'/update.php');
		}
	} else {
		echo "Error Messages
";
		echo $errorMsg;
	}
	echo "Go back to installation and recheck.
";
} else {
	echo "Could not determine database schema version.
";
}
$db = null;
// just remove info for web page installation
$settings->_printDisclaimer = false;
$settings->_footNote = false;
// end of the page
		$this->contentContainerEnd();
		$this->contentEnd();
		$this->htmlEndPage();
	} /* }}} */
}