function umc_shopmgr_main()
{
    global $UMC_USER, $UMC_DOMAIN;
    // $s_post  = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
    $s_get = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
    if (!$UMC_USER) {
        return "You have to be logged in to see this!";
    }
    if (!isset($s_get['page'])) {
        $sel_page = 'deposit';
    } else {
        $sel_page = $s_get['page'];
    }
    $out = '';
    if (!$UMC_USER) {
        return "<strong>You need to be <a href=\"{$UMC_DOMAIN}/wp-login.php\">logged in</a></strong> to see this!\n";
    } else {
        $username = $UMC_USER['username'];
        $userlevel = $UMC_USER['userlevel'];
    }
    $balance = number_format(umc_money_check($username), 2, ".", "'");
    $out .= "Welcome {$username} ({$userlevel})! You currently have {$balance} Uncs.<br>";
    $pages = array('deposit' => "shopmgr_show_deposit", 'goods' => "shopmgr_items", 'offers' => "shopmgr_offers", 'requests' => "shopmgr_requests", 'users' => "shopmgr_transactions", 'statistics' => "shopmgr_stats", 'deposit_help' => "shopmgr_show_help_deposit", 'shop_help' => "shopmgr_show_help_shop");
    $out .= '<ul class="lot_tabs">' . "\n";
    foreach ($pages as $page => $function) {
        $page_name = umc_pretty_name($page);
        if ($page == $sel_page) {
            $out .= "<li class=\"active_world\">{$page_name}</li>";
        } else {
            $out .= "<li><a href=\"?page={$page}\">{$page_name}</a></li>";
        }
    }
    $out .= "</ul><br>";
    $out .= "<div class=\"formbox\"><form class=\"lotform\">";
    $function = 'umc_' . $pages[$sel_page];
    if (function_exists($function)) {
        $out .= $function();
    } else {
        XMPP_ERROR_trigger("Shop manager function {$function} for {$sel_page} invalid!");
        echo "Page {$function} for {$sel_page} not found!";
    }
    $out .= "</form></div>";
    return $out;
}
示例#2
0
/**
 *
 * @param string $table_name name of the table to enable several per page
 * @param string $sort_column initial sorting column, format "7, 'desc'"
 * @param misc $data recordset of all data in the table or array
 * @param string $pre_table html to insert before table
 * @param int $hide_cols one colums to hide
 * @param array $non_numeric_cols names of columens that are not numerical
 * @param array array('column' => 'function');
 * @return string
 */
function umc_web_table($table_name, $sort_column, $data, $pre_table = '', $hide_cols = array(), $non_numeric_cols = false, $formats = false)
{
    $headers = '';
    if (!$non_numeric_cols) {
        // default numeric cols if nothing else defined
        // this should disappear once all inputing functions are updated
        $non_numeric_cols = array('username', 'item', 'buyer', 'seller', 'meta', 'item_name');
    }
    $numeric_columns = array();
    if (is_array($data)) {
        if (count($data) == 0) {
            return "{$pre_table}<br>No data found<hr>";
        }
        $keys = array_keys(current($data));
    } else {
        XMPP_ERROR_trigger("Data type passed to umc_web_table is not array!");
        return '';
    }
    $counter = 0;
    foreach ($keys as $col) {
        if (in_array($col, $hide_cols)) {
            continue;
        } else {
            $style = "style='text-align:left'";
            $input_class = "";
            if (!in_array($col, $non_numeric_cols)) {
                array_push($numeric_columns, $counter);
                $style = "style='text-align:right'";
                $input_class = " numeric";
            }
            $headers .= "<th {$style}>" . umc_pretty_name($col) . "</th>\n";
            $counter++;
        }
    }
    $data_out = '';
    foreach ($data as $row) {
        $data_out .= umc_web_table_create_line($row, $numeric_columns, $formats, $hide_cols);
    }
    $numeric_columns_str = implode(",", $numeric_columns);
    $out = "<script type=\"text/javascript\">\n            var table_name = \"{$table_name}\";\n            var numeric_columns = [{$numeric_columns_str}];\n            var sort_columns = [[{$sort_column}]];\n            var strnum_columns = [];\n        </script>";
    $out .= "<script type=\"text/javascript\" src=\"/admin/js/jquery.dataTables.min.js\"></script>\n" . "<script type=\"text/javascript\">" . 'jQuery(document).ready(function() {jQuery' . "('#shoptable_{$table_name}').dataTable( {\"autoWidth\": false, \"order\": [[ {$sort_column} ]],\"paging\": false,\"ordering\": true,\"info\": false} );;} );" . "</script>";
    $out .= "{$pre_table}\n        <table id='shoptable_{$table_name}'>\n          <thead>\n            <tr>\n              {$headers}\n            </tr>\n          </thead>\n          <tbody>\n            {$data_out}\n          </tbody>\n        </table>";
    return $out;
}
/**
 * Settler  test
 *
 * @global type $UMC_USER
 * @global type $UMC_SETTING
 * @global type $UMC_DOMAIN
 * @return string
 */
function umc_settler_new()
{
    global $UMC_USER, $UMC_SETTING, $UMC_DOMAIN;
    $out = '';
    if (!$UMC_USER) {
        return "You have to be <a href=\"{$UMC_DOMAIN}/wp-login.php\">logged in</a> to use this!";
    }
    $steps = array(1 => array('begging' => true, 'griefing' => true, 'pixel_art' => true, 'minimaps' => false, 'xray_and_cheats' => true, 'not_reading_the_website' => true, 'swearing' => true, 'walls_around_your_lot' => true, 'shaders' => false));
    $player = strtolower($UMC_USER['username']);
    $uuid = $UMC_USER['uuid'];
    $userlevel = $UMC_USER['userlevel'];
    $email = $UMC_USER['email'];
    if ($userlevel != 'Guest') {
        $out .= "You are not a Guest and can use the <a href=\"http://uncovery.me/server-access/lot-manager/\">Lot manager</a> to get a lot!";
    }
    if (umc_user_is_banned($uuid)) {
        return "Sorry, you are banned from the server!";
    }
    $icon_url = umc_user_get_icon_url($player);
    $user_icon = "<img src=\"{$icon_url}\">";
    // get user location
    $s_post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
    $step = 0;
    if (isset($s_post['step'])) {
        $step = $s_post['step'];
    }
    $loc = umc_read_markers_file('array');
    $lot = false;
    if (isset($s_post['lot'])) {
        $lot = $s_post['lot'];
    }
    $world = false;
    if (isset($s_post['world'])) {
        $world = $s_post['world'];
    }
    if (isset($loc[$player])) {
        $player_world = $loc[$player]['world'];
        $player_lot = umc_lot_get_from_coords($loc[$player]['x'], $loc[$player]['z'], $loc[$player]['world']);
        $x = $loc[$player]['x'];
        $z = $loc[$player]['z'];
    } else {
        $player_lot = false;
        $player_world = false;
        $x = false;
        $z = false;
    }
    $error = '';
    // answer check
    switch ($step) {
        case 2:
            if (!isset($s_post['stepone'])) {
                $step = 1;
                umc_log('settler_test', 'step_1_fail', "{$player} did not answer any questions!");
                $error = "You need to answer the questions on the previous page!";
            } else {
                $problem = false;
                $answers = array();
                foreach ($steps[1] as $choice => $value) {
                    if ($value == true && !in_array($choice, $s_post['stepone'])) {
                        // Bad stuff
                        $problem = true;
                        $answers[] = $choice;
                    } else {
                        if ($value == false && in_array($choice, $s_post['stepone'])) {
                            // but is
                            $problem = true;
                            $answers[] = $choice;
                        }
                    }
                }
                if ($problem) {
                    umc_log('settler_test', 'step_1_fail', "{$player} failed step 1 with wrong answers " . implode("|", $answers));
                    $error = "<h1>Error</h1>One or more answers in the previous page were wrong.<br>Please go back and check before proceeding.<br>" . "If you need help, please read the <a href=\"{$UMC_DOMAIN}/about-this-server/rules/\">rest of the rules</a>";
                    $step = 1;
                }
            }
            break;
        case 3:
            if (!isset($s_post['world'])) {
                $step = 2;
                umc_log('settler_test', 'step_2_fail', "{$player} failed step 2");
                $error = 'You need to choose a playing mode to continue!';
            }
            break;
        case 4:
            if (!isset($s_post['lot'])) {
                $step = 3;
                umc_log('settler_test', 'step_3_fail', "{$player} failed step 3");
                $error = 'You need to choose lot to continue!';
            }
            break;
        case 5:
            if (!$player_world) {
                $step = 4;
                umc_log('settler_test', 'step_4_fail', "{$player} failed step 4 (not in game)");
                $error = 'You need to be in the game to continue!';
                // var_dump($loc);
            } else {
                if ($player_world != 'city' || $x > 953 || $x < 938 || $z < -814 || $z > -793) {
                    $step = 4;
                    umc_log('settler_test', 'step_4_fail', "{$player} failed step 4 (not in spawn house)");
                    $error = 'You need to type /warp spawn and then continue!';
                }
            }
            break;
        case 6:
            if ($player_world != $s_post['world']) {
                $step = 5;
                umc_log('settler_test', 'step_5_fail', "{$player} failed step 5");
                $error = "You need to go through the {$s_post['world']} portal! Type <strong>/warp spawn</strong> and try again!";
            }
            break;
        case 8:
            if (strtolower($player_lot) != strtolower($s_post['check_lot'])) {
                $step = 7;
                umc_log('settler_test', 'step_7_fail', "{$player} failed step 7 by entering " . $s_post['check_lot'] . "instead of {$player_lot}");
                $error = 'You need to enter the lot you see on-screen into the form to continue!';
            }
            break;
        case 9:
            if (!$player_lot) {
                $step = 8;
                umc_log('settler_test', 'step_8_fail', "{$player} failed step 8");
                $error = "We could not find you on the map. Please make sure you are on the server!";
            } else {
                if ($player_lot != $s_post['lot']) {
                    $step = 8;
                    umc_log('settler_test', 'step_8_fail', "{$player} failed step 8");
                    $error = "You need to get lot {$s_post['lot']} before you can continue. Please either walk there or use /jump {$s_post['lot']}. You are now in lot {$player_lot}!";
                }
            }
            break;
    }
    // questions
    $out .= "<strong>{$error}</strong><br>";
    switch ($step) {
        case 0:
            umc_log('settler_test', 'start', "{$player} started the settler test");
            $out .= "<form action=\"{$UMC_DOMAIN}/server-access/buildingrights/\" method=\"post\">\n" . "<h1>Step 1: Welcome!</h1>\n" . "<h2>Once you finish this test, you will be settler!</h2>\n" . "<h2>Before Applying</h2>\n" . "<ul>\n" . "    <li>You must have some experience playing Minecraft.</li>\n" . "    <li>Read the <a href=\"{$UMC_DOMAIN}/faq/\">FAQ</a></li>\n" . "    <li>Read the <a href=\"{$UMC_DOMAIN}/rules/\">Rules</a></li>\n" . "    <li>Read the <a href=\"{$UMC_DOMAIN}/user-levels/\">User Levels and Commands</a> page.</li>\n" . "</ul>\n" . "This process will guide you through the process of getting building rights on the server and at the same time give you a lot and make sure you get there. " . "You will need to login to the server with your minecraft client during the process and keep this website open.<br>" . "<input type=\"hidden\" name=\"step\" value=\"1\">\n" . "<input type=\"submit\" name=\"Next\" value=\"Next\">\n";
            break;
        case 1:
            $warning = '';
            $failcount = umc_settler_get_fails($player);
            if ($failcount > 10) {
                $warning = "<div style=\"color:red;font-weight:bold;font-size:120%;\">You have failed the test more than 10 times. If you fail too often, you will be banned from the server!</div>";
            } else {
                if ($failcount > 20) {
                    umc_user_ban($player, "Settler test failed");
                    return $warning = "<div style=\"color:red;font-weight:bold;font-size:120%;\">You have failed the test too often. You are now banned from the server!</div>";
                }
            }
            umc_log('settler_test', 'step_1', "{$player} is at step 1");
            $out .= "<form action=\"{$UMC_DOMAIN}/server-access/buildingrights/\" method=\"post\">\n" . "<h1>Step 2: Rules & regulations</h1>\n" . $warning . "Here are some basic rules you should know:" . "<ul>\n<li><strong>Do not beg for anything</strong> - Including upgrades, handouts or help with this process.</li>\n" . "<li><strong>No pixel-art</strong>. This is not 'paint by numbers'. We build stuff.</li>\n" . "<li><strong>Be considerate of others</strong>. No griefing, no stealing, no killing. We log everything, we will find out.</li>\n" . "<li><strong>Don't cheat!</strong> No Xray, no mods, no bug abuse.</li>\n" . "<li><strong>Learn yourself!</strong> Look on the <a href=\"{$UMC_DOMAIN}/about-this-server/\">website</a> for answers first, then ask other users.</li>\n" . "<li><strong>We ban forever - no appeals!</strong> You better read the <a href=\"{$UMC_DOMAIN}/about-this-server/rules/\">rest of the rules</a>.</li>\n" . "</ul>\n" . "<strong>Pick the items that are not allowed (and will therefore get you banned) (Note: Asking others about the answers will get you banned, too!): </strong><br>\n" . "<input type=\"hidden\" name=\"step\" value=\"2\">\n";
            foreach ($steps[1] as $image => $check) {
                $image_text = umc_pretty_name($image);
                $out .= "<span style=\"float:left; text-align:center;\"><img height=\"180\" src=\"{$UMC_DOMAIN}/websend/{$image}.png\"><br>" . "<input type=\"checkbox\" name=\"stepone[]\" value=\"{$image}\">{$image_text}</span>\n";
            }
            $out .= '<br style="clear:both;">' . "<input type=\"submit\" name=\"Next\" value=\"Next\">\n";
            break;
        case 2:
            umc_log('settler_test', 'step_2', "{$player} is at step 2");
            $out .= "<form action=\"{$UMC_DOMAIN}/server-access/buildingrights/\" method=\"post\">\n" . '<h1>Step 3: Creative or Survival?</h1>' . 'You can either build in a flat, creative world or a wild, survival world!<br>Choose one:<br>' . "<span style=\"float:left; text-align:center;\"><img width=\"400\" src=\"{$UMC_DOMAIN}/websend/empire.png\"><br><input type=\"radio\" name=\"world\" value=\"empire\">Survival mode in the Empire world</span>" . "<span style=\"float:left; text-align:center;\"><img width=\"400\" src=\"{$UMC_DOMAIN}/websend/flatlands.png\"><br><input type=\"radio\" name=\"world\" value=\"flatlands\">Creative mode in the Flatlands world</span><br style=\"clear:both;\">" . "<input type=\"hidden\" name=\"step\" value=\"3\">\n" . "<input type=\"submit\" name=\"Next\" value=\"Next\">\n";
            break;
        case 3:
            umc_log('settler_test', 'step_3', "{$player} is at step 3");
            $spawn_lot = $UMC_SETTING['world_data'][$world]['spawn'];
            $tile = umc_user_get_lot_tile(strtolower($spawn_lot));
            $out .= "<form action=\"{$UMC_DOMAIN}/admin/index.php?function=create_map&world={$world}&freeonly=true\" method=\"post\">\n" . "<h1>Step 4: Find a lot!</h1>\n" . "<img style=\"float:right;\" width=\"300\" src=\"{$UMC_DOMAIN}/websend/{$world}.png\">Great! You chose to build in the <strong>{$world}</strong> world!<br>" . "You are now ready to pick a lot!<br>" . "If you made a mistake and want to play a different mode, please go back now and chose another mode. There will be no going back later.<br><br>" . "<strong>Now you need to find a lot that you like.</strong><br>" . "When you click 'Next', a map of the {$world} world will open.<br>" . "Click on the \"Find Spawn\" button in the top-left corner. It looks like this:<br>" . "<img src=\"/websend/find_spawn.png\"><br>" . "You will now see a flashing lot, which is the entrance to the {$world} world.<br>" . "It's convenient to find a lot close to it. <br>" . "The spawn lot looks like this:<br>{$tile}" . "<input type=\"hidden\" name=\"settler_test\" value=\"settler_test\">\n" . "<br><br><input type=\"submit\" name=\"Next\" value=\"Next\">\n";
            break;
        case 4:
            umc_log('settler_test', 'step_4', "{$player} is at step 4");
            $tile = umc_user_get_lot_tile(strtolower($lot));
            $out .= "<form action=\"{$UMC_DOMAIN}/server-access/buildingrights/\" method=\"post\">\n" . '<h1>Step 5: You chose a lot!</h1>' . "<span style=\"float:left;\">{$tile}</span>The lot you have chosen is <strong>{$lot} in the {$world}</strong> world. You can see a satellite image of it on the left.<br>You should now go there, to make sure it's what you want!<br>";
            if ($player_world) {
                $out .= "<br>To go there, you need to go to the portal house. From there you can get into the {$world} world.<br>" . "Please type <strong>/warp spawn</strong> in game to get there, it should look like this inside:<br><img src=\"/websend/portals.png\">" . "Once you see this, please come back here and press " . "<input type=\"submit\" name=\"Next\" value=\"Next\">\n" . "<input type=\"hidden\" name=\"lot\" value=\"{$lot}\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"hidden\" name=\"step\" value=\"5\">\n";
            } else {
                $out .= "Please <strong>login to the server</strong> now with your minecraft client at <strong>uncovery.me</strong> and then press " . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"submit\" name=\"action\" value=\"Continue\">\n" . "<input type=\"hidden\" name=\"lot\" value=\"{$lot}\">\n" . "<input type=\"hidden\" name=\"step\" value=\"5\">\n";
            }
            break;
        case 5:
            umc_log('settler_test', 'step_5', "{$player} is at step 5");
            $out .= "<form action=\"{$UMC_DOMAIN}/server-access/buildingrights/\" method=\"post\">\n" . "<h1>Step 6: Get to the {$world} world</h1>";
            // check if the player is actually in the portal house
            // player is not in portal house
            if ($player_world != 'city' || $x > 953 || $x < 938 || $z < -814 || $z > -793) {
                $out .= "You need to be in the portal house to continue. Please type <strong>/warp spawn</strong> again to get there. " . "It should look like this inside:<br><img src=\"/websend/portals.png\"> Once you see this, press\n" . "<input type=\"submit\" name=\"Next\" value=\"Next\">\n" . "<input type=\"hidden\" name=\"lot\" value=\"{$lot}\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"hidden\" name=\"step\" value=\"5\">\n";
            } else {
                $out .= "Since you chose a lot in the {$world} world, you need to go through the {$world} portal. " . "It looks like this: Notice the name of the world is written on the sign." . "<img src=\"/websend/{$world}_portal.png\">" . "Please step through and press " . "<input type=\"submit\" name=\"Next\" value=\"Next\">\n" . "<input type=\"hidden\" name=\"lot\" value=\"{$lot}\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"hidden\" name=\"step\" value=\"6\">\n";
            }
            break;
        case 6:
            umc_log('settler_test', 'step_6', "{$player} is at step 6");
            $spawn_lot = strtoupper($UMC_SETTING['world_data'][$world]['spawn']);
            $lower_lot = strtolower($lot);
            $lot_sql = "SELECT region_cuboid.region_id AS lot, sqrt(pow(max_x,2)+pow(max_z,2)) AS distance, max_x, max_z\r\n                FROM minecraft_worldguard.world\r\n                LEFT JOIN minecraft_worldguard.region_cuboid ON world.id=region_cuboid.world_id\r\n                WHERE region_cuboid.region_id='{$lower_lot}';";
            $D = umc_mysql_fetch_all($lot_sql);
            $lot_data = $D[0];
            // north/south difference
            if ($lot_data['max_x'] < 0) {
                $direction1 = "north";
            } else {
                if ($lot_data['max_x'] >= 0) {
                    $direction1 = "south";
                }
            }
            // north/south difference
            if ($lot_data['max_z'] < 0) {
                $direction2 = "west";
            } else {
                if ($lot_data['max_z'] >= 0) {
                    $direction2 = "east";
                }
            }
            $out .= "<form action=\"{$UMC_DOMAIN}/admin/index.php?function=create_map&world={$world}&freeonly=true\" method=\"post\">\n" . "<h1>Step 7: Getting to lot {$lot} in the {$world} world</h1>" . "Getting to your world is easy! You are now at the center of the {$world} world." . "Your lot is <strong>{$direction1}/{$direction2}</strong> from spawn! <br>" . "You can find out which direction you are looking with the <strong>/compass</strong> command.<br>" . "As a Guest level player, you cannot be killed by mobs until you finished this here.<br>" . "So you have to leave the spawn lot either through the {$direction1} or the {$direction2} exit.<br>" . "To know where you are, you can follow your icon {$user_icon} on the map while you get around.<br>" . "Please click NEXT to open the map, there you find your icon click the button next to it!<br><br>" . "<input type=\"submit\" name=\"next\" value=\"Next\">\n" . "<input type=\"hidden\" name=\"track_player\" value=\"{$player}\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"hidden\" name=\"lot\" value=\"{$lot}\">\n";
            $x = $loc[$player]['x'];
            $z = $loc[$player]['z'];
            break;
        case 7:
            umc_log('settler_test', 'step_7', "{$player} is at step 7");
            // whereami
            $out .= "<h1>Step 8: Find out where you are in-game</h1>" . "<form action=\"{$UMC_DOMAIN}/server-access/buildingrights/\" method=\"post\">\n" . "Now that you know how to find yourself on the map, you need to find out where you are when in-game.<br>" . "The command to find your location in-game is called <strong>/whereami</strong>.<br>" . "Please go into the game and type <strong>/whereami</strong><br>" . "You will see something like this:<br>" . "<img src=\"/websend/whereami.png\"><br>" . "In this example, you can see the Lot (in the first line) is <img src=\"/websend/whereami_detail.png\"> So you would enter 'emp_z7'.<br>" . "Please go now into the game, type <strong>/whereami</strong>, and enter the information here:<br>" . "I am now in lot <input type=\"text\" name=\"check_lot\" value=\"\" size=\"7\"> and then press " . "<input type=\"submit\" name=\"next\" value=\"Next\">\n" . "<input type=\"hidden\" name=\"step\" value=\"8\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"hidden\" name=\"lot\" value=\"{$lot}\">\n";
            // enter which lot you are in right now
            break;
        case 8:
            // walk to your lot
            umc_log('settler_test', 'step_8', "{$player} is at step 8");
            $lower_lot = strtolower($lot);
            $out .= "<form action=\"{$UMC_DOMAIN}/admin/index.php\" method=\"post\">\n" . "<h1>Step 9: Walk to your lot {$lot}!</h1>" . "Now you have everything you need to get to your lot!<br>You should follow your steps on the 2D map.<br>" . "You can either walk there, or use the command <pre>/lot warp {$lot}</pre> to get there. Please note that this command is only available while you are Guest.<br>" . "Press 'Next' to open the 2D map and follow your icon to lot {$lot}!<br>" . "<input type=\"submit\" name=\"next\" value=\"Next\">\n" . "<input type=\"hidden\" name=\"guide_lot\" value=\"{$player}\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"hidden\" name=\"freeonly\" value=\"true\">\n" . "<input type=\"hidden\" name=\"function\" value=\"create_map\">\n" . "<input type=\"hidden\" name=\"step\" value=\"9\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"hidden\" name=\"lot\" value=\"{$lower_lot}\">\n";
            break;
        case 9:
            umc_log('settler_test', 'step_9', "{$player} is at step 9");
            // do you like it? claim it
            $out .= "<h1>Step 10: Do you like the lot {$s_post['lot']}?</h1>" . "<form action=\"{$UMC_DOMAIN}/server-access/buildingrights/\" method=\"post\">\n" . '<input type="radio" name="step" value="10" checked>Yes! I take it! I will type <strong>/homes buy ' . $world . '</strong> now so I can warp back here!<br>' . '<input type="radio" name="step" value="1">No,I would like to start over!<br>' . "<input type=\"hidden\" name=\"lot\" value=\"{$lot}\">\n" . "<input type=\"hidden\" name=\"world\" value=\"{$world}\">\n" . "<input type=\"submit\" name=\"next\" value=\"Finish!\">\n";
            break;
        case 10:
            umc_log('settler_test', 'step_10', "{$player} is at step 10");
            // final confirmation
            $out .= "<h1>Step 11: Congratulations!</h1>" . "You have been promoted to Settler!<br>";
            if ($userlevel == 'Guest') {
                $cmd = "pex promote {$UMC_USER['uuid']}";
                umc_exec_command($cmd);
                // update UUID database
                $sql = "UPDATE minecraft_srvr.UUID SET userlevel='Settler' WHERE UUID='{$UMC_USER['uuid']}';";
                umc_mysql_query($sql);
                umc_exec_command('pex reload');
                umc_exec_command("ch qm u Congrats {$player} for becoming Settler!");
                XMPP_ERROR_send_msg("{$userlevel} {$player} got promoted with command " . $cmd);
                umc_log('settler_test', 'promotion', "{$player} ({$UMC_USER['uuid']})was promoted to settler (new test)");
                $headers = "From: minecraft@uncovery.me\r\n" . "Reply-To: minecraft@uncovery.me\r\n" . 'X-Mailer: PHP/' . phpversion();
                $subject = "[Uncovery Minecraft] Settler applicaton";
                $mailtext = "The user: {$player} (email: {$email}) was promoted to Settler and got lot {$lot}.\n\n";
                $check = mail('*****@*****.**', $subject, $mailtext, $headers);
                if (!$check) {
                    XMPP_ERROR_trigger("The settler promotion email could not be sent!");
                }
                // check userlevel to make sure
                $new_level = umc_get_userlevel($player);
                if ($new_level != 'Settler') {
                    XMPP_ERROR_trigger("{$userlevel} {$player} did NOT got promoted with command " . $cmd . " he's still {$new_level}");
                }
            } else {
                $out .= "Thanks for taking this test! Since you are {$userlevel} already, we will not promote you to Settler.<br>";
            }
            // try to assign the lot
            $check = umc_lot_manager_check_before_assign($uuid, $lot);
            $out .= "Trying to assign this lot to you: <strong>{$check['text']}</strong><br>";
            if ($check['result'] == false) {
                XMPP_ERROR_send_msg("Settler Test lot assignment failed!");
                $out .= "There was an error giving the lot you reserved to you. You can get any other through your <a hreaf=\"{$UMC_DOMAIN}/server-access/lot-manager/\">lot manager</a>!<br>";
            } else {
                umc_lot_add_player($uuid, $lot, 1, $check['cost']);
                $out .= $check['text'];
            }
            break;
        default:
            $out .= "This option was not recognized, please reload the page!";
    }
    $out .= "</form>\n";
    return $out;
}
/**
 * returns full name of an item, depending on the environment
 * @param string $item_name
 * @param int $item_data
 * @param string $meta
 */
function umc_goods_get_text($item_name, $item_data = 0, $meta = '')
{
    global $UMC_DATA, $UMC_ENV, $UMC_PATH_MC, $UMC_DOMAIN, $UMC_DATA_ID2NAME;
    XMPP_ERROR_trace(__FUNCTION__, func_get_args());
    // cast part capitalized text to lowercase.
    $item_name = strtolower($item_name);
    // just to deal with legacy item id
    if (is_numeric($item_name)) {
        $item_name = $UMC_DATA_ID2NAME[$item_name];
        // conversion failed, item does not exist
        if (!$item_name) {
            XMPP_ERROR_trigger("Could not identify {$item_name} from {$item_data}: DATA umc_goods_get_text");
            return false;
        }
    }
    // if item name is not set at all
    if (!isset($UMC_DATA[$item_name])) {
        XMPP_ERROR_trigger("Could not identify {$item_name} as STRING umc_goods_get_text");
        return false;
    } else {
        $item_arr = $UMC_DATA[$item_name];
    }
    // calculate the damage
    $damage_text = '';
    $damage_spacer = '';
    $mc_name = $item_name;
    $icon_ext = strtolower(pathinfo($item_arr['icon_url'], PATHINFO_EXTENSION));
    if (isset($item_arr['damage'])) {
        $damage = umc_goods_damage_calc($item_data, $item_arr['damage']);
        if ($damage) {
            $damage_spacer = ' ';
            $damage_text = "{$damage}% dmgd";
        }
    } else {
        if (isset($item_arr['subtypes'][$item_data])) {
            // we might have a subtype
            $mc_name = $item_arr['subtypes'][$item_data]['name'];
            $icon_ext = strtolower(pathinfo($item_arr['subtypes'][$item_data]['icon_url'], PATHINFO_EXTENSION));
        }
    }
    $nice_name = umc_pretty_name($mc_name);
    $icon_file = "icons/{$mc_name}.{$icon_ext}";
    $icon_path = "{$UMC_PATH_MC}/server/bin/data/";
    $meta_text = '';
    $meta_spacer = '';
    if ($meta != '') {
        $meta_text = umc_get_meta_txt($meta, 'short');
        $meta_spacer = ' ';
    }
    $full_clean = trim("{$nice_name}{$meta_text}{$damage_text}");
    if ($UMC_ENV == 'wordpress' && file_exists($icon_path . $icon_file)) {
        $img = "<img width=\"24\" src=\"{$UMC_DOMAIN}/websend/{$icon_file}\" alt=\"{$nice_name}\">";
        $full = "{$img} {$full_clean}";
    } else {
        if ($UMC_ENV == 'websend') {
            $full = "{magenta}{$meta_text}{$meta_spacer}{green}{$nice_name}{red}{$damage_spacer}{$damage_text}{white}";
            $img = '';
        } else {
            $full = "{$nice_name}{$meta_spacer}{$meta_text}{$damage_spacer}{$damage_text}";
            $img = '';
        }
    }
    if (isset($UMC_DATA[$item_name]['group'])) {
        $group = umc_pretty_name($UMC_DATA[$item_name]['group']);
    } else {
        $group = false;
    }
    $out = array('full' => $full, 'item_id' => $UMC_DATA[$item_name]['id'], 'type' => $item_data, 'full_clean' => $full_clean, 'meta' => $meta_text, 'icon' => $img, 'name' => $nice_name, 'item_name' => $item_name, 'dmg' => $damage_text, 'group' => $group);
    return $out;
}