(string) $username)); $baseURI = "http://pr2hub.com/get_player_info.php"; return $baseURI . "?" . $query; } function read_page ($URI) { $file = @fopen($URI, 'r'); if ($file === false) return null; $resource_data = stream_get_meta_data($file); if ($resource_data['wrapper_type'] != 'http') { fclose($file); return null; } $data = ""; while (!feof($file)) $data .= fread($file, 1000); fclose($file); return $data; } function parse_page_data ($pagedata) { $data = null; parse_str($pagedata, $data); return $data; } function get_page_data ($URI) { $data = read_page($URI); if ($data === null) return null; return parse_page_data ($data); } function get_user_data ($username) { $URI = get_URI($username); return get_page_data($URI); } function get_color ($usergroup) { $usergroup = (int) $usergroup; switch ($usergroup) { case 3: return "#870a6f"; case 2: return "#1c369f"; case 1: return "#047b7b"; default: return "#7e7f7f"; } } function parse_status ($status) { if (strpos($status, "Platform Racing 2") === false) return $status; $lastspace = strrpos($status, " "); return substr($status, $lastspace + 1); } function process_user ($username) { $username = (string) $username; $data = get_user_data($username); if ($data === null) return "could not reach pr2hub.com"; if (@$data['error'] != '') return "user does not exist"; return array( 'username' => htmlspecialchars($username), 'color' => get_color($data['group']), 'rank' => ($data['rank'] == '') ? '--' : (string) $data['rank'], 'hats' => (string) $data['hats'], 'registration' => ($data['registerDate'] == '1st of January 1970') ? 'Age of Heroes' : $data['registerDate'], 'login' => ($data['loginDate'] == '1st of January 1970') ? 'Unknown' : $data['loginDate'], 'server' => parse_status($data['status']) ); } class UserInformation { private $usernames = null; private $userdata = null; private $userPosition = 0; private $errorPosition = 0; public function build ($users) { $this -> userdata = array(); $this -> usernames = array(); $pos = 0; foreach ($users as $user) if ($user != "") { $this -> usernames[$pos] = (string) $user; $this -> userdata[$pos ++] = process_user($user); } $this -> reset(); } public function reset () { $this -> position = 0; } public function nextUser () { if ($this -> userdata === null) return false; $data = @$this -> userdata[$this -> userPosition ++]; if ($this -> userPosition > $this -> userCount()) return false; if (!is_array($data)) return false; return $data; } public function nextError () { if ($this -> userdata === null) return false; $name = @$this -> usernames[$this -> errorPosition]; $data = @$this -> userdata[$this -> errorPosition ++]; if ($this -> errorPosition > $this -> userCount()) return false; if (is_array($data)) return false; return array( 'username' => $name, 'error' => $data ); } public function userCount () { return ($this -> userdata === null) ? 0 : count($this -> userdata); } } function hide () { return false; } function generate_page($template, $users) { $template_data = file_get_contents($template); if ($template_data === false) die("Could not read page data"); $user_data = new UserInformation(); $user_data -> build($users); $callbacks = array( 'single_user' => (($user_data -> userCount()) == 1) ? array($user_data, 'nextUser') : 'hide', 'single_error' => (($user_data -> userCount()) == 1) ? array($user_data, 'nextError') : 'hide', 'multiple_users' => function ($users) {return (bool) (($users -> userCount()) > 1);}, 'user' => array($user_data, 'nextUser'), 'error' => array($user_data, 'nextError'), 'row' => function ($users) {return $users -> userCount();}, 'form' => function () {return array(1 => (string) $_SERVER['PHP_SELF']);} ); return parse_template($template_data, $callbacks, $user_data); } function generate_page_no_users($template) { $template_data = file_get_contents($template); if ($template_data === false) die("Could not read page data"); $callback = function ($tag) { if ($tag == 'form') return array(1 => (string) $_SERVER['PHP_SELF']); else return false; }; return parse_template($template_data, $callback); } function parse_user_data($user_string) { $user_string = (string) $user_string; if (strpos($user_string, "\r\n") !== false) $sep = "\r\n"; else if (strpos($user_string, "\n") !== false) $sep = "\n"; else if (strpos($user_string, "\r") !== false) $sep = "\r"; else $sep = null; if ($sep === null) if ($user_string == "") return null; else return array(0 => $user_string); return explode($sep, $user_string); } function get_page ($template) { if (isset($_REQUEST['users'])) { $userdata = $_REQUEST['users']; if ($userdata === null) return generate_page_no_users($template); $users = parse_user_data($userdata); return generate_page($template, $users); } return generate_page_no_users($template); } echo get_page("usertmpl.htm"); ?>