/** * Behandle navnbytte */ protected function page_navnbytte_handle() { ess::$b->page->add_title("Navnbytte"); echo ' <!-- søk om navnbytte --> <div class="section w200"> <h2>Søk om navnbytte</h2><boxes />'; // hent mulig søknad $result = \Kofradia\DB::get()->query("SELECT ds_id, ds_up_id, ds_time, ds_reason, ds_params FROM div_soknader WHERE ds_type = " . soknader::TYPE_FF_NAME . " AND ds_rel_id = {$this->ff->id} AND ds_reply_decision = 0"); $soknad = $result->fetch(); // har vi en aktiv søknad? if ($soknad) { $params = unserialize($soknad['ds_params']); // trekke tilbake søknaden? if (isset($_POST['withdraw'])) { if (soknader::delete($soknad['ds_id'])) { $extra = ''; // gi tilbake penger? if (isset($params['cost']) && $params['cost'] > 0) { $this->ff->bank(ff::BANK_TILBAKEBETALING, $params['cost'], 'Navnsøknad tilbaketrukket: ' . $params['name']); $extra = ' Beløpet på ' . game::format_cash($params['cost']) . ' ble satt tilbake på bankkontoen.'; } ess::$b->page->add_message("Søknaden ble trukket tilbake.{$extra}"); } redirect::handle("panel?ff_id={$this->ff->id}&a=navnbytte"); } echo ' <p>Søknad ble levert av <user id="' . $soknad['ds_up_id'] . '" /> ' . ess::$b->date->get($soknad['ds_time'])->format() . '.</p> <dl class="dd_right"> <dt>Navn som søkes</dt> <dd>' . htmlspecialchars($params['name']) . '</dd> <dt>Kostnad</dt> <dd>' . (isset($params['cost']) ? game::format_cash($params['cost']) : '0 kr') . '</dd> </dl> <p><u>Begrunnelse:</u><br />' . game::format_data($soknad['ds_reason'], "bb-opt", "Ingen begrunnelse gitt.") . '</p> <p>Søknaden er under behandling.</p> <form action="" method="post"> <p>' . show_sbutton("Trekk tilbake søknad", 'name="withdraw"') . '</p> </form>'; } else { // kan vi levere gratis søknad? $soknad_free = $this->ff->mod || $this->ff->competition || !$this->ff->params->get("name_changed") || $this->ff->params->get("name_changed") < $this->ff->params->get("sold") || $this->ff->params->get("name_changed") < $this->ff->data['ff_time_reset']; // levere søknad? if (isset($_POST['name']) && isset($_POST['reason'])) { $name = trim(postval("name")); $reason = trim(postval("reason")); // fjern evt. flere mellomromstegn etter hverandre $name = preg_replace("/ +/u", " ", $name); $_POST['name'] = $name; // samme navn som før? if ($name == $this->ff->data['ff_name']) { ess::$b->page->add_message("Du må velge et nytt navn å søke om."); } elseif (preg_match("/[^\\p{L}\\d ]/u", $name)) { ess::$b->page->add_message("Navnet kan kun inneholde bokstaver, tall og mellomrom.", "error"); } elseif (mb_strlen($name) < 2) { ess::$b->page->add_message("Minimum lengde for navnet er 2 tegn.", "error"); } elseif (mb_strlen($name) > 20) { ess::$b->page->add_message("Maksimal lengde for navnet er 20 tegn.", "error"); } elseif (empty($reason)) { ess::$b->page->add_message("Du må fylle inn en begrunnelse.", "error"); } else { $success = $soknad_free; // forsøk å trekk fra pengene if (!$soknad_free) { $success = $this->ff->bank(ff::BANK_BETALING, ff::NAME_CHANGE_COST, 'Navnsøknad: ' . $name); } // ikke nok penger i banken if (!$success) { ess::$b->page->add_message("Det er ikke nok penger i banken.", "error"); } else { // legg til søknaden soknader::add(soknader::TYPE_FF_NAME, array("name" => $name, "cost" => $soknad_free ? 0 : ff::NAME_CHANGE_COST), $reason, $this->ff->id); ess::$b->page->add_message("Du har nå levert søknad om nytt navn til {$this->ff->type['refobj']}." . ($soknad_free ? '' : ' ' . game::format_cash(ff::NAME_CHANGE_COST) . ' ble trukket fra bankkontoen.')); redirect::handle("panel?ff_id={$this->ff->id}&a=navnbytte"); } } } echo ' <form action="" method="post">' . ($soknad_free ? $this->ff->competition ? ' <p>Du kan under hele konkurranseperioden sende inn gratis søknad om navnbytte for ' . $this->ff->type['refobj'] . '. Så snart konkurranseperioden er over, vil det koste ' . game::format_cash(ff::NAME_CHANGE_COST) . ' å søke om navnbytte dersom navnet ble byttet under konkurranseperioden.</p>' : ($this->ff->mod ? ' <p>Som moderator kan du sende inn gratis søknader på vegne av ' . $this->ff->type['refobj'] . '.</p>' : ' <p>Du kan sende inn gratis søknad om navnbytte for ' . $this->ff->type['refobj'] . ' én gang (søknaden må innvilges for å telle). Neste gang vil det koste ' . game::format_cash(ff::NAME_CHANGE_COST) . '.</p>') : '') . ' <dl class="dd_right"> <dt>Ønsket navn</dt> <dd><input type="text" name="name" value="' . htmlspecialchars(postval("name", $this->ff->data['ff_name'])) . '" class="styled w100" /></dd> <dt>Kostnad (ved innvilgelse)</dt> <dd>' . ($soknad_free ? '0 kr' : game::format_cash(ff::NAME_CHANGE_COST)) . '</dd> </dl> <p>Begrunnelse</p> <p class="c"><textarea name="reason" rows="5" cols="30">' . htmlspecialchars(postval("reason")) . '</textarea></p> <p class="c">' . show_sbutton("Send inn søknad") . '</p> </form>'; } echo ' <p><a href="panel?ff_id=' . $this->ff->id . '">« Tilbake</a></p> </div>'; $this->ff->load_page(); }
<p>Det er ingen' . ($all ? '' : ' ubehandlede') . ' søknader.</p>'; } else { echo ' <table class="table tablemt center" style="width: 100%"> <thead> <tr> <th>Type</th> <th>Innsender</th> <th>Tidspunkt</th>' . ($all ? ' <th>Resultat</th>' : '') . ' </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { $type = soknader::get_type($row['ds_type']); $link = htmlspecialchars($type['title']); if (access::has($type['access'])) { $link = '<a href="soknader?ds_id=' . $row['ds_id'] . '" title="Vis søknad">' . $link . '</a>'; } else { $link .= ' (' . access::name($type['access']) . ')'; } echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td>' . $link . '</td> <td><user id="' . $row['ds_up_id'] . '" /></td> <td>' . $_base->date->get($row['ds_time'])->format() . '</td>' . ($all ? ' <td>' . ($row['ds_reply_decision'] == 1 ? 'Innvilget' : ($row['ds_reply_decision'] == -1 ? 'Avslått' : 'Under behandling')) . '</td>' : '') . ' </tr>'; } echo '