219 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 	class OpenSim
 | |
| 	{
 | |
| 		public function isLoginValid($name, $password)
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 
 | |
| 			$statementUser = $RUNTIME['PDO']->prepare("SELECT PrincipalID FROM UserAccounts WHERE FirstName = ? AND LastName = ? LIMIT 1");
 | |
| 			$statementUser->execute(explode(" ", trim($name))); 
 | |
| 
 | |
| 			while($rowUser = $statementUser->fetch()) 
 | |
| 			{
 | |
| 				$statementAuth = $RUNTIME['PDO']->prepare("SELECT passwordHash,passwordSalt FROM auth WHERE UUID = ? LIMIT 1");
 | |
| 				$statementAuth->execute(array($rowUser['PrincipalID'])); 
 | |
| 
 | |
| 				while($rowAuth = $statementAuth->fetch()) 
 | |
| 				{
 | |
| 					if(md5(md5($password).":".$rowAuth['passwordSalt']) == $rowAuth['passwordHash'])
 | |
| 					{
 | |
| 						return true;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		public function getUserName($userID)
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			if($userID == "00000000-0000-0000-0000-000000000000")
 | |
| 				return "Unknown User";
 | |
| 
 | |
| 			if(isset($RUNTIME['CACHE']['USERNAME'][$userID]))
 | |
| 				return $RUNTIME['CACHE']['USERNAME'][$userID];
 | |
| 
 | |
| 			$statementUser = $RUNTIME['PDO']->prepare("SELECT FirstName,LastName FROM UserAccounts WHERE PrincipalID = ?");
 | |
| 			$statementUser->execute(array($userID));
 | |
| 
 | |
| 			while($rowUser = $statementUser->fetch()) 
 | |
| 			{
 | |
| 				$RUNTIME['CACHE']['USERNAME'][$userID] = $rowUser['FirstName']." ".$rowUser['LastName'];
 | |
| 				return $rowUser['FirstName']." ".$rowUser['LastName'];
 | |
| 			}
 | |
| 
 | |
| 			$statementGridUser = $RUNTIME['PDO']->prepare("SELECT UserID FROM GridUser");
 | |
| 			$statementGridUser->execute(array($userID));
 | |
| 
 | |
| 			while($rowGridUser = $statementGridUser->fetch()) 
 | |
| 			{
 | |
| 				$UserData = explode(";", $rowGridUser['UserID']);
 | |
| 
 | |
| 				if(count($UserData) >= 3)
 | |
| 				{
 | |
| 					$DBUserID = $UserData[0];
 | |
| 					$DBUserName = $UserData[2];
 | |
| 
 | |
| 					$RUNTIME['CACHE']['USERNAME'][$userID] = $DBUserName;
 | |
| 
 | |
| 					if($DBUserID == $userID)
 | |
| 						return $DBUserName;
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			$statementFriends = $RUNTIME['PDO']->prepare("SELECT PrincipalID FROM Friends");
 | |
| 			$statementFriends->execute(array($userID));
 | |
| 
 | |
| 			while($rowFriends = $statementFriends->fetch()) 
 | |
| 			{
 | |
| 				$UserData = explode(";", $rowFriends['PrincipalID']);
 | |
| 
 | |
| 				if(count($UserData) == 4)
 | |
| 				{
 | |
| 					$DBUserID = $UserData[0];
 | |
| 					$DBUserName = $UserData[2];
 | |
| 
 | |
| 					$RUNTIME['CACHE']['USERNAME'][$userID] = $DBUserName;
 | |
| 
 | |
| 					if($DBUserID == $userID)
 | |
| 						return $DBUserName;
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			return "Unknown User";
 | |
| 		}
 | |
| 
 | |
| 		public function getUserUUID($UserName)
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			$statementUser = $RUNTIME['PDO']->prepare("SELECT PrincipalID,FirstName,LastName FROM UserAccounts");
 | |
| 			$statementUser->execute();
 | |
| 
 | |
| 			while($rowUser = $statementUser->fetch()) 
 | |
| 			{
 | |
| 				$SQLUserName = $rowUser['FirstName']." ".$rowUser['LastName'];
 | |
| 
 | |
| 				if($SQLUserName == $UserName)
 | |
| 				{
 | |
| 					return $rowUser['PrincipalID'];
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			return null;
 | |
| 		}
 | |
| 
 | |
| 		public function getRegionName($regionID)
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			$statementRegion = $RUNTIME['PDO']->prepare("SELECT regionName FROM regions WHERE uuid = ?");
 | |
| 			$statementRegion->execute(array($regionID));
 | |
| 
 | |
| 			while($rowRegion = $statementRegion->fetch()) 
 | |
| 			{
 | |
| 				return $rowRegion['regionName'];
 | |
| 			}
 | |
| 
 | |
| 			return "Unknown Region";
 | |
| 		}
 | |
| 
 | |
| 		public function getPartner($userID)
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			$statement = $RUNTIME['PDO']->prepare("SELECT profilePartner FROM userprofile WHERE useruuid = ?");
 | |
| 			$statement->execute(array($userID));
 | |
| 
 | |
| 			while($row = $statement->fetch()) 
 | |
| 			{
 | |
| 				if($row['profilePartner'] != "00000000-0000-0000-0000-000000000000")
 | |
| 					return $row['profilePartner'];
 | |
| 			}
 | |
| 
 | |
| 			return null;
 | |
| 		}
 | |
| 
 | |
| 		public function allowOfflineIM($userID)
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			$statement = $RUNTIME['PDO']->prepare("SELECT imviaemail FROM usersettings WHERE useruuid = ?");
 | |
| 			$statement->execute(array($userID));
 | |
| 
 | |
| 			while($row = $statement->fetch()) 
 | |
| 			{
 | |
| 				return strtoupper($row['imviaemail']);
 | |
| 			}
 | |
| 
 | |
| 			return "FALSE";
 | |
| 		}
 | |
| 
 | |
| 		public function getUserMail($userID)
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			$statement = $RUNTIME['PDO']->prepare("SELECT Email FROM UserAccounts WHERE PrincipalID = ?");
 | |
| 			$statement->execute(array($userID));
 | |
| 
 | |
| 			while($row = $statement->fetch()) 
 | |
| 			{
 | |
| 				return $row['Email'];
 | |
| 			}
 | |
| 
 | |
| 			return "";
 | |
| 		}
 | |
| 
 | |
| 		public function getUserCount()
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			$statementUser = $RUNTIME['PDO']->prepare("SELECT COUNT(*) FROM UserAccounts");
 | |
| 			$statementUser->execute();
 | |
| 			return $statementUser->fetchColumn();
 | |
| 		}
 | |
| 
 | |
| 		public function getRegionCount()
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 			
 | |
| 			$statementUser = $RUNTIME['PDO']->prepare("SELECT COUNT(*) FROM regions");
 | |
| 			$statementUser->execute();
 | |
| 			return $statementUser->fetchColumn();
 | |
| 		}
 | |
| 
 | |
| 		public function getOnlineCount()
 | |
| 		{
 | |
| 			global $RUNTIME;
 | |
| 
 | |
| 			$statementUser = $RUNTIME['PDO']->prepare("SELECT COUNT(*) FROM Presence");
 | |
| 			$statementUser->execute();
 | |
| 			return $statementUser->fetchColumn();
 | |
| 		}
 | |
| 
 | |
| 		public function gen_uuid() 
 | |
| 		{
 | |
| 			return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
 | |
| 				// 32 bits for "time_low"
 | |
| 				mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
 | |
| 		
 | |
| 				// 16 bits for "time_mid"
 | |
| 				mt_rand( 0, 0xffff ),
 | |
| 		
 | |
| 				// 16 bits for "time_hi_and_version",
 | |
| 				// four most significant bits holds version number 4
 | |
| 				mt_rand( 0, 0x0fff ) | 0x4000,
 | |
| 		
 | |
| 				// 16 bits, 8 bits for "clk_seq_hi_res",
 | |
| 				// 8 bits for "clk_seq_low",
 | |
| 				// two most significant bits holds zero and one for variant DCE1.1
 | |
| 				mt_rand( 0, 0x3fff ) | 0x8000,
 | |
| 		
 | |
| 				// 48 bits for "node"
 | |
| 				mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
 | |
| 			);
 | |
| 		}
 | |
|     }
 | |
| ?>
 |