示例#1
0
 /**
  * Handle notify URLs from PayPal
  */
 public function action_notify()
 {
     file_put_contents(PATH_ROOT . "/paypal.log", print_r($_POST, true), FILE_APPEND);
     // TODO: remove this when tested on production
     if (!isset($_POST['receiver_email']) || $_POST['receiver_email'] != '*****@*****.**') {
         die;
     }
     // should really check for duplicates, but we don't
     // but it must be "completed"
     if (!isset($_POST['payment_status']) || $_POST['payment_status'] != 'Completed') {
         die;
     }
     // verify it
     $verify = Donation::verifyPayPalData($_POST);
     if (!$verify) {
         die;
     }
     // check for user etc
     $custom = postval("custom");
     if (!preg_match('~^(.*):(.*);public=(0|1)$~', $custom, $matches)) {
         die;
     }
     trigger_error("should add");
     $player = null;
     if ($matches[1] != "gjest") {
         // find this player
         $result = DB::get()->query("\n\t\t\t\tSELECT up_id\n\t\t\t\tFROM users_players\n\t\t\t\t\tLEFT JOIN users ON up_u_id = u_id\n\t\t\t\t\tLEFT JOIN sessions ON u_id = ses_u_id\n\t\t\t\tWHERE ses_id = " . DB::quote($matches[1]) . " AND up_id = " . DB::quote($matches[2]) . " LIMIT 1");
         if ($up_id = $result->fetchColumn(0)) {
             $player = \player::get($up_id);
         }
     }
     $time = \ess::$b->date->parse(postval("payment_date"));
     // add it
     $d = Donation::create(postval("mc_gross"), $time, $matches[3] ? $player->id : null);
     putlog("CREWCHAN", sprintf("%%uDONASJON:%%u %s %s ble donert av %s", postval("mc_currency"), postval("mc_gross"), $player ? $player->data['up_name'] . ($matches[3] ? ' (synlig)' : ' (som anonym)') : 'anonym gjest'));
     // no output
     die;
 }
示例#2
0
    protected function show()
    {
        // tittel på meldingstråden
        ess::$b->page->add_title($this->thread->data_thread['it_title']);
        // sett opp deltakere
        $deltakere = array();
        $c = access::has("crewet");
        foreach ($this->thread->receivers as $row) {
            if ($this->thread->data_rel && $this->thread->data_rel['ir_up_id'] == $row['ir_up_id']) {
                continue;
            }
            $p = $row['ir_deleted'] != 0 || $row['up_access_level'] == 0 && (!access::has("crewet") || $row['u_access_level'] == 0 || $row['u_active_up_id'] != $row['ir_up_id']);
            $deltakere[] = ($p ? '<span class="user_strike">' : '') . '<user id="' . $row['ir_up_id'] . '" />' . ($p ? '</span>' : '');
        }
        $deltakere_siste = array_pop($deltakere);
        $this->add_receivers();
        // overskrift
        if ($this->thread->restrict || !$this->thread->can_reply_receivers) {
            echo '
<h1>Melding: ' . htmlspecialchars($this->thread->data_thread['it_title']) . '</h1>';
        } else {
            echo '
<form action="" method="post">
	<h1><span class="red">' . show_sbutton("Slett", 'name="slettalle" onclick="return confirm(\'Dette vil slette meldingstråden for alle deltakere. Denne handlingen kan ikke angres uten videre. Fortsette?\')"') . '</span> Melding: ' . htmlspecialchars($this->thread->data_thread['it_title']) . '</h1>
</form>';
        }
        // tittel og verktøy
        echo '
<form action="innboks" method="post">
	<p class="im_tools top h_right">
		<a href="innboks' . ($this->thread->data_rel ? '' : '?user='******'up_name'])) . '">Tilbake til meldinger</a>
		<input type="hidden" name="it_id[]" value="' . $this->thread->id . '" />' . (!isset($_GET['reply']) && $this->can_reply ? '
		' . show_sbutton("Opprett svar", 'name="reply" accesskey="s"', 'reply_link_form_show') : '') . ($this->thread->data_rel ? '
		<span class="red">' . show_sbutton("Slett", 'name="slett"  accesskey="d" onclick="return confirm(\'Er du sikker på at du vil slette meldingen?\')"') . '</span>' : '') . '
	</p>
</form>';
        // deltakere
        if ($deltakere_siste) {
            echo '
<p id="im_deltakere"><span id="im_deltakere_i">Deltakere: ' . (count($deltakere) > 0 ? implode(", ", $deltakere) . ' og ' : '') . $deltakere_siste . '</span></p>';
            if (!$this->thread->can_reply_access) {
                echo '
<p>Du har ikke mulighet til å svare i denne meldingen.</p>';
            } elseif (!$this->thread->can_reply_receivers) {
                echo '
<p>Det er ingen mottakere du kan svare til.</p>';
            }
        } else {
            echo '
<p>Det er ingen andre deltakere enn deg selv i denne meldingstråden.</p>';
        }
        // flere sider?
        if ($this->pagei->pages > 1) {
            echo '
<p class="c">' . $this->pagei->pagenumbers(array("goto")) . '</p>';
        }
        // svarskjema
        echo '
<div id="container_reply"' . (!isset($_GET['reply']) ? ' style="display: none"' : '') . '>
	<form action="' . htmlspecialchars(game::address(PHP_SELF, $_GET, array(), array("reply" => true))) . '" method="post" onsubmit="this.onsubmit=function(){return false;}">
		<div class="section" style="margin-top:0">
			<h3>Skriv svar</h3>
			<dl class="dd_auto_100">
				<dt>Innhold</dt>
				<dd><textarea name="melding" rows="10" cols="75" id="textContent">' . htmlspecialchars(postval("melding")) . '</textarea></dd>
				<dt' . (isset($_POST['preview']) && isset($_POST['melding']) ? '' : ' style="display: none"') . ' id="previewDT">Forhåndsvisning</dt>
				<dd' . (isset($_POST['preview']) && isset($_POST['melding']) ? '' : ' style="display: none"') . ' id="previewDD">' . (!isset($_POST['melding']) || empty($_POST['melding']) ? 'Tom melding?!' : game::bb_to_html($_POST['melding'])) . '</dd>
			</dl>
			<h3 class="c">
				' . show_sbutton("Send melding", 'name="post" accesskey="s"') . '
				' . show_sbutton("Forhåndsvis", 'name="preview" accesskey="p" id="reply_link_preview"') . '
			</h3>
		</div>
	</form>
</div>';
        // meldingene
        echo '
<div id="innboks">';
        // hent meldingene på denne siden
        $result = $this->thread->get_messages($this->pagei->start, $this->limit);
        $i = 0;
        $last_id = 0;
        while ($row = $result->fetch()) {
            $e = $this->pagei->total - $i - ($this->pagei->active - 1) * $this->pagei->per_page;
            if ($i == 0) {
                $last_id = $row['im_id'];
            }
            echo $this->thread->reply_format($row, $e, $this->highlight_im_id == $row['im_id'], $i < $this->new);
            $i++;
        }
        echo '
</div>';
        if (!isset($_GET['reply']) && $this->can_reply || $this->thread->data_rel) {
            echo '
<form action="innboks" method="post">
	<input type="hidden" name="it_id[]" value="' . $this->thread->id . '" />' . ($this->thread->data_rel ? '
	<p class="im_tools bottom left" id="im_mark"></p>' : '') . '
	<p class="im_tools bottom">' . (!isset($_GET['reply']) && $this->can_reply ? '
		' . show_sbutton("Opprett svar", 'name="reply" accesskey="s"', 'reply_link_form_show') : '') . ($this->thread->data_rel ? '
		<span class="red">' . show_sbutton("Slett", 'name="slett"  accesskey="d" onclick="return confirm(\'Er du sikker på at du vil slette meldingen?\')"') . '</span>' : '') . '
	</p>
</form>';
        }
        // flere sider?
        if ($this->pagei->pages > 1) {
            echo '
<p class="c center w200">' . $this->pagei->pagenumbers(array("goto")) . '</p>';
        }
        echo '
<div class="clear"></div>';
        $this->add_css();
        $this->add_js($last_id);
        $this->load_page();
    }
示例#3
0
文件: angrip.php 项目: Kuzat/kofradia
    /**
     * Våpentrening
     */
    protected function page_training_show()
    {
        // sett opp og test for anti-bot
        $this->training_antibot = new antibot(login::$user->id, "training", 7);
        if (MAIN_SERVER) {
            $this->training_antibot->check_required();
        }
        // sett opp skjema
        $this->training_form = \Kofradia\Form::getByDomain("training", login::$user);
        // ventetid?
        $wait = max(0, login::$user->player->data['up_weapon_training_next'] - time());
        // skal vi trene våpenet?
        if (isset($_POST['wt']) && $this->training_form->validateHashOrAlert(null, "Våpentrening")) {
            // kan vi ikke trene nå?
            if ($wait > 0) {
                redirect::handle();
            }
            // finnes ikke valget?
            $id = (int) postval("training_id");
            if (!isset(self::$trainings[$id])) {
                ess::$b->page->add_message("Du må velge et alternativ.", "error");
                redirect::handle();
            }
            $opt = self::$trainings[$id];
            // lagre valget for neste gang
            ess::session_put("training_id", $id);
            // har ikke nok cash?
            if ($opt['price'] > login::$user->player->data['up_cash']) {
                ess::$b->page->add_message("Du har ikke nok penger til å utføre våpentreningen.");
                redirect::handle();
            }
            $f = self::TRAINING_MAX * $opt['percent'];
            $next_old = login::$user->player->data['up_weapon_training_next'] ? ' = ' . login::$user->player->data['up_weapon_training_next'] : ' IS NULL';
            // utfør våpentrening
            $a = \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_weapon_training = up_weapon_training + (1 - up_weapon_training) * {$f}, up_weapon_training_next = " . (time() + $opt['wait']) . ", up_cash = up_cash - {$opt['price']}\n\t\t\t\tWHERE up_id = " . login::$user->player->id . " AND up_cash >= {$opt['price']} AND up_weapon_training_next{$next_old}");
            // ikke oppdatert?
            if ($a == 0) {
                ess::$b->page->add_message("Kunne ikke utføre våpentrening.", "error");
            } else {
                $this->training_antibot->increase_counter();
                ess::$b->page->add_message("Du trente opp våpenet ditt og våpentreningen økte med " . game::format_num((1 - login::$user->player->data['up_weapon_training']) * $f * 100, 2) . " %.");
            }
            redirect::handle();
        }
        $training = login::$user->player->data['up_weapon_training'] * 100;
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Våpentrening<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
        if ($wait > 0) {
            echo '
		<p class="c">Du må vente ' . game::counter($wait, true) . ' før du kan trene våpenet på nytt.</p>';
        } else {
            // vis alternativene
            echo '
		<form action="" method="post">
			' . $this->training_form->getHTMLInput() . '
			<table class="table tablemt center">
				<thead>
					<tr>
						<th>Pris</th>
						<th>Ventetid</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            $match = ess::session_get("training_id") ?: 0;
            foreach (self::$trainings as $id => $row) {
                echo '
					<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
						<td class="r"><input type="radio" name="training_id"' . ($match == $id ? ' checked="checked"' : '') . ' value="' . $id . '" />' . game::format_cash($row['price']) . '</td>
						<td class="r">' . game::timespan($row['wait']) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . show_sbutton("Utfør", 'name="wt"') . '</p>
		</form>';
        }
        echo '
		<div class="progressbar p' . ($training < 28 ? ' levelcrit' : ($training < 35 ? ' levelwarn' : '')) . '">
			<div class="progress" style="width: ' . round(min(100, $training)) . '%">
				<p>Våpentrening: ' . ($training == 100 ? '100' : game::format_num($training, 2)) . ' %</p>
			</div>
		</div>
		<p>Du har en <b>' . htmlspecialchars(login::$user->player->weapon->data['name']) . '</b> med <b>' . game::format_num(login::$user->player->data['up_weapon_bullets']) . '</b> ' . fword('kule', 'kuler', login::$user->player->data['up_weapon_bullets']) . '.</p>
		<p>Våpentreningen din synker jevnlig i løpet av dagen, og du er nødt til å trene for å holde oppe våpentreningen din. Hvis våpentreningen din faller under 25 %, risikerer du å miste våpenet ditt.</p>
		<p>Bedre våpentrening fører til:</p>
		<ul class="spacer">
			<li>Du forbedrer treffsikkerheten din</li>
			<li>Du øker skuddtakten samtidig som treffsikkerheten forblir den samme</li>
		</ul>
	</div>
</div>';
    }
示例#4
0
    function step3()
    {
        $referers = array(1 => array("Via google eller en annen søkeside", false), array("En venn tipset meg", false), array("Leste det på en nettside", "Lenke til nettsiden"), array("Så en reklameannonse", "Lenke til nettsiden"), array("Så det i et forum", "Lenke til forumet"), array("Annet", "Spesifiser"));
        // er skjemaet sendt inn?
        if ($_SERVER['REQUEST_METHOD'] == "POST") {
            // sjekk for gyldig trinn
            if (!isset($_POST['step']) || $_POST['step'] != 3) {
                redirect::handle();
            }
            // spillernavn, passord1, passord2, referer1, referer2
            $brukernavn = postval("brukernavn");
            $passord1 = postval("passord1");
            $passord2 = postval("passord2");
            $referer1 = postval("referer1");
            $referer2 = trim(postval("referer2"));
            // diverse spørringer
            $result1 = \Kofradia\DB::get()->query("SELECT " . \Kofradia\DB::quoteNoNull($brukernavn) . " REGEXP regex AS m, error FROM regex_checks WHERE (type = 'reg_user_special' OR type = 'reg_user_strength') HAVING m = 1");
            $result2 = \Kofradia\DB::get()->query("SELECT up_id FROM users_players WHERE up_name = " . \Kofradia\DB::quote($brukernavn));
            $result3 = \Kofradia\DB::get()->query("SELECT id FROM registration WHERE user = "******"SELECT " . \Kofradia\DB::quoteNoNull($passord1) . " REGEXP regex AS m, error FROM regex_checks WHERE type = 'reg_pass' HAVING m = 1");
            // sjekk spillernavn
            if ($result1->rowCount() > 0) {
                $feil = array();
                while ($row = $result1->fetch()) {
                    $feil[] = '<li>' . htmlspecialchars($row['error']) . '</li>';
                }
                ess::$b->page->add_message("Spillernavnet var ikke gyldig:<ul>" . implode("", $feil) . "</ul>", "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");
            } elseif ($result4->rowCount() > 0) {
                $feil = array();
                while ($row = $result4->fetch()) {
                    $feil[] = '<li>' . htmlspecialchars($row['error']) . '</li>';
                }
                ess::$b->page->add_message("Passordet var ikke gyldig:<ul>" . implode("", $feil) . "</ul>", "error");
            } elseif ($passord1 == $brukernavn) {
                ess::$b->page->add_message("Passordet kan ikke være det samme som spillernavnet.", "error");
            } elseif ($passord1 != $passord2) {
                ess::$b->page->add_message("Passordene var ikke like med hverandre.", "error");
            } elseif (!isset($referers[$referer1])) {
                ess::$b->page->add_message("Velg et gyldig alternativ for hvor du hørte om Kofradia.", "error");
            } elseif ($referers[$referer1][1] && empty($referer2)) {
                ess::$b->page->add_message("Fyll ut feltet for mer informasjon for hvor du hørte om Kofradia.", "error");
            } else {
                $referer = $referers[$referer1][0] . "|" . $referer2;
                // oppdater databasen
                \Kofradia\DB::get()->exec("UPDATE registration SET user = "******", referer = " . \Kofradia\DB::quote($referer) . ", pass = "******" WHERE id = {$this->id}");
                $_SESSION[$GLOBALS['__server']['session_prefix'] . 'reg']['step'] = 4;
                redirect::handle();
            }
        }
        $refs = array();
        foreach ($referers as $ref) {
            if ($ref[1]) {
                $refs[] = "'" . addslashes($ref[1]) . "'";
            } else {
                $refs[] = "false";
            }
        }
        ess::$b->page->add_js('var referers = [false,' . implode(",", $refs) . '];
function checkReferer(elm)
{
	var index = elm.selectedIndex + (elm.options[0].value == "" ? 0 : 1);
	var ref = referers[index];
	var elms = $$(".referer2p");
	var text = $("referer2i");
	if (ref)
	{
		text.innerHTML = ref;
		elms.each(function(elm){elm.setStyle("display", "");});
	}
	else
	{
		elms.each(function(elm){elm.setStyle("display", "none");});
	}
}');
        echo '
<form action="registrer" method="post">
	<input type="hidden" name="abort" />
	<h1>Brukerinformasjon</h1>
	<p class="h_right">' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '</p>
</form>
<p>Det er nå tid for å velge spillernavn og passord. Spillernavnet vil du ikke kunne endre senere, mens passordet kan endres når du ønsker og nullstilles via e-post.</p>
<p>Tips: Trykk &laquo;Gå videre&raquo; for å sjekke om spillernavnet er ledig før du fyller inn passordet for å slippe å fylle inn passordet hver gang.</p>
<boxes />
<form action="registrer" method="post">
	<input type="hidden" name="step" value="3" />
	<dl class="dl_30">
		<dt>Ønsket spillernavn</dt>
		<dd><input type="text" name="brukernavn" value="' . htmlspecialchars(postval("brukernavn")) . '" class="styled w120" /></dd>
		<dt>Passord</dt>
		<dd><input type="password" name="passord1" class="styled w120" /></dd>
		<dt>Gjenta passord</dt>
		<dd><input type="password" name="passord2" class="styled w120" /></dd>
		<dt>Hvor hørte du om Kofradia?</dt>
		<dd>
			<select name="referer1" id="referer_select" onchange="checkReferer(this)">';
        $selected = postval("referer1", false);
        if (!isset($referers[$selected])) {
            echo '
				<option value="">Velg</option>';
        }
        foreach ($referers as $id => $referer) {
            echo '
				<option value="' . $id . '"' . ($selected == $id ? ' selected="selected"' : '') . '>' . $referer[0] . '</option>';
        }
        echo '
			</select>
		</dd>
		<dt class="referer2p" id="referer2i">Spesifiser</dt>
		<dd class="referer2p"><input type="text" name="referer2" value="' . htmlspecialchars(postval("referer2")) . '" class="styled w250" /></dd>
		<dd>' . show_sbutton("Gå videre") . '</dd>
	</dl>
</form>';
        ess::$b->page->add_body_post('<script type="text/javascript">checkReferer($("referer_select"));</script>');
    }
示例#5
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();
    }
示例#6
0
文件: bbtest.php 项目: Kuzat/kofradia
access::no_guest();
$_base->page->add_title("BB-testing");
$_base->page->add_js_domready('
	new Element("input", {"type": "button", "value": "Vis resultat med AJAX", "class": "button"}).addEvent("click", function()
	{
		$("ajaxcontainer").setStyle("display", "block");
		$("ajaxcontent").set("html", "<p>Henter data..</p>");
		preview($("textcontent").value, $("ajaxcontent"));
		
		//preview_bb(event, $("textcontent").value, ["ajaxcontainer"], "ajaxcontent");
	}).inject($("ajaxbutton"));');
echo '
<div class="bg1_c large">
	<h1 class="bg1">BB-testing<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<p>Her kan du teste diverse BB-koder. Du kan også forhåndsvise profilen din på <a href="' . $__server['relative_path'] . '/min_side?a=profil">rediger profil</a>.</p>
		<form action="" method="post">
			<p><b>BB-kode</b>: (<a href="' . ess::$s['relative_path'] . '/node/11">Hjelp</a>)</p>
			<p><textarea name="bb" rows="13" cols="100" style="width: 97%" id="textcontent">' . htmlspecialchars(postval("bb")) . '</textarea></p>
			<p class="c">' . show_sbutton("Vis resultat") . ' <span id="ajaxbutton"></span></p>
		</form>
	</div>
</div>

<div class="bg1_c large' . (!isset($_POST['bb']) ? ' hide' : '') . '" id="ajaxcontainer">
	<h1 class="bg1">Resultat<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<div class="p" id="ajaxcontent">' . game::bb_to_html(postval("bb")) . '</div>
	</div>
</div>';
$_base->page->load();
示例#7
0
<?php

/**
 * Forhåndsvisning av forumtråd
 * 
 * Inndata:
 * - topic_id [optional]
 * - text
 */
require "../../../app/ajax.php";
ajax::require_user();
// kontroller lås
ajax::validate_lock(true);
global $_base, $_game;
// sett opp tekst
$text = postval("text");
if (empty($text)) {
    $text = "Mangler innhold.";
}
// forhåndsviser vi en redigert forumtråd?
if (isset($_POST['topic_id'])) {
    // hent forumtråden
    $topic = new \Kofradia\Forum\TopicAjax($_POST['topic_id']);
    // sett opp data
    $data = $topic->extended_info();
    $data['ft_text'] = $text;
    $data['ft_last_edit'] = time();
    $data['ft_last_edit_up_id'] = login::$user->player->id;
} else {
    // sett opp data
    $data = array("ft_text" => $text);
示例#8
0
 /**
  * Kontroller inndata og utfør utpressing
  */
 public function utpress()
 {
     // wait time?
     if (($wait = $this->ut->getWait()) > 0) {
         \ess::$b->page->add_message("Du må vente " . \game::counter($wait, true) . " før du kan utføre en ny utpressing.", "error");
         return;
     }
     // validate form
     $form_info = '';
     if ($this->ut->up->data['up_utpressing_last']) {
         $form_info = sprintf("Siste=%s;", \game::timespan($this->ut->up->data['up_utpressing_last'], \game::TIME_ABS | \game::TIME_SHORT | \game::TIME_NOBOLD));
     } else {
         $form_info = "First;";
     }
     if ($wait) {
         $form_info .= sprintf("%%c11Ventetid=%s%%c", \game::timespan($wait, \game::TIME_SHORT | \game::TIME_NOBOLD));
     } else {
         $form_info .= "%c9No-wait%c";
     }
     if (!$this->form->validateHashOrAlert(postval('hash'), $form_info)) {
         return;
     }
     // mangler alternativ?
     $option = $this->ut->getOption(postval("opt"));
     if (!$option) {
         \ess::$b->page->add_message("Du må velge et alternativ.", "error");
         return;
     }
     // lagre valg for neste gang
     \ess::session_put("utpressing_opt_key", postval("opt"));
     // forsøk utpressing
     $result = $this->ut->utpress($option);
     if ($msg = $result->getMessage()) {
         \ess::$b->page->add_message($msg);
     }
     // oppdater anti-bot
     $this->antibot->increase_counter();
 }
示例#9
0
access::need("crewet");
if (!isset($_POST['u_id'])) {
    ajax::text("ERROR", ajax::TYPE_INVALID);
}
// sjekk bruker
$user = user::get($_POST['u_id']);
if (!$user) {
    ajax::text("ERROR:USER-404", ajax::TYPE_404);
}
// hente rapporteringer MOT brukeren?
$data = "";
if (postval("a") == "to") {
    $data .= '
<p class="c">Andre brukere som har rapportert denne brukeren.</p>';
    $where = " AND r_up_id = up_id";
} elseif (postval("a") == "from") {
    $data .= '
<p class="c">Rapporteringer som brukeren selv har opprettet.</p>';
    $where = " AND r_source_up_id = up_id";
} else {
    $data .= '
<p class="c">Alle rapporteringer denne brukeren er involvert i.</p>';
    $where = " AND (r_source_up_id = up_id OR r_up_id = up_id)";
}
$pagei = new pagei(pagei::ACTIVE_POST, "s", pagei::PER_PAGE, 10);
$result = $pagei->query("\n\tSELECT r_id, r_source_up_id, r_up_id, r_type, r_type_id, r_time, r_note, r_state, r_crew_up_id, r_crew_note, r_crew_time\n\tFROM rapportering, users_players\n\tWHERE up_u_id = {$user->id}{$where}\n\tORDER BY IFNULL(r_crew_time, r_time) DESC");
if ($pagei->total == 0) {
    ajax::html(parse_html($data . '
<p class="c">Ingen oppføringer ble funnet.</p>'));
}
$raps = array();
示例#10
0
    /**
     * Vis fengsel
     */
    protected function show()
    {
        // er vi i fengsel nå?
        if ($wait = $this->up->fengsel_wait()) {
            ess::$b->page->add_js_domready('$("fengsel_dusor").focus();');
            echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Du er i fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<p>Du befinner deg for øyeblikket i fengsel og slipper ut om ' . game::counter($wait, true) . '.</p>' . (!$this->up->is_nostat() ? '
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="expire" value="' . $this->up->data['up_fengsel_time'] . '" />
			<dl class="dd_right">
				<dt>Dusør for å bryte deg ut</dt>
				<dd><input type="text" class="styled w80" name="amount" id="fengsel_dusor" value="' . game::format_cash($this->up->data['up_fengsel_dusor']) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton($this->up->data['up_fengsel_dusor'] > 0 ? "Endre dusør" : "Sett dusør", 'name="dusor"') . '</p>
			<p class="c">Spilleren som bryter ut mottar kun ' . self::DUSOR_PROFIT * 100 . ' % av dusøren.</p>
		</form>' : '') . '
	</div>
</div>';
        }
        // sortering
        $sort = new sorts("sort");
        $sort->append("asc", "Spiller", "up_name");
        $sort->append("desc", "Spiller", "up_name DESC");
        $sort->append("asc", "Wanted nivå", "up_wanted_level, up_fengsel_time DESC");
        $sort->append("desc", "Wanted nivå", "up_wanted_level DESC, up_fengsel_time DESC");
        $sort->append("asc", "Tid igjen", "up_fengsel_time");
        $sort->append("desc", "Tid igjen", "up_fengsel_time DESC");
        $sort->set_active(requestval("sort"), 5);
        // hent folk i fengsel
        $sort_info = $sort->active();
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
        $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_fengsel_time, up_fengsel_num, up_fengsel_dusor, ROUND(up_fengsel_dusor * " . self::DUSOR_PROFIT . ") up_fengsel_dusor_get, up_wanted_level\n\t\t\tFROM users_players\n\t\t\tWHERE up_fengsel_time > " . time() . " AND up_access_level != 0\n\t\t\tORDER BY {$sort_info['params']}");
        $num = $result->rowCount();
        echo '
<div class="bg1_c ' . ($num == 0 ? 'xsmall' : 'xlarge') . '">
	<h1 class="bg1">Fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<form action="" method="post">
			<p class="c dark">Ditt wanted nivå er på ' . game::format_number($this->up->data['up_wanted_level'] / 10, 1) . ' %.</p>';
        if ($num == 0) {
            echo '
			<p class="c dark">Ingen er i fengselet for øyeblikket.</p>
			<p class="c"><a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a></p>';
        } else {
            echo '
			<table class="table center" width="100%">
				<thead>
					<tr>
						<th>Spiller ' . $sort->show_link(0, 1) . '</th>
						<th>Wanted<br />nivå ' . $sort->show_link(2, 3) . '</th>
						<th>Utbrytning<br />sannsynlighet</th>
						<th>Ca. poeng</th>
						<th>Dusør</th>
						<th>Tid igjen ' . $sort->show_link(4, 5) . '</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $prefix = "";
                $attr = new attr("class");
                if (++$i % 2 == 0) {
                    $attr->add("color");
                }
                if (!$this->up->fengsel_check()) {
                    $attr->add("box_handle");
                    $prefix = '<input type="radio" name="up_id" value="' . $row['up_id'] . '_' . $row['up_fengsel_time'] . '_' . $row['up_fengsel_dusor'] . '" /> ';
                }
                $time = $row['up_fengsel_time'] - time();
                $prob = self::calc_prob($time, $row['up_wanted_level'] / 10);
                $points = self::calc_points($prob);
                echo '
					<tr' . $attr->build() . '>
						<td>' . $prefix . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td>
						<td class="c">' . game::format_number($row['up_wanted_level'] / 10, 1) . ' %</td>
						<td class="c">' . game::format_number($prob, 1) . ' %</td>
						<td class="c">' . game::format_num($points) . '</td>
						<td class="r nowrap">' . game::format_cash($row['up_fengsel_dusor_get']) . '</td>
						<td class="r">' . game::counter($time) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . (($wait = $this->up->fengsel_wait()) == 0 ? '
				' . show_sbutton("Bryt ut", 'name="brytut"') : '
				Du er i fengsel og slipper ut om ' . game::counter($wait, true) . '.
			</p>
			<p class="c">') . '
				<a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a>
			</p>';
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
			<div class="hr"></div>
			<p class="c">
				' . $pagei->pagenumbers() . '
			</p>';
            }
        }
        echo '
		</form>
	</div>
</div>';
        // testing
        if (!MAIN_SERVER || access::is_nostat() && access::has("mod")) {
            echo '
<div class="bg1_c xxsmall bg1_padding">
	<h1 class="bg1">' . (MAIN_SERVER ? 'No-stat' : 'Testing') . '<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<form action="" method="post">' . ($this->up->fengsel_check() ? '
			<p class="c">' . show_sbutton("Gå ut av fengsel", 'name="remove"') . '</p>' : '
			<dl class="dd_right dl_2x">
				<dt>Tid</dt>
				<dd><input type="text" name="time" value="' . htmlspecialchars(postval("time", 20)) . '" class="styled w40" /> sekunder</dd>
			</dl>
			<p class="c">' . show_sbutton("Gå inn i fensgel") . '</p>') . '
		</form>
	</div>
</div>';
        }
    }
示例#11
0
}
echo '
			</dd>
			
			<dt>&nbsp;</dt>
			<dd><input type="radio" id="f_' . $key . '" name="f" value="' . $key . '"' . ($search_from_id == $key ? ' checked="checked"' : '') . ' onclick="$(\'u_name\').focus()" /><label for="f_' . $key . '"> Spesifiser: </label><input type="text" name="u" value="' . htmlspecialchars(postval("u")) . '" class="styled w100" id="u_name" onfocus="$(\'f_' . $key . '\').checked=true" /></dd>
		</dl>
		<h3 class="c">
			' . show_sbutton("Utfør søk", 'name="search"') . '
		</h3>
	</div>
</form>';
// søke?
if (isset($_POST['search'])) {
    $title_search = postval("title");
    $text_search = postval("text");
    // finn ut delene av spørringen
    $title_parts = search_query($title_search);
    $text_parts = search_query($text_search);
    if (count($title_parts[0]) == 0 && count($text_parts[0]) == 0 && $search_from_id != 4) {
        echo '
<h2>
	Søkeresultater
</h2>
<p>
	Skal du ikke søke etter noe?!
</p>';
    } else {
        // sett opp søkespørringen
        $search = "";
        if (count($title_parts[0]) > 0) {
示例#12
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>';
        }
    }
示例#13
0
 public function handle_check_start()
 {
     // vise resultat?
     if ($this->data['poker_state'] == self::STATE_COMPLETE) {
         $this->mark_seen_starter();
     } elseif ($this->data['poker_state'] == self::STATE_FREE) {
         // kan trekkes tilbake?
         $this->can_pullback = access::has("admin") || $this->data['poker_time_start'] + self::PULLBACK_TIME <= time();
         // ønsker vi å trekke tilbake?
         if ($this->can_pullback && isset($_POST['pullback'])) {
             // kontroller ID
             if (postval("pullback") != $this->id) {
                 redirect::handle();
             }
             // trekk tilbake
             if ($this->pullback()) {
                 ess::$b->page->add_message("Du trakk tilbake pokerunden din og fikk tilbake " . game::format_cash($this->data['poker_cash']) . ".");
             }
             redirect::handle();
         }
     } elseif ($this->data['poker_state'] == self::STATE_BEGIN) {
         // har vi valgt ut kort?
         if (isset($_POST['state1'])) {
             // kontroller ID
             if (postval("state1") != $this->id) {
                 redirect::handle();
             }
             // beholde noen kort?
             $replace = array(0, 1, 2, 3, 4);
             if (isset($_POST['kort']) && is_array($_POST['kort'])) {
                 // gå gjennom hver og fjern fra den vi skal beholde
                 for ($i = 0; $i < 5; $i++) {
                     if (isset($_POST['kort'][$i])) {
                         unset($replace[$i]);
                     }
                 }
             }
             $this->starter_replace_cards($replace);
             $dont_save = access::has("admin") && isset($_POST['renew']);
             $res = $this->start_save($dont_save);
             if (!$dont_save || !$res) {
                 redirect::handle();
             }
         }
     }
     $this->show(self::SHOW_STARTER);
 }
示例#14
0
 /**
  * Utfør kriminalitet
  */
 protected function utfor()
 {
     // form sjekking
     if (!$this->form->validateHashOrAlert(null, ($this->krim->last ? "Siste=" . game::timespan($this->krim->last['last'], game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD) . ";" : "First;") . ($this->krim->wait ? "%c11Ventetid=" . game::timespan($this->krim->wait, game::TIME_SHORT | game::TIME_NOBOLD) . "%c" : "%c9No-wait%c"))) {
         return;
     }
     // kontroller at vi ikke har noe ventetid
     if ($this->krim->wait) {
         redirect::handle();
     }
     // finn id
     $id = intval(postval("theid"));
     if (!$id) {
         $found = false;
         foreach ($_POST as $name => $val) {
             $matches = false;
             if (preg_match("/^id([1-9]+|[1-9][0-9]+)\$/Du", $name, $matches)) {
                 $id = $matches[1];
             }
         }
     }
     // har ikke oppføringen?
     if (!isset($this->krim->options[$id])) {
         ess::$b->page->add_message("Ugyldig valg.", "error");
         redirect::handle();
     }
     // lagre valget
     ess::session_put("krim_last_id", $id);
     // utfør kriminalitet
     $result = $this->krim->utfor($id);
     $fengsel_msg = $result['wanted_change'] > 0 ? ' Wanted nivået økte med ' . game::format_number($result['wanted_change'] / 10, 1) . ' %.' : '';
     $msg = $result['success'] ? $this->krim->get_random_message($id, true, $result['cash'], $result['rank']) : $this->krim->get_random_message($id, false);
     ess::$b->page->add_message($msg . $fengsel_msg);
     // oppdater anti-bot
     $this->antibot->increase_counter();
     // oppdater siden
     redirect::handle();
 }
示例#15
0
文件: banken.php 项目: Kuzat/kofradia
    /**
     * Vis banken
     */
    protected function show()
    {
        ess::$b->page->add_js('
var user_bank = ' . js_encode(game::format_cash($this->up->data['up_bank'])) . ';
var user_cash = ' . js_encode(game::format_cash($this->up->data['up_cash'])) . ';');
        ess::$b->page->add_js_domready('
	$$(".bank_amount_set").each(function(elm)
	{
		var amount = elm.get("rel").substring(0, 4) == "bank" ? user_bank : user_cash;
		var e_id = elm.get("rel").substring(5);
		elm
			.appendText(" (")
			.grab(new Element("a", {"text":"alt"}).addEvent("click", function()
			{
				$(e_id).set("value", amount);
			}))
			.appendText(")");
	});');
        echo '
<div class="bg1_c small" style="width: 420px">
	<h1 class="bg1">
		Banken
		<span class="left"></span><span class="right"></span>
	</h1>
	<p class="h_left">
		<a href="' . ess::$s['rpath'] . '/node/31">Hjelp</a>
	</p>
	<p class="h_right">' . (!isset(login::$extended_access['authed']) ? '
		<a href="banken?logout">Logg ut av banken</a>' : '') . '
		<a href="banken?authc">Endre pass</a>
	</p>
	<div class="bg1" style="padding: 0 15px">
		<!-- bankkonto informasjon -->
		<div style="width: 50%; margin-left: -5px; float: left">
			<h2 class="bg1">Bankkonto informasjon<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<dl class="dd_right">
					<dt>Kontoeier</dt>
					<dd>' . game::profile_link() . '</dd>
					<dt>Bankfirma</dt>
					<dd><a href="ff/?ff_id=' . $this->bank->id . '">' . htmlspecialchars($this->bank->data['ff_name']) . '</a></dd>
					<dt><abbr title="Overføringstap">Overf.tap</abbr></dt>
					<dd>' . $this->bank->overforingstap * 100 . ' %</dd>
					<dt>Plassering</dt>
					<dd>' . (!isset(game::$bydeler[$this->bank->data['br_b_id']]) ? '<span style="color: #777777">Ukjent</span>' : htmlspecialchars(game::$bydeler[$this->bank->data['br_b_id']]['name'])) . '</dd>
					<dt>Balanse</dt>
					<dd>' . game::format_cash($this->up->data['up_bank']) . '</dd>
				</dl>
				<p class="c">
					<a href="javascript:void(0)" onclick="this.parentNode.style.display=\'none\'; document.getElementById(\'bank_stats\').style.display=\'block\'">Vis statistikk</a>
				</p>
				<div id="bank_stats" style="display: none">
					<dl class="dd_right">
						<dt>Sendt</dt>
						<dd>' . game::format_number($this->up->data['up_bank_num_sent']) . ' stk</dd>
						<dd>' . game::format_cash($this->up->data['up_bank_sent']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt>Mottatt</dt>
						<dd>' . game::format_number($this->up->data['up_bank_num_received']) . ' stk</dd>
						<dd>' . game::format_cash($this->up->data['up_bank_received']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt>Overskudd</dt>
						<dd>' . game::format_cash($this->up->data['up_bank_profit']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt><abbr title="Overføringstap">Overf.tap</abbr></dt>
						<dd>' . game::format_cash($this->up->data['up_bank_charge']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt>Renter</dt>
						<dd>' . game::format_number($this->up->data['up_interest_num']) . ' stk</dd>
						<dd>' . game::format_cash($this->up->data['up_interest_total']) . '</dd>
					</dl>
				</div>
				<form action="" method="post">
					<p class="c">' . show_sbutton("Bytt bank", 'name="switch"') . '</p>
				</form>
			</div>
		</div>
		
		<!-- send penger -->
		<div style="width: 50%; margin-right: -5px; float: right">
			<h2 class="bg1">Send penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<form action="" method="post">
					<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
					<input type="hidden" name="a" value="send" />
					<dl class="dd_right dl_2x">
						<dt>Mottaker</dt>
						<dd><input type="text" name="mottaker" value="' . htmlspecialchars(postval("mottaker")) . '" class="styled w100" /></dd>
		
						<dt>Kontakt?</dt>
						<dd>
							<select onchange="if(this.value==\'\')var name=prompt(\'Brukernavn?\');else var name=this.value;if(name)document.getElementsByName(\'mottaker\')[0].value=name;this.selectedIndex=0" style="width: 110px; overflow: hidden">
								<option>Velg kontakt</option>';
        foreach (login::$info['contacts'][1] as $row) {
            echo '
								<option value="' . htmlspecialchars($row['up_name']) . '">' . htmlspecialchars($row['up_name']) . '</option>';
        }
        echo '
								<option value="">Egendefinert..</option>
							</select>
						</dd>
		
						<dt class="bank_amount_set" rel="bank,transf_amount">Beløp</dt>
						<dd><input type="text" id="transf_amount" name="amount" class="styled w100" value="' . game::format_cash(postval("amount", 0)) . '" /></dd>
		
						<dt>Melding?</dt>
						<dd><input type="text" name="note" value="' . htmlspecialchars(postval("note")) . '" class="styled w100" maxlength="100" /></dd>';
        // hoppe over overføringsgebyret?
        if (access::is_nostat()) {
            echo '
						<dt>Uten gebyr?</dt>
						<dd><input type="checkbox" name="skip_bog"' . (isset($_POST['skip_bog']) ? ' checked="checked"' : '') . ' /></dd>';
        }
        echo '
					</dl>
					<p class="c">' . show_sbutton("Fortsett") . '</p>
				</form>
			</div>
		</div>
		<div class="clear"></div>
		
		<!-- sett inn penger -->
		<div style="width: 50%; margin-left: -5px; float: left">
			<h2 class="bg1">Sett inn penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<form action="" method="post">
					<dl class="dd_right">
						<dt class="bank_amount_set" rel="cash,bank_sett_inn">Beløp</dt>
						<dd><input type="text" name="sett_inn" id="bank_sett_inn" class="styled w100" value="0" /></dd>
					</dl>
					<p class="c">' . show_sbutton("Sett inn") . '</p>
				</form>
			</div>
		</div>
		
		<!-- ta ut penger -->
		<div style="width: 50%; margin-right: -5px; float: right">
			<h2 class="bg1">Ta ut penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<form action="" method="post">
					<dl class="dd_right">
						<dt class="bank_amount_set" rel="bank,bank_ta_ut">Beløp</dt>
						<dd><input type="text" name="ta_ut" id="bank_ta_ut" class="styled w100" value="0" /></dd>
					</dl>
					<p class="c">' . show_sbutton("Ta ut") . '</p>
				</form>
			</div>
		</div>
		<div class="clear"></div>
	</div>
</div>

<div class="bg1_c large" style="margin-top: 40px">
	<h1 class="bg1">Oversikt<span class="left"></span><span class="right"></span></h1>
	<div class="bg1" style="padding: 0 15px">
		<!-- sendte penger -->
		<div style="width: 50%; margin-left: -5px; float: left">
			<h2 class="bg1">Sendte penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">';
        // sideinformasjon - hent sendte overføringer
        $pagei = new pagei(pagei::ACTIVE_GET, "side_sendte", pagei::PER_PAGE, 8, pagei::TOTAL, $this->up->data['up_bank_num_sent']);
        $result = \Kofradia\DB::get()->query("SELECT bl_receiver_up_id, amount, time FROM bank_log WHERE bl_sender_up_id = " . $this->up->id . " ORDER BY time DESC LIMIT {$pagei->start}, {$pagei->per_page}");
        if ($result->rowCount() == 0) {
            echo '
				<p>
					Ingen sendte overføringer.
				</p>';
        } else {
            echo '
				<table class="table tablemt" width="100%">
					<thead>
						<tr>
							<th>Mottaker</th>
							<th>Beløp</th>
							<th>Tidspunkt</th>
						</tr>
					</thead>
					<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $date = ess::$b->date->get($row['time']);
                echo '
						<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
							<td><user id="' . $row['bl_receiver_up_id'] . '" /></td>
							<td class="r">' . game::format_cash($row['amount']) . '</td>
							<td class="c" style="font-size: 10px">' . $date->format(date::FORMAT_NOTIME) . '<br />' . $date->format("H:i:s") . '</td>
						</tr>';
            }
            echo '
					</tbody>
				</table>
				<p class="c">' . $pagei->pagenumbers(game::address("banken", $_GET, array("side_sendte")) . "#sendte", game::address("banken", $_GET, array("side_sendte"), array("side_sendte" => "_pageid_")) . "#sendte") . '</p>';
        }
        echo '
			</div>
		</div>
		
		<!-- mottatte penger -->
		<div style="width: 50%; margin-right: -5px; float: right">
			<h2 class="bg1">Mottatte penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">';
        // sideinformasjon - hent mottatte overføringer
        $pagei = new pagei(pagei::ACTIVE_GET, "side_mottatte", pagei::PER_PAGE, 8, pagei::TOTAL, $this->up->data['up_bank_num_received']);
        $result = \Kofradia\DB::get()->query("SELECT bl_sender_up_id, amount, time FROM bank_log WHERE bl_receiver_up_id = " . $this->up->id . " ORDER BY time DESC LIMIT {$pagei->start}, {$pagei->per_page}");
        if ($result->rowCount() == 0) {
            echo '
				<p>
					Ingen mottatte overføringer.
				</p>';
        } else {
            echo '
				<table class="table tablemt" width="100%">
					<thead>
						<tr>
							<th>Sender</th>
							<th>Beløp</th>
							<th>Tidspunkt</th>
						</tr>
					</thead>
					<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $date = ess::$b->date->get($row['time']);
                echo '
						<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
							<td><user id="' . $row['bl_sender_up_id'] . '" /></td>
							<td class="r">' . game::format_cash($row['amount']) . '</td>
							<td class="c" style="font-size: 10px">' . $date->format(date::FORMAT_NOTIME) . '<br />' . $date->format("H:i:s") . '</td>
						</tr>';
            }
            echo '
					</tbody>
				</table>
				<p class="c">' . $pagei->pagenumbers(game::address("banken", $_GET, array("side_mottatte")) . "#mottatte", game::address("banken", $_GET, array("side_mottatte"), array("side_mottatte" => "_pageid_")) . "#mottatte") . '</p>';
        }
        echo '
			</div>
		</div>
		<div class="clear"></div>
	</div>
</div>';
    }
示例#16
0
文件: index.php 项目: Kuzat/kofradia
		<form action="" method="post">
			<p><input type="submit" name="wpFjern" value="Fjern fra Kofradia kontoen" class="button" onclick="return confirm(\'Er du sikker på at du ønsker å fjerne WhatPulse informasjonen fra Kofradia kontoen din?\')" /></p>
		</form>
	</div>
</div>';
    } else {
        // hent ut hvilke felt vi skal vise
        $fields = $wp->params->get("fields");
        if (empty($fields)) {
            $fields = array();
        } else {
            $fields = explode(",", $fields);
        }
        // endre felt?
        if (isset($_POST['wpFelt'])) {
            $felt = postval("wpFelt");
            // ugyldig?
            if (mb_substr($felt, 0, 5) != "felt:") {
                $_base->page->add_message("Det ser ut som du ikke har JavaScript aktivert i din nettleser.", "error");
            } else {
                $felt = explode(",", mb_substr($felt, 5));
                $aktive = array();
                foreach ($felt as $name) {
                    // seperator?
                    if ($name == "-") {
                        if (count($aktive) > 0 && end($aktive) != "-") {
                            $aktive[] = "-";
                        }
                    }
                    // finnes feltet?
                    if (isset($wpFelt[$name]) && !in_array($name, $aktive)) {
示例#17
0
<?php

/**
 * Hent raw data for et forumsvar
 * 
 * Inndata:
 * - sid
 * - topic_id
 * - reply_id
 */
require "../../../app/ajax.php";
ajax::validate_sid();
// kontroller lås
ajax::validate_lock(true);
// hent forumtråd
$topic = new \Kofradia\Forum\TopicAjax(postval("topic_id"));
// hent forumsvaret
$reply = $topic->get_reply(postval("reply_id"));
// fant ikke forumsvaret?
if (!$reply) {
    ajax::text("ERROR:404-REPLY", ajax::TYPE_INVALID);
}
// krev tilgang til forumsvaret
$reply->require_access();
// send tilbake data
ajax::text($reply->info['fr_text']);
示例#18
0
文件: Login.php 项目: Kuzat/kofradia
 public function action_index()
 {
     // vis feilmelding hvis noen
     if ($err = $this->show_errors()) {
         return $err;
     }
     #ess::$b->page->add_title("Logg inn");
     #ess::$b->page->theme_file = "logginn";
     // tillate logginn uten passord
     $devlogin = !MAIN_SERVER;
     if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['id'])) {
         // skjekk logg inn formen
         $err = false;
         $id = postval("id");
         $pass = postval("passord");
         if (empty($id) && empty($pass) && !$devlogin) {
             \ess::$b->page->add_message("Mangler ID og passord.", "error", 'login');
             $err = true;
         } elseif (empty($id)) {
             // mangler id
             \ess::$b->page->add_message("Mangler ID.", "error", 'login');
             $err = true;
         } elseif (empty($pass) && !$devlogin) {
             // mangler passord
             \ess::$b->page->add_message("Mangler passord.", "error", 'login');
             $err = true;
         }
         $type = intval(postval('expire_type'));
         if ($type < 0 || $type > 2) {
             // ugyldig expire type
             \ess::$b->page->add_message("Ugyldig expire type!", "error", 'login');
             $err = true;
         }
         // sikker tilkobling?
         $secure_only = isset($_POST['secure_only']);
         if (!$err) {
             // prøv å logg inn
             switch (\login::do_login($id, $pass, $type, true, $secure_only, $devlogin)) {
                 case LOGIN_ERROR_USER_OR_PASS:
                     \ess::$b->page->add_message("Feil ID" . (!$devlogin ? ' eller passord' : '') . ".", "error", 'login');
                     // logg
                     putlog("ABUSE", "%c4%bUGYLDIG BRUKERNAVN/PASSORD:%b%c {$_SERVER['REMOTE_ADDR']} forsøkte å logge inn med ID %u{$id}%u!");
                     break;
                     // utestengt
                 // utestengt
                 case LOGIN_ERROR_ACTIVATE:
                     global $uid;
                     // hent begrunnelse og info
                     $result = \Kofradia\DB::get()->query("SELECT u_id, u_email, u_deactivated_reason, u_deactivated_time, up_name FROM users LEFT JOIN users_players ON up_id = u_active_up_id WHERE u_id = {$uid}");
                     $info = $result->fetch();
                     $_SESSION[$GLOBALS['__server']['session_prefix'] . 'login_error'] = array("deactivated", $info);
                     putlog("ABUSE", "%c8%bLOGG INN - DEAKTIVERT%b%c: %u{$_SERVER['REMOTE_ADDR']}%u forsøkte å logge inn på %u{$info['u_email']}%u som er en deaktivert bruker!");
                     // send til feilside
                     \redirect::handle("", \redirect::ROOT);
                     break;
                 default:
                     if (!\login::$logged_in) {
                         \ess::$b->page->add_message("Ukjent innloggingsfeil!", "error");
                     } else {
                         // logget inn
                         putlog("NOTICE", "%c7%bLOGG INN%b%c: (%u{$_SERVER['REMOTE_ADDR']}%u) %u" . \login::$user->player->data['up_name'] . "%u (" . \login::$user->data['u_email'] . ") ({$_SERVER['HTTP_USER_AGENT']}) " . \ess::$s['path'] . "/min_side?up_id=" . \login::$user->player->id);
                         if (isset($_GET['orign'])) {
                             \redirect::handle($_GET['orign'], \redirect::SERVER, \login::$info['ses_secure']);
                         }
                         \redirect::handle("", NULL, \login::$info['ses_secure']);
                     }
             }
         }
     }
     // spør brukeren etter en spesifikk side?
     if (isset($_GET['orign']) && $_GET['orign'] != "/") {
         \ess::$b->page->add_message("Du må logge inn for å se denne siden.", "error", 'login');
     }
     // sett opp e-posten vi ber om
     $id = '';
     if (isset($_SESSION[$GLOBALS['__server']['session_prefix'] . 'logginn_id'])) {
         $id = $_SESSION[$GLOBALS['__server']['session_prefix'] . 'logginn_id'];
         unset($_SESSION[$GLOBALS['__server']['session_prefix'] . 'logginn_id']);
     }
     $id = requestval("id", $id);
     // expire type
     $expire = 0;
     if (isset($_REQUEST['expire_type'])) {
         $val = intval($_POST['expire_type']);
         if ($val >= 0 && $val <= 2) {
             $expire = $val;
         }
     }
     $r = new \Kofradia\Response();
     $r->data = \Kofradia\View::forgeTwig("users/login/login", array("norobots" => isset($_GET['orign']), "userid" => $id, "expire" => $expire, "secure_only" => isset($_POST['secure_only'])));
     return $r;
 }
示例#19
0
        // 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 '
		<h2 class="bg1" style="margin-top: 20px" id="scroll_here">Søknad #' . $applicant['sa_id'] . '<span class="left2"></span><span class="right2"></span></h2>
		<p class="h_left"><a href="soknader?admin&amp;so_id=' . $soknad['so_id'] . '">&laquo; Tilbake</a></p>
		<div class="bg1">
			<boxes />';
            if ($applicant['sa_status'] == 0) {
示例#20
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();
    }
示例#21
0
<?php

/**
 * Legg til ny forumtråd
 * 
 * Inndata:
 * - sid
 * - forum_id
 * - title
 * - text
 * - type [optional, forum mod]
 * - locked [optional, forum mod]
 */
require "../../../app/ajax.php";
ajax::validate_sid();
// kontroller lås
ajax::validate_lock(true);
global $_base, $_game;
// kontroller forumkategori og tilgang
$forum = new \Kofradia\Forum\CategoryAjax(postval("forum_id"));
$forum->require_access();
// forsøk å legg til forumtråden
$type = isset($_POST['type']) && $forum->fmod ? $_POST['type'] : NULL;
$locked = isset($_POST['locked']) && $forum->fmod ? $_POST['locked'] : NULL;
$forum->add_topic(postval("title"), postval("text"), $type, $locked);
示例#22
0
echo '
				</select>
			</dd>
			<dt>Navn</dt>
			<dd><input type="text" name="name" value="' . htmlspecialchars(postval("name")) . '" id="kontakt_navn" maxlength="30" class="styled w150" /></dd>
			<dt>E-postadresse</dt>
			<dd><input type="text" name="email" value="' . htmlspecialchars(postval("email")) . '" class="styled w150" /></dd>
			<dt>Kort emne</dt>
			<dd><input type="text" name="subject" value="' . htmlspecialchars(postval("subject")) . '" class="styled w150" /></dd>
			<dt>Din henvendelse</dt>
			<dd><textarea name="content" rows="10" cols="35">' . htmlspecialchars(postval("content")) . '</textarea></dd>' . ($preview ? '
			<dt>Forhåndsvisning</dt>
			<dd>' . game::format_data($content) . '</dd>' : '') . '
		</dl>
		<p class="c">' . show_sbutton("Send inn henvendelse", 'name="add"') . ' ' . show_sbutton("Forhåndsvis", 'name="preview"') . '</p>
	</form>
</div>
<div class="section w350 center">
	<h2>Mine henvendelser</h2>
	<p class="j">For å få tilgang til henvendelsene du har sendt inn må du logge inn. Du får ny ID ved hver henvendelse, men alle ID-ene gir deg tilgang til alle henvendelsene.</p>
	<form action="" method="post" autocomplete="off">
		<dl class="dl_30 dl_2x">
			<dt>ID - <a href="henvendelser?forgot">Glemt ID?</a></dt>
			<dd><input type="text" name="id" value="' . htmlspecialchars(postval("id")) . '" class="styled w40" /></dd>
			<dt>E-postadresse</dt>
			<dd><input type="text" name="email" value="' . htmlspecialchars(postval("email")) . '" class="styled w150" /></dd>
		</dl>
		<p class="c">' . show_sbutton("Vis mine henvendelser") . '</p>
	</form>
</div>';
$_base->page->load();
示例#23
0
<?php

require "../../app/ajax.php";
ajax::require_user();
global $_base;
// mangler brukerid?
if (!isset($_POST['q'])) {
    ajax::text("ERROR:MISSING", ajax::TYPE_INVALID);
}
$q = $_POST['q'];
// limit
$limit = intval(min(100, max(1, postval("limit", 10))));
// ekskluder?
$exclude = "";
$exclude_ids = array();
if (isset($_POST['exclude'])) {
    $exclude_ids = array_unique(array_map("intval", explode(",", $_POST['exclude'])));
    if (count($exclude_ids) > 0) {
        $exclude = "up_id NOT IN (" . implode(",", $exclude_ids) . ") AND ";
    }
}
// ignorere egne deaktiverte spillere?
if (isset($_POST['is'])) {
    $exclude .= "up_u_id != " . login::$user->id . " AND ";
}
// hent brukere
$q2 = \Kofradia\DB::quote(str_replace("_", "\\_", $q));
$result = \Kofradia\DB::get()->query("SELECT SQL_CALC_FOUND_ROWS up_id, up_name, up_access_level FROM users_players WHERE {$exclude}up_name LIKE {$q2} ORDER BY LENGTH(up_name), up_name LIMIT {$limit}");
$result2 = \Kofradia\DB::get()->query("SELECT FOUND_ROWS()");
$num = $result2->fetchColumn(0);
// logg
示例#24
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;
    }
示例#25
0
    /**
     * Vis siden for å sende melding
     */
    protected function show()
    {
        // mottakere til uten JS
        $list = array();
        foreach ($this->receivers as $row) {
            $list[] = $row['up_name'];
        }
        $list = implode(",", $list);
        echo '
<div class="page_w0">
<h1>Ny melding</h1>
<p class="h_right" style="margin: -23px 0 0 0 !important"><a href="innboks">Tilbake til meldinger</a></p>
<form action="" method="post" onsubmit="return innboks_ny.submit()" id="rec_form">
	<div class="section">
		<h3>Innhold</h3>
		<dl class="dd_auto_100">
			<dt>Mottakere <span id="rec_s"></span></dt>
			<dd>
				<input type="text" name="receivers" value="' . htmlspecialchars(postval("receivers", $list)) . '" class="styled w300" id="rec" />
				<noscript>Separer med komma (,).</noscript>
				<div id="rec_new" class="section">
					<h3>Legg til mottaker</h3>
					<dl class="dl_20 dl_2x">
						<dt>Navn</dt>
						<dd><input type="text" class="styled w100" /></dd>
					</dl>
					<ul></ul>
					<div id="rec_newm"></div>
				</div>
				<ul id="rec_list"></ul>
				<div style="clear: both"></div>
			</dd>
			
			<dt>Tittel</dt>
			<dd><input type="text" name="title" value="' . htmlspecialchars(postval("title")) . '" class="styled w300" maxlength="35" /></dd>
			
			<dt>Tekst</dt>
			<dd><textarea name="message" rows="20" cols="75" id="melding">' . htmlspecialchars(postval("message")) . '</textarea></dd>
			
			<dt' . (isset($_POST['preview']) && isset($_POST['message']) ? '' : ' style="display: none"') . ' id="pdt">Forhåndsvisning</dt>
			<dd' . (isset($_POST['preview']) && isset($_POST['message']) ? '' : ' style="display: none"') . ' id="pdd">' . (!isset($_POST['message']) || empty($_POST['message']) ? 'Tomt?!' : game::bb_to_html($_POST['message'])) . '</dd>
			<div class="clear"></div>
		</dl>
		<h3 class="c">
			' . show_sbutton("Send melding", 'name="post" accesskey="s"') . '
			' . show_sbutton("Forhåndsvis", 'name="preview" accesskey="p" onclick="previewDL(event, \'melding\', \'pdt\', \'pdd\')"') . '
		</h3>
	</div>
</form>
</div>';
        $this->css();
        $this->js();
        ess::$b->page->load();
    }
示例#26
0
文件: crewet.php 项目: Kuzat/kofradia
		<div class="bg1">
			<dl class="dd_right">';
    while ($row = $result->fetch()) {
        echo '
				<dt>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</dt>
				<dd>' . game::timespan($row['up_last_online'], game::TIME_ABS | game::TIME_NOBOLD) . '</dd>';
    }
    echo '
			</dl>
		</div>';
}
// hente liste over spillere som ikke har samme spillernivå som brukernivå?
if (access::has("crewet")) {
    // skal vi sette spillernivået til et brukernivå?
    if (isset($_POST['u_to_up']) && access::has("admin")) {
        $up_id = (int) postval("up_id");
        if (!$up_id) {
            ess::$b->page->add_message("Du må velge en spiller.", "error");
            redirect::handle();
        }
        // hent informasjon om spilleren
        $result = \Kofradia\DB::get()->query("SELECT u_id, u_access_level, up_access_level, up_id, up_name FROM users, users_players WHERE u_active_up_id = up_id AND up_id = {$up_id}");
        $up = $result->fetch();
        if (!$up) {
            ess::$b->page->add_message("Fant ikke spilleren.", "error");
            redirect::handle();
        }
        // nivå er det samme?
        if ($up['u_access_level'] == $up['up_access_level']) {
            ess::$b->page->add_message("Nivået mellom bruker og spiller er det samme.", "error");
            redirect::handle();
示例#27
0
function show_search_form()
{
    echo box_start("Registrer donasjon - Søk etter bruker", "small") . '
		<form action="" method="post">
			<dl class="dd_right">
				<dt><input type="text" class="styled w150" name="value" value="' . htmlspecialchars(postval("value")) . '" /></dt>
				<dd>' . show_sbutton("ID", 'name="id"') . ' ' . show_sbutton("Bruker", 'name="user"') . ' ' . show_sbutton("E-post", 'name="email"') . '</dd>
			</dl>
		</form>' . box_end();
}
示例#28
0
 /**
  * Edit contact entry
  */
 public function action_edit($uc_id)
 {
     // avbryte
     if (isset($_POST['abort'])) {
         return \redirect::handle("/kontakter", \redirect::ROOT);
     }
     $contact = Contact::getContactById($uc_id);
     if (!$contact || $contact->getOwnerUserID() != $this->user->id) {
         \ess::$b->page->add_message("Fant ikke oppføringen.", "error");
         return \redirect::handle("/kontakter", \redirect::ROOT);
     }
     // lagre?
     if (isset($_POST['save']) && validate_sid(false)) {
         // begrunnelse
         $info = trim(postval("info"));
         if (!Contact::validateInfoLength($info)) {
             \ess::$b->page->add_message(($contact->isBlock() == 1 ? 'Begrunnelsen' : 'Informasjonen') . " var for lang. Kan ikke være mer enn " . Contact::MAX_INFO_LENGTH . " tegn (regnet uten BB koder).", "error");
         } else {
             $contact->updateInfo($info);
             $text = $contact->isBlock() ? 'Begrunnelsen for blokkeringen til' : 'Informasjon for kontakten';
             \ess::$b->page->add_message($text . ' <user id="' . $contact->getTargetPlayerID() . '" /> ble oppdatert.');
             return \redirect::handle("/kontakter", \redirect::ROOT);
         }
     }
     return View::forge("users/contacts/edit", array("contact" => $contact));
 }
示例#29
0
文件: lock.php 项目: Kuzat/kofradia
    /**
     * Behandle nytt passord
     */
    protected function solve_pass()
    {
        // lagre passord
        if (isset($_POST['save_pass'])) {
            // kontroller alle feltene
            $pass_new = trim(postval("pass_new"));
            $pass_repeat = trim(postval("pass_repeat"));
            // kontroller at alle feltene er fylt ut
            if ($pass_new == "" || $pass_repeat == "") {
                ess::$b->page->add_message("Alle feltene må fylles ut.", "error");
            } elseif ($pass_new != $pass_repeat) {
                ess::$b->page->add_message("De nye passordene var ikke like.", "error");
            } elseif (mb_strlen($pass_new) < 6) {
                ess::$b->page->add_message("Det nye passordet må inneholde minimum 6 tegn.", "error");
            } elseif (password::validate($pass_new, password::LEVEL_LOGIN) != 0) {
                ess::$b->page->add_message("Du må velge et vanskeligere passord.", "error");
            } elseif (password::verify_hash($pass_new, login::$user->data['u_bank_auth'], 'bank_auth')) {
                ess::$b->page->add_message("Velg et annet passord enn du har i banken.");
            } else {
                \Kofradia\DB::get()->exec("UPDATE users SET u_pass = "******", u_pass_change = NULL WHERE u_id = " . login::$user->id);
                // melding
                ess::$b->page->add_message("Du har nå lagret et nytt passord for brukeren din.");
                putlog("NOTICE", "%bPASSORD%b: %u" . login::$user->player->data['up_name'] . "%u lagret nytt passord på sin bruker (var nullstilt). " . ess::$s['path'] . "/min_side?u_id=" . login::$user->id);
                // send ut e-post for å informere
                $email = new email();
                $email->text = 'Hei,

Det er nå blitt opprettet et nytt passord fra ' . $_SERVER['REMOTE_ADDR'] . ' (' . $_SERVER['HTTP_USER_AGENT'] . ').

Bruker ID: ' . login::$user->data['u_id'] . '
E-post: ' . login::$user->data['u_email'] . '

Vi sender selvfølgelig ikke ditt nye passord på e-post. Det skal du kunne selv!

--
www.kofradia.no';
                $email->send(login::$user->data['u_email'], "Nytt passord");
                // logg ut alle andre brukere
                \Kofradia\DB::get()->exec("UPDATE sessions SET ses_active = 0, ses_logout_time = " . time() . " WHERE ses_active = 1 AND ses_u_id = " . login::$user->id . " AND ses_id != " . login::$info['ses_id']);
                redirect::handle();
            }
        }
        ess::$b->page->add_js_domready('$("lockpass").focus();');
        echo '
<div class="bg1_c small">
	<h1 class="bg1">Lagre nytt passord<span class="left"></span><span class="right"></span></h1>
	<p class="h_left"><a href="' . htmlspecialchars($this->url) . '">Tilbake</a></p>
	<div class="bg1">
		<p>Ditt passord har blitt nullstilt. Du vil ikke kunne logge inn uten å måtte benytte <i>glemt passord</i> funksjonen før du har opprettet et nytt passord.</p>
		<form action="" method="post" autocomplete="off">
			<dl class="dd_right dl_2x center" style="width: 80%">
				<dt>Nytt passord</dt>
				<dd><input type="password" class="styled w100" name="pass_new" id="lockpass" /></dd>
				<dt>Gjenta nytt passord</dt>
				<dd><input type="password" class="styled w100" name="pass_repeat" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Lagre passordet", 'name="save_pass"') . '</p>
		</form>
	</div>
</div>';
    }
示例#30
0
    /**
     * Redigere en oppføring
     */
    protected function handle_specific_edit($lc, $lc_action, $data)
    {
        ess::$b->page->add_title("Redigering av oppføring: {$lc['lc_id']} (" . htmlspecialchars($lc_action[4]) . ")");
        // behandle ulike type oppføringer
        switch (crewlog::$actions_id[$lc['lc_lca_id']]) {
            // advarsel
            case "user_warning":
                $invalidated = !empty($data['invalidated']);
                if (!$invalidated) {
                    // slette?
                    if (isset($_POST['revoke'])) {
                        // legg til logg
                        $d = array("lc_id" => $lc['lc_id'], "type" => $data['type'], "priority" => $data['priority']);
                        crewlog::log("user_warning_invalidated", $lc['lc_a_up_id'], null, $d);
                        // marker som slettet
                        \Kofradia\DB::get()->exec("\n\t\t\t\t\t\t\tINSERT INTO log_crew_data\n\t\t\t\t\t\t\tSET lcd_lc_id = {$lc['lc_id']}, lcd_lce_id = 5, lcd_lca_id = {$lc['lc_lca_id']}, lcd_data_int = 1\n\t\t\t\t\t\t\tON DUPLICATE KEY UPDATE lcd_data_int = 1");
                        // har vi en hendelse vi kan slette?
                        if (!empty($data['notified_id'])) {
                            \Kofradia\DB::get()->exec("DELETE FROM users_log WHERE id = {$data['notified_id']}");
                        }
                        ess::$b->page->add_message("Advarselen ble markert som ugyldig.");
                        redirect::handle("crewlogg?lc_id={$lc['lc_id']}");
                    }
                    // redigere?
                    if (isset($_POST['edit'])) {
                        $types = crewlog::$user_warning_types;
                        $log = trim(postval("log"));
                        $note = trim(postval("note"));
                        $type = postval("type");
                        $priority = (int) postval("priority");
                        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");
                        } elseif ($priority == $data['priority'] && $log == $lc['lc_log'] && $note == $data['note'] && $types[$type] == $data['type']) {
                            ess::$b->page->add_message("Ingenting ble endret.", "error");
                        } else {
                            $d = array("lc_id" => $lc['lc_id']);
                            $d['priority_new'] = $priority;
                            if ($priority != $data['priority']) {
                                $d['priority_old'] = $data['priority'];
                            }
                            $d['type_new'] = $types[$type];
                            if ($types[$type] != $data['type']) {
                                $d['type_old'] = $data['type'];
                            }
                            if ($log != $lc['lc_log']) {
                                $d['log_old'] = $lc['lc_log'];
                                $d['log_new'] = $log;
                            }
                            if ($note != $data['note']) {
                                $d['note_old'] = $data['note'];
                                $d['note_new'] = $note;
                            }
                            // legg til at advarselen er redigert
                            crewlog::log("user_warning_edit", $lc['lc_a_up_id'], null, $d);
                            // oppdater crewloggen
                            \Kofradia\DB::get()->exec("UPDATE log_crew SET lc_log = " . \Kofradia\DB::quote($log) . " WHERE lc_id = {$lc['lc_id']}");
                            \Kofradia\DB::get()->exec("UPDATE log_crew_data SET lcd_data_int = {$priority} WHERE lcd_lc_id = {$lc['lc_id']} AND lcd_lce_id = 3");
                            \Kofradia\DB::get()->exec("UPDATE log_crew_data SET lcd_data_text = " . \Kofradia\DB::quote($types[$type]) . " WHERE lcd_lc_id = {$lc['lc_id']} AND lcd_lce_id = 1");
                            \Kofradia\DB::get()->exec("UPDATE log_crew_data SET lcd_data_text = " . \Kofradia\DB::quote($note) . " WHERE lcd_lc_id = {$lc['lc_id']} AND lcd_lce_id = 2");
                            // har vi en hendelse vi kan oppdatere?
                            if (!empty($data['notified_id'])) {
                                \Kofradia\DB::get()->exec("UPDATE users_log SET note = " . \Kofradia\DB::quote(urlencode($types[$type]) . ":" . urlencode($log)) . " WHERE id = {$data['notified_id']}");
                            }
                            ess::$b->page->add_message("Advarselen ble redigert.");
                            redirect::handle("crewlogg?lc_id={$lc['lc_id']}");
                        }
                    }
                }
                echo '
<div class="bg1_c small">
	<h1 class="bg1">Rediger advarsel<span class="left2"></span><span class="right2"></span></h1>
	<p class="h_left"><a href="crewlogg?lc_id=' . $lc['lc_id'] . '">&laquo; Tilbake</a></p>
	<div class="bg1">
		<dl class="dd_right">
			<dt>Logg ID</dt>
			<dd>' . $lc['lc_id'] . '</dd>
			<dt>Handling</dt>
			<dd>' . htmlspecialchars(crewlog::$actions_groups[$lc_action[1]]) . ': ' . htmlspecialchars($lc_action[4]) . '</dd>
			<dt>Utført av</dt>
			<dd><user id="' . $lc['lc_up_id'] . '" /></dd>' . ($lc['lc_a_up_id'] ? '
			<dt>Påvirket spiller</dt>
			<dd><user id="' . $lc['lc_a_up_id'] . '" /></dd>' : '') . '
			<dt>Tidspunkt</dt>
			<dd>' . ess::$b->date->get($lc['lc_time'])->format(date::FORMAT_SEC) . '</dd>
		</dl>
		<dl class="dd_right">
			<dt>Kategori</dt>
			<dd>' . $data['type'] . '</dd>
			<dt>Prioritet</dt>
			<dd>' . ($data['priority'] == 1 ? 'Lav' : ($data['priority'] == 3 ? 'Høy' : 'Moderator')) . '</dd>
			<dt>Varslet?</dt>
			<dd>' . (empty($data['notified']) ? 'Brukeren ble ikke varslet' : 'Brukeren ble varslet med logg') . '</dd>' . ($invalidated ? '
			<dt>Ugyldig</dt>
			<dd><b>Advarselen er trukket tilbake</b></dd>' : '') . '
		</dl>
		<p>Begrunnelse:</p>
		<div class="crewlog_note">' . game::format_data($lc['lc_log']) . '</div>
		<p>Intern informasjon:</p>
		<div class="crewlog_note">' . game::format_data($data['note']) . '</div>';
                if ($invalidated) {
                    echo '
		<p>Denne advarselen er trukket tilbake og kan ikke redigeres.</p>';
                } else {
                    echo '
		<form action="" method="post">
			<div class="hr"></div>
			<p><b>Rediger advarsel:</b></p>
			<dl class="dd_right">
				<dt>Kategori</dt>
				<dd>
					<select name="type">';
                    $type = array_search($data['type'], crewlog::$user_warning_types);
                    if (isset($_POST['type']) && isset($types[$_POST['type']])) {
                        $type = (int) $_POST['type'];
                    }
                    if ($type === false) {
                        echo '
							<option value="">Velg ..</option>';
                    }
                    foreach (crewlog::$user_warning_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'] : $data['priority'];
                    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", $lc['lc_log'])) . '</textarea></p>
			<p>Intern informasjon:</p>
			<p><textarea name="note" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(postval("note", $data['note'])) . '</textarea></p>
			<p class="c">' . show_sbutton("Oppdater advarsel", 'name="edit"') . '</p>
		</form>
		<form action="" method="post">
			<p class="c">' . show_sbutton("Trekk tilbake advarsel", 'name="revoke" onclick="return confirm(\'Er du sikker på at du ønsker å trekke tilbake denne advarselen?\')"') . '</p>
		</form>';
                }
                echo '
	</div>
</div>';
                break;
                // ukjent
            // ukjent
            default:
                ess::$b->page->add_message("Kan ikke redigere denne oppføringen.", "error");
                redirect::handle("crewlogg?lc_id={$lc['lc_id']}");
        }
        ess::$b->page->load();
    }