예제 #1
0
파일: ranklist.php 프로젝트: Kuzat/kofradia
 /**
  * Behandle siden
  */
 protected function handle()
 {
     // oppdatere ranklista?
     if (isset($_GET['update']) && access::has("crewet")) {
         ranklist::flush();
         ess::$b->page->add_message("Ranklisten skal nå være oppdatert.");
     }
     // vise komplett liste?
     if (isset($_GET['alle'])) {
         $this->all();
     } else {
         $this->top();
     }
 }
예제 #2
0
파일: lock.php 프로젝트: Kuzat/kofradia
    /**
     * 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'] . '&amp;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>';
    }
예제 #3
0
    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>';
    }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
파일: crewet.php 프로젝트: Kuzat/kofradia
        // 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>
예제 #6
0
 /**
  * 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;
 }