aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/RecentFavoriteTable.php
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-07-27 10:05:23 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-07-27 10:05:23 +0200
commit5bf66662a9bdd62c5bccab15e607cd95cfb8fcab (patch)
tree39a1a4629749056191c05dfd899f931701b7acf3 /srcs/phpmyadmin/libraries/classes/RecentFavoriteTable.php
parent5afd237bbd22028b85532b8c0b3fcead49a00764 (diff)
downloadft_server-5bf66662a9bdd62c5bccab15e607cd95cfb8fcab.tar.gz
ft_server-5bf66662a9bdd62c5bccab15e607cd95cfb8fcab.tar.bz2
ft_server-5bf66662a9bdd62c5bccab15e607cd95cfb8fcab.zip
Removed wordpress and phpmyadmin, my server doesn't handle it well and it brings shame on my famillyHEADmaster
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/RecentFavoriteTable.php')
-rw-r--r--srcs/phpmyadmin/libraries/classes/RecentFavoriteTable.php405
1 files changed, 0 insertions, 405 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/RecentFavoriteTable.php b/srcs/phpmyadmin/libraries/classes/RecentFavoriteTable.php
deleted file mode 100644
index 4976b8d..0000000
--- a/srcs/phpmyadmin/libraries/classes/RecentFavoriteTable.php
+++ /dev/null
@@ -1,405 +0,0 @@
-<?php
-/* vim: set expandtab sw=4 ts=4 sts=4: */
-/**
- * Recent and Favorite table list handling
- *
- * @package PhpMyAdmin
- */
-declare(strict_types=1);
-
-namespace PhpMyAdmin;
-
-/**
- * Handles the recently used and favorite tables.
- *
- * @TODO Change the release version in table pma_recent
- * (#recent in documentation)
- *
- * @package PhpMyAdmin
- */
-class RecentFavoriteTable
-{
- /**
- * Reference to session variable containing recently used or favorite tables.
- *
- * @access private
- * @var array
- */
- private $_tables;
-
- /**
- * Defines type of action, Favorite or Recent table.
- *
- * @access private
- * @var string
- */
- private $_tableType;
-
- /**
- * RecentFavoriteTable instances.
- *
- * @access private
- * @var array
- */
- private static $_instances = [];
-
- /**
- * @var Relation
- */
- private $relation;
-
- /**
- * Creates a new instance of RecentFavoriteTable
- *
- * @param string $type the table type
- *
- * @access private
- */
- private function __construct($type)
- {
- $this->relation = new Relation($GLOBALS['dbi']);
- $this->_tableType = $type;
- $server_id = $GLOBALS['server'];
- if (! isset($_SESSION['tmpval'][$this->_tableType . 'Tables'][$server_id])
- ) {
- $_SESSION['tmpval'][$this->_tableType . 'Tables'][$server_id]
- = $this->_getPmaTable() ? $this->getFromDb() : [];
- }
- $this->_tables
- =& $_SESSION['tmpval'][$this->_tableType . 'Tables'][$server_id];
- }
-
- /**
- * Returns class instance.
- *
- * @param string $type the table type
- *
- * @return RecentFavoriteTable
- */
- public static function getInstance($type)
- {
- if (! array_key_exists($type, self::$_instances)) {
- self::$_instances[$type] = new RecentFavoriteTable($type);
- }
- return self::$_instances[$type];
- }
-
- /**
- * Returns the recent/favorite tables array
- *
- * @return array
- */
- public function getTables()
- {
- return $this->_tables;
- }
-
- /**
- * Returns recently used tables or favorite from phpMyAdmin database.
- *
- * @return array
- */
- public function getFromDb()
- {
- // Read from phpMyAdmin database, if recent tables is not in session
- $sql_query
- = " SELECT `tables` FROM " . $this->_getPmaTable() .
- " WHERE `username` = '" . $GLOBALS['dbi']->escapeString($GLOBALS['cfg']['Server']['user']) . "'";
-
- $return = [];
- $result = $this->relation->queryAsControlUser($sql_query, false);
- if ($result) {
- $row = $GLOBALS['dbi']->fetchArray($result);
- if (isset($row[0])) {
- $return = json_decode($row[0], true);
- }
- }
- return $return;
- }
-
- /**
- * Save recent/favorite tables into phpMyAdmin database.
- *
- * @return true|Message
- */
- public function saveToDb()
- {
- $username = $GLOBALS['cfg']['Server']['user'];
- $sql_query
- = " REPLACE INTO " . $this->_getPmaTable() . " (`username`, `tables`)" .
- " VALUES ('" . $GLOBALS['dbi']->escapeString($username) . "', '"
- . $GLOBALS['dbi']->escapeString(
- json_encode($this->_tables)
- ) . "')";
-
- $success = $GLOBALS['dbi']->tryQuery($sql_query, DatabaseInterface::CONNECT_CONTROL);
-
- if (! $success) {
- $error_msg = '';
- switch ($this->_tableType) {
- case 'recent':
- $error_msg = __('Could not save recent table!');
- break;
-
- case 'favorite':
- $error_msg = __('Could not save favorite table!');
- break;
- }
- $message = Message::error($error_msg);
- $message->addMessage(
- Message::rawError(
- $GLOBALS['dbi']->getError(DatabaseInterface::CONNECT_CONTROL)
- ),
- '<br><br>'
- );
- return $message;
- }
- return true;
- }
-
- /**
- * Trim recent.favorite table according to the
- * NumRecentTables/NumFavoriteTables configuration.
- *
- * @return boolean True if trimming occurred
- */
- public function trim()
- {
- $max = max(
- $GLOBALS['cfg']['Num' . ucfirst($this->_tableType) . 'Tables'],
- 0
- );
- $trimming_occurred = count($this->_tables) > $max;
- while (count($this->_tables) > $max) {
- array_pop($this->_tables);
- }
- return $trimming_occurred;
- }
-
- /**
- * Return HTML ul.
- *
- * @return string
- */
- public function getHtmlList()
- {
- $html = '';
- if (count($this->_tables)) {
- if ($this->_tableType == 'recent') {
- foreach ($this->_tables as $table) {
- $html .= '<li class="warp_link">';
- $recent_params = [
- 'db' => $table['db'],
- 'table' => $table['table'],
- ];
- $recent_url = 'tbl_recent_favorite.php'
- . Url::getCommon($recent_params);
- $html .= '<a href="' . $recent_url . '">`'
- . htmlspecialchars($table['db']) . '`.`'
- . htmlspecialchars($table['table']) . '`</a>';
- $html .= '</li>';
- }
- } else {
- foreach ($this->_tables as $table) {
- $html .= '<li class="warp_link">';
-
- $html .= '<a class="ajax favorite_table_anchor" ';
- $fav_params = [
- 'db' => $table['db'],
- 'ajax_request' => true,
- 'favorite_table' => $table['table'],
- 'remove_favorite' => true,
- ];
- $fav_rm_url = 'db_structure.php'
- . Url::getCommon($fav_params);
- $html .= 'href="' . $fav_rm_url
- . '" title="' . __("Remove from Favorites")
- . '" data-favtargetn="'
- . md5($table['db'] . "." . $table['table'])
- . '" >'
- . Util::getIcon('b_favorite')
- . '</a>';
-
- $fav_params = [
- 'db' => $table['db'],
- 'table' => $table['table'],
- ];
- $table_url = 'tbl_recent_favorite.php'
- . Url::getCommon($fav_params);
- $html .= '<a href="' . $table_url . '">`'
- . htmlspecialchars($table['db']) . '`.`'
- . htmlspecialchars($table['table']) . '`</a>';
- $html .= '</li>';
- }
- }
- } else {
- $html .= '<li class="warp_link">'
- . ($this->_tableType == 'recent'
- ? __('There are no recent tables.')
- : __('There are no favorite tables.'))
- . '</li>';
- }
- return $html;
- }
-
- /**
- * Return HTML.
- *
- * @return string
- */
- public function getHtml()
- {
- $html = '<div class="drop_list">';
- if ($this->_tableType == 'recent') {
- $html .= '<button title="' . __('Recent tables')
- . '" class="drop_button btn">'
- . __('Recent') . '</button><ul id="pma_recent_list">';
- } else {
- $html .= '<button title="' . __('Favorite tables')
- . '" class="drop_button btn">'
- . __('Favorites') . '</button><ul id="pma_favorite_list">';
- }
- $html .= $this->getHtmlList();
- $html .= '</ul></div>';
- return $html;
- }
-
- /**
- * Add recently used or favorite tables.
- *
- * @param string $db database name where the table is located
- * @param string $table table name
- *
- * @return true|Message True if success, Message if not
- */
- public function add($db, $table)
- {
- // If table does not exist, do not add._getPmaTable()
- if (! $GLOBALS['dbi']->getColumns($db, $table)) {
- return true;
- }
-
- $table_arr = [];
- $table_arr['db'] = $db;
- $table_arr['table'] = $table;
-
- // add only if this is new table
- if (! isset($this->_tables[0]) || $this->_tables[0] != $table_arr) {
- array_unshift($this->_tables, $table_arr);
- $this->_tables = array_merge(array_unique($this->_tables, SORT_REGULAR));
- $this->trim();
- if ($this->_getPmaTable()) {
- return $this->saveToDb();
- }
- }
- return true;
- }
-
- /**
- * Removes recent/favorite tables that don't exist.
- *
- * @param string $db database
- * @param string $table table
- *
- * @return boolean|Message True if invalid and removed, False if not invalid,
- * Message if error while removing
- */
- public function removeIfInvalid($db, $table)
- {
- foreach ($this->_tables as $tbl) {
- if ($tbl['db'] == $db && $tbl['table'] == $table) {
- // TODO Figure out a better way to find the existence of a table
- if (! $GLOBALS['dbi']->getColumns($tbl['db'], $tbl['table'])) {
- return $this->remove($tbl['db'], $tbl['table']);
- }
- }
- }
- return false;
- }
-
- /**
- * Remove favorite tables.
- *
- * @param string $db database name where the table is located
- * @param string $table table name
- *
- * @return true|Message True if success, Message if not
- */
- public function remove($db, $table)
- {
- foreach ($this->_tables as $key => $value) {
- if ($value['db'] == $db && $value['table'] == $table) {
- unset($this->_tables[$key]);
- }
- }
- if ($this->_getPmaTable()) {
- return $this->saveToDb();
- }
- return true;
- }
-
- /**
- * Generate Html for sync Favorite tables anchor. (from localStorage to pmadb)
- *
- * @return string
- */
- public function getHtmlSyncFavoriteTables()
- {
- $retval = '';
- $server_id = $GLOBALS['server'];
- if ($server_id == 0) {
- return '';
- }
- $cfgRelation = $this->relation->getRelationsParam();
- // Not to show this once list is synchronized.
- if ($cfgRelation['favoritework'] && ! isset($_SESSION['tmpval']['favorites_synced'][$server_id])) {
- $params = [
- 'ajax_request' => true,
- 'favorite_table' => true,
- 'sync_favorite_tables' => true,
- ];
- $url = 'db_structure.php' . Url::getCommon($params);
- $retval = '<a class="hide" id="sync_favorite_tables"';
- $retval .= ' href="' . $url . '"></a>';
- }
- return $retval;
- }
-
- /**
- * Generate Html to update recent tables.
- *
- * @return string html
- */
- public static function getHtmlUpdateRecentTables()
- {
- $params = [
- 'ajax_request' => true,
- 'recent_table' => true,
- ];
- $url = 'index.php' . Url::getCommon($params);
- $retval = '<a class="hide" id="update_recent_tables"';
- $retval .= ' href="' . $url . '"></a>';
- return $retval;
- }
-
- /**
- * Return the name of the configuration storage table
- *
- * @return string|null pma table name
- */
- private function _getPmaTable(): ?string
- {
- $cfgRelation = $this->relation->getRelationsParam();
- if (! $cfgRelation['recentwork']) {
- return null;
- }
-
- if (! empty($cfgRelation['db'])
- && ! empty($cfgRelation[$this->_tableType])
- ) {
- return Util::backquote($cfgRelation['db']) . "."
- . Util::backquote($cfgRelation[$this->_tableType]);
- }
- return null;
- }
-}