示例#1
0
文件: panel.php 项目: Kuzat/kofradia
    /**
     * Behandle salg
     */
    protected function page_selge_handle()
    {
        // crewtilgang?
        if ($this->ff->uinfo->crew || $this->ff->uinfo->data['ffm_priority'] > 2) {
            ess::$b->page->add_message("Du kan ikke benytte deg av denne handlingen som moderator. Må være {$this->ff->type['priority'][1]} eller {$this->ff->type['priority'][2]}.", "error");
            redirect::handle();
        }
        // finn status på salg av FF
        $status = $this->ff->sell_status();
        // tittel
        ess::$b->page->add_title("Salg av {$this->ff->type['refobj']}");
        // i salgsmodus?
        if ($status) {
            // eier?
            if ($this->ff->access(1) && $status['up_id'] != $this->ff->uinfo->id) {
                // trekke tilbake salget?
                if (isset($_POST['abort']) && validate_sid(false)) {
                    // trekk tilbake salget
                    $this->ff->sell_abort();
                    ess::$b->page->add_message("Salget av {$this->ff->type['refobj']} ble avbrutt.");
                    redirect::handle("panel?ff_id={$this->ff->id}&a=sell");
                }
                $seller = $status['init_up_id'] == $this->ff->uinfo->id;
                echo '
<div class="bg1_c xsmall" style="width: 320px">
	<h1 class="bg1">Salg av ' . $this->ff->type['refobj'] . '<span class="left"></span><span class="right"></span></h1>
	<p class="h_left"><a href="panel?ff_id=' . $this->ff->id . '">&laquo; Tilbake</a></p>
	<div class="bg1">
		<boxes />' . ($seller ? '
		<p>Når ' . $this->ff->type['priority'][2] . ' godtar kjøpet, vil hele beløpet bli satt inn i banken din.</p>' : '
		<p>Når ' . $this->ff->type['priority'][2] . ' godtar kjøpet, vil hele beløpet bli satt inn i banken til <user id="' . $status['init_up_id'] . '" />.</p>') . '
		<p>Salgsgebyret vil bli trukket fra banken, og det må være til stede i banken for at kjøperen skal kunne fullføre.</p>
		<dl class="dd_right">' . ($seller ? '' : '
			<dt>Selger</dt>
			<dd><user id="' . $status['init_up_id'] . '" /></dd>') . '
			<dt>Kjøper (' . $this->ff->type['priority'][2] . ')</dt>
			<dd><user id="' . $status['up_id'] . '" /></dd>
			<dt>Tid salget ble åpnet</dt>
			<dd>' . ess::$b->date->get($status['time'])->format(date::FORMAT_SEC) . '</dd>
		</dl>
		<dl class="dd_right">
			<dt>Penger i banken</dt>
			<dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd>
			<dt>Salgsgebyr (trekkes fra banken)</dt>
			<dd>' . game::format_cash($status['fee']) . '</dd>
			<dt>Salgsbeløp (overføres fra kjøper)</dt>
			<dd>' . game::format_cash($status['amount']) . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<p class="c">' . show_sbutton("Avbryt salg", 'name="abort"') . ' <a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a></p>
		</form>
	</div>
</div>';
            } elseif ($status['up_id'] == $this->ff->uinfo->id) {
                // kjøpe FF?
                if (isset($_POST['approve']) && validate_sid(false)) {
                    // forsøk å kjøp FF
                    $result = $this->ff->sell_approve();
                    if ($result === true) {
                        // vellykket
                        ess::$b->page->add_message(($status['amount'] == 0 ? 'Du overtok ' . $this->ff->type['refobj'] : 'Du kjøpte ' . $this->ff->type['refobj'] . ' for <b>' . game::format_cash($status['amount']) . '</b>') . ', og er nå satt som ' . $this->ff->type['priority'][1] . '. <user id="' . $status['init_up_id'] . '" /> ble satt som ' . $this->ff->type['priority'][2] . '.');
                        redirect::handle("?ff_id={$this->ff->id}");
                    } elseif ($result == "player_cash") {
                        ess::$b->page->add_message("Du har ikke nok penger på hånda for å gjennomføre kjøpet.");
                    } elseif ($result == "ff_cash") {
                        ess::$b->page->add_message('Det er ikke nok penger i banken til å dekke salgsgebyret. Donér til ' . $this->ff->type['refobj'] . ' eller be <user id="' . $status['init_up_id'] . '" /> sette inn penger. Salgsgebyret er på ' . game::format_cash($status['fee']) . '.', "error");
                    } else {
                        ess::$b->page->add_message("Ukjent feil. Prøv på nytt.", "error");
                    }
                }
                // avslå kjøp?
                if (isset($_POST['reject']) && validate_sid(false)) {
                    // forsøk å avbryt
                    $result = $this->ff->sell_reject();
                    if ($result) {
                        ess::$b->page->add_message("Du avslo kjøpet av {$this->ff->type['refobj']}.");
                        redirect::handle("?ff_id={$this->ff->id}");
                    } else {
                        ess::$b->page->add_message("Ukjent feil. Prøv på nytt.", "error");
                    }
                }
                echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Salg av ' . $this->ff->type['refobj'] . '<span class="left"></span><span class="right"></span></h1>
	<p class="h_left"><a href="panel?ff_id=' . $this->ff->id . '">&laquo; Tilbake</a></p>
	<div class="bg1">
		<boxes />
		<p><user id="' . $status['init_up_id'] . '" /> har startet salg av ' . $this->ff->type['refobj'] . ' til deg. Du må enten godta eller avslå salget.</p>
		<p>Salgsgebyret vil bli trukket fra banken. Salgsbeløpet vil bli overført direkte fra deg til <user id="' . $status['init_up_id'] . '" /> sin bank.</p>
		<p>Du vil bli satt til ' . $this->ff->type['priority'][1] . ', mens <user id="' . $status['init_up_id'] . '" /> vil bli satt til ' . $this->ff->type['priority'][2] . '.</p>
		<dl class="dd_right">
			<dt>Tid salget ble åpnet</dt>
			<dd>' . ess::$b->date->get($status['time'])->format(date::FORMAT_SEC) . '</dd>
		</dl>
		<dl class="dd_right">
			<dt>Penger i banken</dt>
			<dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd>
			<dt>Salgsgebyr</dt>
			<dd>' . game::format_cash($status['fee']) . '</dd>
			<dt>Salgsbeløp</dt>
			<dd>' . game::format_cash($status['amount']) . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<p class="c">
				' . show_sbutton("Gjennomfør kjøp", 'name="approve"') . '
				<span class="red">' . show_sbutton("Avslå kjøp", 'name="reject"') . '</span>
			</p>
		</form>
	</div>
</div>';
            } else {
                ess::$b->page->add_message("Du har ikke tilgang til å se detaljer for salget av {$this->ff->type['refobj']}.", "error");
                redirect::handle();
            }
        } else {
            // medeier har ikke tilgang her
            if (!$this->ff->access(1)) {
                ess::$b->page->add_message(ucfirst($this->ff->type['refobj']) . " er ikke til salgs for øyeblikket.", "error");
                redirect::handle();
            }
            // legge ut FF til salg?
            if (isset($_POST['sell_init']) && validate_sid(false)) {
                $up_id = intval(postval("up_id"));
                $amount = game::intval(postval("amount"));
                // for høyt beløp?
                if (mb_strlen($amount) > 12) {
                    ess::$b->page->add_message("Salgsbeløpet er for høyt.", "error");
                } elseif ($amount < 0) {
                    ess::$b->page->add_message("Salgsbeløpet kan ikke være negativt.", "error");
                } else {
                    if (($result = $this->ff->sell_init($up_id, $amount)) === true) {
                        ess::$b->page->add_message('Du har nå startet salg av ' . $this->ff->type['refobj'] . ' til <user id="' . $up_id . '" /> for ' . game::format_cash($amount) . '. Salgsgebyret blir trukket fra banken når kjøperen godtar kjøpet.');
                        redirect::handle("panel?ff_id={$this->ff->id}&a=sell");
                    } elseif ($result == "player_rank") {
                        ess::$b->page->add_message('<user id="' . $up_id . '" /> har ikke høy nok rank til å kunne bli ' . $this->ff->type['priority'][1] . '. Må være minst ' . game::$ranks['items_number'][$this->ff->get_priority_rank(1)]['name'] . '.', "error");
                    } else {
                        ess::$b->page->add_message("Noe gikk galt. Prøv igjen.", "error");
                    }
                }
            }
            // vis skjema
            ess::$b->page->add_title("Velg salgsbeløp");
            echo '
<div class="bg1_c small">
	<h1 class="bg1">Salg av ' . $this->ff->type['refobj'] . '<span class="left"></span><span class="right"></span></h1>
	<p class="h_left"><a href="panel?ff_id=' . $this->ff->id . '">&laquo; Tilbake</a></p>
	<div class="bg1">
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<boxes />
			<p>Du er i ferd med å starte salg av ' . $this->ff->type['refobj'] . '. ' . ucfirst($this->ff->type['refobj']) . ' kan kun selges til ' . $this->ff->type['priority'][2] . '. Når ' . $this->ff->type['priority'][2] . ' har godtatt kjøpet og betalt pengene, vil hele beløpet bli satt inn i banken din.</p>
			<p>Salgsgebyret vil bli trukket fra bankkontoen til ' . $this->ff->type['refobj'] . ' i det ' . $this->ff->type['priority'][2] . ' godtar kjøpet. ' . ucfirst($this->ff->type['priority'][2]) . ' vil ikke kunne godta kjøpet hvis pengene ikke er i banken.</p>';
            // er det ingen medeier
            if (!isset($this->ff->members['members_priority'][2]) || count($this->ff->members['members_priority'][2]) == 0) {
                echo '
			<p><b>Det finnes ingen ' . $this->ff->type['priority'][2] . ' i ' . $this->ff->type['refobj'] . '.</b></p>';
            } else {
                $in_dl = true;
                if (count($this->ff->members['members_priority'][2]) > 1) {
                    $in_dl = false;
                    echo '
			<p>Velg ' . $this->ff->type['priority'][2] . ':</p>
			<table class="table">
				<thead>
					<tr>
						<th>Spiller</th>
						<th>Sist pålogget</th>
						<th>Ble medlem</th>
					</tr>
				</thead>
				<tbody>';
                    $i = 0;
                    foreach ($this->ff->members['members_priority'][2] as $member) {
                        echo '
					<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
						<td><input type="radio" name="up_id" id="sell_up_id" class="box_handle"' . (postval("up_id") == $member->id ? ' selected="selected"' : '') . ' />' . game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) . '</td>
						<td>' . ess::$b->date->get($member->data['up_last_online'])->format() . '</td>
						<td>' . ess::$b->date->get($member->data['ffm_date_join'])->format() . '</td>
					</tr>';
                    }
                    echo '
				</tbody>
			</table>';
                }
                echo '
			<dl class="dd_right">';
                if ($in_dl) {
                    foreach ($this->ff->members['members_priority'][2] as $member) {
                        echo '
				<input type="hidden" name="up_id" value="' . $member->id . '" />
				<dt>' . ucfirst($this->ff->type['priority'][2]) . ' (kjøper)</dt>
				<dd>' . game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) . '</dd>';
                    }
                }
                echo '
				<dt>Penger i banken</dt>
				<dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd>
				<dt>Salgsgebyr (trekkes fra banken ved kjøp)</dt>
				<dd>' . game::format_cash(ff::SELL_COST) . '</dd>
				<dt>Salgsbeløp (overføres fra kjøper til deg)</dt>
				<dd><input type="text" name="amount" class="styled w100" value="' . game::format_cash(postval("amount", "1 000 000")) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Start salg", 'name="sell_init"') . ' <a href="panel?ff_id=' . $this->ff->id . '">Avbryt</a></p>';
            }
            echo '
		</form>
	</div>
</div>';
        }
        $this->ff->load_page();
    }