130 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace ManiaControl\Players;
 | |
| 
 | |
| use ManiaControl\Formatter;
 | |
| 
 | |
| /**
 | |
|  * Player Model Class
 | |
|  *
 | |
|  * @author kremsy & steeffeen
 | |
|  */
 | |
| class Player {
 | |
| 	/**
 | |
| 	 * Public properties
 | |
| 	 */
 | |
| 	public $index = -1;
 | |
| 	public $pid = -1;
 | |
| 	public $login = '';
 | |
| 	public $nickname = '';
 | |
| 	public $path = '';
 | |
| 	public $authLevel = 0;
 | |
| 	public $language = '';
 | |
| 	public $avatar = '';
 | |
| 	public $allies = array();
 | |
| 	public $clubLink = '';
 | |
| 	public $teamId = -1;
 | |
| 	public $isSpectator = false;
 | |
| 	public $isOfficial = false;
 | |
| 	public $isReferee = false;
 | |
| 	public $ladderScore = -1.;
 | |
| 	public $ladderRank = -1;
 | |
| 	public $joinTime = -1;
 | |
| 	public $ipAddress = '';
 | |
| 	public $maniaPlanetPlayDays = 0;
 | |
| 
 | |
| 	/**
 | |
| 	 * Construct a player from XmlRpc data
 | |
| 	 *
 | |
| 	 * @param array $rpcInfos
 | |
| 	 */
 | |
| 	public function __construct(array $rpcInfos) {
 | |
| 		if(!$rpcInfos) {
 | |
| 			return;
 | |
| 		}
 | |
| 		var_dump($rpcInfos);
 | |
| 
 | |
| 		$this->pid         = $rpcInfos['PlayerId'];
 | |
| 		$this->login       = $rpcInfos['Login'];
 | |
| 		$this->nickname    = Formatter::stripDirtyCodes($rpcInfos['NickName']);
 | |
| 		$this->path        = $rpcInfos['Path'];
 | |
| 		$this->language    = $rpcInfos['Language'];
 | |
| 		$this->avatar      = $rpcInfos['Avatar']['FileName'];
 | |
| 		$this->allies      = $rpcInfos['Allies'];
 | |
| 		$this->clubLink    = $rpcInfos['ClubLink'];
 | |
| 		$this->teamId      = $rpcInfos['TeamId'];
 | |
| 		$this->isSpectator = $rpcInfos['IsSpectator'];
 | |
| 		$this->isOfficial  = $rpcInfos['IsInOfficialMode'];
 | |
| 		$this->isReferee   = $rpcInfos['IsReferee'];
 | |
| 		$this->ladderScore = $rpcInfos['LadderStats']['PlayerRankings'][0]['Score'];
 | |
| 		$this->ladderRank  = $rpcInfos['LadderStats']['PlayerRankings'][0]['Ranking'];
 | |
| 		$this->maniaPlanetPlayDays = $rpcInfos['HoursSinceZoneInscription'] / 24;
 | |
| 
 | |
| 		$this->ipAddress = $rpcInfos['IPAddress'];
 | |
| 
 | |
| 		$this->joinTime = time();
 | |
| 
 | |
| 		if($this->nickname == '') {
 | |
| 			$this->nickname = $this->login;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * Check if player is not a real player
 | |
| 	 *
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function isFakePlayer() {
 | |
| 		return ($this->pid <= 0 || $this->path == "");
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get province
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function getProvince() {
 | |
| 		$pathParts = explode('|', $this->path);
 | |
| 		if(isset($pathParts[3])) {
 | |
| 			return $pathParts[3];
 | |
| 		}
 | |
| 		return $this->getCountry();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get country
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function getCountry() {
 | |
| 		$pathParts = explode('|', $this->path);
 | |
| 		if(isset($pathParts[2])) {
 | |
| 			return $pathParts[2];
 | |
| 		}
 | |
| 		if(isset($pathParts[1])) {
 | |
| 			return $pathParts[1];
 | |
| 		}
 | |
| 		if(isset($pathParts[0])) {
 | |
| 			return $pathParts[0];
 | |
| 		}
 | |
| 		return $this->path;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get continent
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function getContinent() {
 | |
| 		$pathParts = explode('|', $this->path);
 | |
| 		if(isset($pathParts[1])) {
 | |
| 			return $pathParts[1];
 | |
| 		}
 | |
| 		if(isset($pathParts[0])) {
 | |
| 			return $pathParts[0];
 | |
| 		}
 | |
| 		return $this->path;
 | |
| 	}
 | |
| }
 |