329 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			329 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace FML;
 | |
| 
 | |
| /**
 | |
|  * Class representing a Custom_UI
 | |
|  *
 | |
|  * @author    steeffeen
 | |
|  * @copyright FancyManiaLinks Copyright © 2017 Steffen Schröder
 | |
|  * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | |
|  */
 | |
| class CustomUI
 | |
| {
 | |
| 
 | |
|     /**
 | |
|      * @var bool $globalVisible If the UI should be shown at all
 | |
|      */
 | |
|     protected $globalVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $challengeInfoVisible If the challenge info should be shown
 | |
|      */
 | |
|     protected $challengeInfoVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $chatVisible If the chat should be shown
 | |
|      */
 | |
|     protected $chatVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $checkpointListVisible If the checkpoint list should be shown
 | |
|      */
 | |
|     protected $checkpointListVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $netInfosVisible If the net infos should be shown
 | |
|      */
 | |
|     protected $netInfosVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $noticeVisible If notices should be shown
 | |
|      */
 | |
|     protected $noticeVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $roundScoresVisible If round scores should be shown
 | |
|      */
 | |
|     protected $roundScoresVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $scoretableVisible If the score table should be shown
 | |
|      */
 | |
|     protected $scoretableVisible = null;
 | |
| 
 | |
|     /**
 | |
|      * Create a new CustomUI
 | |
|      *
 | |
|      * @api
 | |
|      * @return static
 | |
|      */
 | |
|     public static function create()
 | |
|     {
 | |
|         return new static();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get global visibility
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getGlobalVisible()
 | |
|     {
 | |
|         return $this->globalVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set global visibility
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If the UI should be shown at all
 | |
|      * @return static
 | |
|      */
 | |
|     public function setGlobalVisible($visible)
 | |
|     {
 | |
|         $this->globalVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get showing of the challenge info
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getChallengeInfoVisible()
 | |
|     {
 | |
|         return $this->challengeInfoVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set showing of the challenge info
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If the challenge info should be shown
 | |
|      * @return static
 | |
|      */
 | |
|     public function setChallengeInfoVisible($visible)
 | |
|     {
 | |
|         $this->challengeInfoVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get showing of the chat
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getChatVisible()
 | |
|     {
 | |
|         return $this->chatVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set showing of the chat
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If the chat should be shown
 | |
|      * @return static
 | |
|      */
 | |
|     public function setChatVisible($visible)
 | |
|     {
 | |
|         $this->chatVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get showing of the checkpoint list
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getCheckpointListVisible()
 | |
|     {
 | |
|         return $this->checkpointListVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set showing of the checkpoint list
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If the checkpoint list should be shown
 | |
|      * @return static
 | |
|      */
 | |
|     public function setCheckpointListVisible($visible)
 | |
|     {
 | |
|         $this->checkpointListVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get showing of the net infos
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getNetInfosVisible()
 | |
|     {
 | |
|         return $this->netInfosVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set showing of the net infos
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If the net infos should be shown
 | |
|      * @return static
 | |
|      */
 | |
|     public function setNetInfosVisible($visible)
 | |
|     {
 | |
|         $this->netInfosVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get showing of notices
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getNoticeVisible()
 | |
|     {
 | |
|         return $this->noticeVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set showing of notices
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If notices should be shown
 | |
|      * @return static
 | |
|      */
 | |
|     public function setNoticeVisible($visible)
 | |
|     {
 | |
|         $this->noticeVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get showing of round scores
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getRoundScoresVisible()
 | |
|     {
 | |
|         return $this->roundScoresVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set showing of round scores
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If round scores should be shown
 | |
|      * @return static
 | |
|      */
 | |
|     public function setRoundScoresVisible($visible)
 | |
|     {
 | |
|         $this->roundScoresVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get showing of the score table
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getScoretableVisible()
 | |
|     {
 | |
|         return $this->scoretableVisible;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set showing of the score table
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $visible If the score table should be shown
 | |
|      * @return static
 | |
|      */
 | |
|     public function setScoretableVisible($visible)
 | |
|     {
 | |
|         $this->scoretableVisible = $visible;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Render the CustomUI standalone
 | |
|      *
 | |
|      * @return \DOMDocument
 | |
|      */
 | |
|     public function renderStandalone()
 | |
|     {
 | |
|         $domDocument                = new \DOMDocument("1.0", "utf-8");
 | |
|         $domDocument->xmlStandalone = true;
 | |
| 
 | |
|         $domElement = $this->render($domDocument);
 | |
|         $domDocument->appendChild($domElement);
 | |
| 
 | |
|         return $domDocument;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Render the CustomUI
 | |
|      *
 | |
|      * @param \DOMDocument $domDocument DOMDocument for which the CustomUI should be rendered
 | |
|      * @return \DOMElement
 | |
|      */
 | |
|     public function render(\DOMDocument $domDocument)
 | |
|     {
 | |
|         $domElement = $domDocument->createElement("custom_ui");
 | |
| 
 | |
|         $settings = $this->getSettings();
 | |
|         foreach ($settings as $setting => $value) {
 | |
|             if ($value === null) {
 | |
|                 continue;
 | |
|             }
 | |
| 
 | |
|             $settingDomElement = $domDocument->createElement($setting);
 | |
|             $settingDomElement->setAttribute("visible", ($value ? 1 : 0));
 | |
|             $domElement->appendChild($settingDomElement);
 | |
|         }
 | |
| 
 | |
|         return $domElement;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get string representation
 | |
|      *
 | |
|      * @return string
 | |
|      */
 | |
|     public function __toString()
 | |
|     {
 | |
|         return $this->renderStandalone()
 | |
|                     ->saveXML();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get associative array of all CustomUI settings
 | |
|      *
 | |
|      * @return array
 | |
|      */
 | |
|     protected function getSettings()
 | |
|     {
 | |
|         return array(
 | |
|             "global" => $this->globalVisible,
 | |
|             "challenge_info" => $this->challengeInfoVisible,
 | |
|             "chat" => $this->chatVisible,
 | |
|             "checkpoint_list" => $this->checkpointListVisible,
 | |
|             "net_infos" => $this->netInfosVisible,
 | |
|             "notice" => $this->noticeVisible,
 | |
|             "round_scores" => $this->roundScoresVisible,
 | |
|             "scoretable" => $this->scoretableVisible
 | |
|         );
 | |
|     }
 | |
| 
 | |
| }
 |