private function __construct()
 {
     $db_host = ConfigHelper::read('db.host');
     $db_name = ConfigHelper::read('db.basename');
     $db_user = ConfigHelper::read('db.user');
     $db_pass = ConfigHelper::read('db.password');
     $this->dbh = new mysqli($db_host, $db_user, $db_pass, $db_name);
     //set UTF8 as global encoding
     $this->dbh->set_charset("utf8");
 }
ConfigHelper::write('db.user', '');
ConfigHelper::write('db.password', '');
// LOGGING =================================
// enable logging on whole server. Log file under directory /log/log.log.
// it logs e.g. who logged in, who deleted assets, error messages, ...
ConfigHelper::write('log', TRUE);
// how long the logging should be kept on the server before the file gets deleted.
// e.g. 168 => 168/24 = 7 days.
ConfigHelper::write('log.hours', 168);
// DEBUG MODE =================================
// enable debug mode on whole server. See slim docs.
ConfigHelper::write('debug', TRUE);
// COMPRESSION =================================
// determine if serverside compression library zlib for gzip is enabled. Otherwise data usage can get large!
if (extension_loaded("zlib")) {
    ob_start("ob_gzhandler");
} else {
    $message = 'No zlib extension for HTTP compression installed on server.
    Please contact webhoster to install the zlib extension.
    PHPinfo can be found under www.example.com/api/info.php';
    echo $message;
    LogHelper::write($message);
}
/****************************************************************
B. DEVELOPMENT SETTINGS
 ****************************************************************/
// MOBILE SCOPE FOR MYSQL DB TABLES ==================
// relevant tables in mobile scope
$tables = array('assets', 'location', 'facilities', 'contacttype', 'contact', 'donors', 'agents', 'suppliers', 'manufactures', 'consumables', 'consumables_linked', 'employees', 'stock', 'department', 'essential_equipment', 'assetgenericname', 'assetutilization', 'assetstatus', 'assetcategory', 'intervention', 'request', 'request_st', 'warrantycontract', 'intervention_material', 'intervention_work', 'visit_type', 'failurcateg', 'failurecause');
ConfigHelper::write('db.mysql_tables', $tables);
<?php

require '../vendor/autoload.php';
require '../config.php';
//read version number from composer file
$composer = json_decode(file_get_contents(__DIR__ . '/../composer.json'));
// check if logging is enabled, if yes, activate the logwriter
$logEnabled = \lib\ConfigHelper::read('log');
if ($logEnabled) {
    $filename = '../log/log.log';
    $log = new \Slim\LogWriter(fopen($filename, 'a+'));
    // how long the file should be kept, deletes log file content if last access more than config.php::log.hours
    $hours = \lib\ConfigHelper::read('log.hours');
    if (time() - filectime($filename) > $hours * 3600) {
        unlink($filename);
    }
}
$debugEnabled = \lib\ConfigHelper::read('debug');
//instanciate new Slim App instance
$app = new \Slim\Slim(array('version' => $composer->version, 'debug' => $debugEnabled, 'log.enabled' => $logEnabled, 'log.level' => \Slim\Log::INFO, 'log.writer' => $log, 'templates.path' => '../templates/'));
//first authenticate any request with a Slim middleware
$app->add(new \app\AuthMiddleware());
require_once __DIR__ . '/../app/app.php';
$app->run();
 /**
  * Read relevant tables' meta information
  *
  * @param String $db_name DefaultDB of request's user
  * @return mixed Returns database content array or false on bad query
  */
 function readRelevantTablesMetaInformation($db_name)
 {
     $tables = ConfigHelper::read('db.mysql_tables');
     $finalArray = array();
     foreach ($tables as $table) {
         $query = 'SHOW COLUMNS FROM `' . $table . '` FROM `' . $db_name . '`';
         if ($result = $this->core->dbh->query($query)) {
             $rows = array();
             while ($row = $result->fetch_assoc()) {
                 $rows[] = $row;
             }
             $finalArray[$table] = $rows;
         }
     }
     if (!empty($finalArray)) {
         return $finalArray;
     } else {
         return false;
     }
 }