/** * 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 . '&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 . '&a=suggestion">Tilbake</a> </p> </form> </div>'; $this->ff->load_page(); }