0){ array_push($pars, $p); } } // API call: Use API controller if (count($pars) > 0 && strtoupper($pars[0]) == "API"){ if (count($pars) == 1){ // TODO: API MAIN PAGE } else{ $version = strtolower($pars[1]); $api_params = $pars; array_shift($api_params); array_shift($api_params); switch ($version){ case "v1": require_once(__DIR__ . "/API/v1/API_Controller.php"); new API_Controller($params); break; case "v2": require_once(__DIR__ . "/API/v2/API_Controller.php"); new API_Controller($params); break; case "v3": require_once(__DIR__ . "/API/v3/API_Controller.php"); new API_Controller($params); break; } } return; } // Special case: Actions. // Not redirecting to page, just execute a function elseif (count($pars) > 1 && strtoupper($pars[0]) == "ACTION"){ switch (strtoupper($pars[1])){ case "LOGIN": require_once(PATH::ACTION . "login.php"); action(); return; break; case "LOGOUT": require_once(PATH::ACTION . "logout.php"); action(); return; break; case "NEW_TEAM": require_once(PATH::ACTION . "new_team.php"); action(); return; break; case "DELETE_TEAM": require_once(PATH::ACTION . "delete_team.php"); action(); return; break; case "RATE_TEAM": require_once(PATH::ACTION . "rate_team.php"); action(); return; break; case "SAVE_RUN_TEAM": require_once(PATH::ACTION . "save_run_team.php"); action(); return; break; case "OPTIMIZE_GET_RUNE_LIST": require_once(PATH::ACTION . "optimize_get_rune_list.php"); $response = action(); if (strlen($response) > 1){ echo($response); return; } else{ return; } break; case "OPTIMIZE_GET_OPTIONS": require_once(PATH::ACTION . "optimize_get_options.php"); $response = action(); if (strlen($response) > 1){ echo($response); return; } else{ return; } break; case "EDIT_PROFILE": require_once(PATH::ACTION . "edit_profile.php"); $response = action(); if (strlen($response) > 1){ echo($response); return; } else{ return; } break; default: require_once(PATH::PAGE . "Error_Page.php"); $page = new Error_Page(404); http_response_code(404); } } if (isset($_COOKIE["uid"]) && isset($_SESSION["uid"]) && $_COOKIE["uid"] != $_COOKIE["uid"]){ // Both cookie and session are set, but they are different. Delete them both. setcookie("uid", "", time() - 3600); $_SESSION["session"] = false; $_SESSION["uid"] = ""; require_once(PATH::PAGE . "Landing_Page.php"); $page = new Landing_Page(); require_once($page->view); return; } elseif (isset($_COOKIE["uid"]) && !isset($_SESSION["uid"])){ $_SESSION["session"] = true; $_SESSION["uid"] = $_COOKIE["uid"]; } elseif (!isset($_COOKIE["uid"]) && isset($_SESSION["uid"])){ setcookie("uid", $_SESSION["uid"], time() + 5 * 24 * 60 * 60); } // Validate session $UID = $_SESSION["uid"]; $q = $db->query("SELECT count(uid) AS c FROM player WHERE uid = '$UID';"); $r = $q->fetchArray(SQLITE3_ASSOC); if ($r["c"] == 0){ require_once(PATH::PAGE . "Landing_Page.php"); $page = new Landing_Page(); require_once($page->view); return; } else{ // Reset cokie and renew session. setcookie("uid", $_SESSION["uid"], time() + 5 * 24 * 60 * 60); $_SESSION["session"] = true; $_SESSION["uid"] = $UID; // Recover username if lost if (!isset($_SESSION["name"]) || strlen($_SESSION["name"]) == 0){ $q = $db->query("SELECT name FROM player WHERE uid = '$UID';"); $r = $q->fetchArray(SQLITE3_ASSOC); $_SESSION["name"] = $r["name"]; } } // If UID not in URL, redirect and end. if ($pars[0] != $UID){ header("Location: /$UID" . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH)); return; } // Select the model to load. array_shift($pars); // Remove first one, should be UID if (sizeof($pars) == 0){ require_once(PATH::PAGE . "Home_Page.php"); $page = new Home_Page(); } else{ if (strtoupper($pars[0]) == "FUSION"){ require_once(PATH::PAGE . "Fusion_Page.php"); $page = new Fusion_Page(); } elseif (strtoupper($pars[0]) == "RUNES"){ require_once(PATH::PAGE . "Runes_Page.php"); $page = new Runes_Page(); } elseif (strtoupper($pars[0]) == "ENCHANTMENTS"){ require_once(PATH::PAGE . "Enchantments_Page.php"); $page = new Enchantments_Page(); } elseif (strtoupper($pars[0]) == "ARTIFACTS"){ require_once(PATH::PAGE . "Artifacts_Page.php"); $page = new Artifacts_Page(); } elseif (strtoupper($pars[0]) == "GUILD"){ require_once(PATH::PAGE . "Guild_Page.php"); $page = new Guild_Page(); } elseif (strtoupper($pars[0]) == "RUNS"){ require_once(PATH::PAGE . "Runs_Page.php"); $page = new Runs_Page(); } elseif (strtoupper($pars[0]) == "STATS"){ require_once(PATH::PAGE . "Stats_Page.php"); $page = new Stats_Page(); } elseif (strtoupper($pars[0]) == "TEAMS"){ require_once(PATH::PAGE . "Teams_Page.php"); $page = new Teams_Page(); } elseif (strtoupper($pars[0]) == "PROFILE"){ require_once(PATH::PAGE . "Profile_Page.php"); $page = new Profile_Page(); } elseif (strtoupper($pars[0]) == "MONSTERS"){ if (count($pars) == 1){ require_once(PATH::PAGE . "Monsters_Page.php"); $page = new Monsters_Page(); } else{ require_once(PATH::PAGE . "Monster_Page.php"); $page = new Monster_Page($pars[1]); } } elseif (strtoupper($pars[0]) == "CATALOG"){ if (count($pars) == 1){ require_once(PATH::PAGE . "Catalog_Page.php"); $page = new Catalog_Page(); } else{ require_once(PATH::PAGE . "Monster_Info_Page.php"); $page = new Monster_Info_Page($pars[1]); } } elseif (strtoupper($pars[0]) == "REPORT"){ if (count($pars) == 1){ require_once(PATH::PAGE . "Report_Page.php"); $page = new Report_Page(); } elseif (strtoupper($pars[1]) == "SKILLUP"){ require_once(PATH::PAGE . "Report_Skillup_Page.php"); $page = new Report_Skillup_Page($pars[1]); } elseif (strtoupper($pars[1]) == "RUNE_ENCHANTMENT"){ require_once(PATH::PAGE . "Report_Rune_Enchantment_Page.php"); $page = new Report_Rune_Enchantment_Page($pars[1]); } } elseif (strtoupper($pars[0]) == "OPTIMIZER"){ if (count($pars) == 1){ require_once(PATH::PAGE . "Optimizer_Page.php"); $page = new Optimizer_Page(); } else{ require_once(PATH::PAGE . "Optimizer_Unit_Page.php"); $page = new Optimizer_Unit_Page($pars[1]); } } } // Load the view, or set an error code. if (isset($page)){ require_once($page->view); return 200; } else{ require_once(PATH::PAGE . "Error_Page.php"); $page = new Error_Page(404); http_response_code(404); return 404; } } } ?>