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; } }