addScriptFiles(['makegrid.js', 'vendor/jquery/jquery.uitablefilter.js', 'sql.js']); $this->pageSettings->init('Sql'); $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addHTML($this->pageSettings->getHTML()); $this->checkParameters(['db', 'table']); $urlParams = ['db' => $GLOBALS['db'], 'table' => $GLOBALS['table']]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption($GLOBALS['cfg']['DefaultTabTable'], 'table'); $GLOBALS['errorUrl'] .= Url::getCommon($urlParams, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->hasDatabase($databaseName)) { if ($request->isAjax()) { $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); return; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); return; } $tableName = TableName::tryFrom($request->getParam('table')); if ($tableName === null || ! $this->dbTableExists->hasTable($databaseName, $tableName)) { if ($request->isAjax()) { $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); return; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); return; } /** * After a syntax error, we return to this script * with the typed query in the textarea. */ $GLOBALS['goto'] = Url::getFromRoute('/table/sql'); $GLOBALS['back'] = Url::getFromRoute('/table/sql'); $delimiter = $request->getParsedBodyParam('delimiter', ';'); $this->response->addHTML($this->sqlQueryForm->getHtml( $GLOBALS['db'], $GLOBALS['table'], $request->getQueryParam('sql_query', true), false, htmlspecialchars($delimiter), )); } }