156 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace FML\ManiaCode;
 | |
| 
 | |
| /**
 | |
|  * ManiaCode Element for joining a server
 | |
|  *
 | |
|  * @author    steeffeen <mail@steeffeen.com>
 | |
|  * @copyright FancyManiaLinks Copyright © 2017 Steffen Schröder
 | |
|  * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | |
|  */
 | |
| class JoinServer implements Element
 | |
| {
 | |
| 
 | |
|     /**
 | |
|      * @var string $login Server login
 | |
|      */
 | |
|     protected $login = null;
 | |
| 
 | |
|     /**
 | |
|      * @var string $ip Server ip
 | |
|      */
 | |
|     protected $ip = null;
 | |
| 
 | |
|     /**
 | |
|      * @var int $port Server port
 | |
|      */
 | |
|     protected $port = null;
 | |
| 
 | |
|     /**
 | |
|      * Create a new JoinServer Element
 | |
|      *
 | |
|      * @api
 | |
|      * @param string $loginOrIp (optional) Server login or ip
 | |
|      * @param int    $port      (optional) Server port
 | |
|      * @return static
 | |
|      */
 | |
|     public static function create($loginOrIp = null, $port = null)
 | |
|     {
 | |
|         return new static($loginOrIp, $port);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Construct a new JoinServer Element
 | |
|      *
 | |
|      * @api
 | |
|      * @param string $loginOrIp (optional) Server login or ip
 | |
|      * @param int    $port      (optional) Server port
 | |
|      */
 | |
|     public function __construct($loginOrIp = null, $port = null)
 | |
|     {
 | |
|         if ($port) {
 | |
|             $this->setIp($loginOrIp, $port);
 | |
|         } elseif ($loginOrIp) {
 | |
|             $this->setLogin($loginOrIp);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the server login
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getLogin()
 | |
|     {
 | |
|         return $this->login;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the server login
 | |
|      *
 | |
|      * @api
 | |
|      * @param string $login Server login
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLogin($login)
 | |
|     {
 | |
|         $this->login = (string)$login;
 | |
|         $this->ip    = null;
 | |
|         $this->port  = null;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the server ip
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getIp()
 | |
|     {
 | |
|         return $this->ip;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the server ip and port
 | |
|      *
 | |
|      * @api
 | |
|      * @param string $ip   Server ip
 | |
|      * @param int    $port (optional) Server port
 | |
|      * @return static
 | |
|      */
 | |
|     public function setIp($ip, $port = null)
 | |
|     {
 | |
|         $this->login = null;
 | |
|         $this->ip    = (string)$ip;
 | |
|         if ($port) {
 | |
|             $this->setPort($port);
 | |
|         }
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the server port
 | |
|      *
 | |
|      * @api
 | |
|      * @return int
 | |
|      */
 | |
|     public function getPort()
 | |
|     {
 | |
|         return $this->port;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the server port
 | |
|      *
 | |
|      * @param int $port Server port
 | |
|      * @return static
 | |
|      */
 | |
|     public function setPort($port)
 | |
|     {
 | |
|         $this->port = (int)$port;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Element::render()
 | |
|      */
 | |
|     public function render(\DOMDocument $domDocument)
 | |
|     {
 | |
|         $domElement = $domDocument->createElement("join_server");
 | |
| 
 | |
|         if ($this->login) {
 | |
|             $loginElement = $domDocument->createElement("login", $this->login);
 | |
|             $domElement->appendChild($loginElement);
 | |
|         } else {
 | |
|             $ipElement = $domDocument->createElement("ip", $this->ip . ":" . $this->port);
 | |
|             $domElement->appendChild($ipElement);
 | |
|         }
 | |
| 
 | |
|         return $domElement;
 | |
|     }
 | |
| 
 | |
| }
 |