Updated changelog with newest versions, added ingame-window to display it.
This commit is contained in:
		@@ -1,4 +1,31 @@
 | 
				
			|||||||
##v0.16x###
 | 
					###v0.252###
 | 
				
			||||||
 | 
					#Additions
 | 
				
			||||||
 | 
					- Ingame-Changelog
 | 
				
			||||||
 | 
					- New customizations for Join&Leave-Messages
 | 
				
			||||||
 | 
					- Symbolic Link resolving in ServerManager
 | 
				
			||||||
 | 
					- Times in Map Widget
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Bug Fixes
 | 
				
			||||||
 | 
					- GReplay for Dedimania-Records not being sent
 | 
				
			||||||
 | 
					- non-numeric value warning on self-triggered debug notice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###v0.250###
 | 
				
			||||||
 | 
					#Additions
 | 
				
			||||||
 | 
					- AuthenticationManager allows permissions to be stored inside Plugins
 | 
				
			||||||
 | 
					- CallQueue to balance performance-heavy functions
 | 
				
			||||||
 | 
					- Commands can be disabled by Plugins
 | 
				
			||||||
 | 
					- /delrec can delete your personal local record (Permission-Setting)
 | 
				
			||||||
 | 
					- simple DB-Installation-Script (Unix-only)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Bug Fixes
 | 
				
			||||||
 | 
					- //delrec can delete every local record (Permission-Setting)
 | 
				
			||||||
 | 
					- Replaced deprecated code
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Changes
 | 
				
			||||||
 | 
					- Format milliseconds with dot instead of double colon (1:02:375 -> 1:02.375)
 | 
				
			||||||
 | 
					- Notification-System of Local Records
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###v0.16x###
 | 
				
			||||||
#Additions
 | 
					#Additions
 | 
				
			||||||
- updated mx links to https
 | 
					- updated mx links to https
 | 
				
			||||||
#Changes
 | 
					#Changes
 | 
				
			||||||
@@ -12,7 +39,7 @@
 | 
				
			|||||||
- added Scriptcallbacks SCORESREADY / SCORES
 | 
					- added Scriptcallbacks SCORESREADY / SCORES
 | 
				
			||||||
- added SSL support as well as http Redirections of the FileReader
 | 
					- added SSL support as well as http Redirections of the FileReader
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Bug fixes
 | 
					#Bug Fixes
 | 
				
			||||||
- Banning of not connected Players now possible
 | 
					- Banning of not connected Players now possible
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###v0.162###
 | 
					###v0.162###
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,7 @@ use ManiaControl\Script\ModeScriptEventManager;
 | 
				
			|||||||
use ManiaControl\Server\Server;
 | 
					use ManiaControl\Server\Server;
 | 
				
			||||||
use ManiaControl\Settings\SettingManager;
 | 
					use ManiaControl\Settings\SettingManager;
 | 
				
			||||||
use ManiaControl\Statistics\StatisticManager;
 | 
					use ManiaControl\Statistics\StatisticManager;
 | 
				
			||||||
 | 
					use ManiaControl\Update\ChangeLog;
 | 
				
			||||||
use ManiaControl\Update\UpdateManager;
 | 
					use ManiaControl\Update\UpdateManager;
 | 
				
			||||||
use ManiaControl\Utils\CommandLineHelper;
 | 
					use ManiaControl\Utils\CommandLineHelper;
 | 
				
			||||||
use ManiaControl\Utils\SystemUtil;
 | 
					use ManiaControl\Utils\SystemUtil;
 | 
				
			||||||
@@ -94,6 +95,10 @@ class ManiaControl implements CallbackListener, CommandListener, TimerListener,
 | 
				
			|||||||
	 * @see getChat()
 | 
						 * @see getChat()
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private $chat = null;
 | 
						private $chat = null;
 | 
				
			||||||
 | 
						/** @var ChangeLog $changeLog
 | 
				
			||||||
 | 
						 * @see getChangeLog()
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private $changeLog = null;
 | 
				
			||||||
	/** @var ColorManager $colorManager
 | 
						/** @var ColorManager $colorManager
 | 
				
			||||||
	 * @see getColorManager()
 | 
						 * @see getColorManager()
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
@@ -212,6 +217,7 @@ class ManiaControl implements CallbackListener, CommandListener, TimerListener,
 | 
				
			|||||||
		$this->configurator           = new Configurator($this);
 | 
							$this->configurator           = new Configurator($this);
 | 
				
			||||||
		$this->pluginManager          = new PluginManager($this);
 | 
							$this->pluginManager          = new PluginManager($this);
 | 
				
			||||||
		$this->updateManager          = new UpdateManager($this);
 | 
							$this->updateManager          = new UpdateManager($this);
 | 
				
			||||||
 | 
							$this->changeLog              = new ChangeLog($this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$this->getErrorHandler()->init();
 | 
							$this->getErrorHandler()->init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -346,6 +352,15 @@ class ManiaControl implements CallbackListener, CommandListener, TimerListener,
 | 
				
			|||||||
		return $this->chat;
 | 
							return $this->chat;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Return the changelog
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return ChangeLog
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function getChangeLog() {
 | 
				
			||||||
 | 
							return $this->changeLog;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Return the error handler
 | 
						 * Return the error handler
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										134
									
								
								core/Update/ChangeLog.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								core/Update/ChangeLog.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace ManiaControl\Update;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use FML\ManiaLink;
 | 
				
			||||||
 | 
					use FML\Controls\Frame;
 | 
				
			||||||
 | 
					use FML\Controls\Labels\Label_Text;
 | 
				
			||||||
 | 
					use FML\Script\Features\Paging;
 | 
				
			||||||
 | 
					use ManiaControl\Commands\CommandListener;
 | 
				
			||||||
 | 
					use ManiaControl\ManiaControl;
 | 
				
			||||||
 | 
					use ManiaControl\Manialinks\ManialinkManager;
 | 
				
			||||||
 | 
					use ManiaControl\Players\Player;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Ingame ChangeLog to display the latest updates to ManiaControl
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author    ManiaControl Team <mail@maniacontrol.com>
 | 
				
			||||||
 | 
					 * @copyright 2014-2020 ManiaControl Team
 | 
				
			||||||
 | 
					 * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class ChangeLog implements CommandListener {
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * Private properties
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						/** @var ManiaControl $maniaControl */
 | 
				
			||||||
 | 
						private $maniaControl = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Construct a new update manager instance
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param ManiaControl $maniaControl
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function __construct(ManiaControl $maniaControl) {
 | 
				
			||||||
 | 
							$this->maniaControl = $maniaControl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Chat commands
 | 
				
			||||||
 | 
							$this->maniaControl->getCommandManager()->registerCommandListener('changelog', $this, 'handle_ChangeLog', true, 'Opens a ChangeLog ingame.');
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Get the ChangeLog
 | 
				
			||||||
 | 
						 * @return array
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private function getChangeLogArray() {
 | 
				
			||||||
 | 
							static $changelog = null;
 | 
				
			||||||
 | 
							if ($changelog === null) {
 | 
				
			||||||
 | 
								$changelog = $this->readChangeLog();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return $changelog;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Displays the ChangeLog Window
 | 
				
			||||||
 | 
						 * @param array $chatCallback
 | 
				
			||||||
 | 
						 * @param Player $player
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function handle_ChangeLog(array $chatCallback, Player $player) {
 | 
				
			||||||
 | 
							// Build Manialink
 | 
				
			||||||
 | 
							$height       = $this->maniaControl->getManialinkManager()->getStyleManager()->getListWidgetsHeight();
 | 
				
			||||||
 | 
							$width        = $this->maniaControl->getManialinkManager()->getStyleManager()->getListWidgetsWidth();
 | 
				
			||||||
 | 
							$quadStyle    = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultMainWindowStyle();
 | 
				
			||||||
 | 
							$quadSubstyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultMainWindowSubStyle();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$manialink = new ManiaLink(ManialinkManager::MAIN_MLID);
 | 
				
			||||||
 | 
							$script    = $manialink->getScript();
 | 
				
			||||||
 | 
							$paging    = new Paging();
 | 
				
			||||||
 | 
							$script->addFeature($paging);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							$frame = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultListFrame($script, $paging);
 | 
				
			||||||
 | 
							$manialink->addChild($frame);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Headline
 | 
				
			||||||
 | 
							$label = new Label_Text();
 | 
				
			||||||
 | 
							$frame->addChild($label);
 | 
				
			||||||
 | 
							$label->setHorizontalAlign($label::LEFT);
 | 
				
			||||||
 | 
							$label->setPosition(-0.45*$width, 0.45*$height);
 | 
				
			||||||
 | 
							$label->setSize($width * 0.6, 5);
 | 
				
			||||||
 | 
							$label->setStyle($label::STYLE_TextCardSmall);
 | 
				
			||||||
 | 
							$label->setText('Changelog of ManiaControl');
 | 
				
			||||||
 | 
							$label->setTextColor('ff0');
 | 
				
			||||||
 | 
							$label->setTextSize(3);
 | 
				
			||||||
 | 
							$label->setVerticalAlign($label::TOP);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$posX = -0.45*$width;
 | 
				
			||||||
 | 
							$initialPosY = 0.4*$height - 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$changelog = $this->getChangeLogArray();
 | 
				
			||||||
 | 
							if (empty($changelog)) {
 | 
				
			||||||
 | 
								// TODO error
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$i = 0;
 | 
				
			||||||
 | 
							$numLines = 15;
 | 
				
			||||||
 | 
							$pageFrame = null;
 | 
				
			||||||
 | 
							foreach ($changelog as $line) {
 | 
				
			||||||
 | 
								if ($i % $numLines == 0 || substr($line, 0, 3) === '###') {
 | 
				
			||||||
 | 
									// page full, or new version number
 | 
				
			||||||
 | 
									$pageFrame = new Frame();
 | 
				
			||||||
 | 
									$frame->addChild($pageFrame);
 | 
				
			||||||
 | 
									$paging->addPageControl($pageFrame);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									$posY = $initialPosY;
 | 
				
			||||||
 | 
									$i = 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								$label = new Label_Text();
 | 
				
			||||||
 | 
								$pageFrame->addChild($label);
 | 
				
			||||||
 | 
								$label->setHorizontalAlign($label::LEFT);
 | 
				
			||||||
 | 
								$label->setPosition($posX, $posY);
 | 
				
			||||||
 | 
								$label->setStyle($label::STYLE_TextCardMedium);
 | 
				
			||||||
 | 
								$label->setText(str_replace('$', '$$', $line)); // prevent ManiaPlanet formatting
 | 
				
			||||||
 | 
								$label->setTextSize(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								$posY -= 4;
 | 
				
			||||||
 | 
								$i++;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Display manialink
 | 
				
			||||||
 | 
							$this->maniaControl->getManialinkManager()->sendManialink($manialink, $player);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Reads the changelog.txt in the root-directory into an array
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private function readChangeLog() {
 | 
				
			||||||
 | 
							$changelog = file_get_contents('changelog.txt');
 | 
				
			||||||
 | 
							if ($changelog === false) {
 | 
				
			||||||
 | 
								return array();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return preg_split('/[\r\n]/', $changelog);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -402,7 +402,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener,
 | 
				
			|||||||
			// Set the build date
 | 
								// Set the build date
 | 
				
			||||||
			$this->setBuildDate($updateData->releaseDate);
 | 
								$this->setBuildDate($updateData->releaseDate);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			$message = 'Update finished!';
 | 
								$message = 'Update finished! See what we updated with $<$fff//chatlog$>!';
 | 
				
			||||||
			if ($player) {
 | 
								if ($player) {
 | 
				
			||||||
				$this->maniaControl->getChat()->sendSuccess($message, $player);
 | 
									$this->maniaControl->getChat()->sendSuccess($message, $player);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user