_isEnabled = true; $this->_scripts = new Scripts(); $this->_isMinimal = false; $this->relation = new Relation(); } /** * Returns the message for demo server to error messages * * @return string */ private function _getDemoMessage() { $message = '' . __('phpMyAdmin Demo Server') . ': '; if (@file_exists('./revision-info.php')) { include './revision-info.php'; $message .= sprintf( __('Currently running Git revision %1$s from the %2$s branch.'), '' . htmlspecialchars($revision) . '', '' . htmlspecialchars($branch) . '' ); } else { $message .= __('Git information missing!'); } return Message::notice($message)->getDisplay(); } /** * Remove recursions and iterator objects from an object * * @param object|array &$object Object to clean * @param array $stack Stack used to keep track of recursion, * need not be passed for the first time * * @return object Reference passed object */ private static function _removeRecursion(&$object, array $stack = array()) { if ((is_object($object) || is_array($object)) && $object) { if ($object instanceof Traversable) { $object = "***ITERATOR***"; } elseif (!in_array($object, $stack, true)) { $stack[] = $object; foreach ($object as &$subobject) { self::_removeRecursion($subobject, $stack); } } else { $object = "***RECURSION***"; } } return $object; } /** * Renders the debug messages * * @return string */ public function getDebugMessage() { $retval = '\'null\''; if ($GLOBALS['cfg']['DBG']['sql'] && empty($_REQUEST['no_debug']) && !empty($_SESSION['debug']) ) { // Remove recursions and iterators from $_SESSION['debug'] self::_removeRecursion($_SESSION['debug']); $retval = JSON_encode($_SESSION['debug']); $_SESSION['debug'] = array(); return json_last_error() ? '\'false\'' : $retval; } $_SESSION['debug'] = array(); return $retval; } /** * Returns the url of the current page * * @return string */ public function getSelfUrl() { $db = isset($GLOBALS['db']) && strlen($GLOBALS['db']) ? $GLOBALS['db'] : ''; $table = isset($GLOBALS['table']) && strlen($GLOBALS['table']) ? $GLOBALS['table'] : ''; $target = isset($_REQUEST['target']) && strlen($_REQUEST['target']) ? $_REQUEST['target'] : ''; $params = array( 'db' => $db, 'table' => $table, 'server' => $GLOBALS['server'], 'target' => $target ); // needed for server privileges tabs if (isset($_GET['viewing_mode']) && in_array($_GET['viewing_mode'], array('server', 'db', 'table')) ) { $params['viewing_mode'] = $_GET['viewing_mode']; } /* * @todo coming from server_privileges.php, here $db is not set, * add the following condition below when that is fixed * && $_GET['checkprivsdb'] == $db */ if (isset($_GET['checkprivsdb']) ) { $params['checkprivsdb'] = $_GET['checkprivsdb']; } /* * @todo coming from server_privileges.php, here $table is not set, * add the following condition below when that is fixed * && $_REQUEST['checkprivstable'] == $table */ if (isset($_GET['checkprivstable']) ) { $params['checkprivstable'] = $_GET['checkprivstable']; } if (isset($_REQUEST['single_table']) && in_array($_REQUEST['single_table'], array(true, false)) ) { $params['single_table'] = $_REQUEST['single_table']; } return basename(Core::getenv('SCRIPT_NAME')) . Url::getCommonRaw($params); } /** * Renders the link to open a new page * * @param string $url The url of the page * * @return string */ private function _getSelfLink($url) { $retval = ''; $retval .= '