/** * Behandle ny spiller */ protected function solve_player() { ess::$b->page->add_title("Ny spiller"); redirect::store($_SERVER['REQUEST_URI']); // sjekk om vi allerede har en spiller fra før som ikke er den aktive $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_created_time, up_last_online, up_access_level FROM users_players WHERE up_u_id = " . login::$user->id . " AND up_access_level != 0"); if ($result->rowCount() > 0) { // sett opp liste over spillere $players = array(); while ($row = $result->fetch()) { $players[$row['up_id']] = $row; } // velge aktiv spiller? if (isset($_POST['select']) && isset($_POST['up_id']) && validate_sid()) { $up_id = (int) $_POST['up_id']; if (!isset($players[$up_id])) { ess::$b->page->add_message("Fant ikke spillere.", "error"); redirect::handle(); } // sett som aktiv spiller \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = " . login::$user->id); ess::$b->page->add_message('Du har valgt <user="******" /> som din aktive spiller.'); redirect::handle("min_side"); } echo ' <div class="bg1_c xmedium"> <h1 class="bg1">Ny spiller<span class="left2"></span><span class="right2"></span></h1> <p class="h_left"><a href="' . htmlspecialchars($this->url) . '">Tilbake</a></p> <div class="bg1"> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p>Du har allerede en annen spiller som er i live. Du må enten deaktivere spilleren eller velge å bruke den som din aktive spiller.</p> <table class="table center"> <thead> <tr> <th>ID</th> <th>Spiller</th> <th>Opprettet</th> <th>Sist aktiv</th> <th>Deaktiver</th> </tr> </head> <tbody>'; foreach ($players as $row) { echo ' <tr class="box_handle"> <td><input type="radio" name="up_id" value="' . $row['up_id'] . '" />' . $row['up_id'] . '</td> <td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td>' . ess::$b->date->get($row['up_created_time'])->format() . '</td> <td>' . ess::$b->date->get($row['up_last_online'])->format() . '</td> <td><a href="min_side?up_id=' . $row['up_id'] . '&a=deact">Deaktiver</a></td> </tr>'; } echo ' </tbody> </table> <p class="c">' . show_sbutton("Velg som aktiv spiller", 'name="select"') . '</p> </form> </div> </div>'; ess::$b->page->load(); } // opprette ny spiller? if (isset($_POST['name']) && !isset($_POST['abort']) && validate_sid()) { $name = trim($_POST['name']); $bydel = postval("bydel"); if (!isset(game::$bydeler[$bydel]) || !game::$bydeler[$bydel]['active']) { $bydel = false; } // kontroller navnet $result1 = \Kofradia\DB::get()->query("SELECT " . \Kofradia\DB::quoteNoNull($name) . " REGEXP regex AS m, error FROM regex_checks WHERE (type = 'reg_user_special' OR type = 'reg_user_strength') HAVING m = 1"); $where = ALLOW_SAME_PLAYERNAME ? " AND (up_u_id != " . login::$user->id . " OR up_access_level != 0)" : ""; $result2 = \Kofradia\DB::get()->query("SELECT up_id FROM users_players WHERE up_name = " . \Kofradia\DB::quote($name) . $where); $result3 = \Kofradia\DB::get()->query("SELECT id FROM registration WHERE user = "******"Spillernavnet var ikke gyldig:<ul>" . implode("", $feil) . "</ul>", "error"); } elseif (empty($name)) { ess::$b->page->add_message("Du må skrive inn et navn du ønsker at din nye spiller skal ha.", "error"); } elseif ($result2->rowCount() > 0) { ess::$b->page->add_message("Spillernavnet er allerede tatt! Velg et annet.", "error"); } elseif ($result3->rowCount() > 0) { ess::$b->page->add_message("Noen holder allerede på å registrere seg med dette spillernavnet. Velg et annet.", "error"); } else { // godkjent? if (isset($_POST['confirm'])) { // finne tilfeldig bydel? if (!$bydel) { // finn en tilfeldig bydel $result = \Kofradia\DB::get()->query("SELECT id FROM bydeler WHERE active = 1 ORDER BY RAND()"); $bydel = $result->fetchColumn(0); } \Kofradia\DB::get()->beginTransaction(); // opprett spiller og tilknytt brukeren \Kofradia\DB::get()->exec("INSERT INTO users_players SET up_u_id = " . login::$user->id . ", up_name = " . \Kofradia\DB::quote($name) . ", up_created_time = " . time() . ", up_b_id = {$bydel}"); $up_id = \Kofradia\DB::get()->lastInsertId(); // sett opp riktig rank plassering #\Kofradia\DB::get()->exec("UPDATE users_players AS main, (SELECT COUNT(users_players.up_id)+1 AS pos, ref.up_id FROM users_players AS ref LEFT JOIN users_players ON users_players.up_points > ref.up_points AND users_players.up_access_level < ".ess::$g['access_noplay']." AND users_players.up_access_level != 0 WHERE ref.up_id = $up_id GROUP BY ref.up_id) AS rp SET main.up_rank_pos = rp.pos WHERE main.up_id = rp.up_id"); \Kofradia\DB::get()->exec("INSERT INTO users_players_rank SET upr_up_id = {$up_id}"); ranklist::update(); // sett spilleren som den aktive spilleren for brukerne \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = " . login::$user->id); \Kofradia\DB::get()->commit(); // hent antall medlemmer $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players WHERE up_access_level < " . ess::$g['access_noplay'] . " AND up_access_level != 0"); putlog("INFO", "%bNY SPILLER:%b (#{$up_id} - Nummer %b" . $result->fetchColumn(0) . "%b) %u{$name}%u registrerte seg! " . ess::$s['path'] . "/p/" . rawurlencode($name)); ess::$b->page->add_message("Du har opprettet en ny spiller med navnet <b>" . htmlspecialchars($name) . "</b>!"); redirect::handle("min_side"); } echo ' <div class="bg1_c xxsmall"> <h1 class="bg1">Bekreft ny spiller<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <form action="" method="post">' . ($bydel ? ' <input type="hidden" name="bydel" value="' . $bydel['id'] . '" />' : '') . ' <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="name" value="' . htmlspecialchars($name) . '" /> <p>Du er i ferd med å opprette følgende spiller:</p> <dl class="dd_right"> <dt>Spillernavn</dt> <dd><b>' . htmlspecialchars($name) . '</b></dd> <dt>Bydel</dt> <dd>' . ($bydel ? htmlspecialchars(game::$bydeler[$bydel]['name']) : 'Tilfeldig valgt') . '</dd> </dl> <p>Du kan ikke bytte dette spillernavnet senere uten og opprette en ny spiller.</p> <p class="c">' . show_sbutton("Opprett spiller", 'name="confirm"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form> </div> </div>'; ess::$b->page->load(); } } ess::$b->page->add_css(' #name_validate { color: #AAA } #name_validate_ok { color: #CCFF00 } #name_validate_loading img { vertical-align: text-bottom; margin: -2px 0 } #name_validate_taken { color: #900000 } '); ess::$b->page->add_js_domready(' var status = function(val) { if (val == "") $("name_validate").removeClass("hide"); else $("name_validate").addClass("hide"); if (val == "taken") $("name_validate_taken").removeClass("hide"); else $("name_validate_taken").addClass("hide"); if (val == "ok") $("name_validate_ok").removeClass("hide"); else $("name_validate_ok").addClass("hide"); if (val == "loading") $("name_validate_loading").removeClass("hide"); else $("name_validate_loading").addClass("hide"); }; var change_last = null, change_timer; var change = function() { if (this.get("value") == change_last) return; change_last = this.get("value"); if (this.get("value") == "") { status(""); return; } $clear(change_timer); change_timer = this.search.delay(500, this, true); status("loading"); }; $("name_enter").addEvents({ "keyup": change, "change": change }).focus(); var xhr; $("name_enter").search = function() { if (!xhr) { xhr = new Request({"url": relative_path + "/ajax/find_user"}); xhr.addEvent("success", function(text, xml) { if (xmlGetValue(xml, "user")) status("taken"); else status("ok"); }); xhr.addEvent("failure", function(x) { alert("En feil oppsto."); }); } xhr.send({"data": {"q": $("name_enter").get("value").trim()' . (ALLOW_SAME_PLAYERNAME ? ', "is": true' : '') . '}}); }; if ($("name_enter").get("value") != "") $("name_enter").search.run(null, $("name_enter")); else status(""); change_last = $("name_enter").get("value");'); echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Ny spiller<span class="left2"></span><span class="right2"></span></h1> <p class="h_left"><a href="' . htmlspecialchars($this->url) . '">Tilbake</a></p> <div class="bg1"> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p>Du er nå i ferd med å opprette en ny spiller. Du kan også se informasjon for din tidligere spiller <a href="min_side?up_id=' . login::$user->player->id . '">' . htmlspecialchars(login::$user->player->data['up_name']) . '</a>.</p> <p>Du kan ikke bytte spillernavnet du velger å opprette her uten og opprette en ny spiller.</p> <dl class="dd_right" style="overflow: hidden"> <dt>Nytt spillernavn</dt> <dd><input type="text" id="name_enter" name="name" class="styled w120" value="' . htmlspecialchars(postval("name")) . '" /></dd> <dt>Status: <span class="name_v hide" id="name_validate_loading"><img src="' . STATIC_LINK . '/other/loading-black.gif" /></span> <span class="name_v hide" id="name_validate">Skriv inn ønsket navn</span> <span class="name_v hide" id="name_validate_ok">Ledig</span> <span class="name_v hide" id="name_validate_taken">Opptatt</span> </dt> </dl> <dl class="dd_right"> <dt>Bydel</dt> <dd> <select name="bydel">'; $active = postval("bydel"); if (!isset(game::$bydeler[$active]) || !game::$bydeler[$active]['active']) { $active = false; } echo ' <option' . (!$active ? ' selected="selected"' : '') . '>Velg tilfeldig</option>'; foreach (game::$bydeler as $bydel) { if (!$bydel['active']) { continue; } echo ' <option value="' . $bydel['id'] . '"' . ($active == $bydel['id'] ? ' selected="selected"' : '') . '>' . htmlspecialchars($bydel['name']) . '</option>'; } echo ' </select> </dd> </dl> <p class="c">' . show_sbutton("Fortsett") . '</p> </form> </div> </div>'; }
function step4() { global $__server, $_game; // er skjemaet sendt inn? if ($_SERVER['REQUEST_METHOD'] == "POST") { // sjekk for gyldig trinn if (!isset($_POST['step']) || $_POST['step'] != 4) { redirect::handle(); } // betingelser, alder, forste_bruker $betingelser = isset($_POST['betingelser']); $alder = isset($_POST['alder']); $forste_bruker = isset($_POST['forste_bruker']); // er ikke betingelsene godtatt? if (!$betingelser) { ess::$b->page->add_message("Hvis du ikke godtar betingelsene kan du dessverre ikke registrere deg her.", "error"); } elseif (!$alder) { ess::$b->page->add_message("Hvis du ikke har fylt 13 år kan du dessverre ikke registrere deg her.", "error"); } elseif (!$forste_bruker) { ess::$b->page->add_message("Hvis du allerede har en bruker fra før så bruk den! Å opprette ny konto gjør det bare dumt for deg selv og kan i værste tilfelle føre til politianmeldelse.", "error"); } else { // finn en tilfeldig bydel $result = \Kofradia\DB::get()->query("SELECT id FROM bydeler WHERE active = 1 ORDER BY RAND()"); $bydel = $result->fetchColumn(0); // sett opp nødvendig info $user = \Kofradia\DB::quote($this->info['user']); $pass = \Kofradia\DB::quote($this->info['pass']); $email = \Kofradia\DB::quote($this->info['email']); $referer = \Kofradia\DB::quote($this->info['referer']); $tos_version = intval(game::$settings['tos_version']['value']); $birth = \Kofradia\DB::quote($this->info['birth']); $recruiter = array("up_id" => 'NULL', "up_u_id" => 'NULL'); global $__server; // er denne brukeren vervet? if (isset($_COOKIE[$__server['cookie_prefix'] . "rid"])) { $rid = $_COOKIE[$__server['cookie_prefix'] . "rid"]; // finnes denne brukeren? $result = \Kofradia\DB::get()->query("SELECT up_id, up_u_id FROM users_players WHERE up_id = " . \Kofradia\DB::quote($rid)); if ($row = $result->fetch()) { $recruiter = $row; } } \Kofradia\DB::get()->beginTransaction(); // deaktiver kontroll av foreign key \Kofradia\DB::get()->exec("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0"); // opprett bruker $time = time(); \Kofradia\DB::get()->exec("INSERT INTO users SET u_email = {$email}, u_pass = {$pass}, u_birth = {$birth}, u_tos_version = {$tos_version}, u_created_time = {$time}, u_created_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . ", u_created_referer = {$referer}, u_recruiter_u_id = {$recruiter['up_u_id']}, u_recruiter_points_last = 0"); $u_id = \Kofradia\DB::get()->lastInsertId(); // opprett spiller og tilknytt brukeren \Kofradia\DB::get()->exec("INSERT INTO users_players SET up_u_id = {$u_id}, up_name = {$user}, up_created_time = {$time}, up_recruiter_up_id = {$recruiter['up_id']}, up_b_id = {$bydel}"); $up_id = \Kofradia\DB::get()->lastInsertId(); \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = {$u_id}"); // aktiver kontroll av foreign key \Kofradia\DB::get()->exec("SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS"); // sett opp riktig rank plassering #\Kofradia\DB::get()->exec("UPDATE users_players AS main, (SELECT COUNT(users_players.up_id)+1 AS pos, ref.up_id FROM users_players AS ref LEFT JOIN users_players ON users_players.up_points > ref.up_points AND users_players.up_access_level < {$_game['access_noplay']} AND users_players.up_access_level != 0 WHERE ref.up_id = $up_id GROUP BY ref.up_id) AS rp SET main.up_rank_pos = rp.pos WHERE main.up_id = rp.up_id"); \Kofradia\DB::get()->exec("INSERT INTO users_players_rank SET upr_up_id = {$up_id}"); ranklist::update(); // slett registrasjonsoppføringen \Kofradia\DB::get()->exec("DELETE FROM registration WHERE id = {$this->id}"); \Kofradia\DB::get()->commit(); // send e-post $email = new email(); $email->text = 'Hei, Du har registrert deg som ' . $this->info['user'] . ' på Kofradia. Velkommen til spillet! -- www.kofradia.no'; $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR']; $email->headers['Reply-To'] = "*****@*****.**"; $email->send($this->info['email'], "Velkommen til Kofradia"); ess::$b->page->add_message('Velkommen til Kofradia!<br /><br />Du er nå registrert som <b>' . $this->info['user'] . '</b> og automatisk logget inn.<br /><br />Sjekk ut menyen til venstre så ser du hva vi har å tilby i dag.<br /><br />Hvis du har noen spørsmål ta en titt under <a href="' . ess::$s['relative_path'] . '/node">hjelp</a> og ta evt. kontakt med <a href="support/">support</a> om du ikke finner svar på det du lurer på!<br /><br />Ikke glem og les gjennom <a href="' . ess::$s['relative_path'] . '/node/6">reglene for forumene</a> før du skriver i forumet. Lykke til i spillet!'); // hent antall medlemmer $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players WHERE up_access_level < {$_game['access_noplay']} AND up_access_level != 0"); putlog("INFO", "%bNY SPILLER:%b (#{$up_id} - Nummer %b" . $result->fetchColumn(0) . "%b) %u{$this->info['user']}%u registrerte seg! {$__server['absolute_path']}{$__server['relative_path']}/p/" . rawurlencode($this->info['user'])); // logg inn brukeren login::do_login($u_id, $this->info['pass'], LOGIN_TYPE_TIMEOUT, false); // slett registrasjonsoppføringen fra session etc $this->trash(); // sjekk om det er mulig multi $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT up_name\n\t\t\t\t\tFROM users_players, users\n\t\t\t\t\tWHERE u_online_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . "\n\t\t\t\t\t\tAND u_id != {$u_id}\n\t\t\t\t\t\tAND u_active_up_id = up_id AND up_access_level != 0\n\t\t\t\t\t\tAND up_last_online > " . (time() - 86400 * 30) . "\n\t\t\t\t\tLIMIT 10"); if ($result->rowCount() > 0) { $names = array(); while ($row = $result->fetch()) { $names[] = $row['up_name']; } putlog("CREWCHAN", "%b%c4NY REGISTERT, MULIG MULTI:%c%b (#{$up_id}) %u{$this->info['user']}%u registrerte seg. Andre spillere på IP-en: " . implode(", ", $names) . ". {$__server['path']}/admin/brukere/finn?ip=" . rawurlencode($_SERVER['REMOTE_ADDR'])); } // videresend til hovedsiden redirect::handle("", redirect::ROOT); } } echo ' <form action="registrer" method="post"> <input type="hidden" name="abort" /> <h1>Bekreftelse av betingelsene</h1> <p class="h_right">' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '</p> </form> <p> På denne siden finner du en oversikt over betingelsene. Betingelsene er ikke lange og er kjapt å lese igjennom. Det er viktig at du er klar over innholdet i disse betingelsene og at du følger dem. Følger du ikke disse betingelsene vil brukeren din bli deaktivert. For å kunne opprette må du godta betingelsene. </p> <boxes /> <form action="registrer" method="post"> <input type="hidden" name="step" value="4" /> <p> Betingelser:<br /> <div id="betingelser_content">' . game::$settings['tos']['value'] . '</div> </p> <p> <input type="checkbox" name="betingelser" id="betingelser" /><label for="betingelser"> Jeg har lest gjennom og aksepterer betingelsene</label> </p> <p> <input type="checkbox" name="alder" id="alder" /><label for="alder"> Jeg har fylt 13 år</label> </p> <p> <input type="checkbox" name="forste_bruker" id="forste_bruker" /><label for="forste_bruker"> Jeg har ingen bruker som er aktivert fra før av</label> <span class="dark">(Hvis du allerede har en bruker, må du deaktivere den <u>før</u> du registrerer deg på nytt.)</span> </p> <p> ' . show_sbutton("Opprett bruker") . ' </p> </form> <form action="registrer" method="post"> <input type="hidden" name="abort" /> <p> ' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . ' </p> </form>'; }
// er brukeren deaktivert? if ($up['u_access_level'] == 0) { ess::$b->page->add_message('Brukeren til <user id="' . $up['up_id'] . '" /> er deaktivert. Endringer må gjøres manuelt.', "error"); redirect::handle(); } // er spilleren deaktivert? if ($up['up_access_level'] == 0) { ess::$b->page->add_message('Spilleren <user id="' . $up['up_id'] . '" /> er deaktivert. Endringer må gjøres manuelt.', "error"); redirect::handle(); } // overfør nivå \Kofradia\DB::get()->exec("UPDATE users, users_players SET up_access_level = u_access_level WHERE u_active_up_id = up_id AND up_id = {$up['up_id']} AND u_access_level != 0 AND up_access_level != 0"); ess::$b->page->add_message('Tilgangsnivået til brukeren <user id="' . $up['up_id'] . '" /> ble overført til spilleren.'); // ranklista \Kofradia\DB::get()->exec("UPDATE users, users_players_rank SET upr_up_access_level = u_access_level WHERE upr_up_id = {$up['up_id']} AND upr_up_id = u_active_up_id"); ranklist::update(); // logg putlog("CREWCHAN", "TILGANGSNIVÅ OVERFØRT: Tilgangsnivået til {$up['up_name']} ble overført fra brukeren (nivå: {$up['u_access_level']}) til spilleren (gammelt nivå: {$up['up_access_level']})."); redirect::handle(); } $result = \Kofradia\DB::get()->query("\n\t\tSELECT u_id, u_access_level, up_access_level, up_id, up_name, up_last_online\n\t\tFROM users, users_players\n\t\tWHERE u_active_up_id = up_id AND up_u_id = u_id AND u_access_level != up_access_level AND (up_access_level != 0 || u_access_level != 1)\n\t\tORDER BY up_name"); if ($result->rowCount() > 0) { $admin = access::has("admin"); echo ' <div class="bg1_c medium"> <h1 class="bg1">Forskjell mellom brukernivå og spillernivå<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes />' . ($admin ? ' <form action="" method="post">' : '') . ' <table class="table ' . ($admin ? 'tablemt' : 'tablem') . ' center"> <thead>
/** * Endre tilgangsnivå * @param integer $level nytt tilgangsnivå * @param bool $no_update_up ikke oppdatere det visuelle tilgangsnivået til spilleren? */ public function change_level($level, $no_update_up = NULL) { global $_game; $level = (int) $level; \Kofradia\DB::get()->beginTransaction(); // forsøk å endre tilgangsnivået fra nåværende $a = \Kofradia\DB::get()->exec("UPDATE users SET u_access_level = {$level} WHERE u_id = {$this->id} AND u_access_level = {$this->data['u_access_level']}"); if (!$a > 0) { \Kofradia\DB::get()->commit(); return false; } $this->data['u_access_level'] = $level; // endre spilleren også? if ($this->player->active && !$no_update_up) { \Kofradia\DB::get()->exec("UPDATE users_players SET up_access_level = {$level} WHERE up_id = {$this->player->id}"); // endre rankliste? /*if ($level < $_game['access_noplay'] && $this->player->data['up_access_level'] >= $_game['access_noplay']) { // øk tallplasseringen til de under spilleren \Kofradia\DB::get()->exec(" UPDATE users_players, (SELECT up_id ref_up_id FROM users_players WHERE up_points = {$this->player->data['up_points']} AND up_id != {$this->player->id} AND up_access_level < {$_game['access_noplay']} LIMIT 1) ref SET up_rank_pos = up_rank_pos + 1 WHERE ref_up_id IS NULL AND up_points < {$this->player->data['up_points']}"); } elseif ($level >= $_game['access_noplay'] && $this->player->data['up_access_level'] < $_game['access_noplay']) { // senk tallplasseringen til de under spilleren \Kofradia\DB::get()->exec(" UPDATE users_players, (SELECT up_id ref_up_id FROM users_players WHERE up_points = {$this->player->data['up_points']} AND up_id != {$this->player->id} AND up_access_level < {$_game['access_noplay']} LIMIT 1) ref SET up_rank_pos = up_rank_pos - 1 WHERE ref_up_id IS NULL AND up_points < {$this->player->data['up_points']}"); }*/ \Kofradia\DB::get()->exec("UPDATE users_players_rank SET upr_up_access_level = {$level} WHERE upr_up_id = {$this->player->id}"); ranklist::update(); $this->player->data['up_access_level'] = $level; } \Kofradia\DB::get()->commit(); return true; }
/** * Frigjør relasjonene en spiller har i spillet * Oppdaterer også ranklisten * @param int $previous_level spillernivået før død/deaktivering */ protected function release_relations($previous_level, player $up_attack = null, $instant = null) { // oppdater ranklisten /*if ($previous_level < ess::$g['access_noplay']) \Kofradia\DB::get()->exec(" UPDATE users_players, (SELECT up_id ref_up_id FROM users_players WHERE up_points = {$this->data['up_points']} AND up_id != $this->id AND up_access_level < ".ess::$g['access_noplay']." LIMIT 1) ref SET up_rank_pos = GREATEST(1, up_rank_pos - 1) WHERE ref_up_id IS NULL AND up_points < {$this->data['up_points']}");*/ \Kofradia\DB::get()->exec("UPDATE users_players_rank SET upr_up_access_level = 0 WHERE upr_up_id = {$this->id}"); ranklist::update(); $ret = $this->release_relations_low_health(true, $up_attack, $instant); // overfør ansvar for bomberom $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id\n\t\t\tFROM users_players\n\t\t\tWHERE up_brom_up_id = {$this->id}"); if ($result->rowCount() > 0) { // TODO: skal spilleren som overtar ansvaret få noen beskjed? // TODO: hvis ingen overtar ansvaret: skal spilleren som mister ansvarsspiller få beskjed om dette? // skal vi gi ansvaret videre? $resp = $this->data['up_brom_up_id'] ? "IF(up_id = {$this->data['up_brom_up_id']}, NULL, {$this->data['up_brom_up_id']})" : "NULL"; // sett nytt ansvar \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_brom_up_id = {$resp}\n\t\t\t\tWHERE up_brom_up_id = {$this->id}"); } // fjern ansvaret for denne spilleren if ($this->data['up_brom_up_id']) { \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_brom_up_id = NULL\n\t\t\t\tWHERE up_id = {$this->id}"); } // fjern fra aktive auksjoner auksjon::player_release($this); // fjern fra poker poker_round::player_dies($this); return $ret; }