aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/Database/MultiTableQuery.php
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Database/MultiTableQuery.php
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Database/MultiTableQuery.php')
-rw-r--r--srcs/phpmyadmin/libraries/classes/Database/MultiTableQuery.php145
1 files changed, 145 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Database/MultiTableQuery.php b/srcs/phpmyadmin/libraries/classes/Database/MultiTableQuery.php
new file mode 100644
index 0000000..b9fa888
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Database/MultiTableQuery.php
@@ -0,0 +1,145 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Handles DB Multi-table query
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Database;
+
+use PhpMyAdmin\DatabaseInterface;
+use PhpMyAdmin\ParseAnalyze;
+use PhpMyAdmin\Sql;
+use PhpMyAdmin\Template;
+
+/**
+ * Class to handle database Multi-table querying
+ *
+ * @package PhpMyAdmin
+ */
+class MultiTableQuery
+{
+ /**
+ * DatabaseInterface instance
+ *
+ * @access private
+ * @var DatabaseInterface
+ */
+ private $dbi;
+
+ /**
+ * Database name
+ *
+ * @access private
+ * @var string
+ */
+ private $db;
+
+ /**
+ * Default number of columns
+ *
+ * @access private
+ * @var integer
+ */
+ private $defaultNoOfColumns;
+
+ /**
+ * Table names
+ *
+ * @access private
+ * @var array
+ */
+ private $tables;
+
+ /**
+ * @var Template
+ */
+ public $template;
+
+ /**
+ * Constructor
+ *
+ * @param DatabaseInterface $dbi DatabaseInterface instance
+ * @param Template $template Template instance
+ * @param string $dbName Database name
+ * @param integer $defaultNoOfColumns Default number of columns
+ */
+ public function __construct(
+ DatabaseInterface $dbi,
+ Template $template,
+ $dbName,
+ $defaultNoOfColumns = 3
+ ) {
+ $this->dbi = $dbi;
+ $this->db = $dbName;
+ $this->defaultNoOfColumns = $defaultNoOfColumns;
+
+ $this->template = $template;
+
+ $this->tables = $this->dbi->getTables($this->db);
+ }
+
+ /**
+ * Get Multi-Table query page HTML
+ *
+ * @return string Multi-Table query page HTML
+ */
+ public function getFormHtml()
+ {
+ $tables = [];
+ foreach ($this->tables as $table) {
+ $tables[$table]['hash'] = md5($table);
+ $tables[$table]['columns'] = array_keys(
+ $this->dbi->getColumns($this->db, $table)
+ );
+ }
+ return $this->template->render('database/multi_table_query/form', [
+ 'db' => $this->db,
+ 'tables' => $tables,
+ 'default_no_of_columns' => $this->defaultNoOfColumns,
+ ]);
+ }
+
+ /**
+ * Displays multi-table query results
+ *
+ * @param string $sqlQuery The query to parse
+ * @param string $db The current database
+ * @param string $pmaThemeImage Uri of the PMA theme image
+ *
+ * @return void
+ */
+ public static function displayResults($sqlQuery, $db, $pmaThemeImage)
+ {
+ list(
+ $analyzedSqlResults,
+ $db,
+ ) = ParseAnalyze::sqlQuery($sqlQuery, $db);
+
+ extract($analyzedSqlResults);
+ $goto = 'db_multi_table_query.php';
+ $sql = new Sql();
+ $sql->executeQueryAndSendQueryResponse(
+ null, // analyzed_sql_results
+ false, // is_gotofile
+ $db, // db
+ null, // table
+ null, // find_real_end
+ null, // sql_query_for_bookmark - see below
+ 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
+ $sqlQuery, // sql_query
+ null, // selectedTables
+ null // complete_query
+ );
+ }
+}