Esempio n. 1
0
    /**
     * Behandle forslag av medlem
     */
    protected function page_suggestion_handle()
    {
        ess::$b->page->add_title("Foreslå en spiller som medlem");
        $player = false;
        // hvilken posisjon kan vi foreslå til?
        $limits = $this->ff->get_limits();
        $priority = isset($limits[4]) && $limits[4] >= 0 ? 4 : 3;
        // finne spiller?
        if (isset($_POST['player']) || isset($_REQUEST['up_id'])) {
            // hent spillerinformasjon
            $where = isset($_REQUEST['up_id']) ? 'up_id = ' . intval($_REQUEST['up_id']) : 'up_name = ' . \Kofradia\DB::quote($_POST['player']);
            $more = isset($_REQUEST['up_id']) ? '' : ' ORDER BY up_access_level = 0, up_last_online DESC LIMIT 1';
            $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT up_id, up_name, up_access_level, up_points, upr_rank_pos, uc_time, uc_info, COUNT(IF(ff_is_crew = 0 AND ff_inactive = 0, 1, NULL)) ff_num\n\t\t\t\tFROM users_players\n\t\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\t\t\tJOIN users ON up_u_id = u_id\n\t\t\t\t\tLEFT JOIN users_contacts ON uc_u_id = u_id AND uc_contact_up_id = " . login::$user->player->id . " AND uc_type = 2\n\t\t\t\t\tLEFT JOIN ff_members ON ffm_up_id = up_id AND (ffm_status = 0 OR ffm_status = 1)\n\t\t\t\t\tLEFT JOIN ff ON ff_id = ffm_ff_id\n\t\t\t\tWHERE {$where}\n\t\t\t\tGROUP BY up_id{$more}");
            $row = $result->fetch();
            // fant ikke spilleren?
            if (!$row || !$row['up_id']) {
                ess::$b->page->add_message("Fant ikke spilleren med " . (isset($_REQUEST['up_id']) ? "id #" . intval($_REQUEST['up_id']) : "navn <b>" . htmlspecialchars($_POST['player']) . "</b>") . ".", "error");
            } else {
                // sett opp rank informasjon for spilleren
                $rank_info = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']);
                // er i FF?
                if (isset($this->ff->members['list'][$row['up_id']])) {
                    ess::$b->page->add_message('<user id="' . $row['up_id'] . '" /> er allerede foreslått, invitert eller medlem av ' . $this->ff->type['refobj'] . '.', "error");
                } elseif ($row['up_access_level'] == 0) {
                    ess::$b->page->add_message('<user id="' . $row['up_id'] . '" /> er død og kan ikke foreslås til ' . $this->ff->type['refobj'] . '.', "error");
                } elseif ($row['uc_time'] && !$this->ff->mod) {
                    $reason = game::bb_to_html($row['uc_info']);
                    $reason = empty($reason) ? '' : ' Begrunnelse: ' . $reason;
                    ess::$b->page->add_message('Denne spilleren blokkerte deg ' . ess::$b->date->get($row['uc_time'])->format() . '. Du kan derfor ikke foreslå spilleren til ' . $this->ff->type['refobj'] . '.' . $reason, "error");
                } elseif ($rank_info['number'] < $this->ff->get_priority_rank($priority)) {
                    ess::$b->page->add_message('<user id="' . $row['up_id'] . '" /> har ikke høy nok rank for å bli ' . $this->ff->type['priority'][$priority] . '. Må være minst ' . game::$ranks['items_number'][$this->ff->get_priority_rank($priority)]['name'] . '.', "error");
                } else {
                    $player = $row;
                }
            }
        }
        // har ikke funnet spiller?
        if (!$player || $_SERVER['REQUEST_METHOD'] == "GET") {
            // vis skjema for å finne spiller
            ess::$b->page->add_title("Velg spiller");
            echo '
<div class="section" style="width: 200px">
	<h1>Foreslå medlem til ' . $this->ff->type['refobj'] . '</h1>
	<p class="h_right"><a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a></p>
	<boxes />
	<form action="" method="post">
		<p>Skriv inn navnet på spilleren du ønsker å foreslå som medlem til ' . $this->ff->type['refobj'] . '.</p>
		<p>' . ucfirst($this->ff->type['priority'][1]) . '/' . $this->ff->type['priority'][2] . ' vil få opp dette forslaget, og kan akseptere det slik at spilleren blir invitert som ' . $this->ff->type['priority'][$priority] . ($this->ff->type['parent'] ? ' underordnet deg' : '') . '.</p>
		<dl class="dd_right">
			<dt>Spiller</dt>
			<dd><input type="text" name="player" value="' . htmlspecialchars(postval("player", $player ? $player['up_name'] : '')) . '" class="styled w100" /></dd>
		</dl>
		<p class="c">
			' . show_sbutton("Finn spiller") . '
			<a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a>
		</p>
	</form>
</div>';
            $this->ff->load_page();
        }
        // bekreftet?
        if (isset($_POST['confirm']) && validate_sid(false)) {
            // legg til forslag
            if ($this->ff->player_suggest($player['up_id'])) {
                ess::$b->page->add_message('<user id="' . $player['up_id'] . '" /> ble foreslått til ' . $this->ff->type['refobj'] . ' som ' . $this->ff->type['priority'][$priority] . ($this->ff->type['parent'] ? ' underordnet deg' : '') . '.');
                redirect::handle();
            } else {
                ess::$b->page->add_message("Noe gikk galt. Kunne ikke foreslå spilleren.", "error");
            }
        }
        // vis bekreftskjema
        ess::$b->page->add_title("Bekreft forslag");
        echo '
<div class="section" style="width: 220px">
	<h1>Bekreft forslag</h1>
	<p class="h_right"><a href="panel?ff_id=' . $this->ff->id . '&amp;a=suggestion">Tilbake</a></p>
	<boxes />
	<form action="" method="post">
		<input type="hidden" name="up_id" value="' . $player['up_id'] . '" />
		<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
		<p>Informasjon:</p>
		<dl class="dd_right">
			<dt>Spiller</dt>
			<dd>' . game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']) . '</dd>
			<dt>Posisjon</dt>
			<dd>' . ucfirst($this->ff->type['priority'][$priority]) . ($this->ff->type['parent'] ? ' underordnet <user id="' . $this->ff->uinfo->id . '" />' : '') . '</dd>
		</dl>
		<p class="c">
			' . show_sbutton("Bekreft forslag", 'name="confirm"') . '
			<a href="panel?ff_id=' . $this->ff->id . '&amp;a=suggestion">Tilbake</a>
		</p>
	</form>
</div>';
        $this->ff->load_page();
    }