function remove_achievement($id) { if (!user_owns_achievement($id)) { //BAD return; } $connection = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PWD); $achievement = fetch_achievement($id); if ($achievement->deleted) { error_log("Line #" . __LINE__ . ":" . __FUNCTION__ . "({$id}) Achievement already deleted."); return; } $achievement->abandoned ? delete_achievement($id) : abandon_achievement($id); if (!$achievement->locked) { toggle_locked_status($id); } $connection->exec("update achievements set rank=rank-1 where deleted=0 and parent={$achievement->parent} and rank>={$achievement->rank}"); //This is a quick fix. May require a deleted tag so that tags can still stay active when an achievement is deleted. $connection->exec("update tags set active=0 where achievement_id={$id}"); }
case "list_tags": list_tags(filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT)); break; case "list_todo": list_todo(filter_input(INPUT_POST, 'achievement_id', FILTER_SANITIZE_NUMBER_INT)); break; case "login": echo json_encode(login(filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING), filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING))); break; case "register_user": echo json_encode(register_user(filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING), filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING), filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING))); break; case "restore_achievement": restore_achievement(filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT)); break; case "toggle_documentation_status": toggle_documentation_status(filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT)); break; case "toggle_quality": toggle_quality(filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT)); break; case "toggle_locked_status": toggle_locked_status(filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT)); break; case "toggle_active_status": toggle_active_status(filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT)); break; case "uncomplete_achievement": uncomplete_achievement(filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT)); break; }