'Europe/Berlin', 'dbhost' => '127.0.01', 'dbuser' => 'user', 'dbprefix' => 'bib', 'dbname' => '', 'dbpassword' => '', 'pathabsolute' => '' ); if(isset($_POST['submitForm'])) { $fCheck = false; foreach ($data as $k=>$v) { if(isset($_POST[$k])) { $_t = trim($_POST[$k]); if(!empty($_t)) { $data[$k] = $_t; $fCheck = true; } else { $fCheck = false; break; } } else { $fCheck = false; break; } } if(!empty($fCheck)) { $configFileSkeletonString = file_get_contents($configFileSkeleton); $configFileString = str_replace('~timezone~',$data['timezone'],$configFileSkeletonString); $configFileString = str_replace('~dbhost~',$data['dbhost'],$configFileString); $configFileString = str_replace('~dbuser~',$data['dbuser'],$configFileString); $configFileString = str_replace('~dbprefix~',$data['dbprefix'],$configFileString); $configFileString = str_replace('~dbname~',$data['dbname'],$configFileString); $configFileString = str_replace('~dbpassword~',$data['dbpassword'],$configFileString); $configFileString = str_replace('~pathabsolute~',$data['pathabsolute'],$configFileString); if(file_put_contents($configFile, $configFileString)) { copy($configBrainz.'.default', $configBrainz); copy($configImdb.'.default', $configImdb); header('Location: index.php'); exit(); } else { $TemplateData['result']['status'] = 'ERROR'; $TemplateData['result']['message'] = 'Config file could not be written. Please check your permission'; } } else { $TemplateData['result']['status'] = 'ERROR'; $TemplateData['result']['message'] = 'Please provide input for all the fields'; } } $TemplateData['bodyForm'] = stepConfigForm($data); break; case 'database': $TemplateData['headline'] = '2. Database'; $TemplateData['body'] = 'Check and setup of default tables'; $TemplateData['bodyForm'] = ''; $TemplateData['footer'] = 'Next - Additional tools'; $TemplateData['result'] = array(); if(isset($_POST['submitForm'])) { if(isset($_POST['resetConfig']) && !empty($_POST['resetConfig'])) { unlink($configFile); header('Location: index.php'); } } require_once $configFile; $DB = new mysqli(DB_HOST, DB_USERNAME,DB_PASSWORD, DB_NAME); $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT; $_conCheck = false; if ($DB->connect_errno) { $TemplateData['result']['status'] = 'ERROR'; $TemplateData['result']['message'] = 'Can not connect to database: '.$DB->connect_error; $TemplateData['bodyForm'] = stepDBRest(); } else { $_conCheck = true; $DB->set_charset("utf8mb4"); $DB->query("SET collation_connection = 'utf8mb4_unicode_ci'"); } if(!empty($_conCheck)) { try { $query = $DB->query("SELECT * FROM information_schema.tables WHERE table_schema = '".DB_NAME."' AND table_name = '".DB_PREFIX."_sys_fields' LIMIT 1"); if($query !== false && $query->num_rows < 1) { $TemplateData['bodyForm'] = stepDBCreateTables(); } else { $TemplateData['result']['status'] = 'ERROR'; $TemplateData['result']['message'] = 'Existing DB Tables found! Setup already complete'; clearSetup(); } } catch (Exception $e) { $TemplateData['result']['status'] = 'ERROR'; $TemplateData['result']['message'] = 'Can not run query: '.$e->getMessage(); } } if(isset($_POST['submitForm'])) { if(isset($_POST['createTables']) && !empty($_POST['createTables'])) { $sqlSkeleton = file_get_contents('./bibliotheca.sql.default'); file_put_contents('./bibliotheca.sql', str_replace('#REPLACEME#',DB_PREFIX,$sqlSkeleton)); try { $sqlScript = file('./bibliotheca.sql'); $queryStr = ''; foreach ($sqlScript as $line) { $startWith = substr(trim($line), 0 ,2); $endWith = substr(trim($line), -1 ,1); if (empty($line) || $startWith == '--' || $startWith == '/*' || $startWith == '//') { continue; } $queryStr .= $line; if ($endWith == ';') { $DB->query($queryStr); $queryStr = ''; } } header("Location: index.php?done=1"); } catch (Exception $e) { $TemplateData['result']['status'] = 'ERROR'; $TemplateData['result']['message'] = 'Can not create needed tables: '.$e->getMessage(); $TemplateData['body'] = 'Please check your DB Settings, files and start over. To restart the setup remove all non .default config files and upload the /setup folder again.'; } } } break; case 'ready': default: $TemplateData['headline'] = 'Complete'; $TemplateData['body'] = 'All done. This file is now gone. To restart the setup remove all non .default config files and upload the /setup folder gain.'; $TemplateData['bodyForm'] = ''; $TemplateData['footer'] = 'cya'; $TemplateData['result'] = array(); clearSetup(); } header('Content-type: text/html; charset=UTF-8'); ?> Setup - Bibliotheca

Result:

".$tz.""; } $absPath = getcwd(); $absPath = str_replace("setup", "", $absPath); return << Select your timezone

The absolute path to this installation on your webspace. Current {$absPath} should be the right one.
Make sure there is a / at the end

Database Hostname

Database User

Database Password for the given user

Database name

Database table prefix. Default is bib. A _ is added automatically.

RET; } /** * Database step * * @return string */ function stepDBRest(): string { return << Reset the config file to input the correct DB values:

RET; } /** * database step * * @return string */ function stepDBCreateTables(): string { return << Warning: Existing data can be lost if the config is wrong!
Create tables:

RET; } function clearSetup(): void { array_map('unlink', glob("../setup/*")); rmdir('../setup'); }