public function registerRoute()
{
$this->app->get('/', function ($req, $res) {
$res->getBody()->write("Please <a href=\"\\install-system\">install</a> system");
})->setName('home');
$this->app->get('/install-system', function ($req, $res, $args) {
return $this->view->render($res, 'admin\\install.twig', ['step' => 1, 'view' => '1']);
})->setName('installer');
$parentClass = $this;
$this->app->post('/install-system', function ($req, $res, $args) use($parentClass) {
$request = new RequestParams($req);
$_allParams = $request->all();
unset($_allParams['step']);
$allParams = array();
if ('finish' == $request->post('step')) {
$parentClass->installSystem($_allParams);
return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('home'));
}
foreach ($_allParams as $k => $item) {
if (is_array($item)) {
foreach ($item as $_k => $_v) {
$allParams[$k . "[{$_k}]"] = $_v;
}
} else {
$allParams[$k] = $item;
}
}
return $this->view->render($res, 'admin\\install.twig', ['prevData' => $allParams, 'step' => $request->post("step"), 'view' => $request->post("step")]);
})->setName('installer-step');
$this->app->post('/install-system/checkdb', function ($req, $res, $args) {
$request = new RequestParams($req);
if ($request->isXhr()) {
$checkdb = false;
$config = [];
if ($request->post('dbType') == 'mysql') {
$config = ['driver' => 'mysql', 'host' => $request->post('dbHost'), 'database' => $request->post('dbName'), 'username' => $request->post('dbLogin'), 'password' => $request->post('dbPassword'), 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => ''];
$checkdb = true;
} elseif ($request->post('dbType') == 'sqlite') {
if (!$request->post('dbFileName')) {
$data = array('type' => 'error', 'msg' => "Please insert DB name");
return $res->withJson($data);
}
$file = RESOURCE_PATH . 'database/' . strtolower($request->post('dbFileName')) . '.sqlite';
if (file_exists($file)) {
$data = array('type' => 'error', 'msg' => "File exist, please insert other DB name");
} else {
$data = array('type' => 'success', 'msg' => "Step the next stage");
$checkdb = false;
}
$config = ['driver' => 'sqlite', 'database' => $file, 'prefix' => ''];
}
if ($checkdb) {
$capsule = new Capsule();
$capsule->addConnection($config);
$capsule->setAsGlobal();
$capsule->bootEloquent();
try {
$capsule->schema()->hasTable("options");
$data = array('type' => 'success', 'msg' => "Step the next stage");
} catch (\PDOException $e) {
$data = array('type' => 'error', 'msg' => "DB not exist");
}
}
return $res->withJson($data);
} else {
$data = array('type' => 'error', 'msg' => "Request type error");
return $res->withJson($data);
}
});
}