searchConfigFilePath();
    // set $_configFilePath
    $this->_configFilePath = $configFilePath;
    // Load config file
		if (!defined("LETODMS_INSTALL")) {
			if(!file_exists($configFilePath)) {
				echo "You does not seem to have a valid configuration. Run the install tool first.";
				exit;
			}
		}
    $this->load($configFilePath);
		// files with one of the following endings will be converted with the
		// given commands for windows users
		$this->_convertFileTypes = array(".doc" => "cscript \"" . $this->_rootDir."op/convert_word.js\" {SOURCE} {TARGET}",
										 ".xls" => "cscript \"".$this->_rootDir."op/convert_excel.js\" {SOURCE} {TARGET}",
										 ".ppt" => "cscript \"".$this->_rootDir."op/convert_pp.js\" {SOURCE} {TARGET}");
		// uncomment the next line for linux users
		// $this->_convertFileTypes = array(".doc" => "mswordview -o {TARGET} {SOURCE}");
		if (!is_null($this->_smtpServer))
			ini_set("SMTP", $this->_smtpServer);
		if (!is_null($this->_smtpPort))
			ini_set("smtp_port", $this->_smtpPort);
		if (!is_null($this->_smtpSendFrom))
			ini_set("sendmail_from", $this->_smtpSendFrom);
		if (!is_null($this->_maxExecutionTime))
			ini_set("max_execution_time", $this->_maxExecutionTime);
	} /* }}} */
	/**
	 * Check if a variable has the string 'true', 'on', 'yes' or 'y'
	 * and returns true.
	 *
	 * @param string $var value
	 * @return true/false
	 */
	function boolVal($var) { /* {{{ */
		$var = strtolower(strval($var));
		switch ($var) {
			case 'true':
			case 'on':
			case 'yes':
			case 'y':
				$out = true;
				break;
			default:
				$out = false;
		}
		return $out;
	} /* }}} */
  /**
	 * set $_viewOnlineFileTypes
	 *
	 * @param string $stringValue string value
   *
	 */
  function setViewOnlineFileTypesFromString($stringValue) { /* {{{ */
    $this->_viewOnlineFileTypes = explode(";", $stringValue);
  } /* }}} */
  /**
	 * get $_viewOnlineFileTypes in a string value
	 *
	 * @return string value
   *
	 */
  function getViewOnlineFileTypesToString() { /* {{{ */
    return implode(";", $this->_viewOnlineFileTypes);
  } /* }}} */
  /**
	 * Load config file
	 *
	 * @param string $configFilePath config file path
   *
   * @return true/false
	 */
	function load($configFilePath) { /* {{{ */
    $xml = simplexml_load_string(file_get_contents($configFilePath));
    // XML Path: /configuration/site/display
    $node = $xml->xpath('/configuration/site/display');
    $tab = $node[0]->attributes();
    $this->_siteName = strval($tab["siteName"]);
    $this->_footNote = strval($tab["footNote"]);
    $this->_printDisclaimer = Settings::boolVal($tab["printDisclaimer"]);
    $this->_language = strval($tab["language"]);
    $this->_theme = strval($tab["theme"]);
    // XML Path: /configuration/site/edition
    $node = $xml->xpath('/configuration/site/edition');
    $tab = $node[0]->attributes();
    $this->_strictFormCheck = Settings::boolVal($tab["strictFormCheck"]);
    $this->setViewOnlineFileTypesFromString(strval($tab["viewOnlineFileTypes"]));
    $this->_enableConverting = Settings::boolVal($tab["enableConverting"]);
    $this->_enableEmail = Settings::boolVal($tab["enableEmail"]);
    $this->_enableUsersView = Settings::boolVal($tab["enableUsersView"]);
    $this->_enableFolderTree = Settings::boolVal($tab["enableFolderTree"]);
    $this->_enableFullSearch = Settings::boolVal($tab["enableFullSearch"]);
    $this->_expandFolderTree = intval($tab["expandFolderTree"]);
    // XML Path: /configuration/site/calendar
    $node = $xml->xpath('/configuration/site/calendar');
    $tab = $node[0]->attributes();
    $this->_enableCalendar = Settings::boolVal($tab["enableCalendar"]);
    $this->_calendarDefaultView = strval($tab["calendarDefaultView"]);
    $this->_firstDayOfWeek = intval($tab["firstDayOfWeek"]);
    // XML Path: /configuration/system/server
    $node = $xml->xpath('/configuration/system/server');
    $tab = $node[0]->attributes();
    $this->_rootDir = strval($tab["rootDir"]);
    $this->_httpRoot = strval($tab["httpRoot"]);
    $this->_contentDir = strval($tab["contentDir"]);
    $this->_stagingDir = strval($tab["stagingDir"]);
    $this->_luceneDir = strval($tab["luceneDir"]);
    $this->_logFileEnable = Settings::boolVal($tab["logFileEnable"]);
    $this->_logFileRotation = strval($tab["logFileRotation"]);
    $this->_partitionSize = strval($tab["partitionSize"]);
    // XML Path: /configuration/system/authentication
    $node = $xml->xpath('/configuration/system/authentication');
    $tab = $node[0]->attributes();
    $this->_enableGuestLogin = Settings::boolVal($tab["enableGuestLogin"]);
    $this->_restricted = Settings::boolVal($tab["restricted"]);
    $this->_enableUserImage = Settings::boolVal($tab["enableUserImage"]);
    $this->_disableSelfEdit = Settings::boolVal($tab["disableSelfEdit"]);
    // XML Path: /configuration/system/authentication/connectors/connector
    // attributs mandatories : type enable
    $node = $xml->xpath('/configuration/system/authentication/connectors/connector');
    $this->_usersConnectors = array();
    foreach($node as $connectorNode)
    {
      $typeConn = strval($connectorNode["type"]);
      $params = array();
      foreach($connectorNode->attributes() as $attKey => $attValue)
      {
        if ($attKey=="enable")
          $params[$attKey] = Settings::boolVal($attValue);
        else
          $params[$attKey] = strval($attValue);
      }
      $this->_usersConnectors[$typeConn] = $params;
      // manage old settings parameters
      if ($params['enable'] && ($typeConn == "ldap"))
      {
        $this->_ldapHost = strVal($connectorNode["host"]);
        $this->_ldapPort = intVal($connectorNode["port"]);
        $this->_ldapBaseDN = strVal($connectorNode["baseDN"]);
        $this->_ldapType = 0;
      }
      else if ($params['enable'] && ($typeConn == "AD"))
      {
        $this->_ldapHost = strVal($connectorNode["host"]);
        $this->_ldapPort = intVal($connectorNode["port"]);
        $this->_ldapBaseDN = strVal($connectorNode["baseDN"]);
        $this->_ldapType = 1;
        $this->_ldapAccountDomainName = strVal($connectorNode["accountDomainName"]);
      }
    }
    // XML Path: /configuration/system/database
    $node = $xml->xpath('/configuration/system/database');
    $tab = $node[0]->attributes();
    $this->_ADOdbPath = strval($tab["ADOdbPath"]);
    $this->_dbDriver = strval($tab["dbDriver"]);
    $this->_dbHostname = strval($tab["dbHostname"]);
    $this->_dbDatabase = strval($tab["dbDatabase"]);
    $this->_dbUser = strval($tab["dbUser"]);
    $this->_dbPass = strval($tab["dbPass"]);
    // XML Path: /configuration/system/smtp
    $node = $xml->xpath('/configuration/system/smtp');
    if (!empty($node))
    {
	    $tab = $node[0]->attributes();
	    // smtpServer
	    if (isset($tab["smtpServer"]))
	    	$this->_smtpServer = strval($tab["smtpServer"]);
	    else
	    	$this->_smtpServer = ini_get("SMTP");
	    // smtpPort
	    if (isset($tab["smtpPort"]))
	    	$this->_smtpPort = strval($tab["smtpPort"]);
	    else
	    	$this->_smtpPort = ini_get("smtp_port");
	    // smtpSendFrom
	    if (isset($tab["smtpSendFrom"]))
	    	$this->_smtpSendFrom = strval($tab["smtpSendFrom"]);
	    else
	    	$this->_smtpSendFrom = ini_get("sendmail_from");
    }
    // XML Path: /configuration/advanced/display
    $node = $xml->xpath('/configuration/advanced/display');
    $tab = $node[0]->attributes();
    $this->_siteDefaultPage = strval($tab["siteDefaultPage"]);
    $this->_rootFolderID = intval($tab["rootFolderID"]);
    $this->_titleDisplayHack = Settings::boolval($tab["titleDisplayHack"]);
    // XML Path: /configuration/advanced/authentication
    $node = $xml->xpath('/configuration/advanced/authentication');
    $tab = $node[0]->attributes();
    $this->_guestID = intval($tab["guestID"]);
    $this->_adminIP = strval($tab["adminIP"]);
    // XML Path: /configuration/advanced/edition
    $node = $xml->xpath('/configuration/advanced/edition');
    $tab = $node[0]->attributes();
    $this->_enableAdminRevApp = Settings::boolval($tab["enableAdminRevApp"]);
    $this->_versioningFileName = strval($tab["versioningFileName"]);
    // XML Path: /configuration/advanced/server
    $node = $xml->xpath('/configuration/advanced/server');
    $tab = $node[0]->attributes();
    $this->_coreDir = strval($tab["coreDir"]);
    $this->_contentOffsetDir = strval($tab["contentOffsetDir"]);
    $this->_maxDirID = intval($tab["maxDirID"]);
    $this->_updateNotifyTime = intval($tab["updateNotifyTime"]);
    if (isset($tab["maxExecutionTime"]))
    	$this->_maxExecutionTime = intval($tab["maxExecutionTime"]);
    else
    	$this->_maxExecutionTime = ini_get("max_execution_time");
  } /* }}} */
   /**
	 * set value for one attribut.
   * Create attribut if not exists.
	 *
	 * @param SimpleXMLElement $node node
	 * @param string $attributName attribut name
	 * @param string $attributValue attribut value
   *
   * @return true/false
	 */
  function setXMLAttributValue($node, $attributName, $attributValue) { /* {{{ */
    if (is_bool($attributValue)) {
      if ($attributValue)
        $attributValue = "true";
      else
        $attributValue = "false";
    }
    if (isset($node[$attributName])) {
      $node[$attributName] = $attributValue;
    } else {
      $node->addAttribute($attributName, $attributValue);
    }
  } /* }}} */
  /**
   * Get XML node, create it if not exists
   *
   * @param SimpleXMLElement $rootNode root node
   * @param string $parentNodeName parent node name
   * @param string $name name of node
   *
   * @return SimpleXMLElement
   */
  function getXMLNode($rootNode, $parentNodeName, $name) { /* {{{ */
		$node = $rootNode->xpath($parentNodeName . '/' . $name);
    if (empty($node)) {
    	$node = $xml->xpath($parentNodeName);
    	$node = $node[0]->addChild($name);
    } else {
    	$node = $node[0];
    }
    return $node;
  } /* }}} */
  /**
	 * Save config file
	 *
	 * @param string $configFilePath config file path
   *
   * @return true/false
	 */
	function save($configFilePath=NULL) { /* {{{ */
    if (is_null($configFilePath))
      $configFilePath = $this->_configFilePath;
    // Load
    $xml = simplexml_load_string(file_get_contents($configFilePath));
    $this->getXMLNode($xml, '/', 'configuration');
    // XML Path: /configuration/site/display
    $this->getXMLNode($xml, '/configuration', 'site');
    $node = $this->getXMLNode($xml, '/configuration/site', 'display');
    $this->setXMLAttributValue($node, "siteName", $this->_siteName);
    $this->setXMLAttributValue($node, "footNote", $this->_footNote);
    $this->setXMLAttributValue($node, "printDisclaimer", $this->_printDisclaimer);
    $this->setXMLAttributValue($node, "language", $this->_language);
    $this->setXMLAttributValue($node, "theme", $this->_theme);
    // XML Path: /configuration/site/edition
    $node = $this->getXMLNode($xml, '/configuration/site', 'edition');
    $this->setXMLAttributValue($node, "strictFormCheck", $this->_strictFormCheck);
    $this->setXMLAttributValue($node, "viewOnlineFileTypes", $this->getViewOnlineFileTypesToString());
    $this->setXMLAttributValue($node, "enableConverting", $this->_enableConverting);
    $this->setXMLAttributValue($node, "enableEmail", $this->_enableEmail);
    $this->setXMLAttributValue($node, "enableUsersView", $this->_enableUsersView);
    $this->setXMLAttributValue($node, "enableFolderTree", $this->_enableFolderTree);
    $this->setXMLAttributValue($node, "enableFullSearch", $this->_enableFullSearch);
    $this->setXMLAttributValue($node, "expandFolderTree", $this->_expandFolderTree);
    // XML Path: /configuration/site/calendar
    $node = $this->getXMLNode($xml, '/configuration/site', 'calendar');
    $this->setXMLAttributValue($node, "enableCalendar", $this->_enableCalendar);
    $this->setXMLAttributValue($node, "calendarDefaultView", $this->_calendarDefaultView);
    $this->setXMLAttributValue($node, "firstDayOfWeek", $this->_firstDayOfWeek);
    // XML Path: /configuration/system/server
    $this->getXMLNode($xml, '/configuration', 'system');
    $node = $this->getXMLNode($xml, '/configuration/system', 'server');
    $this->setXMLAttributValue($node, "rootDir", $this->_rootDir);
    $this->setXMLAttributValue($node, "httpRoot", $this->_httpRoot);
    $this->setXMLAttributValue($node, "contentDir", $this->_contentDir);
    $this->setXMLAttributValue($node, "stagingDir", $this->_stagingDir);
    $this->setXMLAttributValue($node, "luceneDir", $this->_luceneDir);
    $this->setXMLAttributValue($node, "logFileEnable", $this->_logFileEnable);
    $this->setXMLAttributValue($node, "logFileRotation", $this->_logFileRotation);
    $this->setXMLAttributValue($node, "partitionSize", $this->_partitionSize);
    // XML Path: /configuration/system/authentication
    $node = $this->getXMLNode($xml, '/configuration/system', 'authentication');
    $this->setXMLAttributValue($node, "enableGuestLogin", $this->_enableGuestLogin);
    $this->setXMLAttributValue($node, "restricted", $this->_restricted);
    $this->setXMLAttributValue($node, "enableUserImage", $this->_enableUserImage);
    $this->setXMLAttributValue($node, "disableSelfEdit", $this->_disableSelfEdit);
    // XML Path: /configuration/system/authentication/connectors
    foreach($this->_usersConnectors as $keyConn => $paramConn)
    {
      // search XML node
      $node = $xml->xpath('/configuration/system/authentication/connectors/connector[@type="'. $keyConn .'"]');
      // Just the first is configured
      if (isset($node))
      {
        if (count($node)>0)
        {
          $node = $node[0];
        }
        else
        {
          $nodeParent = $xml->xpath('/configuration/system/authentication/connectors');
          $node = $nodeParent[0]->addChild("connector");
        }
        foreach($paramConn as $key => $value)
        {
          $this->setXMLAttributValue($node, $key, $value);
        }
      } // isset($node)
    } // foreach
    // XML Path: /configuration/system/authentication/connectors
    // manage old settings parameters
    if (isset($this->_ldapHost) && (strlen($this->_ldapHost)>0))
    {
      if ($this->_ldapType == 1)
      {
        $node = $xml->xpath('/configuration/system/authentication/connectors/connector[@type="AD"]');
        $node = $node[0];
        $this->setXMLAttributValue($node, "accountDomainName", $this->_ldapAccountDomainName);
      }
      else
      {
        $node = $xml->xpath('/configuration/system/authentication/connectors/connector[@type="ldap"]');
        $node = $node[0];
      }
      $this->setXMLAttributValue($node, "host", $this->_ldapHost);
      $this->setXMLAttributValue($node, "port", $this->_ldapPort);
      $this->setXMLAttributValue($node, "baseDN", $this->_ldapBaseDN);
    }
    // XML Path: /configuration/system/database
    $node = $this->getXMLNode($xml, '/configuration/system', 'database');
    $this->setXMLAttributValue($node, "ADOdbPath", $this->_ADOdbPath);
    $this->setXMLAttributValue($node, "dbDriver", $this->_dbDriver);
    $this->setXMLAttributValue($node, "dbHostname", $this->_dbHostname);
    $this->setXMLAttributValue($node, "dbDatabase", $this->_dbDatabase);
    $this->setXMLAttributValue($node, "dbUser", $this->_dbUser);
    $this->setXMLAttributValue($node, "dbPass", $this->_dbPass);
    // XML Path: /configuration/system/smtp
    $node = $this->getXMLNode($xml, '/configuration/system', 'smtp');
    $this->setXMLAttributValue($node, "smtpServer", $this->_smtpServer);
    $this->setXMLAttributValue($node, "smtpPort", $this->_smtpPort);
    $this->setXMLAttributValue($node, "smtpSendFrom", $this->_smtpSendFrom);
    // XML Path: /configuration/advanced/display
    $this->getXMLNode($xml, '/configuration', 'advanced');
    $node = $this->getXMLNode($xml, '/configuration/advanced', 'display');
    $this->setXMLAttributValue($node, "siteDefaultPage", $this->_siteDefaultPage);
    $this->setXMLAttributValue($node, "rootFolderID", $this->_rootFolderID);
    $this->setXMLAttributValue($node, "titleDisplayHack", $this->_titleDisplayHack);
    // XML Path: /configuration/advanced/authentication
    $node = $this->getXMLNode($xml, '/configuration/advanced', 'authentication');
    $this->setXMLAttributValue($node, "guestID", $this->_guestID);
    $this->setXMLAttributValue($node, "adminIP", $this->_adminIP);
    // XML Path: /configuration/advanced/edition
    $node = $this->getXMLNode($xml, '/configuration/advanced', 'edition');
    $this->setXMLAttributValue($node, "enableAdminRevApp", $this->_enableAdminRevApp);
    $this->setXMLAttributValue($node, "versioningFileName", $this->_versioningFileName);
    // XML Path: /configuration/advanced/server
    $node = $this->getXMLNode($xml, '/configuration/advanced', 'server');
    $this->setXMLAttributValue($node, "coreDir", $this->_coreDir);
    $this->setXMLAttributValue($node, "contentOffsetDir", $this->_contentOffsetDir);
    $this->setXMLAttributValue($node, "maxDirID", $this->_maxDirID);
    $this->setXMLAttributValue($node, "updateNotifyTime", $this->_updateNotifyTime);
    $this->setXMLAttributValue($node, "maxExecutionTime", $this->_maxExecutionTime);
    // Save
    return $xml->asXML($configFilePath);
  } /* }}} */
  /**
   * search and return Config File Path
   * @return NULL|string Config File Path
   */
  function searchConfigFilePath() { /* {{{ */
  	$configFilePath = null;
		// Search config file
		$_tmp = dirname($_SERVER['SCRIPT_FILENAME']);
		if(is_link($_tmp))
		{
			$_arr = preg_split('/\//', $_tmp);
			array_pop($_arr);
		  $configFilePath = implode('/', $_arr)."/conf/settings.xml";
		}
		else
		{
			if (file_exists("../conf/settings.xml"))
		  	$configFilePath = "../conf/settings.xml";
		  else if (file_exists("conf/settings.xml"))
		  	$configFilePath = "conf/settings.xml";
		  else
		  {
		  	echo "Configuration file not found 
";
		  	echo "Please create conf/settings.xml file. You can use installation procedure or 'conf/settings.xml.template' file to help you";
		  	exit;
		  }
		}
  	return $configFilePath;
  } /* }}} */
  /**
   * Returns absolute path for configuration files respecting links
	 *
   * @return NULL|string config directory
   */
  function getConfigDir() { /* {{{ */
		$_tmp = dirname($_SERVER['SCRIPT_FILENAME']);
		$_arr = preg_split('/\//', $_tmp);
		array_pop($_arr);
	  $configDir = implode('/', $_arr)."/conf/";
		return $configDir;
  } /* }}} */
	/**
	 * get URL from current page
	 *
	 * @return string
	 */
	function curPageURL() { /* {{{ */
	  $pageURL = 'http';
	  if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {
	    $pageURL .= "s";
	  }
	  $pageURL .= "://";
	  if ($_SERVER["SERVER_PORT"] != "80") {
	    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
	  } else {
	    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	  }
	  return $pageURL;
	} /* }}} */
  /**
   * Searches a file in the include_path
   *
	 * @param string $file name of file to search
   * @return string path where file was found
   */
  function findInIncPath($file) { /* {{{ */
		$incarr = explode(':', ini_get('include_path'));
		$found = '';
		foreach($incarr as $path) {
			if(file_exists($path.'/'.$file)) {
				$found = $path;
			}
		}
		return $found;
	} /* }}} */
  /**
   * Check parameters
   *
   *  @return array
   */
  function check() { /* {{{ */
  	// suggestion rootdir
  	if (file_exists("../inc/inc.Settings.php"))
			$rootDir = realpath ("../inc/inc.Settings.php");
		else if (file_exists("inc/inc.Settings.php"))
			$rootDir = realpath ("inc/inc.Settings.php");
		else {
			echo "Fatal error : inc/inc.Settings.php not found";
			exit;
		}
		$rootDir = str_replace ("\\", "/" , $rootDir);
		$rootDir = str_replace ("inc/inc.Settings.php", "" , $rootDir);
		// result
		$result = array();
		// $this->_rootDir
		if (!file_exists($this->_rootDir ."inc/inc.Settings.php")) {
			$result["rootDir"] = array(
				"status" => "notfound",
			  "currentvalue" => $this->_rootDir,
				"suggestionvalue" => $rootDir
				);
		}
		// TODO
		// $this->_coreDir
		if($this->_coreDir) {
			if (!file_exists($this->_coreDir ."Core.php")) {
				$result["coreDir"] = array(
					"status" => "notfound",
					"currentvalue" => $this->_coreDir,
					"suggestionvalue" => $rootDir
					);
			}
		} else {
			$found = Settings::findInIncPath('LetoDMS/Core.php');
			if(!$found) {
				$result["coreDir"] = array(
					"status" => "notfound",
					"currentvalue" => $this->_coreDir,
					"suggestionvalue" => $rootDir
					);
			}
		}
		// $this->_httpRoot
		$tmp = $this->curPageURL();
		$tmp = str_replace ("install.php", "" , $tmp);
		if (strpos($tmp, $this->_httpRoot) === false) {
			$result["httpRoot"] = array(
				"status" => "notfound",
			  "currentvalue" => $this->_httpRoot,
				"suggestionvalue" => $tmp
				);
		}
		// $this->_contentDir
		if (!file_exists($this->_contentDir)) {
			if (file_exists($rootDir.'data/')) {
					$result["contentDir"] = array(
						"status" => "notfound",
					  "currentvalue" => $this->_contentDir,
						"suggestionvalue" => $rootDir . 'data/'
					);
			} else {
					$result["contentDir"] = array(
						"status" => "notfound",
					  "currentvalue" => $this->_contentDir,
						"suggestion" => "createdirectory"
					);
			}
		} else {
			$errorMsgPerms = null;
			// perms
			if (!mkdir($this->_contentDir.'/_CHECK_TEST_')) {
				$errorMsgPerms .= "Create folder - ";
			}
		  if (is_bool(file_put_contents($this->_contentDir.'/_CHECK_TEST_/_CHECK_TEST_', ""))) {
				$errorMsgPerms .= "Create file - ";
			}
		  if (!unlink ($this->_contentDir.'/_CHECK_TEST_/_CHECK_TEST_')) {
				$errorMsgPerms .= "Delete file - ";
			}
			if (!rmdir($this->_contentDir.'/_CHECK_TEST_')) {
				$errorMsgPerms .= "Delete folder";
			}
			if (!is_null($errorMsgPerms)) {
				$result["contentDir"] = array(
					"status" => "perms",
				  "currentvalue" => $this->_contentDir,
					"systemerror" => $errorMsgPerms
				);
			}
		}
		// $this->_stagingDir
		if (!file_exists($this->_stagingDir)) {
			$result["stagingDir"] = array(
				"status" => "notfound",
			  "currentvalue" => $this->_stagingDir,
				"suggestionvalue" => $this->_contentDir . 'staging/'
			);
		}
		// $this->_luceneDir
		if (!file_exists($this->_luceneDir)) {
			$result["luceneDir"] = array(
				"status" => "notfound",
			  "currentvalue" => $this->_luceneDir,
				"suggestionvalue" => $this->_contentDir . 'lucene/'
			);
		}
		// $this->_ADOdbPath
		$bCheckDB = true;
		if($this->_ADOdbPath) {
			if (!file_exists($this->_ADOdbPath."adodb/adodb.inc.php")) {
				$bCheckDB = false;
				if (file_exists($rootDir."adodb/adodb.inc.php")) {
					$result["ADOdbPath"] = array(
						"status" => "notfound",
						"currentvalue" => $this->_ADOdbPath,
						"suggestionvalue" => $rootDir
						);
				} else {
					$result["ADOdbPath"] = array(
						"status" => "notfound",
						"currentvalue" => $this->_ADOdbPath,
						"suggestion" => "installADOdb"
						);
				}
			}
		} else {
			$found = Settings::findInIncPath('adodb/adodb.inc.php');
			if(!$found) {
				$bCheckDB = false;
				$result["ADOdbPath"] = array(
					"status" => "notfound",
				  "currentvalue" => $this->_ADOdbPath,
					"suggestion" => "installADOdb"
					);
			}
		}
		// database
		if ($bCheckDB) {
		  try {
		    include $this->_ADOdbPath."adodb/adodb.inc.php";
		    $connTmp = ADONewConnection($this->_dbDriver);
		    if (!$connTmp) {
		    	$result["dbDriver"] = array(
						"status" => "notfound",
					  "currentvalue" => $this->_dbDriver,
						"suggestionvalue" => "mysql"
					);
		    } else {
		      $connTmp->Connect($this->_dbHostname, $this->_dbUser, $this->_dbPass, $this->_dbDatabase);
		      if (!$connTmp->IsConnected())
		      {
		      	$result["dbDatabase"] = array(
							"status" => "error",
					  	"currentvalue" => '[host, user, database] ->  [' . $this->_dbHostname . ',' . $this->_dbUser . ',' . $this->_dbDatabase .']',
							"systemerror" => $connTmp->ErrorMsg()
							);
		      }
		      $connTmp->Disconnect();
		    }
		  } catch(Exception $e) {
		  	$result["dbDatabase"] = array(
					"status" => "error",
					"currentvalue" => '[host, user, database] ->  [' . $settings->_dbHostname . ',' . $settings->_dbUser . ',' . $settings->_dbDatabase .']',
					"systemerror" => $e->getMessage()
				);
		  }
		}
		return $result;
  } /* }}} */
  /**
   * Check system configuration
   *
   *  @return array
   *
   */
  function checkSystem() { /* {{{ */
		// result
		$result = array();
		// Check Apache configuration
		if (function_exists("apache_get_version")) {
  		$loaded_extensions = apache_get_modules();
  		if (!in_array("mod_rewrite", $loaded_extensions)) {
  			$result["apache_mod_rewrite"] = array(
					"status" => "notfound",
					"suggestion" => "activate_module"
				);
  		}
		}
		// Check PHP configuration
		$loaded_extensions = get_loaded_extensions();
		// gd2
		if (!in_array("gd", $loaded_extensions)) {
  		$result["php_gd2"] = array(
				"status" => "notfound",
				"suggestion" => "activate_php_extension"
			);
  	}
    // mbstring
		if (!in_array("mbstring", $loaded_extensions)) {
  		$result["php_mbstring"] = array(
				"status" => "notfound",
				"suggestion" => "activate_php_extension"
			);
  	}
    // database
		if (!in_array($this->_dbDriver, $loaded_extensions)) {
  		$result["php_dbDriver"] = array(
				"status" => "notfound",
  			"currentvalue" => $this->_dbDriver,
				"suggestion" => "activate_php_extension"
			);
  	}
    return $result;
  } /* }}} */
} /* }}} */
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
$settings = new Settings();
// ----------------------------
// Update previous version <3.0
// ----------------------------
if (isset($settingsOLD)) {
  $class_vars = get_class_vars(get_class($settingsOLD));
  foreach ($class_vars as $name => $value) {
    if (property_exists ("Settings", $name))
      $settings->$name = $value;
  }
  $settings->save();
  echo "Update finish, you must delete " . realpath("../inc/inc.Settings.old.php") . " file";
  exit;
}
?>