示例#1
0
    public function __construct()
    {
        ess::$b->page->add_title("Meldinger");
        // finn meldingstråden
        $this->thread = inbox_thread::get(getval("id"));
        if (!$this->thread) {
            ess::$b->page->add_message("Fant ikke meldingstråden.", "error");
            redirect::handle("innboks");
        }
        $this->thread->check_rel();
        $this->thread->get_receivers();
        $this->can_reply = $this->thread->can_reply_access && $this->thread->can_reply_receivers;
        redirect::store("innboks_les?id={$this->thread->id}");
        $this->check_actions();
        // oppdater stats og teller
        $this->thread->stats_view_update();
        $this->thread->counter_new_reset();
        // finn ut hvor mange meldinger vi kan se
        $this->num_messages = $this->thread->num_messages();
        // sett opp sidenummer
        $this->set_page_info();
        // antall nye meldinger
        $this->new = $this->thread->data_rel ? $this->thread->data_rel['ir_unread'] : 0;
        // skrive svar?
        if (isset($_GET['reply']) && $this->can_reply) {
            ess::$b->page->add_js_domready('
			$("textContent").focus();
			$("default_main").goto();');
        }
        // vis meldingen
        $this->show();
    }
示例#2
0
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     $this->ff->needaccess(2);
     redirect::store("medlemmer?ff_id={$this->ff->id}");
     $this->page_handle();
     $this->ff->load_page();
 }
示例#3
0
文件: bank.php 项目: Kuzat/kofradia
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     $this->ff->needtype("bank");
     $this->ff->needaccess(3);
     redirect::store("bank?ff_id={$this->ff->id}");
     ess::$b->page->add_title("Bankkontroll");
     $this->page_handle();
     $this->ff->load_page();
 }
示例#4
0
 /**
  * Construct
  */
 public function __construct()
 {
     access::no_guest();
     ess::$b->page->add_title("Anti-bot sjekk");
     // hvilken side vi skal sendes til
     $this->redirect_url = getval("ret");
     if (!$this->redirect_url) {
         $this->redirect_url = ess::$s['relative_path'] . "/";
     }
     // sjekk etter anti-bot
     $name = getval("name");
     $this->antibot = antibot::get($name);
     if (!$this->antibot->data) {
         ess::$b->page->add_message("Anti-bot oppføringen er ikke opprettet.", "error");
         $this->redirect();
     }
     // kuler?
     if ($name == "kuler") {
         // gjennomfør pre-check
         if (!$this->antibot->kuler_precheck()) {
             $this->redirect();
         }
         // sett lave ventetider
         $this->update_delay = 2;
         $this->retry_delay = 2;
     }
     redirect::store("sjekk?name=" . urlencode($this->antibot->name) . '&ret=' . urlencode($this->redirect_url));
     // sjekk om anti-boten ikke krever sjekk
     if (!$this->antibot->is_check_required()) {
         $this->redirect();
     }
     // sjekk for ventetid
     $this->check_wait();
     // hent bildene
     $this->load_images();
     $this->form = \Kofradia\Form::getByDomain("anti-bot", login::$user);
     // utføre sjekk?
     if (isset($_POST['valider']) && isset($this->images) && !$this->wait) {
         $this->check();
     }
     // nye bilder?
     if (isset($_POST['new'])) {
         $this->new_imgs();
     }
     // vis anti-boten
     $this->show();
 }
示例#5
0
文件: banken.php 项目: Kuzat/kofradia
 /**
  * Behandle forespørsel
  */
 protected function page_handle()
 {
     redirect::store("/banken", redirect::ROOT);
     // hent inn bankinfo
     $this->bank = page_banken_bank::get($this->up->data['up_bank_ff_id']);
     // må vi velge en bankkonto?
     if (!$this->bank) {
         $this->bank_set();
     }
     // har vi ikke noe bankpassord?
     if (!$this->up->user->data['u_bank_auth']) {
         $this->auth_create();
     }
     // kontroller at vi er logget inn i banken
     $this->auth_verify();
     // logge ut?
     if (isset($_GET['logout']) && !isset(login::$extended_access['authed'])) {
         login::data_set("banken_last_view", 0);
         ess::$b->page->add_message("Du er nå logget ut av banken.");
         redirect::handle();
     }
     // endre bankpassord?
     if (isset($_GET['authc'])) {
         $this->auth_change();
     }
     // bytte bankkonto?
     if (isset($_POST['switch'])) {
         $this->bank_set(true);
     }
     // sette inn penger?
     if (isset($_POST['sett_inn'])) {
         $this->sett_inn();
     }
     // ta ut penger?
     if (isset($_POST['ta_ut'])) {
         $this->ta_ut();
     }
     // overføre penger?
     if (isset($_POST['mottaker']) && !isset($_POST['abort'])) {
         $this->overfor();
     }
     // vis banken
     $this->show();
 }
示例#6
0
    protected function load_user()
    {
        $user = login::$user;
        // vise en spesiell bruker?
        if (isset($_GET['u_id']) && access::has("admin")) {
            // hent bruker
            $user = user::get((int) $_GET['u_id']);
            // fant ikke?
            if (!$user) {
                echo '
<h1>Meldinger</h1>
<p>Fant ingen bruker med ID <b>' . htmlspecialchars($_GET['u_id']) . '</b>.</p>';
                $this->load_page();
            }
            $this->show_deleted = true;
        }
        $this->inbox = new user_innboks($user);
        // logg visning av innboks
        putlog("PROFILVIS", "%c5%bVIS-MELDINGER:%b%c %u" . login::$user->player->data['up_name'] . "%u ({$_SERVER['REQUEST_URI']})");
        // lagre redirect adresse
        redirect::store($this->addr());
    }
示例#7
0
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     if ($this->ff->type['type'] != "familie" || $this->ff->data['ff_is_crew']) {
         $this->ff->needtype("bomberom");
     }
     $this->ff->needaccess(true);
     $this->fam = $this->ff->type['type'] == "familie";
     // konkurrerende broderskap har ikke bomberom
     if ($this->ff->competition) {
         ess::$b->page->add_message("Broderskapet er i konkurransemodus og har derfor ikke et aktivt bomberom.", "error");
         $this->ff->redirect();
     }
     redirect::store("bomberom?ff_id={$this->ff->id}");
     ess::$b->page->add_title("Bomberommet");
     // sjekk om vi kan kaste ut nå
     $this->check_kick_hour();
     $this->kick_access = $this->ff->access($this->ff->type['type'] == "familie" ? 2 : true);
     // behandle forespørselen
     $this->page_handle();
     // last inn siden
     $this->ff->load_page();
 }
示例#8
0
    /**
     * Crewside
     */
    protected static function page_crew()
    {
        global $__server, $_lang;
        ess::$b->page->add_title("Crew");
        $subpage2 = getval("b");
        redirect::store(page_min_side::addr(NULL, $subpage2 != "" ? "b=" . $subpage2 : ''));
        ess::$b->page->add_css('
.minside_crew_links .active { color: #CCFF00 }');
        $links = array();
        $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "player")) . '">Min spiller</a>';
        $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "")) . '"' . ($subpage2 == "" ? ' class="active"' : '') . '>Oversikt / logg</a>';
        if (access::has("forum_mod")) {
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=addlog")) . '"' . ($subpage2 == "addlog" ? ' class="active"' : '') . '>Nytt notat</a>';
        }
        $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk")) . '"' . ($subpage2 == "blokk" ? ' class="active"' : '') . '>Blokkeringer</a>';
        if (access::has("mod")) {
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=banka")) . '"' . ($subpage2 == "banka" ? ' class="active"' : '') . '>Bankpassord</a>';
        }
        if (access::has("mod")) {
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=birth")) . '"' . ($subpage2 == "birth" ? ' class="active"' : '') . '>Fødselsdato</a>';
        }
        if (access::has("mod")) {
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr("set", "b=pass")) . '">Passord</a>';
        }
        if (access::has("admin")) {
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=level")) . '"' . ($subpage2 == "level" ? ' class="active"' : '') . '>Tilgangsnivå</a>';
        }
        $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=send_email")) . '"' . ($subpage2 == "send_email" ? ' class="active"' : '') . '>Send e-post</a>';
        $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=warning")) . '"' . ($subpage2 == "warning" ? ' class="active"' : '') . '>Gi advarsel</a>';
        echo '
	<p class="c minside_crew_links">' . implode(" | ", $links) . '</p>';
        if ($subpage2 == "") {
            // javascript for rapporteringer
            ess::$b->page->add_js_domready('
	var w = $("minside_reports");
	var xhr = new Request({
		url: relative_path + "/ajax/minside_report",
		data: { u_id: ' . page_min_side::$active_user->id . ' },
		evalScripts: function(script)
		{
			ajax.js += script;
		}
	});
	xhr.addEvent("success", function(text)
	{
		w.set("html", text);
		w.getElements(".pagenumbers").each(function(elm)
		{
			elm.addEvent("set_page", function(s) { load(null, s, true); });
		});
		ajax.refresh();
	});
	xhr.addEvent("failure", function(x)
	{
		var p = new Element("p", {html: "Feil: " + x}).inject(w.empty());
	});
	function load(a, s, goto)
	{
		if (a !== null) xhr.options.data.a = a;
		if (s) xhr.options.data.s = s;
		if (goto) w.getParent().goto(-10);
		w.set("html", "<p>Laster inn data..</p>");
		xhr.send();
	}
	$("minside_reports_from").addEvent("click", function() { load("from", 1, true); });
	$("minside_reports_to").addEvent("click", function() { load("to", 1, true); });
	$("minside_reports_all").addEvent("click", function() { load("", 1, true); });
	load();');
            // css for rapporteringer
            ess::$b->page->add_css('
.rap_wrap {
	margin: 1em 0;
	background-color: #222222;
	position: relative;
	overflow: auto;
}
.rap_time {
	position: absolute;
	top: 8px;
	right: 5px;
	margin: 0;
	color: #777777;
}
.rap_time span {
	color: #EEEEEE;
}
.rap_w {
	margin: 0;
	padding: 5px;
	background-color: #282828;
}
.rap_u {
	font-size: 14px;
}

.rap_wrap .col2_w { margin: 0 }
.rap_wrap .col_w.left { width: 40% }
.rap_wrap .col_w.right { width: 60% }
.rap_wrap .col_w.left .col { margin: 0 0 0 5px }
.rap_wrap .col_w.right .col { margin: 5px 5px 5px 0 }

.rap_note {
	background-color: #1C1C1C;
	padding: 5px !important;
	overflow: auto;
	border: 1px dotted #525252
}
');
            // faner
            ess::$b->page->add_js_domready('
	$$(".minside_fane_link").addEvent("click", function(elm)
	{
		$$(".minside_fane").setStyle("display", "none");
		$$(".minside_fane_link").removeClass("minside_fane_active");
		this.addClass("minside_fane_active");
		$(this.get("rel")).setStyle("display", "");
	});
	$$(".minside_fane_active").fireEvent("click");');
            ess::$b->page->add_css('
.minside_fane_active, .minside_fane_active:hover {
	color: #CCFF00;
}');
            echo '
	<div class="col2_w">
		<div class="col_w left">
			<div class="col">
				<div class="bg1_c">
					<h1 class="bg1">Oversikt<span class="left2"></span><span class="right2"></span></h1>
					<div class="bg1">';
            // hent blokkeringer for brukeren
            $result = \Kofradia\DB::get()->query("SELECT ub_id, ub_type, ub_time_expire, ub_reason FROM users_ban WHERE ub_u_id = " . page_min_side::$active_user->id . " AND ub_time_expire > " . time());
            if ($result->rowCount() > 0) {
                while ($row = $result->fetch()) {
                    $access = access::has(blokkeringer::$types[$row['ub_type']]['access']);
                    echo '
						<p>Blokkert: ' . ($access ? '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk&t={$row['ub_type']}")) . '">' : '') . htmlspecialchars(blokkeringer::$types[$row['ub_type']]['title']) . ($access ? '</a>' : '') . ' (til ' . ess::$b->date->get($row['ub_time_expire'])->format(date::FORMAT_SEC) . ', ' . game::counter($row['ub_time_expire'] - time()) . ')</p>';
                }
            }
            echo '
						<p>Trykk deg inn på de forskjellige spillerene til brukeren for å se informasjon knyttet opp mot dem.</p>
					</div>
				</div>
			</div>
		</div>
		<div class="col_w right">
			<div class="col">
				<div class="bg1_c">
					<h1 class="bg1">Crewnotat for brukeren<span class="left2"></span><span class="right2"></span></h1>
					<p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote")) . '">rediger</a></p>
					<div class="bg1">
						<p>Her kan hvem som helst i crewet legge til eller endre et notat for denne brukeren for å memorere ting som har med <u>brukeren</u> å gjøre.</p>' . (empty(page_min_side::$active_user->data['u_note_crew']) ? '
						<p>Ingen notat er registrert.</p>' : '
						<div class="p">' . game::bb_to_html(page_min_side::$active_user->data['u_note_crew']) . '</div>') . '
					</div>
				</div>
			</div>
		</div>
	</div>
	<p class="c"><a class="minside_fane_link minside_fane_active" rel="minside_fane2">Loggoppføringer</a> | <a class="minside_fane_link" rel="minside_fane1">Rapporteringer</a></p>
	<div id="minside_fane1" class="minside_fane">
		<p class="c">Filter: <a id="minside_reports_from">Brukerens egne rapporteringer</a> | <a id="minside_reports_to">Andres rapporteringer</a> | <a id="minside_reports_all">Alle</a></p>
		<div id="minside_reports">
			<p>Laster inn..</p>
		</div>
	</div>
	<div id="minside_fane2" class="minside_fane">
	<p class="c">Loggoppføringer for denne brukeren</p>';
            // hent loggene for denne brukeren
            $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50);
            $result = $pagei->query("SELECT lc_id, lc_up_id, lc_time, lc_lca_id, lc_a_up_id, lc_log FROM log_crew JOIN users_players ON up_u_id = " . page_min_side::$active_user->id . " WHERE lc_a_up_id = up_id ORDER BY lc_time DESC");
            // ingen handlinger?
            if ($result->rowCount() == 0) {
                echo '
	<p class="c">Ingen oppføringer eksisterer.</p>';
            } else {
                $rows = array();
                while ($row = $result->fetch()) {
                    $rows[$row['lc_id']] = $row;
                }
                $data = crewlog::load_summary_data($rows);
                $logs = array();
                foreach ($data as $row) {
                    // hent sammendrag
                    $summary = crewlog::make_summary($row, NULL, $row['lc_a_up_id'] != page_min_side::$active_player->id);
                    $day = ess::$b->date->get($row['lc_time'])->format(date::FORMAT_NOTIME);
                    $logs[$day][] = '<p><span class="time">' . ess::$b->date->get($row['lc_time'])->format("H:i") . ':</span> ' . $summary . '</p>';
                }
                ess::$b->page->add_css('.crewlog .time { color: #888888; padding-right: 5px }');
                foreach ($logs as $day => $items) {
                    echo '
	<div class="bg1_c">
		<h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1 crewlog">
			' . implode('
			', $items) . '
		</div>
	</div>';
                }
                echo '
	<p class="c">' . $pagei->pagenumbers() . '</p>';
            }
            echo '
	</div>';
        } elseif ($subpage2 == "addlog" && access::has("forum_mod")) {
            // legge til?
            if (isset($_POST['notat'])) {
                $notat = trim(postval("notat"));
                $notat_bb = trim(game::bb_to_html($notat));
                if (empty($notat_bb)) {
                    ess::$b->page->add_message("Notatet kan ikke være tomt.", "error");
                } else {
                    // legg til i crewloggen
                    crewlog::log("user_add_note", page_min_side::$active_player->id, $notat);
                    ess::$b->page->add_message("Notatet ble registrert.");
                    redirect::handle(page_min_side::addr());
                }
            }
            ess::$b->page->add_title("Nytt notat");
            ess::$b->page->add_js_domready('$("notat_felt").focus();');
            echo '
	<div class="bg1_c">
		<h1 class="bg1">Legg til notat i crewloggen<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Notat: (Vil bli lagt til som vanlig logg i <a href="' . htmlspecialchars(page_min_side::addr(NULL)) . '">Crewloggen</a>.)</p>
			<form action="" method="post">
				<p><textarea name="notat" id="notat_felt" rows="10" cols="30" style="width: 98%; overflow: auto">' . htmlspecialchars(postval("notat")) . '</textarea></p>
				<p>' . show_sbutton("Legg til notat") . '</p>
			</form>
		</div>
	</div>';
        } elseif ($subpage2 == "blokk") {
            ess::$b->page->add_title("Blokkeringer");
            $type = false;
            if (isset($_GET['t'])) {
                // kontroller type
                $type_id = intval($_GET['t']);
                // fant ikke?
                if (!isset(blokkeringer::$types[$type_id])) {
                    ess::$b->page->add_message("Ugyldig type '.{$type_id}.'.", "error");
                } else {
                    $type = blokkeringer::$types[$type_id];
                    // har vi tilgang til å gjøre noe med denne blokkeringen?
                    if (!access::has($type['access'])) {
                        ess::$b->page->add_message('Du har ikke tilgang til denne typen blokkering. (' . htmlspecialchars($type['title']) . ')', "error");
                        $type = false;
                    }
                }
            }
            // vise en type blokkering?
            if ($type) {
                redirect::store(page_min_side::addr(NULL, "b=blokk&t={$type_id}"));
                // sjekk om det er en aktiv blokkering for denne typen
                $active = blokkeringer::check($type_id, page_min_side::$active_user->id);
                if ($active) {
                    // hent informasjon om blokkeringen
                    $info = blokkeringer::get_info($active['ub_id']);
                }
                // handling: legg til blokkering
                if (isset($_POST['add']) && $active) {
                    ess::$b->page->add_message("Det er allerede en blokkering på brukeren som varer til " . ess::$b->date->get($active['ub_time_expire'])->format() . ".", "error");
                } elseif (isset($_POST['add'])) {
                    // kontroller verdier
                    $date_type = isset($_POST['date_type']) && $_POST['date_type'] == "abs" ? "abs" : "rel";
                    $rel_weeks = intval(postval("rel_weeks"));
                    $rel_days = intval(postval("rel_days"));
                    $rel_hours = intval(postval("rel_hours"));
                    $rel_mins = intval(postval("rel_mins"));
                    $abs_date = postval("abs_date");
                    $abs_time = postval("abs_time");
                    // sjekk type og verdiene
                    $expire = false;
                    // bestemt dato/tidspunkt
                    if ($date_type == "abs") {
                        // kontroller datoen
                        if (!($abs_date_m = check_date($abs_date, "%y-%m-%d"))) {
                            ess::$b->page->add_message('Datoen du skrev inn er ikke gyldig.', "error");
                        } elseif (!($abs_time_m = check_date($abs_time, "%h:%i:%s"))) {
                            ess::$b->page->add_message('Tidspunktet du skrev inn er ikke gyldig.', "error");
                        } else {
                            // ok
                            $date = ess::$b->date->get();
                            $date->setTime($abs_time_m[1], $abs_time_m[2], $abs_time_m[3]);
                            $date->setDate($abs_date_m[1], $abs_date_m[2], $abs_date_m[3]);
                            $expire = $date->format("U");
                        }
                    } else {
                        // sjekk uker
                        if ($rel_weeks < 0 || $rel_weeks > 9) {
                            ess::$b->page->add_message('Antall uker kan ikke være under 0 eller over 9.', "error");
                        } elseif ($rel_days < 0 || $rel_days > 6) {
                            ess::$b->page->add_message('Antall dager kan ikke være under 0 eller over 6.', "error");
                        } elseif ($rel_hours < 0 || $rel_hours > 23) {
                            ess::$b->page->add_message('Antall timer kan ikke være under 0 eller over 23.', "error");
                        } elseif ($rel_mins < 0 || $rel_mins > 59) {
                            ess::$b->page->add_message('Antall minutter kan ikke være under 0 eller over 59.', "error");
                        } else {
                            // ok
                            $expire = time() + $rel_weeks * 604800 + $rel_days * 86400 + $rel_hours * 3600 + $rel_mins * 60;
                        }
                    }
                    // sjekke videre?
                    if ($expire) {
                        // sjekk at datoen er minst 1 min fremover i tid
                        if ($expire < time() + 60) {
                            ess::$b->page->add_message('Du kan ikke legge til en blokkering for mindre enn 1 minutt.', "error");
                        } else {
                            // kontroller begrunnelse og intern informasjon
                            $log = trim(postval("log"));
                            $note = trim(postval("note"));
                            // mangler begrunnelse?
                            if ($log == "") {
                                ess::$b->page->add_message('Mangler begrunnelse.', "error");
                            } elseif ($note == "") {
                                ess::$b->page->add_message("Mangler intern informasjon", "error");
                            } else {
                                // forsøk å legg til blokkeringen
                                $add = blokkeringer::add(page_min_side::$active_user->id, $type_id, $expire, $log, $note);
                                if ($add !== true) {
                                    ess::$b->page->add_message("Det er allerede en blokkering på brukeren som varer til " . ess::$b->date->get($add['ub_time_expire'])->format() . ".", "error");
                                } else {
                                    // legg til crewlogg
                                    crewlog::log("user_ban_active", page_min_side::$active_player->id, $log, array("type" => $type_id, "time_end" => $expire, "note" => $note));
                                    ess::$b->page->add_message('Brukeren er nå blokkert til ' . ess::$b->date->get($expire)->format() . '. (' . htmlspecialchars($type['title']) . ')');
                                    redirect::handle();
                                }
                            }
                        }
                    }
                } elseif (isset($_POST['edit']) && !$active) {
                    // ingen blokkering å redigere?
                    ess::$b->page->add_message("Brukeren har ikke lengre denne blokkeringen.", "error");
                } elseif (isset($_POST['edit'])) {
                    // godkjent handling?
                    if (isset($_POST['log_change'])) {
                        // kontroller verdier
                        $date = postval("date");
                        $time = postval("time");
                        // kontroller datoen
                        if (!($date_m = check_date($date, "%y-%m-%d"))) {
                            ess::$b->page->add_message('Datoen du skrev inn er ikke gyldig.', "error");
                        } elseif (!($time_m = check_date($time, "%h:%i:%s"))) {
                            ess::$b->page->add_message('Tidspunktet du skrev inn er ikke gyldig.', "error");
                        } else {
                            $date = ess::$b->date->get();
                            $date->setTime($time_m[1], $time_m[2], $time_m[3]);
                            $date->setDate($date_m[1], $date_m[2], $date_m[3]);
                            $expire = $date->format("U");
                            // sjekk at datoen er minst 1 min fremover i tid
                            if ($expire < time() + 60) {
                                ess::$b->page->add_message('Du kan ikke legge til en blokkering for mindre enn 1 minutt.', "error");
                            } else {
                                // kontroller begrunnelse for utestengelse, begrunnelse for endring og intern informasjon
                                $log_ban = trim(postval("log_ban"));
                                $log_change = trim(postval("log_change"));
                                $note = trim(postval("note"));
                                // mangler begrunnelse for endring?
                                if ($log_change == "") {
                                    ess::$b->page->add_message('Mangler begrunnelse for endring.', "error");
                                } elseif ($log_ban == "") {
                                    ess::$b->page->add_message('Mangler begrunnelse for utestengelse.', "error");
                                } elseif ($note == "") {
                                    ess::$b->page->add_message('Mangler intern informasjon.', "error");
                                } elseif ($expire == $info['ub_time_expire'] && $log_ban == $info['ub_reason'] && $note == $info['ub_note']) {
                                    ess::$b->page->add_message('Ingen endringer ble utført.', "error");
                                } else {
                                    // oppdater blokkeringen
                                    $edit = blokkeringer::edit($active['ub_id'], $expire, $log_ban, $note);
                                    if ($edit == 0) {
                                        ess::$b->page->add_message("Blokkeringen kunne ikke bli oppdatert. Den er mest sannsynlig ikke lengre aktiv.", "error");
                                    } else {
                                        // legg til crewlogg
                                        $data = array("type" => $type_id, "time_end_old" => $info['ub_time_expire'], "log_old" => $info['ub_reason'], "note_old" => $info['ub_note']);
                                        if ($expire != $info['ub_time_expire']) {
                                            $data["time_end_new"] = $expire;
                                        }
                                        if ($log_ban != $info['ub_reason']) {
                                            $data["log_new"] = $log_ban;
                                        }
                                        if ($note != $info['ub_note']) {
                                            $data["note_new"] = $note;
                                        }
                                        crewlog::log("user_ban_change", page_min_side::$active_player->id, $log_change, $data);
                                        ess::$b->page->add_message('Du har oppdatert blokkeringen. Brukeren er nå blokkert til ' . ess::$b->date->get($expire)->format() . '. (' . htmlspecialchars($type['title']) . ')');
                                        redirect::handle();
                                    }
                                }
                            }
                        }
                    }
                } elseif (isset($_POST['delete']) && !$active) {
                    // ingen blokkering å slette?
                    ess::$b->page->add_message("Brukeren har ikke lengre denne blokkeringen.", "error");
                } elseif (isset($_POST['delete'])) {
                    // godkjent handling?
                    if (isset($_POST['log'])) {
                        $log = trim(postval("log"));
                        // mangler logg?
                        if ($log == "") {
                            ess::$b->page->add_message('Mangler begrunnelse.', "error");
                        } else {
                            // fjern blokkeringen
                            $delete = blokkeringer::delete($active['ub_id']);
                            if ($delete == 0) {
                                ess::$b->page->add_message("Blokkeringen kunne ikke bli oppdatert. Den er mest sannsynlig ikke lengre aktiv.", "error");
                            } else {
                                // legg til crewlogg
                                crewlog::log("user_ban_delete", page_min_side::$active_player->id, $log, array("type" => $type_id, "time_end" => $info['ub_time_expire'], "log" => $info['ub_reason'], "note" => $info['ub_note']));
                                ess::$b->page->add_message('Du har fjernet blokkeringen. (' . htmlspecialchars($type['title']) . ')');
                                redirect::handle();
                            }
                        }
                    }
                }
                echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Blokkering: ' . htmlspecialchars($type['title']) . '<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<boxes />
			<p class="r">Tilgangsnivå: ' . access::name($type['access']) . '</p>
			<p><u>Hensikt:</u> ' . $type['description'] . '</p>';
                // blokkert?
                if ($active) {
                    echo '
			<p>Brukeren er blokkert.</p>
			<dl class="dd_right">
				<dt>Lagt til</dt>
				<dd>' . ess::$b->date->get($info['ub_time_added'])->format(date::FORMAT_SEC) . '<br />' . game::timespan($info['ub_time_added'], game::TIME_ABS | game::TIME_ALL, 5) . '</dd>
				<dt>Utestengt til</dt>
				<dd>' . ess::$b->date->get($info['ub_time_expire'])->format(date::FORMAT_SEC) . '<br />' . game::counter($info['ub_time_expire'] - time()) . '</dd>
			</dl>
			<div class="section">
				<h2>Begrunnelse</h2>
				<div class="p">' . (($reason = game::bb_to_html($info['ub_reason'])) == "" ? 'Ikke oppgitt.' : $reason) . '</div>
				<h2>Intern informasjon</h2>
				<div class="p">' . (($note = game::bb_to_html($info['ub_note'])) == "" ? 'Ikke oppgitt.' : $note) . '</div>
			</div>';
                    // handling: redigere blokkering
                    if (isset($_POST['edit'])) {
                        echo '
			<p>Du er i ferd med å endre blokkeringen til brukeren.</p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Til</dt>
					<dd>
						Dato:
						<input type="text" name="date" id="ban_date" value="' . htmlspecialchars(postval("date", ess::$b->date->get($info['ub_time_expire'])->format("Y-m-d"))) . '" class="styled w80" />
						<input type="text" name="time" id="ban_time" value="' . htmlspecialchars(postval("time", ess::$b->date->get($info['ub_time_expire'])->format("H:i:s"))) . '" class="styled w80" />
					</dd>
					<dt>Begrunnelse for endring</dt>
					<dd><textarea name="log_change" cols="30" rows="5">' . htmlspecialchars(postval("log_change")) . '</textarea></dd>
					<dt>Begrunnelse for blokkering</dt>
					<dd><textarea name="log_ban" cols="30" rows="5">' . htmlspecialchars(postval("log_ban", $info['ub_reason'])) . '</textarea></dd>
					<dt>Intern informasjon</dt>
					<dd><textarea name="note" cols="30" rows="5">' . htmlspecialchars(postval("note", $info['ub_note'])) . '</textarea></dd>
					<dd>
						' . show_sbutton("Lagre endringer", 'name="edit"') . '
						' . show_sbutton("Avbryt") . '
					</dd>
				</dl>
			</form>';
                    } elseif (isset($_POST['delete'])) {
                        echo '
			<p>Du er i ferd med å fjerne blokkeringen til brukeren.</p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Begrunnelse for fjerning</dt>
					<dd><textarea name="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
					<form action="" method="post">
						<dd>
							' . show_sbutton("Fjern", 'name="delete"') . '
							' . show_sbutton("Avbryt") . '
						</dd>
					</form>
				</dl>
			</form>';
                    } else {
                        echo '
			<form action="" method="post">
				<p>
					' . show_sbutton("Endre", 'name="edit"') . '
					' . show_sbutton("Fjern", 'name="delete"') . '
					<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk")) . '" class="button">Tilbake</a>
				</p>
			</form>';
                    }
                } else {
                    $date_type = isset($_POST['type']) && $_POST['type'] == "abs" ? "abs" : "rel";
                    $hide_rel = $date_type == "rel" ? '' : ' hide';
                    $hide_abs = $date_type == "abs" ? '' : ' hide';
                    echo '
			<p>Brukeren har ingen aktiv blokkering.</p>
			<form action="" method="post">
				<input type="hidden" name="date_type" value="' . $date_type . '" />
				<dl class="dd_right dl_2x">
					<dt class="date_rel' . $hide_rel . '">Varighet (<a href="#" onclick="handleClass(\'.date_abs\', \'.date_rel\', event, this.parentNode.parentNode); $(\'date_type\').value=\'abs\'">velg dato</a>)</dt>
					<dd class="date_rel' . $hide_rel . '">
						<input type="text" name="rel_weeks" class="styled w30 r" style="width: 10px" value="' . intval(postval("rel_weeks")) . '" maxlength="1" /> uker
						<input type="text" name="rel_days" class="styled w30 r" style="width: 10px" value="' . intval(postval("rel_days")) . '" maxlength="1" /> dager
						<input type="text" name="rel_hours" class="styled w30 r" style="width: 17px" value="' . intval(postval("rel_hours")) . '" maxlength="2" /> timer
						<input type="text" name="rel_mins" class="styled w30 r" style="width: 17px" value="' . intval(postval("rel_mins")) . '" maxlength="2" /> minutter
					</dd>
					<dt class="date_abs' . $hide_abs . '">Til (<a href="#" onclick="handleClass(\'.date_rel\', \'.date_abs\', event, this.parentNode.parentNode); $(\'date_type\').value=\'rel\'">velg varighet</a>)</dt>
					<dd class="date_abs' . $hide_abs . '">
						Dato:
						<input type="text" name="abs_date" value="' . htmlspecialchars(postval("abs_date", ess::$b->date->get()->format("Y-m-d"))) . '" class="styled w80" />
						<input type="text" name="abs_time" value="' . htmlspecialchars(postval("abs_time", ess::$b->date->get()->format("H:i:s"))) . '" class="styled w60" />
					</dd>
					<dt>Begrunnelse</dt>
					<dd><textarea name="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
					<dt>Intern informasjon</dt>
					<dd><textarea name="note" cols="30" rows="5">' . htmlspecialchars(postval("note")) . '</textarea></dd>
					<dd>
						' . show_sbutton("Legg til blokkering", 'name="add"') . '
						<a href="' . htmlspecialchars(page_min_side::addr(NULL, "a=blokk")) . '" class="button">Tilbake</a>
					</dd>
				</dl>
			</form>';
                }
                echo '
		</div>
	</div>';
            } else {
                // filtrer ut de blokkeringene vi har tilgang til å sette
                $types = blokkeringer::$types;
                $links = array();
                foreach ($types as $id => $type) {
                    if (!access::has($type['access'])) {
                        continue;
                    }
                    $links[$type['title']] = '
				<li><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk&t={$id}")) . '" title="' . htmlspecialchars($type['description']) . '">' . htmlspecialchars($type['title']) . '</a></li>';
                }
                // sorter
                ksort($links);
                $links = implode('', $links);
                // vis oversikt
                echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Blokkeringer<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Velg type:</p>';
                if ($links == '') {
                    echo '
			<p>Du har ikke tilgang til noen blokkeringstyper.</p>';
                } else {
                    echo '
			<ul>' . $links . '
			</ul>';
                }
                echo '
		</div>
	</div>';
                // hent alle aktive blokkeringer
                $result = \Kofradia\DB::get()->query("SELECT ub_type, ub_time_expire, ub_reason FROM users_ban WHERE ub_u_id = " . page_min_side::$active_user->id . " AND ub_time_expire > " . time() . " ORDER BY ub_time_expire");
                if ($result->rowCount() > 0) {
                    echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Aktive blokkeringer<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<table class="table tablem" style="width: 100%">
				<thead>
					<tr>
						<th>Type</th>
						<th>Dato</th>
						<th>Begrunnelse</th>
					</tr>
				</thead>
				<tbody>';
                    $i = 0;
                    while ($row = $result->fetch()) {
                        $type = blokkeringer::get_type($row['ub_type']);
                        $access = access::has($type['access']);
                        echo '
					<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
						<td>' . ($access ? '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk&t={$row['ub_type']}")) . '">' : '') . htmlspecialchars($type['title']) . ($access ? '</a>' : '') . '</td>
						<td>
							' . ess::$b->date->get($row['ub_time_expire'])->format(date::FORMAT_SEC) . '<br />
							(' . game::timespan($row['ub_time_expire'], game::TIME_ABS | game::TIME_ALL, 5) . ')
						</td>
						<td>' . game::format_data($row['ub_reason'], "bb-opt", "Ingen begrunnelse gitt.") . '</td>
					</tr>';
                    }
                    echo '
				</tbody>
			</table>
		</div>
	</div>';
                }
            }
        } elseif ($subpage2 == "send_email") {
            ess::$b->page->add_title("Send e-post");
            // har tekst?
            $show_form = true;
            if (isset($_POST['text']) && !isset($_POST['edit'])) {
                $subject = trim(postval("subject"));
                $text = trim(postval("text"));
                // mangler emne?
                if (empty($subject)) {
                    ess::$b->page->add_message("Du må fylle ut emnefeltet.", "error");
                } elseif (empty($text)) {
                    ess::$b->page->add_message("Du må fylle ut innholdet.", "error");
                } else {
                    $email_subject = $subject;
                    $email_text = $text . "\n\n--\n" . login::$user->player->data['up_name'] . "\nwww.kofradia.no\n\nDenne meldingen ble sendt til " . page_min_side::$active_user->data['u_email'] . " som tilhører " . page_min_side::$active_player->data['up_name'];
                    // godkjent?
                    if (isset($_POST['send'])) {
                        // send e-posten
                        $email = new email();
                        $email->text = $email_text;
                        $email->headers['BCC'] = "*****@*****.**";
                        $email->headers['Reply-To'] = "*****@*****.**";
                        $email->send(page_min_side::$active_user->data['u_email'], $email_subject);
                        // legg til crewlogg
                        crewlog::log("user_send_email", page_min_side::$active_player->id, NULL, array("email" => page_min_side::$active_user->data['u_email'], "email_subject" => $email_subject, "email_content" => $email_text));
                        ess::$b->page->add_message("E-posten ble sendt til " . htmlspecialchars(page_min_side::$active_user->data['u_email']) . ".");
                        redirect::handle(page_min_side::addr(""));
                    }
                    echo '
	<div class="bg1_c" style="width: 400px">
		<h1 class="bg1">Send e-post<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p><b>Mottaker:</b> ' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</p>
			<p><b>Emne:</b> ' . htmlspecialchars($email_subject) . '</p>
			<p style="font-family: monospace">' . nl2br(htmlspecialchars($email_text)) . '</p>
			<form action="" method="post">
				<input type="hidden" id="email_subject" name="subject" value="' . htmlspecialchars($subject) . '" />
				<input type="hidden" id="email_text" name="text" value="' . htmlspecialchars($text) . '" />
				<p>' . show_sbutton("Send e-posten", 'name="send"') . ' ' . show_sbutton("Tilbake / endre", 'name="edit"') . '</p>
			</form>
		</div>
	</div>';
                    $show_form = false;
                }
            }
            if ($show_form) {
                ess::$b->page->add_js_domready('$("email_subject").focus();');
                echo '
	<div class="bg1_c" style="width: 400px">
		<h1 class="bg1">Send e-post<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<boxes />
			<p>Her sender du e-post til brukeren på vegne av Kofradia. Avsender vil være den normale avsendere all e-post fra Kofradia blir sendt fra.</p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Mottaker</dt>
					<dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd>
					<dt>Emne</dt>
					<dd><input type="text" value="' . htmlspecialchars(postval("subject")) . '" name="subject" id="email_subject" class="styled w200" /></dd>
					<dt>Innhold</dt>
					<dd><textarea name="text" id="email_text" cols="50" rows="10">' . htmlspecialchars(postval("text", "Hei,\n\n")) . '</textarea></dd>
					<dd>' . show_sbutton("Forhåndsvis / fortsett") . '</dd>
				</dl>
			</form>
		</div>
	</div>';
            }
        } elseif ($subpage2 == "warning") {
            ess::$b->page->add_title("Gi advarsel til brukeren");
            $types = crewlog::$user_warning_types;
            // legge til advarsel?
            if (isset($_POST['log'])) {
                $log = trim(postval("log"));
                $note = trim(postval("note"));
                $type = postval("type");
                $priority = (int) postval("priority");
                $notify = isset($_POST['notify']);
                if (empty($log) || empty($note)) {
                    ess::$b->page->add_message("Både begrunnelse og intern informasjon må fylles ut.", "error");
                } elseif (!isset($types[$type])) {
                    ess::$b->page->add_message("Ugyldig kategori.", "error");
                } elseif ($priority < 1 || $priority > 3) {
                    ess::$b->page->add_message("Ugylig alvorlighet.", "error");
                } else {
                    $data = array("type" => $types[$type], "note" => $note, "priority" => $priority);
                    // legge til spillerlogg?
                    if ($notify) {
                        $data['notified'] = 1;
                        $data['notified_id'] = player::add_log_static(gamelog::$items['advarsel'], urlencode($types[$type]) . ':' . urlencode($log), NULL, page_min_side::$active_player->id);
                        ess::$b->page->add_message("Advarselen ble lagret. Brukeren ble informert.");
                    } else {
                        ess::$b->page->add_message("Advarselen ble lagret. Du har ikke informert brukeren om denne advarselen.");
                    }
                    // legg til advarselen
                    crewlog::log("user_warning", page_min_side::$active_player->id, $log, $data);
                    redirect::handle();
                }
            }
            echo '
	<div class="bg1_c" style="width: 400px">
		<h1 class="bg1">Gi advarsel til brukeren<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<form action="" method="post">
				<boxes />
				<p>Dette kan benyttes som et verktøy for å gi advarsler til brukere. Det kan velges om brukeren skal motta advarselen eller ikke. Hvis man ikke velger å informere brukeren om noe, blir det alikevel søkbart i crewloggen for brukeren.</p>
				<p>Alvorligheten av advarselen blir benyttet for å automatisere en poengsum brukeren får avhengig av antall advarseler. En advarsel med høy alvorlighet varer lenger og teller mer enn en med lav alvorlighet.</p>
				<dl class="dd_right">
					<dt>Kategori</dt>
					<dd>
						<select name="type">';
            $type = isset($_POST['type']) && isset($types[$_POST['type']]) ? intval($_POST['type']) : false;
            if ($type === false) {
                echo '
							<option value="">Velg ..</option>';
            }
            foreach ($types as $key => $row) {
                echo '
							<option value="' . $key . '"' . ($key === $type ? ' selected="selected"' : '') . '>' . htmlspecialchars($row) . '</option>';
            }
            echo '
						</select>
					</dd>
					<dt>Alvorlighet/prioritet</dt>
					<dd>
						<select name="priority">';
            $priority = isset($_POST['priority']) && is_numeric($_POST['priority']) && $_POST['priority'] >= 1 && $_POST['priority'] <= 3 ? $_POST['priority'] : 2;
            echo '
							<option value="1"' . ($priority == 1 ? ' selected="selected"' : '') . '>Lav</option>
							<option value="2"' . ($priority == 2 ? ' selected="selected"' : '') . '>Moderat</option>
							<option value="3"' . ($priority == 3 ? ' selected="selected"' : '') . '>Høy</option>
						</select>
					</dd>
				</dl>
				<p>Begrunnelse:</p>
				<p><textarea name="log" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(postval("log")) . '</textarea></p>
				<p>Intern informasjon:</p>
				<p><textarea name="note" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(postval("note")) . '</textarea></p>
				<p><input type="checkbox" name="notify"' . ($_SERVER['REQUEST_METHOD'] == "POST" && !isset($_POST['notify']) ? '' : ' checked="checked"') . ' id="warning_notify" /><label for="warning_notify"> Gi brukeren informasjon om denne advarselen. Kun kategori og begrunnelse vil bli oppgitt til brukeren som en logg i hendelser.</label></p>
				<p class="c">' . show_sbutton("Lagre") . '</p>
			</form>
		</div>
	</div>';
            // analyser advarsler
            $lca_id = crewlog::$actions['user_warning'][0];
            $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
            $result = $pagei->query("\n\t\t\t\tSELECT lc_id, lc_up_id, lc_time, lc_log, lcd_data_int\n\t\t\t\tFROM log_crew\n\t\t\t\t\tJOIN users_players ON lc_a_up_id = up_id AND up_u_id = " . page_min_side::$active_user->id . "\n\t\t\t\t\tLEFT JOIN log_crew_data ON lcd_lc_id = lc_id AND lcd_lce_id = 5\n\t\t\t\tWHERE lc_lca_id = {$lca_id} AND (lcd_data_int IS NULL OR lcd_data_int = 0)\n\t\t\t\tORDER BY lc_time DESC");
            $data = array();
            while ($row = $result->fetch()) {
                $data[$row['lc_id']] = $row;
            }
            // sett opp data
            $data = crewlog::load_summary_data($data);
            echo '
	<div class="bg1_c ' . (count($data) == 0 ? 'xsmall' : 'medium') . '">
		<h1 class="bg1">Tidligere advarsler<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">';
            if (count($data) == 0) {
                echo '
			<p>Brukeren har ingen tidligere advarsler.</p>';
            } else {
                ess::$b->page->add_css('
.advarsel { border: 1px solid #292929; margin: 10px 0; padding: 0 10px }');
                foreach ($data as $row) {
                    $priority = $row['data']['priority'] == 1 ? "lav" : ($row['data']['priority'] == 2 ? "moderat" : "høy");
                    echo '
			<div class="advarsel">
				<p><b>' . ess::$b->date->get($row['lc_time'])->format() . '</b>: ' . $row['data']['type'] . ' (alvorlighet: <b>' . $priority . '</b>):</p>
				<ul>
					<li>' . game::format_data($row['lc_log']) . '</li>
					<li>Internt notat: ' . game::format_data($row['data']['note']) . '</li>
				</ul>
				<p>' . (empty($row['data']['notified']) ? 'Ble IKKE varslet.' : 'Ble varslet.') . ' Av <user id="' . $row['lc_up_id'] . '" /></p>
			</div>';
                }
                echo '
			<p class="c">' . $pagei->pagenumbers() . '</p>';
            }
            echo '
		</div>
	</div>';
        } elseif ($subpage2 == "enote") {
            ess::$b->page->add_title("Endre notat for bruker");
            // lagre endringer?
            if (isset($_POST['notat'])) {
                $notat = postval("notat");
                if ($notat == page_min_side::$active_user->data['u_note_crew']) {
                    ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                } else {
                    \Kofradia\DB::get()->exec("UPDATE users SET u_note_crew = " . \Kofradia\DB::quote($notat) . " WHERE u_id = " . page_min_side::$active_user->id);
                    // legg til crewlogg
                    crewlog::log("user_note_crew", page_min_side::$active_player->id, NULL, array("note_old" => page_min_side::$active_user->data['u_note_crew'], "note_diff" => diff::make(page_min_side::$active_user->data['u_note_crew'], $notat)));
                    ess::$b->page->add_message("Notatet ble endret.");
                    redirect::handle();
                }
            }
            echo '
	<div class="bg1_c" style="width: 400px">
		<h1 class="bg1">Endre crewnotat for bruker<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<form action="" method="post">
				<p>Dette endrer notatet som er tilknyttet brukeren. Du kan også tilknytte <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "player")) . '">informasjon til spilleren</a>, hvis det heller er ønskelig.</p>
				<p>Notat:</p>
				<p><textarea name="notat" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(page_min_side::$active_user->data['u_note_crew']) . '</textarea></p>
				<p class="c">' . show_sbutton("Lagre") . '</p>
			</form>
		</div>
	</div>';
        } elseif ($subpage2 == "level" && access::has("admin")) {
            // nivåer man kan bytte til
            static $levels = array(1 => "Vanlig bruker", 14 => "Skjult nostat (crewtilgang)", -4 => "Ressurs", 12 => "Ressurs (nostat)", 13 => "Utvikler", 4 => "Forummoderator", 6 => "Forummoderator (nostat)", 5 => "Moderator", 11 => "Seniormoderator");
            if (access::has("sadmin")) {
                $levels[7] = "Administrator";
            }
            if (access::has("sadmin")) {
                $levels[8] = "Superadministrator";
            }
            // kan vi ikke endre brukernivået til denne brukeren?
            if (!isset($levels[page_min_side::$active_user->data['u_access_level']])) {
                ess::$b->page->add_message("Du har ikke rettigheter til å endre tilgangsnivået til denne brukeren.", "error");
                redirect::handle(page_min_side::addr());
            }
            // endre brukernivå?
            if (isset($_POST['level'])) {
                $level = intval($_POST['level']);
                $log = trim(postval("log"));
                // samme brukernivå?
                if ($level == page_min_side::$active_user->data['u_access_level']) {
                    ess::$b->page->add_message("Du må velge et nytt tilgangsnivå.", "error");
                } elseif (!isset($levels[$level])) {
                    ess::$b->page->add_message("Ugyldig tilgangsnivå.");
                } elseif (empty($log)) {
                    ess::$b->page->add_message("Mangler begrunnelse.");
                } else {
                    // endre tilgangsnivå
                    $old = page_min_side::$active_user->data['u_access_level'];
                    if (page_min_side::$active_user->change_level($level, isset($_POST['no_update_up']))) {
                        // e-post logg
                        sysreport::log("Endring av tilgangsnivå: " . login::$user->player->data['up_name'] . " endret tilgangsnivået til " . page_min_side::$active_user->data['u_email'] . " (" . page_min_side::$active_player->data['up_name'] . ") fra {$levels[$old]} til {$levels[$level]} {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id . "\n\nBegrunnelse: " . strip_tags(game::format_data($log)), "Kofradia: Endring av tilgangsnivå for " . page_min_side::$active_user->data['u_email'] . " (" . page_min_side::$active_player->data['up_name'] . ")");
                        // finn totalt beløp spilleren har
                        $result = \Kofradia\DB::get()->query("SELECT up_cash + up_bank FROM users_players WHERE up_id = " . page_min_side::$active_player->id);
                        $money = $result->fetchColumn(0);
                        // crewlogg
                        $data = array("level_old" => $old, "level_old_text" => $levels[$old], "level_new" => $level, "level_new_text" => $levels[$level], "money" => $money, "points" => page_min_side::$active_player->data['up_points']);
                        if (page_min_side::$active_player->active && !isset($_POST['no_update_up'])) {
                            $data['up_id'] = page_min_side::$active_player->id;
                        }
                        crewlog::log("user_level", page_min_side::$active_player->id, $log, $data);
                        putlog("CREWCHAN", "%bEndring av tilgangsnivå%b: " . login::$user->player->data['up_name'] . " endret tilgangsnivået til " . page_min_side::$active_user->data['u_email'] . " (" . page_min_side::$active_player->data['up_name'] . ") fra {$levels[$old]} til {$levels[$level]} {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                        ess::$b->page->add_message('Tilgangsnivået ble endret fra <b>' . htmlspecialchars($levels[$old]) . '</b> til <b>' . htmlspecialchars($levels[$level]) . '</b>.');
                    } else {
                        ess::$b->page->add_message("Tilgangsnivået kunne ikke endres.", "error");
                    }
                    redirect::handle();
                }
            }
            echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Endre tilgangsnivå for bruker<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">' . (page_min_side::$active_player->active ? '
			<p>Dette vil automatisk berøre spilleren ' . page_min_side::$active_player->profile_link() . '.<p>' : '
			<p>Dette vil kun ha innvirkning på brukeren, siden det ikke er noen aktiv spiller.</p>') . '
			<form action="" method="post">
				<dl class="dd_right">
					<dt>Nåværende tilgangsnivå</dt>
					<dd>' . $levels[page_min_side::$active_user->data['u_access_level']] . '</dd>
					<dt>Nytt tilgangsnivå</dt>
					<dd>
						<select name="level">';
            $level = intval(postval("level", page_min_side::$active_user->data['u_access_level']));
            foreach ($levels as $id => $name) {
                echo '
							<option value="' . $id . '"' . ($level == $id ? ' selected="selected"' : '') . '>' . htmlspecialchars($name) . '</option>';
            }
            echo '
						</select>
					</dd>
					<dt>Begrunnelse</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>' . (page_min_side::$active_player->active ? '
				<p><input type="checkbox" id="no_update_up" name="no_update_up"' . (isset($_POST['no_update_up']) ? ' checked="checked"' : '') . ' /><label for="no_update_up"> Ikke oppdater det visuelle tilgangsnivået til ' . page_min_side::$active_player->profile_link() . '</label></p>' : '') . '
				<p class="c">' . show_sbutton("Endre tilgangsnivå") . '</p>
			</form>
		</div>
	</div>';
        } elseif ($subpage2 == "banka" && access::has("mod")) {
            // lagre nytt passord
            if (isset($_POST['bank_auth'])) {
                $bank_auth = postval("bank_auth");
                $log = trim(postval("log"));
                // for kort?
                if (mb_strlen($bank_auth) < 6) {
                    ess::$b->page->add_message("Passordet må inneholde minst 6 tegn.", "error");
                } elseif (password::verify_hash($bank_auth, page_min_side::$active_user->data['u_bank_auth'], 'bank_auth')) {
                    ess::$b->page->add_message("Passordet er det samme som nåværende.", "error");
                } elseif ($log == "") {
                    ess::$b->page->add_message("Mangler begrunnelse.", "error");
                } else {
                    $newpass = password::hash($bank_auth, null, 'bank_auth');
                    \Kofradia\DB::get()->exec("UPDATE users SET u_bank_auth = " . \Kofradia\DB::quote($newpass) . " WHERE u_id = " . page_min_side::$active_user->id);
                    // crewlogg
                    crewlog::log("user_bank_auth", page_min_side::$active_player->id, $log, array("pass_old" => page_min_side::$active_user->data['u_bank_auth'], "pass_new" => $newpass));
                    ess::$b->page->add_message("Bankpassordet ble endret.");
                    redirect::handle();
                }
            }
            ess::$b->page->add_title("Endre bankpassord");
            echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Endre bankpassord<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<form action="" method="post" autocomplete="off">
				<dl class="dd_right">
					<dt>Nytt bankpassord</dt>
					<dd><input type="password" id="bank_auth" class="styled w120" /></dd>
					<dt>Begrunnelse for endring</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
				<p class="c">' . show_sbutton("Lagre") . '</p>
			</form>
		</div>
	</div>';
        } elseif ($subpage2 == "phone" && access::has("mod")) {
            // lagre nytt nummer?
            if (isset($_POST['phone'])) {
                $phone = postval("phone");
                $log = trim(postval("log"));
                if (!preg_match("/^47\\d{8}\$/Du", $phone) && $phone != "") {
                    ess::$b->page->add_message("Ugyldig telefonnummer. Må bestå av 10 tall inkludert 47 først.", "error");
                } else {
                    // kontroller at nummeret ikke er lagt inn fra før
                    $result = \Kofradia\DB::get()->query("SELECT u_id, u_email, up_id, up_name, up_access_level FROM users, users_players WHERE u_phone = " . \Kofradia\DB::quote($phone) . " AND u_id != " . page_min_side::$active_user->id . " AND up_id = u_active_up_id LIMIT 1");
                    if ($result->rowCount() > 0) {
                        $row = $result->fetch();
                        ess::$b->page->add_message('Nummeret er allerede i bruk av <a href="min_side?u_id=' . $row['u_id'] . '">' . htmlspecialchars($row['u_email']) . '</a> (' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . ').', "error");
                    } elseif ($phone == page_min_side::$active_user->data['u_phone']) {
                        ess::$b->page->add_message("Nummeret er det samme som nåværende nummer.", "error");
                    } elseif ($log == "") {
                        ess::$b->page->add_message("Mangler logg melding.");
                    } else {
                        // lagre nytt nummer
                        \Kofradia\DB::get()->exec("UPDATE users SET u_phone = " . \Kofradia\DB::quote($phone) . " WHERE u_id = " . page_min_side::$active_user->id);
                        crewlog::log("user_phone", page_min_side::$active_player->id, $log, array("phone_old" => page_min_side::$active_user->data['u_phone'], "phone_new" => $phone));
                        ess::$b->page->add_message('Mobilnummeret ble endret fra <b>' . (empty(page_min_side::$active_user->data['u_phone']) ? 'tomt' : htmlspecialchars(page_min_side::$active_user->data['u_phone'])) . '</b> til <b>' . (empty($phone) ? 'tomt' : $phone) . '</b>.');
                    }
                }
            }
            ess::$b->page->add_title("Endre mobilnummer");
            echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Endre mobilnummer<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Her endrer du mobilnummeret til brukeren. Dette kan bli brukt til å sende ut forskjellig informasjon.</p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Nåværende nummer</dt>
					<dd>' . (empty(page_min_side::$active_user->data['u_phone']) ? 'Tomt' : htmlspecialchars(page_min_side::$active_user->data['u_phone'])) . '</dd>
					<dt>Nytt nummer</dt>
					<dd><input type="text" maxlength="10" value="' . htmlspecialchars(postval("phone", page_min_side::$active_user->data['u_phone'])) . '" name="phone" class="styled w80" /></dd>
					<dt>Begrunnelse for endring</dt>
					<dd><textarea name="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
				<p class="c">' . show_sbutton("Lagre") . '</p>
			</form>
		</div>
	</div>';
        } elseif ($subpage2 == "birth" && access::has("mod")) {
            // lagre ny fødselsdato?
            if (isset($_POST['birth_day']) && isset($_POST['birth_month']) && isset($_POST['birth_year'])) {
                $birth = postval("birth");
                // sjekk fødselsdato
                $birth_day = intval(postval("birth_day"));
                $birth_month = intval(postval("birth_month"));
                $birth_year = intval(postval("birth_year"));
                $date = ess::$b->date->get();
                $n_day = $date->format("j");
                $n_month = $date->format("n");
                $n_year = $date->format("Y");
                $age = $n_year - $birth_year - ($n_month < $birth_month || $birth_month == $n_month && $n_day < $birth_day ? 1 : 0);
                $birth = $birth_year . "-" . str_pad($birth_month, 2, "0", STR_PAD_LEFT) . "-" . str_pad($birth_day, 2, "0", STR_PAD_LEFT);
                // sjekk om fødselsdatoen er gyldig
                $birth_date = ess::$b->date->get();
                $birth_date->setDate($birth_year, $birth_month, $birth_day);
                $birth_valid = $birth_date->format("Y-m-d") == $birth;
                $log = trim(postval("log"));
                // ugyldig dag?
                if ($birth_day < 0 || $birth_day > 31) {
                    ess::$b->page->add_message("Du må velge en gyldig dag.", "error");
                } elseif ($birth_month < 0 || $birth_month > 12) {
                    ess::$b->page->add_message("Du må velge en gyldig måned.", "error");
                } elseif (($birth_year < 1900 || $birth_year > $n_year) && $birth_year !== 0) {
                    ess::$b->page->add_message("Du må velge et gyldig år.", "error");
                } elseif (!$birth_valid && $birth !== '0-00-00') {
                    ess::$b->page->add_message("Datoen du fylte inn for fødselsdatoen din eksisterer ikke.");
                } elseif ($birth == page_min_side::$active_user->data['u_birth']) {
                    ess::$b->page->add_message("Fødselsdatoen ble ikke endret.", "error");
                } elseif ($log == "") {
                    ess::$b->page->add_message("Mangler begrunnelse.", "error");
                } else {
                    // oppdater
                    \Kofradia\DB::get()->exec("UPDATE users SET u_birth = " . \Kofradia\DB::quote($birth) . " WHERE u_id = " . page_min_side::$active_user->id);
                    // legg til crewlogg
                    crewlog::log("user_birth", page_min_side::$active_player->id, $log, array("birth_old" => page_min_side::$active_user->data['u_birth'], "birth_new" => $birth));
                    // alder
                    if ($age < 13) {
                        ess::$b->page->add_message("Fødselsdatoen ble satt til <b>{$birth}</b> ({$age} år). Brukeren oppfyller <u>ikke</u> kravet om alder jf. betingelsene.");
                    } else {
                        ess::$b->page->add_message("Fødselsdatoen ble satt til <b>{$birth}</b> ({$age} år).");
                    }
                    redirect::handle();
                }
            }
            $birth = explode("-", page_min_side::$active_user->data['u_birth']);
            $birth_day = isset($birth[2]) ? intval($birth[2]) : 0;
            $birth_month = isset($birth[1]) ? intval($birth[1]) : 0;
            $birth_year = isset($birth[0]) ? intval($birth[0]) : 0;
            ess::$b->page->add_title("Endre fødselsdato");
            echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Endre fødselsdato<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Nåværende fødselsdato</dt>
					<dd>' . (empty(page_min_side::$active_user->data['u_birth']) ? 'Ikke registrert' : htmlspecialchars(page_min_side::$active_user->data['u_birth'])) . '</dd>
					<dt>Ny fødselsdato</dt>
					<dd>
						<select name="birth_day">
							<option value="">Dag</option>
							<option value="0">0</option>';
            $active = postval("birth_day", $birth_day);
            for ($i = 1; $i <= 31; $i++) {
                echo '
							<option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . $i . '</option>';
            }
            echo '
						</select>
						<select name="birth_month">
							<option value="">Måned</option>
							<option value="0">Tom</option>';
            $active = postval("birth_month", $birth_month);
            for ($i = 1; $i <= 12; $i++) {
                echo '
							<option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . ucfirst($_lang['months'][$i]) . '</option>';
            }
            echo '
						</select>
						<select name="birth_year">
							<option value="">År</option>
							<option value="0">0000</option>';
            $active = postval("birth_year", $birth_year);
            for ($i = ess::$b->date->get()->format("Y"); $i >= 1900; $i--) {
                echo '
							<option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . $i . '</option>';
            }
            echo '
						</select>
					</dd>
					<dt>Begrunnelse for endring</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
				<p class="c">' . show_sbutton("Lagre") . '</p>
			</form>
		</div>
	</div>';
        }
    }
示例#9
0
// bruker ID
if (isset($_GET['u_id']) && access::has("admin")) {
    // hent info
    $u_id = (int) getval("u_id");
    $user = user::get($u_id);
    if (!$user) {
        echo '
<h1>Meldinger</h1>
<p>Fant ingen bruker med ID <b>' . $u_id . '</b>.</p>';
        $_base->page->load();
    }
    $show_deleted = true;
    echo '
<h1 class="scroll_here">Meldinger Admin</h1>
<p>Du viser meldingene som tilhører ' . game::profile_link($user->player->data['up_id'], $user->player->data['up_name'], $user->player->data['up_access_level']) . '</p>';
    redirect::store("innboks_sok?u_id={$u_id}");
}
// logg visning av innboks
putlog("PROFILVIS", "%c5%bVIS-MELDINGER-SOK:%b%c %u" . login::$user->player->data['up_name'] . "%u ({$_SERVER['REQUEST_URI']})");
// hvem som skal ha kunnet skrevet det man søker på
$search_from = array(1 => array("Alle", ""), array("Meg selv", " AND im_up_id = up_ref.up_id"), array("Andre", " AND im_up_id != up_ref.up_id"), array('Spesifiser', NULL, array()));
$id = requestval("f");
$search_from_id = isset($search_from[$id]) ? $id : 1;
// fant ikke brukeren?
if ($search_from_id == 4) {
    $name = trim(postval("u"));
    // sett opp brukernavnene
    $names = explode(",", $name);
    foreach ($names as $name) {
        $name = trim($name);
        if (empty($name)) {
示例#10
0
    /**
     * Crewside
     */
    protected static function page_crew()
    {
        if (!isset(login::$extended_access['authed'])) {
            echo '
	<p class="c">Du må logge inn for utvidede tilganger.</p>';
        } else {
            $subpage2 = getval("b");
            redirect::store(page_min_side::addr(NULL, $subpage2 != "" ? "b=" . $subpage2 : ''));
            ess::$b->page->add_title("Crew");
            ess::$b->page->add_css('
.minside_links .active { color: #CCFF00 }');
            $links = array();
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr("crew", "", "user")) . '">Min bruker</a>';
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "")) . '"' . ($subpage2 == "" ? ' class="active"' : '') . '>Oversikt</a>';
            if (access::has("seniormod")) {
                $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=rank")) . '"' . ($subpage2 == "rank" ? ' class="active"' : '') . '>Juster rank</a>';
            }
            if (access::has("mod")) {
                $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=name")) . '"' . ($subpage2 == "name" ? ' class="active"' : '') . '>Endre spillernavn</a>';
            }
            echo '
	<p class="c minside_links">' . implode(" | ", $links) . '</p>';
            if ($subpage2 == "") {
                echo '
	<div class="col2_w">
		<div class="col_w left">
			<div class="col">
				<div class="bg1_c">
					<h1 class="bg1">Oversikt<span class="left2"></span><span class="right2"></span></h1>
					<div class="bg1">' . (access::has("mod") ? '
						<ul>' . (access::has("admin") && KOFRADIA_DEBUG ? '
							<li><a href="innboks?u_id=' . page_min_side::$active_user->id . '">Vis innboksen</a></li>
							<li><a href="innboks_sok?u_id=' . page_min_side::$active_user->id . '">Søk i innboksen</a></li>' : '') . '
							<li><a href="poker?up_id=' . page_min_side::$active_player->id . '&amp;stats">Vis pokerhistorien</a></li>
							<li><a href="admin/brukere/bankoverforinger?u1=' . page_min_side::$active_player->id . '">Vis bankoverføringer</a></li>
							<li><a href="drap?up_id=' . page_min_side::$active_player->id . '">Vis angrep utført av spilleren</a></li>
							<li><a href="drap?offer_up_id=' . page_min_side::$active_player->id . '">Vis angrep utført mot spilleren</a></li>
						</ul>' : '') . '
						<p>Trykk på <a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "user")) . '">min bruker</a> for å vise informasjon om brukeren.</p>
					</div>
				</div>
			</div>
		</div>
		<div class="col_w right">
			<div class="col">
				<div class="bg1_c">
					<h1 class="bg1">Crewnotat for brukeren<span class="left2"></span><span class="right2"></span></h1>
					<p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "user")) . '">rediger</a></p>
					<div class="bg1">
						<p>Her kan hvem som helst i crewet legge til eller endre et notat for denne brukeren for å memorere ting som har med <u>brukeren</u> å gjøre.</p>' . (empty(page_min_side::$active_user->data['u_note_crew']) ? '
						<p>Ingen notat er registrert.</p>' : '
						<div class="p">' . game::bb_to_html(page_min_side::$active_user->data['u_note_crew']) . '</div>') . '
					</div>
				</div>
				<div class="bg1_c">
					<h1 class="bg1">Crewnotat for spilleren<span class="left2"></span><span class="right2"></span></h1>
					<p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote")) . '">rediger</a></p>
					<div class="bg1">
						<p>Her kan hvem som helst i crewet legge til eller endre et notat for denne spilleren for å memorere ting som har med <u>spilleren</u> å gjøre.</p>' . (empty(page_min_side::$active_player->data['up_note_crew']) ? '
						<p>Ingen notat er registrert.</p>' : '
						<div class="p">' . game::bb_to_html(page_min_side::$active_player->data['up_note_crew']) . '</div>') . '
					</div>
				</div>
			</div>
		</div>
	</div>
	<p class="c">Loggoppføringer for denne spilleren - <a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "user")) . '">se komplett logg for brukeren</a></p>';
                // hent loggene for denne spilleren
                $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50);
                $result = $pagei->query("SELECT lc_id, lc_up_id, lc_time, lc_lca_id, lc_a_up_id, lc_log FROM log_crew WHERE lc_a_up_id = " . page_min_side::$active_player->id . " ORDER BY lc_time DESC");
                // ingen handlinger?
                if ($result->rowCount() == 0) {
                    echo '
	<p class="c">Ingen oppføringer eksisterer.</p>';
                } else {
                    $rows = array();
                    while ($row = $result->fetch()) {
                        $rows[$row['lc_id']] = $row;
                    }
                    $data = crewlog::load_summary_data($rows);
                    $logs = array();
                    foreach ($data as $row) {
                        // hent sammendrag
                        $summary = crewlog::make_summary($row, NULL, $row['lc_a_up_id'] != page_min_side::$active_player->id);
                        $day = ess::$b->date->get($row['lc_time'])->format(date::FORMAT_NOTIME);
                        $logs[$day][] = '<p><span class="time">' . ess::$b->date->get($row['lc_time'])->format("H:i") . ':</span> ' . $summary . '</p>';
                    }
                    ess::$b->page->add_css('.crewlog .time { color: #888888; padding-right: 5px }');
                    foreach ($logs as $day => $items) {
                        echo '
	<div class="bg1_c">
		<h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1 crewlog">
			' . implode('
			', $items) . '
		</div>
	</div>';
                    }
                    echo '
	<p class="c">' . $pagei->pagenumbers() . '</p>';
                }
            } elseif ($subpage2 == "enote") {
                ess::$b->page->add_title("Endre notat");
                // lagre endringer?
                if (isset($_POST['notat'])) {
                    $notat = postval("notat");
                    if ($notat == page_min_side::$active_player->data['up_note_crew']) {
                        ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                    } else {
                        \Kofradia\DB::get()->exec("UPDATE users_players SET up_note_crew = " . \Kofradia\DB::quote($notat) . " WHERE up_id = " . page_min_side::$active_player->id);
                        // legg til crewlogg
                        crewlog::log("player_note_crew", page_min_side::$active_player->id, NULL, array("note_old" => page_min_side::$active_player->data['up_note_crew'], "note_diff" => diff::make(page_min_side::$active_player->data['up_note_crew'], $notat)));
                        page_min_side::$active_player->data['up_note_crew'] = $notat;
                        ess::$b->page->add_message("Notet ble endret.");
                        redirect::handle();
                    }
                }
                echo '
	<div class="bg1_c" style="width: 400px">
		<h1 class="bg1">Endre crewnotat for spiller<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<form action="" method="post">
				<p>Dette endrer notatet som er tilknyttet denne spilleren. Du kan også tilknytte <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "user")) . '">informasjon til brukeren</a>, eller til en annen av brukerens spillere hvis det heller er ønskelig.</p>
				<p>Notat:</p>
				<p><textarea name="notat" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(page_min_side::$active_player->data['up_note_crew']) . '</textarea></p>
				<p class="c">' . show_sbutton("Lagre") . '</p>
			</form>
		</div>
	</div>';
            } elseif ($subpage2 == "rank" && access::has("seniormod")) {
                // endre?
                if (isset($_POST['rel']) || isset($_POST['abs'])) {
                    $log = trim(postval("log"));
                    $rel = 0;
                    // mangler begrunnelse?
                    if ($log == "") {
                        ess::$b->page->add_message("Mangler begrunnelse.", "error");
                    } elseif (isset($_POST['abs'])) {
                        $points = game::intval(postval("points_abs"));
                        // samme?
                        if ($points == page_min_side::$active_player->data['up_points']) {
                            ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                        } elseif ($points < 0) {
                            ess::$b->page->add_message("Kan ikke sette til negativt tall.", "error");
                        } elseif ($points > 9999999) {
                            ess::$b->page->add_message("Kan ikke settes til så høyt tall.", "error");
                        } else {
                            $rel = $points - page_min_side::$active_player->data['up_points'];
                        }
                    } elseif (isset($_POST['rel'])) {
                        $points = game::intval(postval("points_rel"));
                        // ingen endring?
                        if ($points == 0) {
                            ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                        } elseif (page_min_side::$active_player->data['up_points'] + $points < 0) {
                            ess::$b->page->add_message("Kan ikke utføre handlingen. Vil føre til <b>for lav</b> verdi.", "error");
                        } elseif (page_min_side::$active_player->data['up_points'] + $points > 9999999) {
                            ess::$b->page->add_message("Kan ikke utføre handlingen. Vil føre til <b>for høy</b> verdi.", "error");
                        } else {
                            $rel = $points;
                        }
                    }
                    // skal ikke dette annonseres?
                    $silent = isset($_POST['silent']);
                    // øke ranken?
                    if ($rel > 0) {
                        page_min_side::$active_player->increase_rank($rel, false, $silent, 0);
                        // legg til crewlogg
                        crewlog::log("player_rank_inc", page_min_side::$active_player->id, $log, array("points" => $rel));
                        ess::$b->page->add_message("Endringene ble lagret. Du økte ranken med " . game::format_number($rel) . " poeng." . ($silent ? ' Informasjonen ble ikke annonsert.' : ''));
                        redirect::handle();
                    } elseif ($rel < 0) {
                        page_min_side::$active_player->increase_rank($rel, false, $silent, 0);
                        $rel = abs($rel);
                        // legg til crewlogg
                        crewlog::log("player_rank_dec", page_min_side::$active_player->id, $log, array("points" => $rel));
                        ess::$b->page->add_message("Endringene ble lagret. Du senket ranken med " . game::format_number($rel) . " poeng." . ($silent ? ' Informasjonen ble ikke annonsert.' : ''));
                        redirect::handle();
                    }
                }
                ess::$b->page->add_title("Juster rank");
                echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Juster rank<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Antall rankpoeng: <b>' . game::format_number(page_min_side::$active_player->data['up_points']) . '</b></p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Bestem rankpoeng (absolutt verdi)</dt>
					<dd><input type="text" name="points_abs" value="' . game::format_number(postval("points_abs", page_min_side::$active_player->data['up_points'])) . '" class="styled w60" maxlength="10" /> ' . show_sbutton("Lagre", 'name="abs"') . '</dd>
					<dt>Juster ranken (relativ verdi)</dt>
					<dd><input type="text" name="points_rel" value="' . game::format_number(postval("points_rel", 0)) . '" class="styled w60" maxlength="10" /> ' . show_sbutton("Lagre", 'name="rel"') . '</dd>
					<dd><input type="checkbox" name="silent"' . (isset($_POST['silent']) ? ' checked="checked"' : '') . ' id="silent" /><label for="silent"> Ikke annonser denne endringen (f.eks. på IRC)</label></dd>
					<dt>Begrunnelse for endring (crewlogg)</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
			</form>
		</div>
	</div>';
            } elseif ($subpage2 == "name" && access::has("mod")) {
                // lagre nytt spillernavn?
                if (isset($_POST['name'])) {
                    $name = trim(postval("name"));
                    $log = trim(postval("log"));
                    // ingen endringer utført?
                    if (strcmp(page_min_side::$active_player->data['up_name'], $name) === 0) {
                        ess::$b->page->add_message("Spillernavnet er det samme som før.", "error");
                    } elseif ($log == "") {
                        ess::$b->page->add_message("Mangler begrunnelse.", "error");
                    } else {
                        // kontroller spillernavnet (kun hvis endringer utover små/store bokstaver er gjort)
                        $check = strcasecmp(page_min_side::$active_player->data['up_name'], $name) !== 0;
                        if ($check) {
                            $result = \Kofradia\DB::get()->query("SELECT " . \Kofradia\DB::quoteNoNull($name) . " REGEXP regex AS m, error FROM regex_checks WHERE type = 'reg_user_strength' HAVING m = 1");
                        }
                        if ($check && $result->rowCount() > 0) {
                            // sett opp feilmeldingene
                            $feil = array();
                            while ($row = $result->fetch()) {
                                $feil[] = '<li>' . htmlspecialchars($row['error']) . '</li>';
                            }
                            // legg til feilmeldingene
                            ess::$b->page->add_message("<p>Spillernavnet var ikke gyldig:</p><ul>" . implode("", $feil) . "</ul>", "error");
                        } else {
                            // sjekk at spillernavnet ikke finnes fra før
                            $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_access_level FROM users_players WHERE up_name = " . \Kofradia\DB::quote($name) . " AND up_id != " . page_min_side::$active_player->id . " AND (up_u_id != " . page_min_side::$active_user->id . " OR up_access_level != 0)");
                            if ($result->rowCount() > 0) {
                                $row = $result->fetch();
                                ess::$b->page->add_message("Spillernavnet er allerede i bruk: " . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']), "error");
                            } else {
                                // utfør endringer - endre spillernavnet
                                \Kofradia\DB::get()->exec("UPDATE users_players SET up_name = " . \Kofradia\DB::quote($name) . " WHERE up_id = " . page_min_side::$active_player->id);
                                // legg til crewlogg
                                crewlog::log("player_name", page_min_side::$active_player->id, $log, array("user_old" => page_min_side::$active_player->data['up_name'], "user_new" => $name));
                                ess::$b->page->add_message("Spillernavnet ble endret fra " . htmlspecialchars(page_min_side::$active_player->data['up_name']) . " til " . game::profile_link(page_min_side::$active_player->id, $name, page_min_side::$active_player->data['up_access_level']) . '.');
                                redirect::handle();
                            }
                        }
                    }
                }
                ess::$b->page->add_title("Endre spillernavn");
                echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Endre spillernavn<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Ikke utfør andre endringer enn store/små bokstaver i spillernavnet dersom det ikke er veldig nødvendig. Dette på grunn av BB-koder som [user=..] ikke lenger vil fungere.</p>
			<p>Det er mulig å gi en spiller samme navn som en annen spiller, så lenge spillerene tilhører samme bruker.</p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Nåværende spillernavn</dt>
					<dd>' . htmlspecialchars(page_min_side::$active_player->data['up_name']) . '</dd>
					<dt>Nytt spillernavn</dt>
					<dd><input type="text" value="' . htmlspecialchars(postval("name", page_min_side::$active_player->data['up_name'])) . '" name="name" class="styled w120" /></dd>
					<dt>Begrunnelse for endring (crewlogg)</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
				<p class="c">' . show_sbutton("Endre spillernavnet") . '</p>
			</form>
		</div>
	</div>';
            }
        }
    }
示例#11
0
if (isset($pages[2]) && preg_match("/^\\d+\$/Du", $pages[2])) {
    // hent avstemningen
    $result = \Kofradia\DB::get()->query("SELECT p_id, p_title, p_text, p_ft_id, p_params, p_active, p_time_start, p_time_end, p_votes FROM polls WHERE p_id = " . intval($pages[2]));
    if ($result->rowCount() == 0) {
        $_base->page->add_message("Fant ikke avstemningen.", "error");
        redirect::handle();
    }
    $poll = $result->fetch();
    $_base->page->add_title($poll['p_title']);
    // hent alternativene
    $poll['options'] = array();
    $result = \Kofradia\DB::get()->query("SELECT po_id, po_text, po_votes FROM polls_options WHERE po_p_id = {$poll['p_id']}");
    while ($row = $result->fetch()) {
        $poll['options'][$row['po_id']] = $row;
    }
    redirect::store("/polls/admin/{$poll['p_id']}");
    // TODO: slette stemmer
    // rediger avstemning?
    if (isset($pages[3]) && $pages[3] == "edit") {
        // lagre endringer?
        if (isset($_POST['title']) && verify_sid()) {
            $title = trim(postval("title"));
            $text = trim(postval("text"));
            $time_start = trim(postval("time_start"));
            $time_end = trim(postval("time_end"));
            $error = false;
            if (mb_strlen($title) < 3) {
                $_base->page->add_message("Tittelen må inneholde minst 3 tegn.", "error");
                $error = true;
            }
            if (!$error && $time_start != "") {
示例#12
0
        // samme som bankpassordet?
        if (password::verify_hash($_POST['password'], login::$user->data['u_bank_auth'], "bank_auth")) {
            $_base->page->add_message("Passordet kan ikke være det samme som passordet til banken.", "error");
            redirect::handle();
        }
        // er passordene like?
        if ($_POST['password'] != $_POST['password_repeat']) {
            $_base->page->add_message("Passordene må være like.", "error");
            redirect::handle();
        }
        // lagre passord
        $hash = password::hash($_POST['password']);
        login::$user->params->update("extended_access_passkey", $hash, true);
        putlog("NOTICE", "CREWAUTH: " . login::$user->player->data['up_name'] . " endret sitt passord for utvidede tilganger");
        $_base->page->add_message("Du har nå oppdatert ditt passord for crewauth.");
        redirect::store("extended_access");
    }
    echo '
<h1>Endre passord for crewauth</h1>
<p class="h_right"><a href="extended_access">Tilbake</a></p>
<form action="extended_access?change" method="post">
	<dl class="dd_right w300">
		<dt>Nåværende passord</dt>
		<dd><input type="password" class="styled w100" name="password_current" /></dd>
		<dt>Ønsket passord</dt>
		<dd><input type="password" class="styled w100" name="password" /></dd>
		<dt>Gjenta passord</dt>
		<dd><input type="password" class="styled w100" name="password_repeat" /></dd>
		<dd><input type="submit" value="Endre passord" class="button" /></dd>
	</dl>
	<p>Ønsket passord må oppfylle kravet til password::LEVEL_STRONG.</p>
示例#13
0
文件: poker.php 项目: Kuzat/kofradia
<?php

require "base.php";
// TODO: lenke fra min side må endres
$up = login::$user->player;
if (isset($_GET['up_id']) && (access::has("mod") && isset($_GET['stats']) || access::has("sadmin") && KOFRADIA_DEBUG)) {
    // forsøk å finn spilleren
    $up = player::get((int) getval("up_id"));
    if (!$up) {
        ess::$b->page->add_message("Fant ingen spiller med ID <u>" . htmlspecialchars($_GET['up_id']) . "</u>.", "error");
        ess::$b->page->load();
    }
    redirect::store("poker?up_id={$up->id}");
    echo '
<p class="c">Du viser pokersiden som tilhører ' . $up->profile_link() . '.' . (!isset($_GET['stats']) ? '<br /><b>Viktig:</b> Utfordringer du gjør her vil bli gjort som denne spilleren, og ikke din egen.' : '') . '</p>';
}
$poker = new page_poker($up);
示例#14
0
文件: topic.php 项目: Kuzat/kofradia
    /**
     * Construct
     */
    public function __construct()
    {
        // endre signatur i forumet
        if (login::$logged_in && (isset($_GET['show_signature']) || isset($_GET['hide_signature']))) {
            if (isset($_GET['show_signature']) && login::$user->data['u_forum_show_signature'] == 0) {
                \Kofradia\DB::get()->exec("UPDATE users SET u_forum_show_signature = 1 WHERE u_id = " . login::$user->id);
            } elseif (isset($_GET['hide_signature']) && login::$user->data['u_forum_show_signature'] == 1) {
                \Kofradia\DB::get()->exec("UPDATE users SET u_forum_show_signature = 0 WHERE u_id = " . login::$user->id);
            }
            redirect::handle(game::address("topic", $_GET, array("show_signature", "hide_signature")));
        }
        // hent forumtråd
        $this->topic = new \Kofradia\Forum\Topic(getval("id"));
        $this->fmod = $this->topic->forum->fmod;
        // sett standard redirect
        redirect::store("topic?id={$this->topic->id}");
        // slette forumtråden?
        if (isset($_POST['delete'])) {
            // forsøk å slette forumtråden
            validate_sid();
            $this->topic->delete();
        }
        // gjenopprette forumtråden?
        if (isset($_POST['restore'])) {
            // forsøk å gjenopprette forumtråden
            validate_sid();
            $this->topic->restore();
        }
        // slette forumsvar?
        if (isset($_GET['delete_reply'])) {
            validate_sid();
            // finn forumsvaret
            if ($reply = $this->topic->get_reply($_GET['delete_reply'])) {
                // forsøk å slett forumsvaret
                $reply->delete();
            } else {
                ess::$b->page->add_message("Fant ikke forumsvaret.", "error");
                redirect::handle();
            }
        }
        // gjenopprette forumsvar?
        if (isset($_GET['restore_reply'])) {
            validate_sid();
            // finn forumsvaret
            if ($reply = $this->topic->get_reply($_GET['restore_reply'])) {
                // forsøk å gjenopprett forumsvaret
                $reply->restore();
            } else {
                ess::$b->page->add_message("Fant ikke forumsvaret.", "error");
                redirect::handle();
            }
        }
        // legge til nytt svar?
        if (isset($_GET['reply']) && isset($_POST['post']) && isset($_POST['text'])) {
            // ikke slå sammen?
            $no_concatenate = isset($_POST['no_concatenate']) && access::has("forum_mod");
            // annonsere?
            $announce = isset($_POST['announce']) && access::has("forum_mod");
            // har vi ingen aktiv spiller?
            if (count(login::$user->lock) == 1 && in_array("player", login::$user->lock)) {
                ess::$b->page->add_message("Du har ingen aktiv spiller.", "error");
                redirect::handle();
            }
            // forsøk å legg til svaret
            $this->topic->add_reply($_POST['text'], $no_concatenate, $announce);
        }
        // den aktuelle siden (sjekk for replyid før vi retter sidetall)
        $pagei = new pagei(pagei::ACTIVE_GET, "p", pagei::PER_PAGE, $this->topic->replies_per_page);
        // sjekk om vi skal vise slettede svar
        if (isset($_GET['show_deleted']) && $this->fmod) {
            $show_deleted = true;
            $deleted = "";
        } else {
            $show_deleted = false;
            $deleted = " AND fr_deleted = 0";
        }
        // skal vi vise status for meldingene?
        $fs_id = 0;
        // skal vi vise et bestemt forumsvar?
        $reply_id = false;
        if (isset($_GET['replyid'])) {
            // hent forumsvaret
            $reply_id = intval($_GET['replyid']);
            $result = \Kofradia\DB::get()->query("SELECT fr_id, fr_deleted FROM forum_replies WHERE fr_ft_id = {$this->topic->id} AND fr_id = {$reply_id}");
            $row = $result->fetch();
            // fant ikke forumsvaret, eller slettet uten tilgang?
            if (!$row || $row['fr_deleted'] != 0 && !$this->fmod) {
                ess::$b->page->add_message("Fant ikke forumsvaret du refererte til.", "error");
                redirect::handle();
            }
            // slettet?
            if ($row['fr_deleted'] != 0 && !$show_deleted) {
                $show_deleted = true;
                $deleted = "";
            }
            // finn ut antall forumsvar før
            $result = \Kofradia\DB::get()->query("SELECT COUNT(fr_id) FROM forum_replies WHERE fr_ft_id = {$this->topic->id} AND fr_id < {$reply_id}{$deleted}");
            $reply_num = $result->fetchColumn(0) + 1;
            // sett opp sidetallet og sett til aktiv side
            $pagei->__construct(pagei::ACTIVE, ceil($reply_num / $this->topic->replies_per_page));
        } elseif (isset($_GET['fs']) && \Kofradia\Forum\Category::$fs_check) {
            // har vi ikke status?
            if (empty($this->topic->info['fs_time'])) {
                // sørg for at vi er på side 1
                if ($pagei->active != 1) {
                    // gå til første side
                    redirect::handle(game::address(PHP_SELF, $_GET, array("p")), redirect::SERVER);
                }
            } else {
                // finn neste forumsvar etter fs_time
                $result = \Kofradia\DB::get()->query("SELECT fr_id FROM forum_replies WHERE fr_ft_id = {$this->topic->id} AND fr_time > {$this->topic->info['fs_time']}{$deleted} ORDER BY fr_time LIMIT 1");
                $row = $result->fetch();
                // fant ikke noe forumsvar?
                if (!$row) {
                    // finn det siste innlegget
                    $result = \Kofradia\DB::get()->query("SELECT fr_id FROM forum_replies WHERE fr_ft_id = {$this->topic->id}{$deleted} ORDER BY fr_time DESC LIMIT 1");
                    $row = $result->fetch();
                }
                // fremdeles ingen forumsvar å gå til?
                if (!$row) {
                    // sørg for at vi er på side 1
                    if ($pagei->active != 1) {
                        // gå til første side
                        redirect::handle(game::address(PHP_SELF, $_GET, array("p")), redirect::SERVER);
                    }
                } else {
                    // finn ut antall forumsvar før det vi skal gå til
                    $result = \Kofradia\DB::get()->query("SELECT COUNT(fr_id) FROM forum_replies WHERE fr_ft_id = {$this->topic->id} AND fr_id < {$row['fr_id']}{$deleted}");
                    $reply_num = $result->fetchColumn(0) + 1;
                    // sett opp sidetallet og kontroller at vi er på riktig side
                    $page = ceil($reply_num / $this->topic->replies_per_page);
                    if ($pagei->active != $page) {
                        // videresend til den riktige siden
                        redirect::handle(game::address(PHP_SELF, $_GET, array("p"), array("p" => $page)), redirect::SERVER);
                    }
                    $fs_id = $row['fr_id'];
                }
            }
        }
        // viser vi slettede meldinger?
        if ($show_deleted) {
            // finn ut hvor mange meldinger som er slettet
            $result = \Kofradia\DB::get()->query("SELECT COUNT(fr_id) FROM forum_replies WHERE fr_ft_id = {$this->topic->id} AND fr_deleted != 0");
            $count = $result->fetchColumn(0);
            ess::$b->page->add_message("Du viser slettede forumsvar. Denne forumtråden har <b>{$count}</b> " . fword("slettet forumsvar", "slettede forumsvar", $count) . ".", NULL, "top");
        }
        // øk visningstelleren hvis vi ikke har besøkt denne forumtråden de siste 10 min
        if (!isset($_SESSION[$GLOBALS['__server']['session_prefix'] . 'forum_topics_visited'][$this->topic->id]) || $_SESSION[$GLOBALS['__server']['session_prefix'] . 'forum_topics_visited'][$this->topic->id] + 600 <= time()) {
            \Kofradia\DB::get()->exec("UPDATE forum_topics SET ft_views = ft_views + 1 WHERE ft_id = {$this->topic->id}");
        }
        // lagre som vist
        $_SESSION[$GLOBALS['__server']['session_prefix'] . 'forum_topics_visited'][$this->topic->id] = time();
        // tittel på siden
        $this->topic->forum->add_title();
        ess::$b->page->add_title($this->topic->info['ft_title']);
        // finn ut antall svar vi har synlige
        if ($show_deleted) {
            $result = \Kofradia\DB::get()->query("SELECT COUNT(fr_id) FROM forum_replies WHERE fr_ft_id = {$this->topic->id}{$deleted}");
            $replies_count = $result->fetchColumn(0);
        } else {
            $replies_count = $this->topic->info['ft_replies'];
        }
        // korriger aktiv side
        $pagei->__construct(pagei::TOTAL, $replies_count);
        // skal vi vise svarskjema?
        $reply_form = login::$logged_in && isset($_GET['reply']) && !$reply_id;
        if ($reply_form) {
            // sørg for at vi er på siste siden
            $pagei->__construct(pagei::ACTIVE_LAST);
        }
        echo '
<div class="bg1_c forumw">
	<h1 class="bg1">' . htmlspecialchars($this->topic->info['ft_title']) . '<span class="left"></span><span class="right"></span></h1>
	<p class="h_left"><a href="forum?id=' . $this->topic->forum->id . '">' . htmlspecialchars($this->topic->forum->get_name()) . '</a></p>
	<p class="h_right">' . ($this->topic->info['ft_locked'] == 1 ? '
		Låst emne!' : '') . (login::$logged_in && $this->topic->info['ft_deleted'] == 0 && ($this->topic->info['ft_locked'] != 1 || $this->fmod) ? '
		<a href="' . htmlspecialchars(game::address(PHP_SELF, $_GET, array("replyid"), array("reply" => true))) . '" class="forum_link_replyform">Opprett svar</a>' : '') . ($this->fmod ? $show_deleted ? '
		<a href="' . htmlspecialchars(game::address(PHP_SELF, $_GET, array("show_deleted", "replyid"))) . '">Skjul slettede svar</a>' : '
		<a href="' . htmlspecialchars(game::address(PHP_SELF, $_GET, array(), array("show_deleted" => true))) . '">Vis slettede svar</a>' : '') . '
	</p>
	<div class="bg1">
<div class="forum" id="forum_topic_container">';
        // vise sidetall øverst?
        if ($pagei->pages > 1) {
            echo '
	<p class="c">' . $pagei->pagenumbers(game::address(PHP_SELF, $_GET, array("p", "replyid", "fs")), game::address(PHP_SELF, $_GET, array("p", "replyid", "fs"), array("p" => "_pageid_"))) . '</p>';
        }
        // hent forumsvar
        $replies = array();
        $up_ids = array();
        $id_list = array();
        $last_time = 0;
        $replies_last_edit = array();
        if ($replies_count > 0) {
            // hent svarene
            $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT\n\t\t\t\t\tfr_id, fr_time, fr_up_id, fr_text, fr_deleted, fr_last_edit, fr_last_edit_up_id,\n\t\t\t\t\tup_name, up_access_level, up_forum_signature, up_points, up_profile_image_url,\n\t\t\t\t\tupr_rank_pos,\n\t\t\t\t\tr_time\n\t\t\t\tFROM\n\t\t\t\t\tforum_replies\n\t\t\t\t\tLEFT JOIN users_players ON up_id = fr_up_id\n\t\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\t\t\tLEFT JOIN rapportering ON r_type = " . rapportering::TYPE_FORUM_REPLY . " AND r_type_id = fr_id AND r_state < 2\n\t\t\t\tWHERE fr_ft_id = {$this->topic->id}{$deleted}\n\t\t\t\tGROUP BY fr_id\n\t\t\t\tORDER BY fr_time ASC\n\t\t\t\tLIMIT {$pagei->start}, {$pagei->per_page}");
            while ($row = $result->fetch()) {
                $id_list[] = $row['fr_id'];
                $up_ids[] = $row['fr_up_id'];
                $last_time = $row['fr_time'];
                $replies_last_edit[$row['fr_id']] = $row['fr_last_edit'];
                $replies[] = $row;
            }
        }
        // hent inn familierelasjoner
        $up_ids[] = $this->topic->info['ft_up_id'];
        $this->topic->forum->ff_get_familier($up_ids);
        // vis hovedinnlegget
        echo $this->topic->forum->template_topic($this->topic->extended_info());
        // vis forumsvar
        if (count($replies) > 0) {
            // scrolle til første forumsvar på andre enn første side
            if ($pagei->active > 1 && !$reply_form && !$reply_id && !$fs_id) {
                echo '
	<div id="forum_scroll_here"></div>';
            }
            $reply_num = $pagei->per_page * ($pagei->active - 1) + 1;
            foreach ($replies as $row) {
                $row['ft_fse_id'] = $this->topic->forum->id;
                $row['ft_id'] = $this->topic->id;
                $row['reply_num'] = ++$reply_num;
                $row['fs_new'] = \Kofradia\Forum\Category::$fs_check && $this->topic->info['fs_time'] < $row['fr_time'];
                if ($reply_id == $row['fr_id']) {
                    $row['class_extra'] = 'forum_focus';
                }
                if ($reply_id == $row['fr_id'] || $fs_id == $row['fr_id']) {
                    $row['h2_extra'] = 'id="forum_scroll_here"';
                    // vis bokser her
                    if ($reply_id == $row['fr_id'] || $fs_id == $row['fr_id']) {
                        echo '
	<boxes />';
                    }
                }
                // vis html for svaret
                echo $this->topic->forum->template_topic_reply($row);
            }
        }
        // oppdatere sist sett?
        $time = $last_time != 0 ? $last_time : $this->topic->info['ft_time'];
        // legge til?
        if (login::$logged_in && empty($this->topic->info['fs_time'])) {
            \Kofradia\DB::get()->exec("INSERT IGNORE INTO forum_seen SET fs_ft_id = {$this->topic->id}, fs_u_id = " . login::$user->id . ", fs_time = {$time}");
        } elseif (login::$logged_in && $time > $this->topic->info['fs_time']) {
            \Kofradia\DB::get()->exec("UPDATE forum_seen SET fs_time = GREATEST(fs_time, {$time}) WHERE fs_ft_id = {$this->topic->id} AND fs_u_id = " . login::$user->id);
        }
        echo '
</div>';
        // vis svarskjema
        echo '
<div' . ($reply_form ? '' : ' style="display: none"') . ' id="container_reply">' . ($reply_form ? '
	<boxes />' : '') . '
	<form action="' . htmlspecialchars(game::address("topic", $_GET, array("replyid", "fs"), array("reply" => true))) . '" method="post"' . ($reply_form ? ' id="forum_scroll_here"' : '') . '>
		<div class="section forum_reply_edit_c">
			<h2>Svar</h2>
			<dl class="dl_2x">
				<dt>Innhold</dt>
				<dd><textarea name="text" rows="20" cols="75" id="replyText">' . htmlspecialchars(postval("text")) . '</textarea></dd>';
        // vise ekstra alternativer?
        if (access::has("forum_mod") || $this->topic->forum->id >= 5 && $this->topic->forum->id <= 7) {
            $no_concat = isset($_POST['no_concatenate']) || $_SERVER['REQUEST_METHOD'] != "POST" && $this->topic->forum->id >= 5 && $this->topic->forum->id <= 7;
            $announce_text = $this->topic->forum->id >= 5 && $this->topic->forum->id <= 7 ? 'Legg til logg i spilleloggen til medlemmer av Crewet.' : 'Annonser på #kofradia kanalen';
            echo '
				<dt>Ekstra</dt>
				<dd>' . (!$this->topic->forum->ff ? '
					<input type="checkbox" name="announce" id="announce"' . (isset($_POST['announce']) ? ' checked="checked"' : '') . ' /><label for="announce"> ' . $announce_text . '</label><br />' : '') . '
					<input type="checkbox" name="no_concatenate" id="no_concatenate"' . ($no_concat ? ' checked="checked"' : '') . ' /><label for="no_concatenate"> <u>Ikke</u> kombiner sammen med siste melding.</label>
				</dd>';
        }
        echo '
			</dl>
			<p class="c">
				' . show_sbutton("Legg til svar", 'name="post" accesskey="s" id="forum_reply_button_add"') . '
				' . show_sbutton("Forhåndsvis", 'name="preview" accesskey="p" id="forum_reply_button_preview"') . '
			</p>
		</div>
		<div id="reply_preview" class="forum">';
        // forhåndsvise?
        if (login::$logged_in && isset($_POST['preview'])) {
            $data = array("ft_id" => $this->topic->id, "fr_text" => postval("text"), "fr_up_id" => login::$user->player->id, "up_name" => login::$user->player->data['up_name'], "up_access_level" => login::$user->player->data['up_access_level'], "up_points" => login::$user->player->data['up_points'], "upr_rank_pos" => login::$user->player->data['upr_rank_pos'], "up_forum_signature" => login::$user->player->data['up_forum_signature'], "up_profile_image_url" => login::$user->player->data['up_profile_image_url'], "fs_new" => \Kofradia\Forum\Category::$fs_check);
            echo \Kofradia\Forum\Category::template_topic_reply_preview($data);
        }
        echo '</div>
	</form>
</div>';
        // linker i bunn
        if (login::$logged_in) {
            echo '
<form action="" method="post">
	<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
	<div class="forum_footer_links">';
            // slette/gjenopprette lenker
            if ($this->fmod || $this->topic->info['ft_up_id'] == login::$user->player->id) {
                echo '
		<p class="left">' . ($this->topic->info['ft_deleted'] == 0 ? '
			<span class="red">' . show_sbutton("Slett emnet", 'name="delete" onclick="return confirm(\'Sikker?!\')"') . '</span>' : '
			<span class="green">' . show_sbutton("Gjenopprett emnet", 'name="restore" onclick="return confirm(\'Sikker?!\')"') . '</span>') . '
		</p>';
            }
            // alternativer
            echo '
		<p class="right">';
            // reply lenke
            if (!$reply_form && $this->topic->info['ft_deleted'] == 0 && ($this->topic->info['ft_locked'] == 0 || $this->fmod)) {
                echo '
			<a href="' . htmlspecialchars(game::address("topic", $_GET, array("replyid"), array("reply" => true))) . '" class="button forum_link_replyform" accesskey="r">Opprett svar</a>';
            }
            // signatur lenker
            echo login::$user->data['u_forum_show_signature'] == 1 ? '
			<a href="' . htmlspecialchars(game::address("topic", $_GET, array("show_signature"), array("hide_signature" => true))) . '" class="button">Skjul signaturer</a>' : '
			<a href="' . htmlspecialchars(game::address("topic", $_GET, array("hide_signature"), array("show_signature" => true))) . '" class="button">Vis signaturer</a>';
            echo '
		</p>';
        }
        // sidetall
        if ($pagei->pages > 1) {
            echo '
		<p class="center">' . $pagei->pagenumbers(game::address(PHP_SELF, $_GET, array("p", "replyid", "fs", "reply")), game::address(PHP_SELF, $_GET, array("p", "replyid", "fs", "reply"), array("p" => "_pageid_"))) . '</p>';
        }
        echo '
	</div>
</form>
	</div>
</div>';
        // div javascript
        // sørg for at meldingene blir oppdatert og at nye meldinger blr hentet hvis vi er på siste side
        ess::$b->page->add_js_file(ess::$s['relative_path'] . "/js/forum.js");
        ess::$b->page->add_js('
		sm_scripts.report_links();');
        ess::$b->page->add_js_domready('
	var topic = new ForumTopic(' . $this->topic->id . ', ' . js_encode($id_list) . ', ' . js_encode($replies_last_edit) . ', ' . ($pagei->pages == $pagei->active ? 'true' : 'false') . ', ' . ($show_deleted ? 'true' : 'false') . ', ' . ($this->fmod ? 'true' : 'false') . ', ' . (int) $this->topic->info['ft_last_edit'] . ');' . ($reply_form ? '
	topic.reply_form_show();' : ''));
        $this->topic->forum->load_page();
    }
示例#15
0
文件: node.php 项目: Kuzat/kofradia
    public static function main()
    {
        // har vi ikke tilgang?
        if (!access::has("crewet", null, null, "login")) {
            redirect::handle("/node", redirect::ROOT);
        }
        ess::$b->page->add_title("Innholdsredigering");
        nodes::add_node(0, "Innholdsredigering", ess::$s['relative_path'] . "/node/a");
        if (isset($_POST['abort']) && !isset($_GET['node_id'])) {
            ess::$b->page->add_message("Handlingen ble avbrutt.");
            redirect::handle();
        }
        // opprette ny node?
        if (isset($_GET['new_node'])) {
            $parent_node = getval("parent_node", 0);
            $previous_node = getval("previous_node", 0);
            // kontroller parent node
            if ($parent_node != 0 && !isset(nodes::$nodes[$parent_node])) {
                ess::$b->page->add_message("Fant ikke forelder til elementet. Prøv på nytt.", "error");
                redirect::handle();
            }
            // kontroller previous node
            $siblings = isset(nodes::$nodes_sub[$parent_node]) ? nodes::$nodes_sub[$parent_node] : array();
            if ($previous_node != 0 && !in_array($previous_node, $siblings)) {
                ess::$b->page->add_message("Fant ikke forrige side. Prøv på nytt.", "error");
                redirect::handle();
            }
            // finn priority
            if ($previous_node == 0) {
                $priority = 1;
                $priority_num = 1;
            } else {
                // hent priority til previous node
                $result = \Kofradia\DB::get()->query("SELECT node_priority FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_id = {$previous_node} AND node_deleted = 0");
                if ($result->rowCount() == 0) {
                    ess::$b->page->add_message("Noe gikk galt. Prøv igjen.", "error");
                    redirect::handle();
                }
                $priority = $result->fetchColumn(0);
                // hent priority til den vi skal "erstatte"
                $result = \Kofradia\DB::get()->query("SELECT node_priority FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_priority > {$priority} AND node_deleted = 0 ORDER BY node_priority LIMIT 1");
                if ($result->rowCount() > 0) {
                    $priority = $result->fetchColumn(0);
                } else {
                    $priority++;
                }
                // hent nummer
                $result = \Kofradia\DB::get()->query("SELECT COUNT(node_id) FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_priority < {$priority} AND node_deleted = 0");
                $priority_num = $result->fetchColumn(0) + 1;
            }
            // legge til?
            if (isset($_POST['title']) && isset($_POST['type'])) {
                // ok tittel?
                $title = trim(postval("title"));
                $type = postval("type");
                if (empty($title)) {
                    ess::$b->page->add_message("Du må fylle ut en tittel.", "error");
                } elseif (!isset(nodes::$types[$type])) {
                    ess::$b->page->add_message("Ugyldig type. Prøv på nytt.", "error");
                } else {
                    // sett opp prioritys
                    \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority + 1 WHERE node_parent_node_id = {$parent_node} AND node_priority >= {$priority}");
                    // legg til side
                    \Kofradia\DB::get()->exec("INSERT INTO nodes SET node_parent_node_id = {$parent_node}, node_title = " . \Kofradia\DB::quote($title) . ", node_type = " . \Kofradia\DB::quote(mb_strtolower($type)) . ", node_priority = {$priority}, node_change = " . time());
                    $iid = \Kofradia\DB::get()->lastInsertId();
                    ess::$b->page->add_message("Siden ble lagt til.");
                    redirect::handle("node/a?node_id={$iid}", redirect::ROOT);
                }
            }
            $parent_title = isset(nodes::$nodes[$parent_node]) ? nodes::$nodes[$parent_node]['node_title'] : 'Toppnivå';
            echo '
<h1>Ny side</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Forelder</dt>
		<dd>' . htmlspecialchars($parent_title) . '</dd>
		<dt>Plassering</dt>
		<dd>' . $priority_num . '</dd>
		<dt>Tittel</dt>
		<dd><input type="text" name="title" class="styled w100" value="' . htmlspecialchars(postval("title")) . '" /></dd>
		<dt>Type</dt>
		<dd>
			<select name="type">';
            $selected = postval("type");
            if (!isset(nodes::$types[$selected])) {
                $selected = false;
            }
            foreach (nodes::$types as $key => $value) {
                echo '
				<option value="' . htmlspecialchars($key) . '"' . ($selected == $key ? ' selected="selected"' : '') . '>' . htmlspecialchars($value) . '</option>';
            }
            echo '
			</select>
		</dd>
	</dl>
	<p>' . show_sbutton("Opprett side") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p>
</form>';
            page_node::load_page();
        }
        $node = false;
        if (isset($_GET['node_id'])) {
            $result = nodes::load_node($_GET['node_id'], false);
            if (!$result) {
                ess::$b->page->add_message("Fant ikke enheten.");
                redirect::handle();
            }
            $node = true;
            #ess::$b->page->add_title(nodes::$node_info['node_title']);
            redirect::store("node/a?node_id=" . nodes::$node_id, redirect::ROOT);
            if (isset($_POST['abort'])) {
                ess::$b->page->add_message("Handlingen ble avbrutt.");
                redirect::handle();
            }
            // flytt
            if (isset($_GET['move'])) {
                // hent tree
                $root = array(0 => array("number" => 0, "prefix" => "", "prefix_node" => "", "data" => array("node_id" => 0, "node_parent_node_id" => 0, "node_title" => "Innhold (toppnivå)", "node_type" => NULL, "node_params" => NULL, "node_show_menu" => NULL, "node_expand_menu" => NULL, "node_enabled" => true, "node_priority" => 0)));
                $tree = new tree(nodes::$nodes_sub);
                $data = $tree->generate(0, $root, nodes::$nodes);
                // sett opp data og finn ut hvor ting kan plasseres
                $number_last = 1;
                $disabled = 0;
                $list = array(0 => 0);
                foreach ($data as &$row) {
                    if ($disabled != 0 && $row['number'] <= $disabled) {
                        $disabled = 0;
                    }
                    $number_last = $row['number'];
                    $row['inside'] = $disabled == 0 && nodes::$node_id != $row['data']['node_id'];
                    $row['under'] = $disabled == 0 && nodes::$node_id != $row['data']['node_id'];
                    if (nodes::$node_id == $row['data']['node_id']) {
                        if (isset($list[$row['number']])) {
                            $active = array("under", $list[$row['number']]);
                        } else {
                            $active = array("inside", $list[$row['number'] - 1]);
                        }
                        $disabled = $row['number'];
                    }
                    $list[$row['number']] = $row['data']['node_id'];
                }
                unset($row);
                $data[0]['under'] = false;
                // lagre endringer?
                if (isset($_POST['destination_node_id'])) {
                    $match = preg_match("/^(under_)?(\\d+)\$/u", postval("destination_node_id"), $matches);
                    $type = $match && $matches[1] == "under_" ? "under" : "inside";
                    $dest_node_id = $match ? $matches[2] : -1;
                    $parent_node_id = $type == "inside" ? $dest_node_id : nodes::$nodes[$dest_node_id]['node_parent_node_id'];
                    // finnes?
                    if (!isset($data[$dest_node_id])) {
                        ess::$b->page->add_message("Fant ikke målsiden.", "error");
                    } elseif (!$data[$dest_node_id][$type]) {
                        ess::$b->page->add_message("Du kan ikke plassere siden her.", "error");
                    } elseif ($type == $active[0] && $dest_node_id == $active[1]) {
                        ess::$b->page->add_message("Du må velge en ny plassering.", "error");
                    } else {
                        \Kofradia\DB::get()->beginTransaction();
                        // flytt de andre kategoriene
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority - 1 WHERE node_parent_node_id = " . nodes::$node_info['node_parent_node_id'] . " AND node_priority > " . nodes::$node_info['node_priority']);
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority + 1 WHERE node_parent_node_id = {$parent_node_id}" . ($type == "under" ? " AND node_priority > " . nodes::$nodes[$dest_node_id]['node_priority'] : ""));
                        // flytt den valgte siden
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_parent_node_id = {$parent_node_id}, node_priority = " . ($type == "inside" ? 0 : nodes::$nodes[$dest_node_id]['node_priority'] + 1) . " WHERE node_id = " . nodes::$node_id);
                        \Kofradia\DB::get()->commit();
                        ess::$b->page->add_message("Siden ble flyttet.");
                        redirect::handle();
                    }
                }
                // sett opp plasseringen
                $items = array();
                $parent_node = nodes::$node_info['node_parent_node_id'];
                while (isset(nodes::$nodes[$parent_node]) && ($item = nodes::$nodes[$parent_node])) {
                    $items[] = $item['node_title'];
                    $parent_node = $item['node_parent_node_id'];
                }
                $items[] = "Toppnivå";
                // tittel
                ess::$b->page->add_title("Flytt side");
                nodes::add_node(0, "Flytt side", ess::$s['relative_path'] . "/node/a?node_id=" . nodes::$node_id . "&amp;move");
                echo '
<h1>' . htmlspecialchars(nodes::$node_info['node_title']) . '</h1>
<p><a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . nodes::$node_id . '">Tilbake</a></p>

<h2>Flytt side</h2>
<form action="" method="post">
	<dl class="dl_2x dd_right">
		<dt>Nåværende plassering</dt>
		<dd>' . implode("\\", array_reverse($items)) . '</dd>
		
		<dt>Ny plassering</dt>
		<dd>
			<table class="table" style="margin-left: auto">
				<thead>
					<tr>
						<th>Side</th>
						<th>Inni</th>
						<th>Nedenfor</th>
					</tr>
				</thead>
				<tbody class="c">';
                $i = 0;
                foreach ($data as $row) {
                    $i++;
                    $class = nodes::$node_id == $row['data']['node_id'] ? ' class="highlight"' : ($i % 2 == 0 ? ' class="color"' : '');
                    $link = $row['data']['node_id'] == 0 ? $row['data']['node_title'] : '<a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . $row['data']['node_id'] . '">' . htmlspecialchars($row['data']['node_title']) . '</a>';
                    echo '
					<tr' . $class . '>
						<td class="l"><span class="plain">' . $row['prefix'] . $row['prefix_node'] . '</span> ' . $link . '</td>
						<td>' . ($row['inside'] ? '<input type="radio" name="destination_node_id" value="' . $row['data']['node_id'] . '"' . ($active[0] == "inside" && $active[1] == $row['data']['node_id'] ? ' checked="checked"' : '') : ' x') . '</td>
						<td>' . ($row['under'] ? '<input type="radio" name="destination_node_id" value="under_' . $row['data']['node_id'] . '"' . ($active[0] == "under" && $active[1] == $row['data']['node_id'] ? ' checked="checked"' : '') : ' x') . '</td>
					</tr>';
                }
                echo '
				</tbody>
			</table>
		</dd>
		
		<dt>&nbsp;</dt>
		<dd>' . show_sbutton("Lagre endringer") . '</dd>
	</dl>
</form>';
                page_node::load_page();
            }
            // rediger tittel
            if (isset($_GET['edit_title'])) {
                // lagre?
                if (isset($_POST['title'])) {
                    $title = postval('title');
                    if (empty($title)) {
                        ess::$b->page->add_message("Du må skrive inn en tittel.", "error");
                    } else {
                        // oppdater
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_title = " . \Kofradia\DB::quote($title) . " WHERE node_id = " . nodes::$node_id);
                        ess::$b->page->add_message("Tittelen ble endret fra &laquo;" . htmlspecialchars(nodes::$node_info['node_title']) . "&raquo; til &laquo;" . htmlspecialchars($title) . "&raquo;.");
                        redirect::handle();
                    }
                }
                echo '
<h1>Rediger tittel</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Nåværende tittel</dt>
		<dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd>
		<dt>Ny tittel</dt>
		<dd><input type="text" name="title" class="styled w100" value="' . htmlspecialchars(postval("title", nodes::$node_info['node_title'])) . '" /></dd>
	</dl>
	<p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p>
</form>';
                page_node::load_page();
            }
            // aktiver/deaktiver
            if (isset($_GET['enabled'])) {
                $update = false;
                if ($_GET['enabled'] == "false") {
                    // deaktiver
                    if (nodes::$node_info['node_enabled'] > 0) {
                        $update = 0;
                        ess::$b->page->add_message("Siden er nå deaktivert. Alle undersider vil også være utilgjengelige.");
                    }
                } else {
                    // aktiver
                    if (nodes::$node_info['node_enabled'] == 0) {
                        $update = 1;
                        ess::$b->page->add_message("Siden er nå aktivert. Alle undersider som ikke er deaktivert vil også være tilgjengelige.");
                    }
                }
                // oppdater?
                if ($update !== false) {
                    \Kofradia\DB::get()->exec("UPDATE nodes SET node_enabled = {$update} WHERE node_id = " . nodes::$node_id);
                }
                redirect::handle();
            }
            // skjul fra/vis i menyen
            if (isset($_GET['show_menu'])) {
                $update = false;
                if ($_GET['show_menu'] == "false") {
                    // deaktiver
                    if (nodes::$node_info['node_show_menu'] > 0) {
                        $update = 0;
                        ess::$b->page->add_message("Siden blir ikke lengre vist i menyen. Alle undersider vil også bli skjult fra menyen.");
                    }
                } else {
                    // aktiver
                    if (nodes::$node_info['node_show_menu'] == 0) {
                        $update = 1;
                        ess::$b->page->add_message("Siden blir nå vist i menyen. Alle undersider som ikke er skjult vil også bli vist i menyen.");
                    }
                }
                // oppdater?
                if ($update !== false) {
                    \Kofradia\DB::get()->exec("UPDATE nodes SET node_show_menu = {$update} WHERE node_id = " . nodes::$node_id);
                }
                redirect::handle();
            }
            // vis/skjul undersider
            if (isset($_GET['expand_menu'])) {
                $update = false;
                if ($_GET['expand_menu'] == "false") {
                    // deaktiver
                    if (nodes::$node_info['node_expand_menu'] > 0) {
                        $update = 0;
                        ess::$b->page->add_message("Undersidene blir ikke lengre vist i menyen.");
                    }
                } else {
                    // aktiver
                    if (nodes::$node_info['node_expand_menu'] == 0) {
                        $update = 1;
                        ess::$b->page->add_message("Undersidene blir nå vist i menyen.");
                    }
                }
                // oppdater?
                if ($update !== false) {
                    \Kofradia\DB::get()->exec("UPDATE nodes SET node_expand_menu = {$update} WHERE node_id = " . nodes::$node_id);
                }
                redirect::handle();
            }
            // slett side
            if (isset($_GET['delete'])) {
                $table_check = "";
                $where_check = "";
                // sjekk om det er noen elementer under denne
                $result = \Kofradia\DB::get()->query("SELECT COUNT(node_id) FROM nodes WHERE node_parent_node_id = " . nodes::$node_id . " AND node_deleted = 0");
                $ant = $result->fetchColumn(0);
                if ($ant > 0) {
                    ess::$b->page->add_message("Du kan ikke slette en side som inneholder undersider. Flytt eller fjern undersidene og prøv på nytt.", "error");
                    redirect::handle();
                }
                $table_check .= ", (SELECT COUNT(node_id) AS ant FROM nodes WHERE node_parent_node_id = " . nodes::$node_id . " AND node_deleted = 0) AS ref_subnodes";
                $where_check .= " AND ref_subnodes.ant = 0";
                // sjekk type og spesiell info
                switch (nodes::$node_info['node_type']) {
                    case "container":
                        // sjekk antall enheter
                        $result = \Kofradia\DB::get()->query("SELECT COUNT(ni_id) FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_deleted = 0");
                        $ant = $result->fetchColumn(0);
                        if ($ant > 0) {
                            ess::$b->page->add_message("Du kan ikke slette en side som inneholder noen enheter. Fjern enhetene og prøv på nytt.", "error");
                            redirect::handle();
                        }
                        $table_check .= ", (SELECT COUNT(ni_id) AS ant FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_deleted = 0) AS ref_items";
                        $where_check .= " AND ref_items.ant = 0";
                        break;
                }
                // godkjenn?
                if (isset($_POST['delete'])) {
                    // marker som slettet
                    $a = \Kofradia\DB::get()->exec("UPDATE nodes{$table_check} SET node_deleted = " . time() . " WHERE node_id = " . nodes::$node_id . $where_check);
                    if ($a == 0) {
                        ess::$b->page->add_message("Noe gikk galt. Prøv på nytt.", "error");
                        redirect::handle();
                    }
                    ess::$b->page->add_message("Siden ble markert som slettet og er ikke lenger tilgjengelig.");
                    redirect::handle("node/a", redirect::ROOT);
                }
                echo '
<h1>Slett side</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Side</dt>
		<dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd>
	</dl>
	<p>' . show_sbutton("Slett", 'name="delete"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p>
</form>';
                page_node::load_page();
            }
            // vanlig side
            if (nodes::$node_info['node_type'] == "container") {
                // vis/skjul tittel
                if (isset($_GET['hide_title'])) {
                    $hide = NULL;
                    if ($_GET['hide_title'] == "false") {
                        // vis tittel
                        if (nodes::$node_params->get("hide_title")) {
                            $hide = false;
                            ess::$b->page->add_message("Tittelen blir nå vist øverst på siden.");
                        }
                    } else {
                        // skjul tittel
                        if (!nodes::$node_params->get("hide_title")) {
                            $hide = true;
                            ess::$b->page->add_message("Tittelen blir ikke lengre vist øverst på siden.");
                        }
                    }
                    // oppdater?
                    if (!is_null($hide)) {
                        // hent friske params
                        $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE");
                        $params = new params($result->fetchColumn(0));
                        if ($hide) {
                            $params->update("hide_title", "1");
                        } else {
                            $params->remove("hide_title");
                        }
                        // oppdater
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id);
                    }
                    redirect::handle();
                }
                // vis/skjul sist endret dato
                if (isset($_GET['hide_time_change'])) {
                    $hide = NULL;
                    if ($_GET['hide_time_change'] == "false") {
                        // vis tittel
                        if (nodes::$node_params->get("hide_time_change")) {
                            $hide = false;
                            ess::$b->page->add_message("Dato for sist endret blir nå vist nederst på siden.");
                        }
                    } else {
                        // skjul tittel
                        if (!nodes::$node_params->get("hide_time_change")) {
                            $hide = true;
                            ess::$b->page->add_message("Dato for sist endret blir ikke lengre vist nederst på siden.");
                        }
                    }
                    // oppdater?
                    if (!is_null($hide)) {
                        // hent friske params
                        $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE");
                        $params = new params($result->fetchColumn(0));
                        if ($hide) {
                            $params->update("hide_time_change", "1");
                        } else {
                            $params->remove("hide_time_change");
                        }
                        // oppdater
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id);
                    }
                    redirect::handle();
                }
                // aktiver/deaktiver enhet
                if (isset($_GET['unit_enable']) || isset($_GET['unit_disable'])) {
                    if (isset($_GET['unit_enable'])) {
                        $value = 1;
                        $msg = "Enheten er nå aktivert og blir vist.";
                        $unit_id = intval($_GET['unit_enable']);
                    } else {
                        $value = 0;
                        $msg = "Enheten er nå deaktivert og blir ikke vist.";
                        $unit_id = intval($_GET['unit_disable']);
                    }
                    // oppdater
                    $affected = \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_enabled = {$value} WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0");
                    if ($affected > 0) {
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_change = " . time() . " WHERE node_id = " . nodes::$node_id);
                        ess::$b->page->add_message($msg);
                    }
                    redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit_id}", redirect::ROOT);
                }
                // slett enhet
                if (isset($_GET['unit_delete'])) {
                    // hent enheten
                    $unit_id = \Kofradia\DB::quote($_GET['unit_delete']);
                    $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_type, nir_content, nir_params, nir_description, ni_priority, ni_enabled, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0");
                    // fant ikke?
                    if ($result->rowCount() == 0) {
                        ess::$b->page->add_message("Fant ikke enheten. Prøv på nytt.", "error");
                        redirect::handle();
                    }
                    $unit = $result->fetch();
                    // slette?
                    if (isset($_POST['delete'])) {
                        // marker som slettet
                        \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_deleted = " . time() . " WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0");
                        ess::$b->page->add_message("Enheten ble markert som slettet og er ikke lenger tilgjengelig.");
                        redirect::handle();
                    }
                    echo '
<h1>Slett enhet</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Side</dt>
		<dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd>
	</dl>
	<p>' . show_sbutton("Slett enhet", 'name="delete"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p>
</form>
<h2>Innhold av enhet</h2>' . nodes::content_build($unit);
                    page_node::load_page();
                }
                // rediger enhet
                if (isset($_GET['unit_edit'])) {
                    // hent enheten
                    $unit_id = \Kofradia\DB::quote($_GET['unit_edit']);
                    $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_type, nir_content, nir_params, nir_description, ni_priority, ni_enabled, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0");
                    // fant ikke?
                    if ($result->rowCount() == 0) {
                        ess::$b->page->add_message("Fant ikke enheten. Prøv på nytt.", "error");
                        redirect::handle();
                    }
                    $unit = $result->fetch();
                    // kan endres?
                    if (!isset(nodes::$item_types[$unit['ni_type']]) || !nodes::$item_types[$unit['ni_type']][1]) {
                        ess::$b->page->add_message("Denne enheten kan ikke redigeres.", "error");
                        redirect::handle();
                    }
                    $params = new params($unit['nir_params']);
                    // lagre endringer?
                    if (isset($_POST['description']) && isset($_POST['content'])) {
                        // ingenting endret?
                        if (trim($_POST['description']) == $unit['nir_description'] && trim($_POST['content']) == $unit['nir_content']) {
                            ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                        } else {
                            \Kofradia\DB::get()->exec("INSERT INTO nodes_items_rev SET nir_ni_id = {$unit['ni_id']}, nir_params = " . \Kofradia\DB::quote($params->build()) . ", nir_content = " . \Kofradia\DB::quote($_POST['content']) . ", nir_description = " . \Kofradia\DB::quote($_POST['description']) . ", nir_time = " . time());
                            $nir_id = \Kofradia\DB::get()->lastInsertId();
                            \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_nir_id = {$nir_id}, ni_nir_count = ni_nir_count + 1 WHERE ni_id = {$unit['ni_id']}");
                            \Kofradia\DB::get()->exec("UPDATE nodes SET node_change = " . time() . " WHERE node_id = " . nodes::$node_id);
                            putlog("CREWCHAN", "NODE REDIGERT: " . login::$user->player->data['up_name'] . " redigerte %u" . nodes::$node_info['node_title'] . "%u " . ess::$s['spath'] . "/node/" . nodes::$node_id);
                            ess::$b->page->add_message("Enheten ble oppdatert.");
                            redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit['ni_id']}", redirect::ROOT);
                        }
                    }
                    // vis form osv
                    echo '
<h1>Rediger enhet</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Forelder</dt>
		<dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd>
		<dt>Type</dt>
		<dd>' . nodes::content_type($unit) . '</dd>
		<dt>Beskrivelse</dt>
		<dd>
			<textarea name="description" cols="30" rows="2">' . htmlspecialchars(postval("description", $unit['nir_description'])) . '</textarea>
		</dd>';
                    switch ($unit['ni_type']) {
                        case 1:
                            echo '
		<dt>Innhold (BB-kode)</dt>
		<dd>&nbsp;</dd>
	</dl>
	<p>
		<textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea>
	</p>';
                            break;
                        case 2:
                            echo '
		<dt>Innhold (ren HTML)</dt>
		<dd>&nbsp;</dd>
	</dl>
	<p class="clear">
		<textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea>
	</p>';
                            break;
                        case 3:
                            tinymce::add_element("ni_content", true);
                            echo '
		<dt>Innhold (HTML editor)</dt>
		<dd>&nbsp;</dd>
	</dl>
	<p class="clear">
		<textarea name="content" cols="30" rows="2" id="ni_content" style="width: 530px; height: 400px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea>
	</p>';
                            tinymce::load();
                            break;
                        case 4:
                            echo '
		<dt>Ren tekst</dt>
		<dd>&nbsp;</dd>
	</dl>
	<p class="clear">
		<textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea>
	</p';
                            break;
                        default:
                            redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit['ni_id']}", redirect::ROOT);
                    }
                    echo '
	<p>' . show_sbutton("Oppdater") . ' <a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . nodes::$node_id . '&amp;unit_highlight=' . $unit['ni_id'] . '" class="button">Avbryt</a></p>
</form>';
                    page_node::load_page();
                }
                // opprette ny enhet?
                if (isset($_GET['unit_new'])) {
                    $previous_unit = getval("previous_unit", 0);
                    // hent info om previous unit
                    if ($previous_unit == 0) {
                        $priority = 1;
                        $priority_num = 1;
                    } else {
                        // hent priority til forrige
                        $result = \Kofradia\DB::get()->query("SELECT ni_priority FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$previous_unit} AND ni_deleted = 0");
                        if ($result->rowCount() == 0) {
                            ess::$b->page->add_message("Noe gikk galt. Prøv igjen.", "error");
                            redirect::handle();
                        }
                        $priority = $result->fetchColumn(0);
                        // hent priority til den vi skal "erstatte"
                        $result = \Kofradia\DB::get()->query("SELECT ni_priority FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority > {$priority} AND ni_deleted = 0 ORDER BY ni_priority LIMIT 1");
                        if ($result->rowCount() > 0) {
                            $priority = $result->fetchColumn(0);
                        } else {
                            $priority++;
                        }
                        // hent nummer
                        $result = \Kofradia\DB::get()->query("SELECT COUNT(ni_id) FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority < {$priority} AND ni_deleted = 0");
                        $priority_num = $result->fetchColumn(0) + 1;
                    }
                    // legge til?
                    if (isset($_POST['type'])) {
                        // kontroller type
                        $type = postval("type");
                        if (!isset(nodes::$item_types[$type]) || !nodes::$item_types[$type][1]) {
                            ess::$b->page->add_message("Ugyldig type. Prøv på nytt.", "error");
                        } else {
                            $description = postval("description", NULL);
                            // sett opp prioritys
                            \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_priority = ni_priority + 1 WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority >= {$priority} AND ni_deleted = 0");
                            // legg til enhet
                            \Kofradia\DB::get()->exec("INSERT INTO nodes_items SET ni_node_id = " . nodes::$node_id . ", ni_type = " . \Kofradia\DB::quote($type) . ", ni_priority = {$priority}");
                            $ni_id = \Kofradia\DB::get()->lastInsertId();
                            \Kofradia\DB::get()->exec("INSERT INTO nodes_items_rev SET nir_ni_id = {$ni_id}, nir_time = " . time() . ", nir_description = " . \Kofradia\DB::quote($description));
                            $nir_id = \Kofradia\DB::get()->lastInsertId();
                            \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_nir_id = {$nir_id} WHERE ni_id = {$ni_id}");
                            ess::$b->page->add_message("Enheten ble lagt til.");
                            redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_edit={$ni_id}", redirect::ROOT);
                        }
                    }
                    echo '
<h1>Ny enhet</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Under side</dt>
		<dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd>
		<dt>Plassering</dt>
		<dd>' . $priority_num . '</dd>
		<dt>Type</dt>
		<dd>
			<select name="type">';
                    $selected = postval("type", 3);
                    if (!isset(nodes::$item_types[$selected]) || !nodes::$item_types[$selected][1]) {
                        $selected = false;
                    }
                    foreach (nodes::$item_types as $key => $info) {
                        // ikke i bruk?
                        if (!$info[1]) {
                            continue;
                        }
                        echo '
				<option value="' . htmlspecialchars($key) . '"' . ($selected == $key ? ' selected="selected"' : '') . '>' . htmlspecialchars($info[0]) . '</option>';
                    }
                    echo '
			</select>
		</dd>
		<dt>Beskrivelse</dt>
		<dd>
			<textarea name="description" cols="30" rows="2">' . htmlspecialchars(postval("description")) . '</textarea>
		</dd>
	</dl>
	<p>' . show_sbutton("Opprett enhet") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p>
</form>';
                    page_node::load_page();
                }
            } elseif (nodes::$node_info['node_type'] == "url_relative" || nodes::$node_info['node_type'] == "url_relative") {
                // endre adresse
                if (isset($_GET['edit_url'])) {
                    // lagre?
                    if (isset($_POST['url'])) {
                        // hent friske params
                        $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE");
                        $params = new params($result->fetchColumn(0));
                        $params->update("url", $_POST['url']);
                        if (isset($_POST['new_window'])) {
                            $params->update("new_window", 1);
                        } else {
                            $params->remove("new_window");
                        }
                        // oppdater
                        \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id);
                        ess::$b->page->add_message("Adressen ble oppdatert.");
                        redirect::handle();
                    }
                    if (nodes::$node_info['node_type'] == "url_relative") {
                        echo '
<h1>Rediger adresse</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Nåværende adresse</dt>
		<dd>' . htmlspecialchars(ess::$s['path']) . htmlspecialchars(nodes::$node_params->get("url", " ???")) . '</dd>
		<dt>Ny adresse</dt>
		<dd>' . htmlspecialchars(ess::$s['path']) . ' <input type="text" name="url" class="styled w150" value="' . htmlspecialchars(nodes::$node_params->get("url", "")) . '" /></dd>
		<dt>Åpne i nytt vindu</dt>
		<dd><input type="checkbox" name="new_window"' . (nodes::$node_params->get("new_window") ? ' checked="checked"' : '') . ' /></dd>
	</dl>
	<p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p>
</form>';
                    } else {
                        echo '
<h1>Rediger adresse</h1>
<form action="" method="post">
	<dl class="dd_right dl_2x">
		<dt>Nåværende adresse</dt>
		<dd>' . htmlspecialchars(nodes::$node_params->get("url", "???")) . '</dd>
		<dt>Ny adresse</dt>
		<dd><input type="text" name="url" class="styled w250" value="' . htmlspecialchars(nodes::$node_params->get("url", "")) . '" /></Dd>
		<dt>Åpne i nytt vindu</dt>
		<dd><input type="checkbox" name="new_window"' . (nodes::$node_params->get("new_window") ? ' checked="checked"' : '') . ' /></dd>
	</dl>
	<p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p>
</form>';
                    }
                    page_node::load_page();
                }
            }
        }
        if ($node) {
            self::show_node_info($node);
        }
        self::show_nodes_list();
        page_node::load_page();
    }
示例#16
0
文件: avis.php 项目: Kuzat/kofradia
    /**
     * Vis en bestemt utgivelse
     */
    protected function specific_publication()
    {
        // hent informasjon
        $ffn = ff_avis_utgivelse::get(intval(getval("ffn")), $this->ff);
        // fant ikke?
        if (!$ffn) {
            ess::$b->page->add_message("Fant ikke utgivelsen.", "error");
            $this->ff->load_page();
        }
        redirect::store("avis?ff_id={$this->ff->id}&ffn={$ffn->id}");
        ess::$b->page->add_title($ffn->data['ffn_title']);
        // hent kjøpsinformasjon
        $ffnp = null;
        if (login::$logged_in) {
            $result = \Kofradia\DB::get()->query("SELECT ffnp_cost, ffnp_time FROM ff_newspapers_payments WHERE ffnp_ffn_id = {$ffn->id} AND ffnp_up_id = " . login::$user->player->id);
            $ffnp = $result->fetch();
        }
        // ikke publisert?
        if ($ffn->data['ffn_published'] == 0) {
            if (!$this->ff->access(3)) {
                ess::$b->page->add_message("Fant ikke utgivelsen.", "error");
                $this->ff->load_page();
            }
            redirect::handle("avis?ff_id={$this->ff->id}&u&ffn={$ffn->id}");
        }
        // må vi kjøpe avisutgivelsen?
        if ($this->ff->active && (!login::$logged_in || !$this->ff->access() && !access::is_nostat() && !$ffnp)) {
            // har ikke kjøpt avisen, men avisen er gratis?
            if (login::$logged_in && (!$ffnp && $ffn->data['ffn_cost'] == 0)) {
                // opprett rad for betaling
                \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time());
                // oppdater utgivelsen
                \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}");
                redirect::handle();
            } else {
                ess::$b->page->add_title("Kjøp utgivelse");
                // kjøpe?
                if (login::$logged_in && isset($_POST['buy'])) {
                    $sid = postval("sid");
                    $price = postval("price");
                    if ($sid != login::$info['ses_id']) {
                        ess::$b->page->add_message("Ugyldig.", "error");
                    } elseif ($price != $ffn->data['ffn_cost']) {
                        ess::$b->page->add_message("Prisen har endret seg. Du må utføre handlingen på nytt.", "error");
                    } elseif (login::$user->player->data['up_cash'] < $ffn->data['ffn_cost']) {
                        ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error");
                    } else {
                        // trekk fra pengene fra brukeren
                        if ($ffn->data['ffn_cost'] != 0) {
                            $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$ffn->data['ffn_cost']} WHERE up_id = " . login::$user->player->id . " AND up_cash >= {$ffn->data['ffn_cost']}");
                        }
                        // mislykket
                        if ($ffn->data['ffn_cost'] != 0 && $a == 0) {
                            ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error");
                        } else {
                            // legg til oppføring
                            \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time());
                            // gi pengene til firmaet
                            \Kofradia\DB::get()->exec("UPDATE ff SET ff_bank = ff_bank + {$ffn->data['ffn_cost']} WHERE ff_id = {$this->ff->id}");
                            // stats for firmaet
                            $ffn->ff->stats_update("money_in", $ffn->data['ffn_cost']);
                            // oppdater utgivelsen
                            \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}");
                            ess::$b->page->add_message("Du har kjøpt utgivelsen for " . game::format_cash($ffn->data['ffn_cost']) . ".");
                            redirect::handle();
                        }
                    }
                }
                echo '
<p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ' | Kjøp utgivelse | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p>
<div class="section center w200">
	<h2>Utgivelseinformasjon</h2>
	<dl class="dd_right">
		<dt>Publisert</dt>
		<dd>' . ess::$b->date->get($ffn->data['ffn_published_time'])->format() . '</dd>
		<dt>Solgt utgivelser</dt>
		<dd>' . game::format_number($ffn->data['ffn_sold']) . '</dd>
	</dl>
	<p>Artikler:</p>';
                // hent artiklene
                $result = \Kofradia\DB::get()->query("SELECT ffna_title FROM ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} ORDER BY ffna_title");
                // ingen artikler?
                if ($result->rowCount() == 0) {
                    echo '
	<p>Ingen artikler.</p>';
                } else {
                    echo '
	<ul>';
                    while ($row = $result->fetch()) {
                        echo '
		<li>' . htmlspecialchars($row['ffna_title']) . '</li>';
                    }
                    echo '
	</ul>';
                }
                echo '
</div>';
                if (login::$logged_in) {
                    echo '
<form action="" method="post">
	<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
	<input type="hidden" name="price" value="' . $ffn->data['ffn_cost'] . '" />
	<div class="section center w200">
		<h2>Kjøp utgivelse</h2>
		<p>Før du får tilgang til denne utgivelsen må du kjøpe den.</p>
		<dl class="dd_right">
			<dt>Pris</dt>
			<dd>' . game::format_cash($ffn->data['ffn_cost']) . '</dd>
		</dl>
		<p class="c">' . show_sbutton("Kjøp utgivelse", 'name="buy"') . '</p>
	</div>
</form>';
                } else {
                    echo '
<p class="c">Du må <a href="&rpath;/">logge inn</a> for å kjøpe og lese denne utgivelsen.</p>';
                }
                $this->ff->load_page();
            }
        }
        // hent data
        $data = $ffn->build_avis_html();
        echo '
<p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ($this->ff->access(3) ? ' | <a href="avis?ff_id=' . $this->ff->id . '&amp;u&amp;ffn=' . $ffn->data['ffn_id'] . '">Vis detaljer</a>' : '') . ' | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p>' . $data;
    }
示例#17
0
			<p class="negative_soknader10 hide"><a href="#" onclick="handleClass(\'.negative_soknader11\', \'.negative_soknader10\', event)">Skjul søknadene med negative verdier (' . $hidden . ' stk) &raquo</a></p>';
            }
        }
        echo '
		</div>';
        // bestemt søknad?
        if (isset($_GET['sa_id'])) {
            // hent søknaden
            $sa_id = intval(getval("sa_id"));
            $result = \Kofradia\DB::get()->query("SELECT sa_id, sa_up_id, sa_added, sa_status, IF(sa_updated=0, sa_added, sa_updated) AS sa_updated, sa_comment, sa_weight, sa_verified, sa_verified_up_id FROM soknader_applicants WHERE sa_id = {$sa_id} AND sa_so_id = {$soknad['so_id']}");
            $applicant = $result->fetch();
            if (!$applicant) {
                $_base->page->add_message("Fant ikke søknaden.", "error");
                redirect::handle();
            }
            redirect::store("soknader?admin&so_id={$soknad['so_id']}&sa_id={$applicant['sa_id']}");
            $_base->page->add_title("Søknad #{$applicant['sa_id']}");
            // lagre rating og kommentar?
            if (isset($_POST['rating']) && isset($_POST['comment'])) {
                $rating = intval(postval("rating"));
                $comment = trim(postval("comment"));
                \Kofradia\DB::get()->exec("UPDATE soknader_applicants SET sa_weight = {$rating}, sa_comment = " . \Kofradia\DB::quote($comment) . ", sa_verified = " . time() . ", sa_verified_up_id = " . login::$user->player->id . " WHERE sa_id = {$applicant['sa_id']}");
                $_base->page->add_message("Informasjonen ble lagret.");
                redirect::handle();
            }
            $result = \Kofradia\DB::get()->query("SELECT saf_sf_id, saf_value FROM soknader_applicants_felt WHERE saf_sa_id = {$applicant['sa_id']}");
            $applicant_felt = array();
            while ($row = $result->fetch()) {
                $applicant_felt[$row['saf_sf_id']] = $row['saf_value'];
            }
            echo '
示例#18
0
    /**
     * Hovedfunksjonen
     */
    public static function main()
    {
        // hent informasjon om det vi skal vise
        if (isset($_GET['up_id'])) {
            // forsøk å hent denne spilleren
            $up_id = (int) $_GET['up_id'];
            if ($up_id != login::$user->data['u_active_up_id']) {
                $player = new player($up_id);
            } else {
                $player = login::$user->player;
            }
            // er ikke dette vår spiller?
            if (!$player->data || login::$user->id != $player->data['up_u_id']) {
                // må logge inn i utvidede tilganger?
                if ($player->data && login::$extended_access && !login::$extended_access['authed']) {
                    redirect::handle("extended_access?orign=" . urlencode($_SERVER['REQUEST_URI']));
                } elseif (!access::has("crewet")) {
                    ess::$b->page->add_message('Du har ikke tilgang til å vise andre spillere enn dine egne. <a href="min_side">Tilbake</a>', "error");
                    ess::$b->page->load();
                } elseif (!$player->data) {
                    ess::$b->page->add_message("Fant ikke spilleren.", "error");
                    redirect::handle("/admin/brukere/finn", redirect::ROOT);
                }
            }
            self::$active_type = "player";
            self::$active_player = $player;
            self::$active_user = $player->user;
            unset($player);
        } elseif (isset($_GET['u_id'])) {
            // forsøk å hent brukeren
            $u_id = (int) $_GET['u_id'];
            $user = $u_id == login::$user->id ? login::$user : new user($u_id);
            // er ikke dette vår bruker?
            if (!$user->data || login::$user->id != $user->id) {
                // har vi ikke tilgang til å vise andre spillere?
                if (!access::has("crewet")) {
                    ess::$b->page->add_message('Du har ikke tilgang til å vise andre brukere enn din egen. <a href="min_side">Tilbake</a>', "error");
                    ess::$b->page->load();
                } elseif (!$user->data) {
                    ess::$b->page->add_message("Fant ikke brukeren.", "error");
                    redirect::handle("/admin/brukere/finn", redirect::ROOT);
                }
            }
            self::$active_type = "user";
            self::$active_user = $user;
            self::$active_player = $user->player;
            unset($user);
        } else {
            self::$active_user = login::$user;
            self::$active_player = login::$user->player;
            self::$active_type = self::$active_player->active && !isset($_GET['u']) ? "player" : "user";
        }
        // egen bruker?
        self::$active_own = login::$user->id == self::$active_user->id;
        if (!self::$active_own && !access::has("mod")) {
            self::$pstats = false;
        }
        // hendelser?
        if (isset($_GET['log'])) {
            redirect::handle(self::addr("log", "", "player"));
        }
        // statistikk?
        if (isset($_GET['stats'])) {
            self::$active_type = "stats";
        }
        // informasjon om at dette er en annen person sin bruker/spiller
        if (!self::$active_own && false) {
            if (self::$active_type == "player") {
                ess::$b->page->add_message("Denne spilleren tilhører ikke deg.");
            } else {
                ess::$b->page->add_message("Denne brukeren tilhører ikke deg.");
            }
        }
        // overskrift
        if (self::$active_type == "player") {
            ess::$b->page->add_title(self::$active_player->data['up_name']);
        } else {
            ess::$b->page->add_title("Brukerinfo" . (!self::$active_own ? " (" . self::$active_user->data['u_email'] . ",#" . self::$active_user->id . ")" : ""));
            if (self::$active_type == "stats") {
                ess::$b->page->add_title("Statistikk" . (!self::$active_own ? " (" . self::$active_user->data['u_email'] . ",#" . self::$active_user->id . ")" : ""));
            }
        }
        // css
        ess::$b->page->add_css('
#page_user_info {
	margin: 20px 30px 30px 30px;
}
#page_user_info h1 { text-align: center }
#page_user_info .bg1_c { margin-bottom: 20px }
#page_user_info.user .col_w.left { width: 45% }
#page_user_info.user .col_w.right { width: 55% }
/*#page_user_info.player .col_w.left { width: 55% }
#page_user_info.player .col_w.right { width: 45% }*/
#page_user_info .col_w.left .col { margin-right: 10px }
#page_user_info .col_w.right .col { margin-left: 10px }');
        // overskrift
        echo '
<p class="minside_toplinks mainlinks">
	' . self::link('<img src="' . STATIC_LINK . '/icon/house.png" alt="" />Min bruker', "", "", "user") . '
	' . self::link('<img src="' . STATIC_LINK . '/icon/user.png" alt="" />Min spiller', "", "", "player") . '
	' . self::link('<img src="' . STATIC_LINK . '/icon/chart_bar.png" alt="" />Statistikk', "", "", "stats") . '
</p>';
        // underside
        self::$subpage = isset($_GET['a']) ? $_GET['a'] : '';
        redirect::store(self::addr());
        switch (self::$active_type) {
            // statistikk
            case "stats":
                page_min_side_stats::main();
                break;
                // bruker
            // bruker
            case "user":
                page_min_side_user::main();
                break;
                // spiller
            // spiller
            default:
                page_min_side_player::main();
        }
        ess::$b->page->load();
    }
示例#19
0
 /**
  * Construct
  */
 public function __construct($a_id, player $up)
 {
     parent::__construct($up);
     $this->auksjon = auksjon::get($a_id);
     if (!$this->auksjon) {
         ess::$b->page->add_message("Fant ikke auksjonen du lette etter.", "error");
         redirect::handle();
     }
     redirect::store("auksjoner?a_id={$this->auksjon->id}");
     $this->handle();
 }
示例#20
0
文件: index.php 项目: Kuzat/kofradia
    /**
     * Vis oversikt over spillere vi kan sette i bomberom
     */
    protected function type_bomberom_list()
    {
        redirect::store("?ff_id={$this->ff->id}&brom_list");
        // sette en ny spiller som ansvarlig?
        if (isset($_POST['brom_ans_move'])) {
            // mangler spiller?
            if (!isset($_POST['player'])) {
                ess::$b->page->add_message("Du må velge en spiller.", "error");
                redirect::handle();
            }
            // hent informasjon om spilleren og kontroller at vi har ansvar for den
            $up_id = (int) $_POST['player'];
            $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT up_id, up_name, up_access_level, up_brom_up_id\n\t\t\t\tFROM users_players\n\t\t\t\tWHERE up_id = {$up_id}");
            $player = $result->fetch();
            // fant ikke spilleren
            if (!$player) {
                ess::$b->page->add_message("Fant ikke spilleren.", "error");
                redirect::handle();
            }
            // deaktivert?
            if ($player['up_access_level'] == 0) {
                ess::$b->page->add_message('<user id="' . $player['up_id'] . '" /> er deaktivert.', "error");
                redirect::handle();
            }
            // er ikke ansvarlig for den?
            if ($player['up_brom_up_id'] != $this->up->id) {
                ess::$b->page->add_message('Du kan ikke sette <user id="' . $player['up_id'] . '" /> i bomberom.', "error");
                redirect::handle();
            }
            // har vi valgt en spiller det skal overføres til?
            if (isset($_POST['player_new']) || isset($_POST['player_new_id'])) {
                // finn spilleren
                $where = isset($_POST['player_new_id']) ? "up_id = " . (int) $_POST['player_new_id'] : "up_name = " . \Kofradia\DB::quote($_POST['player_new']);
                $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT up_id, up_name, up_access_level\n\t\t\t\t\tFROM users_players\n\t\t\t\t\tWHERE {$where}\n\t\t\t\t\tORDER BY up_access_level = 0, up_last_online DESC\n\t\t\t\t\tLIMIT 1");
                $player_new = $result->fetch();
                // fant ikke spilleren?
                if (!$player_new) {
                    ess::$b->page->add_message("Fant ikke spilleren.", "error");
                } elseif ($player_new['up_id'] == $player['up_id']) {
                    ess::$b->page->add_message("Spilleren kan allerede sette seg selv i bomberom.", "error");
                } elseif ($player_new['up_id'] == $this->up->id) {
                    ess::$b->page->add_message("Du er allerede den ansvarlige.", "error");
                } elseif ($player_new['up_access_level'] == 0) {
                    ess::$b->page->add_message('<user id="' . $player_new['up_id'] . '" /> er ikke levende og kan ikke settes som ansvarlig.', "error");
                } else {
                    // bekreftet?
                    if (isset($_POST['confirm'])) {
                        validate_sid();
                        // sett som ansvarlig
                        \Kofradia\DB::get()->exec("UPDATE users_players SET up_brom_up_id = {$player_new['up_id']} WHERE up_id = {$player['up_id']}");
                        putlog("LOG", "BOMBEROM ANSVARLIG: " . $this->up->data['up_name'] . " satt " . $player_new['up_name'] . " som ansvarlig for {$player['up_name']}");
                        ess::$b->page->add_message('Du gav bort muligheten for å sette <user id="' . $player['up_id'] . '" /> i bomberom til <user id="' . $player_new['up_id'] . '" />.');
                        redirect::handle();
                    }
                    ess::$b->page->add_title("Gi bort ansvar for spiller");
                    echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Gi bort ansvar for spiller<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />
		<p>Du er i ferd med å gi bort ansvaret for å kunne sette <user id="' . $player['up_id'] . '" /> i bomberom til <user id="' . $player_new['up_id'] . '" />.</p>
		<p>Dette vil resultere i at du ikke lenger kan sette spilleren i bomberom.</p>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="player" value="' . $player['up_id'] . '" />
			<input type="hidden" name="player_new_id" value="' . $player_new['up_id'] . '" />
			<input type="hidden" name="brom_ans_move" />
			<p class="c">' . show_sbutton("Bekreft overføring", 'name="confirm"') . '</p>
		</form>
		<p class="c"><a href="./?ff_id=' . $this->ff->id . '&amp;brom_list">Tilbake</a></p>
	</div>
</div>';
                    $this->ff->load_page();
                }
            }
            ess::$b->page->add_title("Gi bort ansvar for spiller");
            echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Gi bort ansvar for spiller<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />
		<p>Du er i ferd med å gi bort ansvaret for å kunne sette <user id="' . $player['up_id'] . '" /> i bomberom til en annen spiller.</p>
		<p>Dette vil resultere i at du ikke lenger kan sette spilleren i bomberom.</p>
		<form action="" method="post">
			<input type="hidden" name="player" value="' . $player['up_id'] . '" />
			<p class="c">Gi ansvar til: <input type="text" name="player_new" class="styled w100" value="' . htmlspecialchars(postval("player_new")) . '" /> ' . show_sbutton("Fortsett", 'name="brom_ans_move"') . '</p>
		</form>
		<p class="c"><a href="./?ff_id=' . $this->ff->id . '&amp;brom_list">Tilbake</a></p>
	</div>
</div>';
            $this->ff->load_page();
        }
        ess::$b->page->add_title("Oversikt over ansvar");
        echo '
<div class="bg1_c small">
	<h1 class="bg1">Oversikt over ansvar<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />
		<p>Denne listen viser hvilke spillere som har gitt deg mulighet til å sette dem i bomberom. Du har muligheten til å gi ansvaret videre til en annen spiller.</p>';
        // hent spillere vi har ansvar for
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_b_id, up_fengsel_time, up_brom_expire\n\t\t\tFROM users_players\n\t\t\tWHERE up_brom_up_id = " . $this->up->id . " AND up_access_level != 0\n\t\t\tORDER BY up_name");
        $ansvar = array();
        while ($row = $result->fetch()) {
            $ansvar[] = $row;
        }
        if (count($ansvar) == 0) {
            echo '
		<p>Det er ingen spillere som har gitt deg muligheten til å sette spilleren i bomberom.</p>';
        } else {
            echo '
		<form action="" method="post">
			<table class="table center">
				<thead>
					<tr>
						<th>Spiller</th>
						<th>Status</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            foreach ($ansvar as $row) {
                $i_bomberom = $row['up_brom_expire'] > time();
                $i_fengsel = $row['up_fengsel_time'] > time();
                $bydel =& game::$bydeler[$row['up_b_id']];
                echo '
					<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
						<td><input type="radio" name="player" value="' . $row['up_id'] . '" />' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td>
						<td>Oppholder seg på ' . htmlspecialchars($bydel['name']);
                if ($i_bomberom) {
                    echo '<br />I bomberom (til ' . ess::$b->date->get($row['up_brom_expire'])->format(date::FORMAT_SEC) . ')';
                } elseif ($i_fengsel) {
                    echo '<br />I fengsel (til ' . ess::$b->date->get($row['up_fengsel_time'])->format(date::FORMAT_SEC) . ')';
                }
                echo '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . show_sbutton("Gi ansvar til en annen spiller", 'name="brom_ans_move"') . '</p>
		</form>';
        }
        echo '
		<p class="c"><a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p>
	</div>
</div>';
        $this->ff->load_page();
    }
示例#21
0
    /**
     * Reise til en annen bydel
     */
    protected function reise()
    {
        redirect::store("bydeler#b");
        $this->up->fengsel_require_no();
        $this->up->bomberom_require_no();
        // finn bydelen
        $bydel = false;
        foreach ($this->bydeler as $row) {
            if ($row['id'] == 0 || $row['active'] == 0) {
                continue;
            }
            if ($row['name'] == $_POST['reise']) {
                $bydel = $row;
                break;
            }
        }
        if (!$bydel) {
            ess::$b->page->add_message("Fant ikke bydelen.", "error");
            redirect::handle();
        }
        // allerede i bydelen?
        if ($bydel['id'] == $this->up->data['up_b_id']) {
            $this->reise_error_in($bydel);
        }
        // teleportere?
        if (isset($_POST['teleporter']) && access::is_nostat()) {
            // teleporter
            $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_b_id = {$bydel['id']}, up_b_time = " . time() . " WHERE up_id = " . $this->up->id . " AND up_access_level != 0 AND up_b_id != {$bydel['id']}");
            if ($a == 0) {
                $this->reise_error_in($bydel);
            }
            ess::$b->page->add_message('Du teleporterte til <b>' . htmlspecialchars($bydel['name']) . '</b>.');
            redirect::handle();
        }
        // med bil?
        if (isset($_POST['gta'])) {
            if ($this->gta_count == 0) {
                ess::$b->page->add_message("Du har ingen biler i bydelen du oppholder deg i.", "error");
                redirect::handle();
            }
            if (!$this->gta_garage[$bydel['id']]['garage']) {
                ess::$b->page->add_message('Du har ingen garasje på <b>' . htmlspecialchars($bydel['name']) . '</b> og kan ikke reise dit med bil.', "error");
                redirect::handle();
            }
            if ($this->gta_garage[$bydel['id']]['garage_free'] == 0) {
                ess::$b->page->add_message('Det er ingen ledige plasser i garasjen på <b>' . htmlspecialchars($bydel['name']) . '</b>.', "error");
                redirect::handle();
            }
            // regn ut avstand (km)
            $distance = self::calc_travel_distance($this->up->bydel, $bydel);
            // har vi valgt en bil?
            if (isset($_POST['sel'])) {
                if (!isset($_POST['bil'])) {
                    ess::$b->page->add_message("Du må velge en bil du ønsker å reise med.", "error");
                } else {
                    $this->reise_gta_check($bydel, $distance);
                }
                // TODO
            }
            // vis skjema for å velge en bil å reise med
            ess::$b->page->add_title($bydel['name'], "Reis med bil");
            // hent bilene i garasjen
            $pagei = new pagei(pagei::ACTIVE_POST, "side", pagei::PER_PAGE, 10);
            $result = $pagei->query("\n\t\t\t\tSELECT s.id, s.time, g.brand, g.model, g.img_mini, g.value, s.damage, g.points\n\t\t\t\tFROM users_gta AS s\n\t\t\t\t\tJOIN gta AS g ON s.gtaid = g.id\n\t\t\t\tWHERE ug_up_id = {$this->up->id} AND s.b_id = {$this->up->data['up_b_id']}\n\t\t\t\tORDER BY g.points*(100-s.damage) DESC");
            echo '
<div class="bg1_c xmedium">
	<h1 class="bg1">Reis med bil til ' . htmlspecialchars($bydel['name']) . '<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<p class="c"><a href="bydeler#b">Tilbake</a></p>
		<form action="bydeler#b" method="post">
			<input type="hidden" name="reise" value="' . htmlspecialchars($bydel['name']) . '" />
			<input type="hidden" name="gta" />
			<table class="table center">
				<thead>
					<tr>
						<th colspan="2">Merke/Modell</th>
						<th>Dato anskaffet</th>
						<th>Skade</th>
						<th>Energi</th>
						<th>Utgifter</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $price = $distance * self::GTA_PRICE_KM * self::get_gta_factor_points($row['points']) * self::get_gta_factor_damage($row['damage']);
                $energy = self::get_gta_energy($row['damage']);
                echo '
					<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
						<td><input type="radio" id="bil_' . $row['id'] . '" name="bil" value="' . $row['id'] . '"' . (postval("bil") == $row['id'] ? ' checked="checked"' : '') . ' />' . (empty($row['img_mini']) ? '&nbsp;' : '<img src="' . $row['img_mini'] . '" alt="Bilde" />') . '</td>
						<td>' . htmlspecialchars($row['brand']) . '<br /><b>' . htmlspecialchars($row['model']) . '</b></td>
						<td>' . ess::$b->date->get($row['time'])->format() . '</td>
						<td align="right">' . $row['damage'] . ' %</td>
						<td align="right">' . game::format_num($energy / $this->up->data['up_energy_max'] * 100, 1) . ' %</td>
						<td align="right">' . game::format_cash($price) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>' . ($pagei->pages > 1 ? '
			<p class="c">' . $pagei->pagenumbers("input") . '</p>' : '') . '
			<p class="c">' . show_sbutton("Reis til " . htmlspecialchars($bydel['name']), 'name="sel"') . '</p>
		</form>
	</div>
</div>';
            ess::$b->page->load();
        }
        // ta taxi?
        if (isset($_POST['taxi'])) {
            // har vi ikke nok energi?
            if (!$this->up->energy_check(self::TAXI_ENERGY * 1.3)) {
                ess::$b->page->add_message("Du har ikke nok energi for å reise med taxi.", "error");
                redirect::handle();
            }
            // regn ut avstand (km)
            $distance = self::calc_travel_distance($this->up->bydel, $bydel);
            // regn ut pris og rankpoeng
            $price = round($distance * self::TAXI_PRICE_KM);
            $points = round($distance * self::TAXI_POINTS_KM * $this->up->rank['number']);
            // har ikke nok rank?
            if ($this->up->data['up_points'] < $points * 2) {
                ess::$b->page->add_message("Du har ikke nok rank til å reise til " . htmlspecialchars($bydel['name']) . ".", "error");
                redirect::handle();
            }
            // forsøk å reis
            $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price}, up_b_id = {$bydel['id']}, up_b_time = " . time() . " WHERE up_id = " . $this->up->id . " AND up_cash >= {$price} AND up_b_id != {$bydel['id']}");
            // feilet?
            if ($a == 0) {
                // allerede i bydelen?
                $result = \Kofradia\DB::get()->query("SELECT up_b_id FROM users_players WHERE up_id = " . $this->up->id);
                if ($result->fetchColumn(0) == $bydel['id']) {
                    $this->reise_error_in($bydel);
                }
                // hadde ikke råd
                $this->reise_error_cash($bydel);
            }
            // energi
            $this->up->energy_use(self::TAXI_ENERGY);
            // rank
            $this->up->increase_rank(-$points);
            // vellykket
            ess::$b->page->add_message("Du tok taxi til <b>" . htmlspecialchars($bydel['name']) . "</b>. Det kostet deg <b>" . game::format_cash($price) . "</b> og " . game::format_number($points) . " poeng.");
            redirect::handle();
        }
        ess::$b->page->add_message("Ukjent reisemetode.", "error");
        redirect::handle();
    }
示例#22
0
文件: gta.php 项目: Kuzat/kofradia
    /**
     * Vis oversikt over garasjen
     */
    protected function garasje_show()
    {
        ess::$b->page->add_title("Garasje");
        // kjøpe garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "kjop") {
            redirect::store("/gta/garasje/kjop", redirect::ROOT);
            return $this->garasje_kjop_show();
        }
        // avslutte garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "avslutt") {
            redirect::store("/gta/garasje/avslutt", redirect::ROOT);
            return $this->garasje_avslutt_show();
        }
        // endre garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "endre") {
            redirect::store("/gta/garasje/endre", redirect::ROOT);
            return $this->garasje_endre_show();
        }
        // vise detaljer over garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "detaljer") {
            redirect::store("/gta/garasje/detaljer", redirect::ROOT);
            return $this->garasje_details_show();
        }
        // betale leie?
        if (isset($this->parts[1]) && $this->parts[1] == "betale") {
            redirect::store("/gta/garasje/betale", redirect::ROOT);
            return $this->garasje_betale_show();
        }
        // skjema
        $this->form = \Kofradia\Form::getByDomain("gta_garasje", login::$user);
        // anti-bot
        $this->antibot = antibot::get("biltyveri", 10);
        $this->antibot->check_required(ess::$s['rpath'] . '/gta');
        // flytte biler?
        if (isset($_POST['flytt'])) {
            return $this->garasje_flytt_show();
        }
        // selge biler?
        if (isset($_POST['selg'])) {
            $this->garasje_selg_handle();
        }
        // hent informasjon om garasjen
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ugg_time, ugg_time_next_rent, ugg_cost_total, ugg_places, ff_id, ff_name\n\t\t\tFROM users_garage\n\t\t\t\tLEFT JOIN ff ON ff_id = ugg_ff_id\n\t\t\tWHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']}");
        $garasje = $result->fetch();
        // kan vi betale nå?
        $can_pay = $garasje && gta::can_pay($garasje['ugg_time_next_rent']);
        echo '
<div class="col2_w" style="margin: 50px 50px 0">
	<div class="col_w left" style="width: 50%">
		<div class="col">
			<div class="bg1_c center" style="width: 85%">
				<h1 class="bg1">Garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1>
				<div class="bg1">' . (!$garasje ? '
					<p class="c">Du har ingen garasje i denne bydelen.</p>
					<p class="c"><a href="&rpath;/gta/garasje/kjop">Lei ny garasje</a></p>' : '
					<dl class="dd_right">
						<dt>Utleiefirma</dt>
						<dd><a href="&rpath;/ff/?ff_id=' . $garasje['ff_id'] . '">' . htmlspecialchars($garasje['ff_name']) . '</a></dd>
						<dt>Kapasitet</dt>
						<dd>' . game::format_num($garasje['ugg_places']) . '</dd>
						<dt>Neste betalingsfrist</dt>
						<dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . ($can_pay ? '<br /><a href="&rpath;/gta/garasje/betale">Betal leie før fristen</a>' : '') . '</dd>
					</dl>
					<p class="c"><a href="&rpath;/gta/garasje/detaljer">Vis flere detaljer</a></p>
					<p>Leie for neste periode må betales innen betalingsfristen' . ($can_pay ? '' : ' og blir mulig 3 dager før fristen') . '.</p>') . '
				</div>
			</div>
		</div>
	</div>
	<div class="col_w right" style="width: 50%">
		<div class="col">
			<p class="c" style="margin-top: 0"><img src="&staticlink;/gta/garasje.jpg" alt="Garasje" style="border: 3px solid #1F1F1F" /></p>
		</div>
	</div>
</div>';
        if ($garasje) {
            // hent bilene i garasjen
            $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
            $result = $pagei->query("\n\t\t\t\tSELECT s.id, s.gtaid, s.time, s.time_last_move, s.b_id_org, s.b_id, g.brand, g.model, g.img_mini, g.value, s.damage\n\t\t\t\tFROM users_gta AS s LEFT JOIN gta AS g ON s.gtaid = g.id\n\t\t\t\tWHERE ug_up_id = {$this->gta->up->id} AND s.b_id = {$this->gta->up->data['up_b_id']}\n\t\t\t\tORDER BY s.time DESC");
            echo '
<div class="bg1_c xmedium">
	<h1 class="bg1">Biler i garasjen<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
            // har vi ingen biler?
            if ($result->rowCount() == 0) {
                echo '
		<p>Det er ingen biler plassert i denne garasjen. Bilene du stjeler vil bli plassert i garasjen i bydelen du oppholder deg.</p>';
            } else {
                echo '
		<form action="" method="post">
			' . $this->form->getHTMLInput() . '
			<table class="table tablemt center">
				<thead>
					<tr>
						<th><a href="#" class="box_handle_toggle" rel="bil[]">Merk alle</a></th>
						<th>Merke/Modell</th>
						<th>Dato anskaffet</th>
						<th>Skade</th>
						<th>Verdi</th>
					</tr>
				</thead>
				<tbody>';
                $i = 0;
                while ($row = $result->fetch()) {
                    echo '
					<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
						<td><input type="checkbox" id="bil_' . $row['id'] . '" name="bil[]" value="' . $row['id'] . '" />' . (empty($row['img_mini']) ? '&nbsp;' : '<img src="' . $row['img_mini'] . '" alt="Bilde" />') . '</td>
						<td>' . htmlspecialchars($row['brand']) . '<br /><b>' . htmlspecialchars($row['model']) . '</b></td>
						<td>' . ess::$b->date->get($row['time'])->format() . '</td>
						<td align="right">' . $row['damage'] . ' %</td>
						<td align="right">' . game::format_cash($row['value'] * ((100 - $row['damage']) / 100)) . '</td>
					</tr>';
                }
                echo '
				</tbody>
			</table>' . ($pagei->pages > 1 ? '
			<p class="c">' . $pagei->pagenumbers() . '</p>' : '') . '
			<p class="c">
				' . show_sbutton("Selg biler", 'name="selg"') . '
				' . show_sbutton("Flytt biler", 'name="flytt"') . '
			</p>
		</form>';
            }
            echo '
	</div>
</div>';
        }
    }
示例#23
0
<?php

define("FORCE_HTTPS", true);
define("ALLOW_GUEST", true);
require "base.php";
global $__server, $_base;
$_base->page->add_title("Henvendelser");
$categories = array(1 => "Generelt", "Utestengt/deaktivert", "Feil/bugs", "Forslag til funksjon", "Annet");
$status = array("crew" => array(0 => "Ny", 1 => "Under behandling", 2 => "Venter på svar", 3 => "Ferdig behandlet", 4 => "Slettet"), "other" => array(0 => "Ikke behandlet", 1 => "Under behandling", 2 => "Trenger svar", 3 => "Ferdig behandlet", 4 => "Slettet"));
// administrasjon
if (isset($_GET['a']) && access::has("mod", NULL, NULL, true)) {
    redirect::store("henvendelser?a");
    // ikke authed?
    if (!access::has("mod")) {
        echo '
<h1>Henvendelser</h1>
<p>Du må logge inn for utvidede tilganger for å få tilgang til henvendelsene som er sendt inn.</p>';
        $_base->page->load();
    }
    // bestemt henvendelse?
    if (isset($_GET['h_id'])) {
        $h_id = intval($_GET['h_id']);
        $bb = true;
        // hent henvendelsen
        $result = \Kofradia\DB::get()->query("SELECT h_id, h_name, h_category, h_email, h_subject, h_name, h_status, h_time, h_random, h_last_visit FROM henvendelser WHERE h_id = {$h_id}");
        $h = $result->fetch();
        if (!$h) {
            $_base->page->add_message("Fant ikke henvendelsen.", "error");
            redirect::handle();
        }
        // opprette svar?
示例#24
0
文件: panel.php 项目: Kuzat/kofradia
    /**
     * Behandle endring av medemsgrense
     */
    protected function page_members_limit_handle()
    {
        ess::$b->page->add_title("Medlemsbegrensning");
        redirect::store("panel?ff_id={$this->ff->id}&a=members_limit");
        // hent tall
        $max = $this->ff->members_limit_max_info();
        // øke begrensningen?
        if (isset($_POST['increase']) && validate_sid()) {
            // ingen grense?
            if ($max['active'] == 0) {
                ess::$b->page->add_message("Det er ingen medlemsbegrensning.", "error");
            } elseif ($max['active'] >= $max['max']) {
                ess::$b->page->add_message("Det er ikke mulig å øke medlemsbegrensningen noe mer." . ($this->ff->competition ? ' Etter konkurranseperioden vil det være mulig å øke antall medlemmer ytterligere.' : ''), "error");
            } elseif (postval("count") != $max['active']) {
                ess::$b->page->add_message("Medlemsbegrensningen har endret seg siden du viste siden. Prøv på nytt om du fremdeles ønsker.", "error");
            } else {
                // forsøk å øk begrensningen
                if ($this->ff->members_limit_increase()) {
                    redirect::handle();
                }
            }
        }
        // senke begrensningen?
        if (isset($_POST['decrease']) && validate_sid()) {
            // ingen grense?
            if ($max['active'] == 0) {
                ess::$b->page->add_message("Det er ingen medlemsbegrensning.", "error");
            } elseif ($max['active'] <= $max['min']) {
                ess::$b->page->add_message("Det er ikke mulig å senke medlemsbegrensningen noe mer.", "error");
            } elseif (count($this->ff->members['members']) + count($this->ff->members['invited']) >= $max['active']) {
                ess::$b->page->add_message("Det er for mange medlemmer/inviterte til broderskapet, og medlemsbegrensningen kan ikke senkes mer uten å kaste ut/trekke tilbake invitasjon til en spiller.", "error");
            } elseif (postval("count") != $max['active']) {
                ess::$b->page->add_message("Medlemsbegrensningen har endret seg siden du viste siden. Prøv på nytt om du fremdeles ønsker.", "error");
            } else {
                // forsøk å senk begrensningen
                if ($this->ff->members_limit_decrease()) {
                    redirect::handle();
                }
            }
        }
        // ingen begrensning?
        if ($max['active'] == 0) {
            echo '
<div class="bg1_c xxsmall">
	<h1 class="bg1">Medlemsbegrensning<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<boxes />
		<p>Det er ingen medlemsbegrensning for ' . $this->ff->type['refobj'] . '.</p>
		<p class="c"><a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a></p>
	</div>
</div>';
            $this->ff->load_page();
        }
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Medlemsbegrensning<span class="left"></span><span class="right"></span></h1>
	<div class="bg1 j">
		<boxes />
		<p>Medlemsbegrensningen bestemmer hvor mange medlemmer du kan ha i ' . $this->ff->type['refobj'] . '.</p>
		<dl class="dd_right">
			<dt>Nåværende begrensning</dt>
			<dd><b>' . $max['active'] . '</b></dd>
			<dt>Antall medlemmer og inviterte</dt>
			<dd><b>' . (count($this->ff->members['members']) + count($this->ff->members['invited'])) . '</b></dd>
			<dt>Minste mulige begrensning</dt>
			<dd' . ($max['active'] == $max['min'] ? ' style="color: #F00"' : '') . '>' . $max['min'] . '</dd>
			<dt>Maksimale mulige begrensning</dt>
			<dd' . ($max['active'] == $max['max'] ? ' style="color: #F00"' : '') . '>' . $max['max'] . '</dd>
			<dt>Begrensning for driftskostnad</dt>
			<dd>' . ($max['min'] + $max['extra_max']) . '</dd>
		</dl>' . ($this->ff->competition ? '
		<p>Etter broderskapkonkurransen er ferdig vil du kunne øke medlemsbegrensningen ytterligere.</p>' : '') . '
		<p>Når medlemsbegrensningen øker, vil utgangspunktet til driftskostnaden øke med <b>' . game::format_cash(ff::PAY_COST_INCREASE_FFM) . '</b> per medlem. I tillegg må det betales <b>' . game::format_cash(ff::MEMBERS_LIMIT_INCREASE_COST) . '</b> fra banken til ' . $this->ff->type['refobj'] . ' i det begrensningen økes.</p>
		<p>Når medlemsbegrensningen settes ned må man vente til neste periode for driftskostnad før dette antallet blir satt ned igjen.</p>
		<dl class="dd_right">
			<dt>Penger i <a href="banken?ff_id=' . $this->ff->id . '">banken</a> til ' . $this->ff->type['refobj'] . '</dt>
			<dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="count" value="' . $max['active'] . '" />' . ($max['active'] < $max['max'] ? '
			<p class="c">' . show_sbutton("Øk med én plass (" . game::format_cash(ff::MEMBERS_LIMIT_INCREASE_COST) . ")", 'name="increase"') . '</p>' : '') . ($max['active'] > $max['min'] ? '
			<p class="c">' . show_sbutton("Senk med én plass", 'name="decrease"') . '</p>' : '') . '
		</form>
		<p class="c"><a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a></p>
	</div>
</div>';
        $this->ff->load_page();
    }
示例#25
0
文件: index.php 项目: Kuzat/kofradia
global $_whatpulse, $_base;
// sørg for at whatpulse-innstillingene lastes inn
class_exists("whatpulse");
// brukes kun for autoloader
access::no_guest();
$_base->page->add_title("WhatPulse");
$wpFelt = $_whatpulse['fields_text'];
$player = login::$user->player;
// skal vi laste inn siden for noen andre spillere?
if (isset($_GET['up_id']) && access::has("mod")) {
    $player = player::get(intval(getval('up_id')));
    if (!$player or $player->id == login::$user->player->id) {
        redirect::handle();
    }
    ess::$b->page->add_message('Du viser nå WhatPulse-informasjonen til <user id="' . $player->id . '" />');
    redirect::store("?up_id={$player->id}");
}
// sjekk om vi har WhatPulse registrert
$result = \Kofradia\DB::get()->query("SELECT sw_userid, sw_time_update, sw_xml, sw_params FROM stats_whatpulse WHERE sw_up_id = " . $player->id . " FOR UPDATE");
if ($result->rowCount() == 0) {
    echo '
<h1>WhatPulse</h1>
<div style="width: 300px" class="center">
	<div class="section">
		<h3>Informasjon</h3>
		<p>
			Du er ikke registrert med WhatPulse informasjon. For å koble WhatPulse informasjonen til din profil fyll ut formen nedenfor. Se på <a href="http://whatpulse.org/" target="_blank">whatpulse.org</a> for informasjon om WhatPulse.
		</p>
	</div>
	<div class="section">
		<form action="" method="post">';
示例#26
0
            }
            $data[$row['av_up_id']]['votes'][$row['av_ai_id']] = $row;
        }
        return $data;
    }
}
// har vi valgt en avstemning?
if (isset($_GET['ag_id'])) {
    // hent info
    $ag = available::get_ag($_GET['ag_id']);
    if (!$ag) {
        $_base->page->add_message("Fant ikke avstemningen.", "error");
        redirect::handle();
    }
    $_base->page->add_title($ag->info['ag_title']);
    redirect::store(PHP_SELF . "?ag_id={$ag->ag_id}", redirect::SERVER);
    // hent alternativene
    $ag->get_ai_list();
    // legge inn stemme?
    if (isset($_POST['note']) && (!isset($_POST['ai']) || is_array($_POST['ai']))) {
        // _POST: note, ai[<id>] ai_note[<id>]
        $note = trim(postval("note"));
        $ai_list = array();
        // gå gjennom alle alternativene og sjekk om det er valgt eller om et notat er lagt med
        foreach ($ag->ai as $ai) {
            $set = isset($_POST['ai'][$ai['ai_id']]);
            $ai_note = isset($_POST['ai_note'][$ai['ai_id']]) ? trim($_POST['ai_note'][$ai['ai_id']]) : '';
            // enten valgt eller har notat
            if ($set || $ai_note != '') {
                $ai_list[] = array($ai['ai_id'], $ai_note, $set);
            }
示例#27
0
define("FORCE_HTTPS", true);
require "base.php";
global $_base;
$_base->page->add_title("Søknader");
// hent aktuell søknad
$id = \Kofradia\DB::quote(getval("so_id"));
$result = \Kofradia\DB::get()->query("SELECT so_id, so_title, so_info, so_expire, so_status FROM soknader_oversikt WHERE so_id = {$id}");
$soknad = $result->fetch();
$closed = $soknad['so_expire'] <= time();
// finnes ikke, eller ikke tilgang til ikke publisert søknad
if (!$soknad || $soknad['so_status'] == 0 && !access::has("mod")) {
    $_base->page->add_message("Fant ikke søknaden.", "error");
    redirect::handle("soknader");
}
$_base->page->add_title($soknad['so_title']);
redirect::store("soknader_vis?so_id={$soknad['so_id']}");
// hent felt til søknaden
$result = \Kofradia\DB::get()->query("SELECT sf_id, sf_title, sf_extra, sf_default_value, sf_params FROM soknader_felt WHERE sf_so_id = {$soknad['so_id']} ORDER BY sf_sort");
$felt = array();
while ($row = $result->fetch()) {
    $row['params'] = new params($row['sf_params']);
    $felt[$row['sf_id']] = $row;
}
// hent informasjon om brukeren og denne søknaden
$applicant = null;
if (login::$logged_in) {
    $result = \Kofradia\DB::get()->query("SELECT sa_id, sa_added, sa_status, sa_updated FROM soknader_applicants WHERE sa_so_id = {$soknad['so_id']} AND sa_up_id = " . login::$user->player->id);
    $applicant = $result->fetch();
}
// hent felt som denne brukeren har lagt til data for
if ($applicant) {
示例#28
0
 // hent taginfo
 $taginfo = crewfiles::get_info($pages[1]);
 if (!$taginfo) {
     $_base->page->add_message("Fant ikke revisjonen.", "error");
     redir_root();
 }
 // hent data, kontroller taginfo og tilgangsnivå
 $revision = crewfiles::get_revision($taginfo[0]);
 if (!$revision || !$revision->validate_tag($taginfo[1]) || !$revision->get_file()->access) {
     $_base->page->add_message("Fant ikke revisjonen.", "error");
     redir_root();
 }
 $revurl = $rooturl . 'rev/' . $revision->id . '-' . urlencode(crewfiles::generate_tagname($revision->info['cfr_title']));
 $file =& $revision->get_file();
 $filurl = $rooturl . 'fil/' . $file->id . '-' . urlencode(crewfiles::generate_tagname($file->info['cff_title']));
 redirect::store($filurl, redirect::SERVER);
 // sett opp hierarki
 $path = $revision->get_file()->get_dir()->get_path($rooturl);
 array_unshift($path, '<a href="' . $filurl . '">' . htmlspecialchars($file->info['cff_title']) . '</a>');
 array_unshift($path, '<span class="path_active"><a href="' . $revurl . '">' . htmlspecialchars($revision->info['cfr_title']) . '</a></span>');
 $hierarchy = implode(" / ", array_reverse($path));
 $_base->page->add_title("Revisjon: " . $revision->info['cfr_title']);
 // handling: slett revisjon
 if ($subpage == "delete") {
     // ikke logget inn?
     if (!login::$logged_in) {
         $_base->page->add_message("Du må være logget inn for å kunne slette revisjoner.", "error");
         redirect::handle();
     }
     // har vi ikke tilgang til å slette denne revisjonen?
     if ($revision->info['cfr_up_id'] != login::$user->player->id && !access::has("admin")) {
示例#29
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>';
    }
示例#30
0
文件: banken.php 项目: Kuzat/kofradia
    /**
     * Vis statistikk for FF
     */
    protected function stats()
    {
        ess::$b->page->add_title("Statistikk");
        redirect::store("banken?ff_id={$this->ff->id}&stats");
        // nullstille?
        if (isset($_GET['reset'])) {
            // bekreftet?
            if (isset($_POST['confirm']) && validate_sid()) {
                $this->ff->reset_bank_stats();
                ess::$b->page->add_message("Statistikken ble nullstilt.");
                redirect::handle();
            }
            // vis skjema for å bekrefte
            echo '
<div class="bg1_c xxsmall">
	<h1 class="bg1">Nullstille Statistikk<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<p>Du er i ferd med å nullstille statistikken over pengeflyten i ' . $this->ff->type['refobj'] . '.</p>
		<p>Når du nullstiller statistikken vil du beholde en totaloversikt fra ' . $this->ff->type['refobj'] . ' ble opprettet og frem til nå.</p>
		<p>Etter at statistikken blir nullstilt vil det være to oversikter, som hver viser statistikk før og etter nullstillingen.</p>
		<p>Det kan kanskje være ønskelig å ta en kopi av statistikken nå for å kunne sammenlikne senere.</p>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<p class="c">' . show_sbutton("Ja, nullstill statistikk", 'name="confirm"') . '</p>
			<p class="c"><a href="banken?ff_id=' . $this->ff->id . '&amp;stats">Avbryt</a></p>
		</form>
	</div>
</div>';
            $this->ff->load_page();
        }
        // har vi nullstilt?
        $reset = $this->ff->data['ff_money_reset_time'] ?: null;
        // sett opp data
        $stats = array(ff::BANK_INNSKUDD => 0, ff::BANK_UTTAK => 0, ff::BANK_DONASJON => 0, ff::BANK_BETALING => 0, ff::BANK_TILBAKEBETALING => 0, "in" => 0, "out" => 0);
        $stats = array("before" => $stats, "after" => $stats);
        ess::$b->page->add_css('
.ff_bank_tot { font-weight: bold; color: #555; border-bottom: 1px solid #333333; margin-bottom: 2px; padding-bottom: 2px }
.ff_bank_profit { font-weight: bold; color: #888; border-bottom: 2px solid #333333; padding-bottom: 2px }');
        // hent statistikk
        $this->stats_get($stats['before'], $reset);
        $this->stats_get($stats['after'], $reset, true);
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Statistikk over pengeflyt i ' . $this->ff->type['refobj'] . '<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">';
        if ($reset) {
            echo '
		<p>Statistikken ble nullstilt ' . ess::$b->date->get($reset)->format() . '. Etter dette tidspunktet er følgende gjeldende:</p>';
        }
        $this->stats_show($stats['after']);
        if ($reset) {
            echo '
		<p>Før statistikken ble nullstilt:</p>';
            $this->stats_show($stats['before']);
        }
        echo '
		<p>Fortjenesten tar ikke med innskudd og uttak.</p>
		<p class="c"><a href="banken?ff_id=' . $this->ff->id . '">Tilbake</a> | <a href="banken?ff_id=' . $this->ff->id . '&amp;stats&amp;reset">Nullstill statistikk</a></p>
	</div>
</div>';
        $this->ff->load_page();
    }