phpmyadmin/libraries/classes/Html/MySQLDocumentation.php
Hugues Peccatte 3255e4ad7b Split Util class regarding the responsabilities (#15567)
PhpMyAdmin\Util is a very huge class with a lot of responsabilities.

There is a lot of work to split it, but this may be just a small start, waiting for a more normalized code.

* Split Util class regarding the responsabilities
* Split the buttonOrImage function

Signed-off-by: Hugues Peccatte <hugues.peccatte@gmail.com>
2019-11-21 20:20:05 -03:00

102 lines
2.8 KiB
PHP

<?php
/**
* Generate HTML for MySQL Documentation
*
* @package PhpMyAdmin
*/
declare(strict_types=1);
namespace PhpMyAdmin\Html;
use PhpMyAdmin\Core;
use PhpMyAdmin\Util;
/**
* Generate HTML for MySQL Documentation
*
* @package PhpMyAdmin
*/
class MySQLDocumentation
{
/**
* Displays a link to the official MySQL documentation
*
* @param string $link contains name of page/anchor that is being linked
* @param bool $bigIcon whether to use big icon (like in left frame)
* @param string|null $url href attribute
* @param string|null $text text of link
* @param string $anchor anchor to page part
*
* @return string the html link
*
* @access public
*/
public static function show(
$link,
bool $bigIcon = false,
$url = null,
$text = null,
$anchor = ''
): string {
if ($url === null) {
$url = Util::getMySQLDocuURL($link, $anchor);
}
$openLink = '<a href="' . htmlspecialchars($url) . '" target="mysql_doc">';
$closeLink = '</a>';
if ($bigIcon) {
$html = $openLink .
Generator::getImage('b_sqlhelp', __('Documentation'))
. $closeLink;
} elseif ($text !== null) {
$html = $openLink . $text . $closeLink;
} else {
$html = Generator::showDocumentationLink($url, 'mysql_doc');
}
return $html;
}
/**
* Displays a link to the phpMyAdmin documentation
*
* @param string $page Page in documentation
* @param string $anchor Optional anchor in page
* @param boolean $bbcode Optional flag indicating whether to output bbcode
*
* @return string the html link
*
* @access public
*/
public static function showDocumentation($page, $anchor = '', $bbcode = false): string
{
return Generator::showDocumentationLink(self::getDocumentationLink($page, $anchor), 'documentation', $bbcode);
}
/**
* Returns link to documentation.
*
* @param string $page Page in documentation
* @param string $anchor Optional anchor in page
*
* @return string URL
*/
public static function getDocumentationLink($page, $anchor = ''): string
{
/* Construct base URL */
$url = $page . '.html';
if (! empty($anchor)) {
$url .= '#' . $anchor;
}
/* Check if we have built local documentation, however
* provide consistent URL for testsuite
*/
if (! defined('TESTSUITE') && @file_exists(ROOT_PATH . 'doc/html/index.html')) {
return 'doc/html/' . $url;
}
return Core::linkURL('https://docs.phpmyadmin.net/en/latest/' . $url);
}
}