diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Setup/Index.php | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Setup/Index.php')
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Setup/Index.php | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Setup/Index.php b/srcs/phpmyadmin/libraries/classes/Setup/Index.php new file mode 100644 index 0000000..9518221 --- /dev/null +++ b/srcs/phpmyadmin/libraries/classes/Setup/Index.php @@ -0,0 +1,198 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * Various checks and message functions used on index page. + * + * @package PhpMyAdmin-Setup + */ +declare(strict_types=1); + +namespace PhpMyAdmin\Setup; + +use PhpMyAdmin\Sanitize; +use PhpMyAdmin\VersionInformation; + +/** + * PhpMyAdmin\Setup\Index class + * + * Various checks and message functions used on index page. + * + * @package PhpMyAdmin-Setup + */ +class Index +{ + /** + * Initializes message list + * + * @return void + */ + public static function messagesBegin() + { + if (! isset($_SESSION['messages']) || ! is_array($_SESSION['messages'])) { + $_SESSION['messages'] = [ + 'error' => [], + 'notice' => [], + ]; + } else { + // reset message states + foreach ($_SESSION['messages'] as &$messages) { + foreach ($messages as &$msg) { + $msg['fresh'] = false; + $msg['active'] = false; + } + } + } + } + + /** + * Adds a new message to message list + * + * @param string $type one of: notice, error + * @param string $msgId unique message identifier + * @param string $title language string id (in $str array) + * @param string $message message text + * + * @return void + */ + public static function messagesSet($type, $msgId, $title, $message) + { + $fresh = ! isset($_SESSION['messages'][$type][$msgId]); + $_SESSION['messages'][$type][$msgId] = [ + 'fresh' => $fresh, + 'active' => true, + 'title' => $title, + 'message' => $message, + ]; + } + + /** + * Cleans up message list + * + * @return void + */ + public static function messagesEnd() + { + foreach ($_SESSION['messages'] as &$messages) { + $remove_ids = []; + foreach ($messages as $id => &$msg) { + if ($msg['active'] == false) { + $remove_ids[] = $id; + } + } + foreach ($remove_ids as $id) { + unset($messages[$id]); + } + } + } + + /** + * Prints message list, must be called after self::messagesEnd() + * + * @return array + */ + public static function messagesShowHtml() + { + $return = []; + foreach ($_SESSION['messages'] as $type => $messages) { + foreach ($messages as $id => $msg) { + $return[] = [ + 'id' => $id, + 'title' => $msg['title'], + 'type' => $type, + 'message' => $msg['message'], + 'is_hidden' => ! $msg['fresh'] && $type !== 'error', + ]; + } + } + return $return; + } + + /** + * Checks for newest phpMyAdmin version and sets result as a new notice + * + * @return void + */ + public static function versionCheck() + { + // version check messages should always be visible so let's make + // a unique message id each time we run it + $message_id = uniqid('version_check'); + + // Fetch data + $versionInformation = new VersionInformation(); + $version_data = $versionInformation->getLatestVersion(); + + if (empty($version_data)) { + self::messagesSet( + 'error', + $message_id, + __('Version check'), + __( + 'Reading of version failed. ' + . 'Maybe you\'re offline or the upgrade server does not respond.' + ) + ); + return; + } + + $releases = $version_data->releases; + $latestCompatible = $versionInformation->getLatestCompatibleVersion($releases); + if ($latestCompatible != null) { + $version = $latestCompatible['version']; + $date = $latestCompatible['date']; + } else { + return; + } + + $version_upstream = $versionInformation->versionToInt($version); + if ($version_upstream === false) { + self::messagesSet( + 'error', + $message_id, + __('Version check'), + __('Got invalid version string from server') + ); + return; + } + + $version_local = $versionInformation->versionToInt( + $GLOBALS['PMA_Config']->get('PMA_VERSION') + ); + if ($version_local === false) { + self::messagesSet( + 'error', + $message_id, + __('Version check'), + __('Unparsable version string') + ); + return; + } + + if ($version_upstream > $version_local) { + $version = htmlspecialchars($version); + $date = htmlspecialchars($date); + self::messagesSet( + 'notice', + $message_id, + __('Version check'), + sprintf(__('A newer version of phpMyAdmin is available and you should consider upgrading. The newest version is %s, released on %s.'), $version, $date) + ); + } else { + if ($version_local % 100 == 0) { + self::messagesSet( + 'notice', + $message_id, + __('Version check'), + Sanitize::sanitizeMessage(sprintf(__('You are using Git version, run [kbd]git pull[/kbd] :-)[br]The latest stable version is %s, released on %s.'), $version, $date)) + ); + } else { + self::messagesSet( + 'notice', + $message_id, + __('Version check'), + __('No newer stable version is available') + ); + } + } + } +} |
