From 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 9 Jan 2020 10:55:03 +0100 Subject: phpmyadmin working --- srcs/phpmyadmin/db_qbe.php | 192 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 srcs/phpmyadmin/db_qbe.php (limited to 'srcs/phpmyadmin/db_qbe.php') diff --git a/srcs/phpmyadmin/db_qbe.php b/srcs/phpmyadmin/db_qbe.php new file mode 100644 index 0000000..0ebae09 --- /dev/null +++ b/srcs/phpmyadmin/db_qbe.php @@ -0,0 +1,192 @@ +get(Response::class); + +/** @var DatabaseInterface $dbi */ +$dbi = $containerBuilder->get(DatabaseInterface::class); + +/** @var Relation $relation */ +$relation = $containerBuilder->get('relation'); +/** @var Template $template */ +$template = $containerBuilder->get('template'); + +// Gets the relation settings +$cfgRelation = $relation->getRelationsParam(); + +$savedSearchList = []; +$savedSearch = null; +$currentSearchId = null; +if ($cfgRelation['savedsearcheswork']) { + $header = $response->getHeader(); + $scripts = $header->getScripts(); + $scripts->addFile('database/qbe.js'); + + //Get saved search list. + $savedSearch = new SavedSearches($GLOBALS, $relation); + $savedSearch->setUsername($GLOBALS['cfg']['Server']['user']) + ->setDbname($db); + + if (! empty($_POST['searchId'])) { + $savedSearch->setId($_POST['searchId']); + } + + //Action field is sent. + if (isset($_POST['action'])) { + $savedSearch->setSearchName($_POST['searchName']); + if ('create' === $_POST['action']) { + $saveResult = $savedSearch->setId(null) + ->setCriterias($_POST) + ->save(); + } elseif ('update' === $_POST['action']) { + $saveResult = $savedSearch->setCriterias($_POST) + ->save(); + } elseif ('delete' === $_POST['action']) { + $deleteResult = $savedSearch->delete(); + //After deletion, reset search. + $savedSearch = new SavedSearches($GLOBALS, $relation); + $savedSearch->setUsername($GLOBALS['cfg']['Server']['user']) + ->setDbname($db); + $_POST = []; + } elseif ('load' === $_POST['action']) { + if (empty($_POST['searchId'])) { + //when not loading a search, reset the object. + $savedSearch = new SavedSearches($GLOBALS, $relation); + $savedSearch->setUsername($GLOBALS['cfg']['Server']['user']) + ->setDbname($db); + $_POST = []; + } else { + $loadResult = $savedSearch->load(); + } + } + //Else, it's an "update query" + } + + $savedSearchList = $savedSearch->getList(); + $currentSearchId = $savedSearch->getId(); +} + +/** + * A query has been submitted -> (maybe) execute it + */ +$message_to_display = false; +if (isset($_POST['submit_sql']) && ! empty($sql_query)) { + if (0 !== stripos($sql_query, "SELECT")) { + $message_to_display = true; + } else { + $goto = 'db_sql.php'; + $sql = new Sql(); + $sql->executeQueryAndSendQueryResponse( + null, // analyzed_sql_results + false, // is_gotofile + $_POST['db'], // db + null, // table + false, // find_real_end + null, // sql_query_for_bookmark + null, // extra_data + null, // message_to_show + null, // message + null, // sql_data + $goto, // goto + $pmaThemeImage, // pmaThemeImage + null, // disp_query + null, // disp_message + null, // query_type + $sql_query, // sql_query + null, // selectedTables + null // complete_query + ); + } +} + +$sub_part = '_qbe'; +require ROOT_PATH . 'libraries/db_common.inc.php'; +$url_query .= '&goto=db_qbe.php'; +$url_params['goto'] = 'db_qbe.php'; + +list( + $tables, + $num_tables, + $total_num_tables, + $sub_part, + $is_show_stats, + $db_is_system_schema, + $tooltip_truename, + $tooltip_aliasname, + $pos +) = Util::getDbInfo($db, $sub_part === null ? '' : $sub_part); + +if ($message_to_display) { + Message::error( + __('You have to choose at least one column to display!') + ) + ->display(); +} +unset($message_to_display); + +// create new qbe search instance +$db_qbe = new Qbe($relation, $template, $dbi, $db, $savedSearchList, $savedSearch); + +$secondaryTabs = [ + 'multi' => [ + 'link' => 'db_multi_table_query.php', + 'text' => __('Multi-table query'), + ], + 'qbe' => [ + 'link' => 'db_qbe.php', + 'text' => __('Query by example'), + ], +]; +$response->addHTML( + $template->render('secondary_tabs', [ + 'url_params' => $url_params, + 'sub_tabs' => $secondaryTabs, + ]) +); + +$url = 'db_designer.php' . Url::getCommon( + array_merge( + $url_params, + ['query' => 1] + ) +); +$response->addHTML( + Message::notice( + sprintf( + __('Switch to %svisual builder%s'), + '', + '' + ) + ) +); + +/** + * Displays the Query by example form + */ +$response->addHTML($db_qbe->getSelectionForm()); -- cgit