Modules\SystemInstaller\Module::registerRoute PHP Method

registerRoute() public method

public registerRoute ( )
    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);
            }
        });
    }