示例#1
0
    public static function main()
    {
        echo '
<p class="minside_toplinks sublinks">
	' . page_min_side::link('Siste periode', "") . '
	' . page_min_side::link('Visninger', "act") . '
	' . page_min_side::link('Forum', "forum") . '
	' . page_min_side::link('Ranking', "rank") . '
	' . page_min_side::link('Diverse', "div") . '
</p>
<div id="page_user_info">' . (page_min_side::$active_own ? '' : '
	<h1>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . ' (#' . page_min_side::$active_user->id . ')<br />' . page_min_side::$active_player->profile_link() . ' (#' . page_min_side::$active_player->id . ')</h1>');
        // div stats
        if (page_min_side::$subpage == "") {
            self::page_default();
        } elseif (page_min_side::$subpage == "act") {
            self::page_act();
        } elseif (page_min_side::$subpage == "forum") {
            self::page_forum();
        } elseif (page_min_side::$subpage == "rank") {
            self::page_rank();
        } elseif (page_min_side::$subpage == "div") {
            self::page_diverse();
        } else {
            redirect::handle(page_min_side::addr(""));
        }
        echo '
</div>';
    }
示例#2
0
文件: drap.php 项目: Kuzat/kofradia
 /**
  * Construct
  */
 public function __construct(player $up)
 {
     parent::__construct($up);
     // vise liste over drapsforsøk for en bestemt spiller
     if (isset($_GET['up_id']) && access::has("mod", NULL, NULL, "login")) {
         $up_id = (int) $_GET['up_id'];
         $player = player::get($up_id);
         if ($player === false) {
             ess::$b->page->add_message("Fant ikke spilleren med id {$up_id}.", "error");
             redirect::handle('drap?allef');
         }
         $this->show_tries($player);
     } elseif (isset($_GET['offer_up_id']) && access::has("mod", NULL, NULL, "login")) {
         $up_id = (int) $_GET['offer_up_id'];
         $player = player::get($up_id);
         if ($player === false) {
             ess::$b->page->add_message("Fant ikke spilleren med id {$up_id}.", "error");
             redirect::handle('drap?allef');
         }
         $this->show_tries($player, true);
     } elseif (isset($_GET['allef']) && access::has("mod", NULL, NULL, "login")) {
         $this->show_tries();
     } elseif (isset($_GET['forsok'])) {
         $this->show_tries($this->up);
     } elseif (isset($_GET['alle']) && access::has("mod", NULL, NULL, "login")) {
         $this->show_all();
     } else {
         $this->show_main();
     }
     ess::$b->page->load();
 }
示例#3
0
 protected function set_page_info()
 {
     // sett opp side informasjon
     $this->pagei = new pagei(pagei::TOTAL, $this->num_messages, pagei::ACTIVE_GET, "side", pagei::PER_PAGE, $this->per_page);
     $this->limit = $this->pagei->per_page;
     // har vi nye meldinger?
     if ($this->thread->data_rel && $this->thread->data_rel['ir_unread'] > 0) {
         $this->pagei->__construct(pagei::ACTIVE, 1);
         $this->limit = max($this->limit, $this->thread->data_rel['ir_unread']);
     } elseif (isset($_GET['goto'])) {
         $im_id = intval(getval("goto"));
         // forsøk å finn meldingen
         $ant = $this->thread->message_locate($im_id);
         if (!$ant) {
             ess::$b->page->add_message("Fant ingen melding med ID {$im_id}.", "error");
             redirect::handle();
         }
         // finn ut hvilken side vi skal til
         $side = ceil($ant / $this->per_page);
         // gå til korrekt side
         if ($this->pagei->active != $side) {
             redirect::handle("innboks_les?id={$this->thread->id}&goto={$im_id}&side={$side}");
         }
         $this->highlight_im_id = $im_id;
     }
 }
示例#4
0
 public function action_index()
 {
     $this->needUser();
     $this->ut = new \Kofradia\Game\Utpressing($this->user->player);
     \ess::$b->page->add_title("Utpressing");
     \kf_menu::$data['utpressing'] = true;
     // kontroller fengsel, bomberom og energi
     $this->user->player->fengsel_require_no();
     $this->user->player->bomberom_require_no();
     $this->user->player->energy_require(\Kofradia\Game\Utpressing::ENERGY * 1.3);
     // legg til 30 % for krav
     // kontroller anti-bot
     $this->antibot = \antibot::get("utpressing", static::ANTIBOT_SPAN);
     $this->antibot->check_required();
     // skjema
     $this->form = \Kofradia\Form::getByDomain("utpressing", $this->user);
     // sett opp hvilke ranker som kan angripes
     $this->rank_min = max(1, $this->user->player->rank['number'] - 1);
     $this->rank_max = min($this->rank_min + 3, count(\game::$ranks['items']));
     if ($this->rank_max - $this->rank_min < 3) {
         $this->rank_min = max(1, $this->rank_max - 3);
     }
     // sørg for at man har 4 alternativer uavhengig av rank
     // utføre utpressing?
     if (isset($_POST['utpressing'])) {
         $ret = $this->utpress();
         if (!$ret) {
             return \redirect::handle();
         }
         return $ret;
     }
     return $this->showForm();
 }
示例#5
0
 /**
  * Construct
  */
 public function __construct(player $up)
 {
     // sende til side?
     if (isset($_GET['orign'])) {
         redirect::handle($_GET['orign'], redirect::SERVER, login::$info['ses_secure']);
     }
     parent::__construct($up);
     access::no_guest();
     ess::$b->page->add_title("Hovedsiden");
     $this->show();
     ess::$b->page->load();
 }
示例#6
0
文件: Misc.php 项目: Kuzat/kofradia
 /**
  * Main page
  */
 public function action_index()
 {
     // logge inn?
     // tar seg også av eventuell nødvendig reauth ved ukjent IP
     if (!$this->user) {
         force_https();
         return \Kofradia\Controller::execute("Users\\Login@index");
     }
     // videresende?
     if (isset($_GET['orign'])) {
         \redirect::handle($_GET['orign'], \redirect::SERVER, \login::$info['ses_secure']);
     }
     new \page_forsiden(\login::$user->player);
 }
示例#7
0
 /**
  * Process the request
  *
  * @param string Hash to process
  */
 public function action_index($hash)
 {
     $al = AL::getByHash($hash);
     if (!$al) {
         AL::logError("Hash ble ikke funnet i databasen: {$hash}");
         \redirect::handle("/", \redirect::ROOT);
     }
     $success = $al->process();
     if ($msgs = $al->getMessages()) {
         foreach ($msgs as $msg) {
             if ($success) {
                 \ess::$b->page->add_message($msg);
             } else {
                 \ess::$b->page->add_message($msg, "error");
             }
         }
     }
     return $al->redirect();
 }
示例#8
0
文件: Polls.php 项目: Kuzat/kofradia
 /**
  * Registering vote
  */
 public function action_vote()
 {
     \access::no_guest();
     if (!isset($_POST['poll']) || !is_array($_POST['poll']) || count($_POST['poll']) > 1) {
         \ess::$b->page->add_message("Du må velge et alternativ.", "error");
         \redirect::handle("", \redirect::ROOT);
     }
     $p_id = (int) key($_POST['poll']);
     $po_id = (int) current($_POST['poll']);
     $poll = Poll::load($p_id, \login::$user);
     if (!$poll || !$poll->isAvailable()) {
         \ess::$b->page->add_message("Fant ikke avstemningen.", "error");
         \redirect::handle("", \redirect::ROOT);
     }
     // allerede stemt?
     if ($poll->getVote()) {
         \ess::$b->page->add_message("Du har allerede stemt på avstemningen &laquo;" . htmlspecialchars($poll->data['p_title']) . "&raquo;.", "error");
         \redirect::handle("", \redirect::ROOT);
     }
     // finn alternativet
     $option = $poll->findOption($po_id);
     if (!$option) {
         \ess::$b->page->add_message("Ugyldig alternativ.", "error");
         \redirect::handle("", \redirect::ROOT);
     }
     if ($option->vote(\login::$user)) {
         \ess::$b->page->add_message("Du har avgitt stemme på avstemningen &laquo;" . htmlspecialchars($poll->data['p_title']) . "&raquo;.");
     } else {
         \ess::$b->page->add_message("Din stemme ble ikke registrert.", "error");
     }
     // sende til forum tråden?
     if ($poll->data['p_ft_id']) {
         \redirect::handle("/forum/topic?id={$poll->data['p_ft_id']}", \redirect::ROOT);
     }
     \redirect::handle("", \redirect::ROOT);
 }
示例#9
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();
    }
示例#10
0
文件: finn.php 项目: Kuzat/kofradia
global $_lang, $_base, $__server;
$_base->page->add_title("Finn bruker/spiller");
$_base->page->theme_file = "doc";
// gammelt oppsett?
if (isset($_GET['id']) || isset($_GET['user'])) {
    if (isset($_GET['id'])) {
        $_GET['u_id'] = $_GET['id'];
        unset($_GET['id']);
    }
    if (isset($_GET['user'])) {
        $_GET['name'] = $_GET['user'];
        unset($_GET['user']);
    }
    // send til korrekt adresse
    $_base->page->add_message("Adressen du klikket på førte deg til en gammel versjon av denne siden. Du er sendt til korrekt adresse.");
    redirect::handle(game::address("finn", $_GET));
}
// felt man skal kunne vise
$fields = array("ip", "reg", "email", "onlinea", "onliner", "hits", "points", "banko", "cash", "birth");
$fields_name = array("IP-adresse", "Registrert", "E-post adresse", "Sist pålogget (abs)", "Sist pålogget (rel)", "Hits", "Rank", "Bank overføringer", "Penger", "Fødselsdato");
// lagre felt?
if (isset($_POST['fields'])) {
    // hent ajax funksjoner
    require PATH_APP . "/ajax.php";
    // finn ut hvilke felt som skal lagres
    $list = explode(",", $_POST['fields']);
    $show = array();
    foreach ($list as $item) {
        if (isset($fields[$item])) {
            $show[] = $item;
        }
示例#11
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>';
        }
    }
示例#12
0
<?php

require "../base.php";
// send til korrekt side
redirect::handle("?a=show&su_id=" . intval(getval("id")));
示例#13
0
文件: loggut.php 项目: Kuzat/kofradia
<?php

require "base.php";
global $_base;
// kontroller link
if (getval("sid") != login::$info['ses_id']) {
    $_base->page->add_message("Ugyldig inntasting. Prøv på nytt.", "error");
    $_base->page->load();
}
// loggmelding
putlog("NOTICE", "%c5%bLOGG UT%b%c: (%u{$_SERVER['REMOTE_ADDR']}%u) %u" . login::$user->player->data['up_name'] . "%u (" . login::$user->data['u_email'] . ") ({$_SERVER['HTTP_USER_AGENT']})");
// logg ut
login::logout();
redirect::handle("");
示例#14
0
 /**
  * Bryte ut fra fengsel
  */
 protected function bryt_ut()
 {
     // allerede i fengsel?
     if ($this->up->fengsel_check()) {
         ess::$b->page->add_message("Du er allerede i fengsel.", "error");
         redirect::handle();
     }
     // har vi ikke nok energi?
     if (!$this->up->energy_check(self::ENERGY)) {
         ess::$b->page->add_message("Du har ikke nok energi for å bryte ut andre spillere nå.");
         redirect::handle();
     }
     $time = intval(postval('time'));
     // hent informasjon
     @(list($up_id, $expire, $dusor) = explode("_", $_POST['up_id'] . "_", 3));
     $up_id = intval($up_id);
     $expire = intval($expire);
     $dusor = game::intval($dusor);
     $up = player::get($up_id);
     if (!$up) {
         ess::$b->page->add_message("Fant ikke brukeren.", "error");
         redirect::handle();
     }
     // ikke i fengsel lengre?
     $wait = $up->fengsel_wait();
     if ($wait == 0) {
         ess::$b->page->add_message('<user id="' . $up->id . '" /> er nok allerede brutt ut!', "error");
         redirect::handle();
     }
     // ikke riktig tid?
     if ($up->data['up_fengsel_time'] != $expire) {
         ess::$b->page->add_message('<user id="' . $up->id . '" /> har kommet i fengsel på nytt. Prøv igjen.', "error");
         redirect::handle();
     }
     // feil dusør?
     if ($up->data['up_fengsel_dusor'] != $dusor) {
         ess::$b->page->add_message('Dusøren til <user id="' . $up->id . '" /> har endret seg. Prøv på nytt.', "error");
         redirect::handle();
     }
     // sett opp sannsynlighet
     $prob = self::calc_prob($wait, $up->data['up_wanted_level'] / 10);
     $points = self::calc_points($prob);
     // sett opp dusør
     $dusor_org = $up->data['up_fengsel_dusor'];
     $dusor = bcmul($up->data['up_fengsel_dusor'], self::DUSOR_PROFIT);
     // klarte vi det?
     $success = rand(0, 999) < $prob * 10;
     if ($success) {
         // penger man får for utbrytelsen
         $cash = round(max(0, 100 - $prob) / 100 * self::CASH_MAX);
         // sett som utbrytet
         $a = \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_fengsel_time = " . (time() - 1) . ", up_fengsel_dusor_total_out = up_fengsel_dusor_total_out + up_fengsel_dusor, up_fengsel_dusor = 0\n\t\t\t\tWHERE up_id = {$up->id} AND up_fengsel_time = {$up->data['up_fengsel_time']} AND up_fengsel_dusor = {$up->data['up_fengsel_dusor']}");
         if ($a == 0) {
             ess::$b->page->add_message('<user id="' . $up->id . '" /> er nok allerede brutt ut!', "error");
             redirect::handle();
         }
         $up->data['up_fengsel_time'] = time() - 1;
         $up->data['up_fengsel_dusor_total_out'] = bcadd($up->data['up_fengsel_dusor_total_out'], $up->data['up_fengsel_dusor']);
         $up->data['up_fengsel_dusor'] = 0;
         // oppdater antall utbrytninger og gi evt. penger
         \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_fengsel_num_out_tries = up_fengsel_num_out_tries + 1, up_fengsel_num_out_success = up_fengsel_num_out_success + 1, up_cash = up_cash + {$cash} + {$dusor}, up_fengsel_dusor_total_in = up_fengsel_dusor_total_in + {$dusor}\n\t\t\t\tWHERE up_id = " . $this->up->id);
         $this->up->update_money(bcadd($cash, $dusor), true, false);
         // hendelse for spilleren som ble brutt ut
         $up->add_log("fengsel", $dusor_org > 0 ? $dusor_org : null, $this->up->id);
         $fengsel = $this->up->fengsel_rank($points, true);
         // penger, dusør og poeng vi mottar
         $mottok = array();
         if ($cash > 0) {
             $mottok[] = game::format_cash($cash);
         }
         if ($dusor > 0) {
             $mottok[] = "dusøren på " . game::format_cash($dusor);
         }
         $mottok[] = game::format_num($points) . ' poeng';
         // melding
         $msg = 'Du brøt ut <user id="' . $up->id . '" /> fra fengselet og mottok ' . sentences_list($mottok) . '.';
         if ($fengsel > 0) {
             $msg .= ' Wanted nivået økte med ' . game::format_number($fengsel / 10, 1) . ' %.';
         }
         ess::$b->page->add_message($msg);
         // logg
         putlog("LOG", "FENGSELUTBRYTNING: {$this->up->data['up_name']} brøt ut {$up->data['up_name']} fra fengsel (wait={$wait}, cash={$cash}, dusør={$dusor_org}, prob={$prob}, rank={$points})");
         // rank
         $this->up->increase_rank($points);
     } else {
         // mislykket
         $fengsel = $this->up->fengsel_rank($points, false, true);
         // oppdater antall utbrytninger (kun forsøk)
         \Kofradia\DB::get()->exec("UPDATE users_players SET up_fengsel_num_out_tries = up_fengsel_num_out_tries + 1 WHERE up_id = " . $this->up->id);
         if ($fengsel > 0) {
             ess::$b->page->add_message('Mislykket! Wanted nivået økte med ' . game::format_number($fengsel / 10, 1) . ' %.');
         }
     }
     // trigger
     $this->up->trigger("fengsel", array("success" => $success, "up" => $up, "wait" => $wait, "prob" => $prob, "points" => $points, "cash" => $success ? $cash : null, "dusor" => $dusor, "dusor_org" => $dusor_org));
     $up->trigger("fengsel_affected", array("success" => $success, "up" => $this->up, "wait" => $wait, "prob" => $prob, "points" => $points, "cash" => $success ? $cash : null, "dusor" => $dusor, "dusor_org" => $dusor_org));
     // energy
     $this->up->energy_use(self::ENERGY);
     redirect::handle();
 }
示例#15
0
<?php

require "base.php";
global $_base;
redirect::handle("min_side?" . (login::$user->player->active ? '' : 'up_id=' . login::$user->player->id . '&') . "a=log");
示例#16
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;
 }
示例#17
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>';
    }
示例#18
0
<?php

require "../base.php";
access::need("mod");
redirect::handle("ranklist?update", redirect::ROOT);
示例#19
0
文件: profil.php 项目: Kuzat/kofradia
    $result = \Kofradia\DB::get()->query("SELECT up_id, up_name FROM users_players WHERE up_id = {$up_id}");
    $row = $result->fetch();
    if (!$row) {
        ess::$b->page->add_message("Fant ikke spilleren.", "error");
        redirect::handle("finn_spiller", redirect::ROOT);
    }
    // send til korrekt side
    $address = game::address("/p/" . rawurlencode($row['up_name']) . "/{$row['up_id']}", $_GET, array("id"));
    redirect::handle($address, redirect::ROOT);
} elseif (isset($_GET['user'])) {
    // send til korrekt side
    $address = game::address("/p/" . rawurlencode($_GET['user']), $_GET, array("user"));
    redirect::handle($address, redirect::ROOT);
} else {
    ess::$b->page->add_message("Manglet brukeridentifikasjon.", "error");
    redirect::handle("finn_spiller", redirect::ROOT);
}
ess::$b->page->add_title($player->data['up_name']);
// moderasjon
if (access::has("crewet", NULL, NULL, true)) {
    // javascript
    ess::$b->page->add_js_domready('
	new KeySequence("esc,M,esc", function()
	{
		navigateTo(relative_path+"/min_side?up_id=' . $player->id . '&a=crew");
	});');
}
// loggfør visning
if (!login::$logged_in) {
    putlog("PROFILVIS", "%c6%bVIS-PROFIL:%b%c Ikke-innlogget-person viste profilen til %u{$player->data['up_name']}%u (up_id: " . $player->id . ")");
} elseif (login::$user->player->id != $player->id) {
示例#20
0
 protected function reise_gta_check($bydel, $distance)
 {
     $ug_id = (int) $_POST['bil'];
     // hent bilen
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT s.id, g.brand, g.model, g.value, s.damage, g.points\n\t\t\tFROM users_gta s\n\t\t\t\tJOIN gta g ON s.gtaid = g.id\n\t\t\tWHERE ug_up_id = {$this->up->id} AND s.b_id = {$this->up->data['up_b_id']} AND s.id = {$ug_id}");
     $bil = $result->fetch();
     if (!$bil) {
         ess::$b->page->add_message("Fant ikke bilen du valgte. Prøv på nytt.", "error");
         return;
     }
     $price = round($distance * self::GTA_PRICE_KM * self::get_gta_factor_points($bil['points']) * self::get_gta_factor_damage($bil['damage']));
     $energy = self::get_gta_energy($bil['damage']);
     // har vi ikke nok energi?
     if (!$this->up->energy_check($energy * 1.3)) {
         ess::$b->page->add_message("Du har ikke nok energi for å reise med denne bilen.", "error");
         return;
     }
     // 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) {
         // anta dårlig råd
         $this->reise_error_cash($bydel);
         return;
     }
     // flytt bilen
     \Kofradia\DB::get()->exec("UPDATE users_gta SET time_last_move = " . time() . ", b_id = {$bydel['id']} WHERE id = {$bil['id']}");
     // energi
     $this->up->energy_use($energy);
     // vellykket
     ess::$b->page->add_message("Du benyttet din <b>{$bil['brand']} {$bil['model']}</b> med <b>{$bil['damage']} %</b> skade og reiste til <b>" . htmlspecialchars($bydel['name']) . "</b>. Det kostet deg <b>" . game::format_cash($price) . "</b>.");
     redirect::handle();
 }
示例#21
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;
    }
示例#22
0
        $result = \Kofradia\DB::get()->query("SELECT h_id, h_name, h_email, h_category, h_subject, h_status, h_time, h_random FROM henvendelser WHERE h_email = " . \Kofradia\DB::quote($email) . " AND h_status != 4 ORDER BY h_time");
        if ($result->rowCount() == 0) {
            $_base->page->add_message("Fant ingen henvendelser med denne e-posten.", "error");
        } else {
            $list = array();
            $hm_id = 0;
            while ($row = $result->fetch()) {
                $list[] = "ID: {$row['h_random']}\nTidspunkt: " . $_base->date->get($row['h_time'])->format() . "\n{$row['h_category']}: {$row['h_subject']}";
                $random = $row['h_random'];
            }
            // send e-post til bruker
            $mail = new email();
            $mail->text = "Hei,\n\nDu har bedt om en oversikt over dine henvendelser som er sendt inn til Kofradia.\n\nDu kan når som helst logge inn og lese dine henvendelse og legge til ytterligere informasjon og nye meldinger. Da er du nødt til å logge inn med en spesiell ID sammen med e-posten din.\n\n---\n\n" . implode("\n\n---\n\n", $list) . "\n\n---\n\nIP-adresse benyttet for denne henvendelsen: {$_SERVER['REMOTE_ADDR']} ({$_SERVER['HTTP_USER_AGENT']})\n\nDirektelink:\n{$__server['path']}/henvendelser?id={$random}&email=" . urlencode(mb_strtolower($email)) . "\n\nDenne e-posten kan ikke besvares.\nTakk for din henvendelse.";
            $mail->send(mb_strtolower($email), "Dine henvendelser");
            $_base->page->add_message("E-post er nå sendt til <b>" . htmlspecialchars(mb_strtolower($email)) . "</b> med detaljer.");
            redirect::handle("henvendelser");
        }
    }
    echo '
<h1>Henvendelser</h1>
<p class="h_right"><a href="henvendelser">Tilbake</a></p>
<div class="section w300 center">
	<h2>Glemt ID</h2>
	<p>Ved å benytte dette skjemaet vil du få tilsendt liten oversikt over alle dine henvendelser og ID-er tilknyttet de.</p>
	<form action="" method="post" autocomplete="off">
		<dl class="dd_right dl_2x">
			<dt>E-postadresse</dt>
			<dd><input type="text" name="email" value="' . htmlspecialchars(postval("email")) . '" class="styled w150" /></dd>
		</dl>
		<p class="c">' . show_sbutton("Send oversikt") . '</p>
	</form>
示例#23
0
 /**
  * Send videre til siden for anti-bot test om nødvendig
  */
 public function check_required($redirect = NULL)
 {
     // trenger ikke test?
     if (!$this->is_check_required()) {
         return;
     }
     // oppdater anti-bot status
     $this->update_status("redir");
     if (!$redirect) {
         $redirect = $_SERVER['REQUEST_URI'];
     }
     $ret = "&ret=" . urlencode($redirect);
     redirect::handle("/antibot/sjekk?name=" . urlencode($this->name) . $ret, redirect::ROOT);
 }
示例#24
0
    function step4()
    {
        global $__server, $_game;
        // er skjemaet sendt inn?
        if ($_SERVER['REQUEST_METHOD'] == "POST") {
            // sjekk for gyldig trinn
            if (!isset($_POST['step']) || $_POST['step'] != 4) {
                redirect::handle();
            }
            // betingelser, alder, forste_bruker
            $betingelser = isset($_POST['betingelser']);
            $alder = isset($_POST['alder']);
            $forste_bruker = isset($_POST['forste_bruker']);
            // er ikke betingelsene godtatt?
            if (!$betingelser) {
                ess::$b->page->add_message("Hvis du ikke godtar betingelsene kan du dessverre ikke registrere deg her.", "error");
            } elseif (!$alder) {
                ess::$b->page->add_message("Hvis du ikke har fylt 13 år kan du dessverre ikke registrere deg her.", "error");
            } elseif (!$forste_bruker) {
                ess::$b->page->add_message("Hvis du allerede har en bruker fra før så bruk den! Å opprette ny konto gjør det bare dumt for deg selv og kan i værste tilfelle føre til politianmeldelse.", "error");
            } else {
                // finn en tilfeldig bydel
                $result = \Kofradia\DB::get()->query("SELECT id FROM bydeler WHERE active = 1 ORDER BY RAND()");
                $bydel = $result->fetchColumn(0);
                // sett opp nødvendig info
                $user = \Kofradia\DB::quote($this->info['user']);
                $pass = \Kofradia\DB::quote($this->info['pass']);
                $email = \Kofradia\DB::quote($this->info['email']);
                $referer = \Kofradia\DB::quote($this->info['referer']);
                $tos_version = intval(game::$settings['tos_version']['value']);
                $birth = \Kofradia\DB::quote($this->info['birth']);
                $recruiter = array("up_id" => 'NULL', "up_u_id" => 'NULL');
                global $__server;
                // er denne brukeren vervet?
                if (isset($_COOKIE[$__server['cookie_prefix'] . "rid"])) {
                    $rid = $_COOKIE[$__server['cookie_prefix'] . "rid"];
                    // finnes denne brukeren?
                    $result = \Kofradia\DB::get()->query("SELECT up_id, up_u_id FROM users_players WHERE up_id = " . \Kofradia\DB::quote($rid));
                    if ($row = $result->fetch()) {
                        $recruiter = $row;
                    }
                }
                \Kofradia\DB::get()->beginTransaction();
                // deaktiver kontroll av foreign key
                \Kofradia\DB::get()->exec("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0");
                // opprett bruker
                $time = time();
                \Kofradia\DB::get()->exec("INSERT INTO users SET u_email = {$email}, u_pass = {$pass}, u_birth = {$birth}, u_tos_version = {$tos_version}, u_created_time = {$time}, u_created_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . ", u_created_referer = {$referer}, u_recruiter_u_id = {$recruiter['up_u_id']}, u_recruiter_points_last = 0");
                $u_id = \Kofradia\DB::get()->lastInsertId();
                // opprett spiller og tilknytt brukeren
                \Kofradia\DB::get()->exec("INSERT INTO users_players SET up_u_id = {$u_id}, up_name = {$user}, up_created_time = {$time}, up_recruiter_up_id = {$recruiter['up_id']}, up_b_id = {$bydel}");
                $up_id = \Kofradia\DB::get()->lastInsertId();
                \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = {$u_id}");
                // aktiver kontroll av foreign key
                \Kofradia\DB::get()->exec("SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS");
                // sett opp riktig rank plassering
                #\Kofradia\DB::get()->exec("UPDATE users_players AS main, (SELECT COUNT(users_players.up_id)+1 AS pos, ref.up_id FROM users_players AS ref LEFT JOIN users_players ON users_players.up_points > ref.up_points AND users_players.up_access_level < {$_game['access_noplay']} AND users_players.up_access_level != 0 WHERE ref.up_id = $up_id GROUP BY ref.up_id) AS rp SET main.up_rank_pos = rp.pos WHERE main.up_id = rp.up_id");
                \Kofradia\DB::get()->exec("INSERT INTO users_players_rank SET upr_up_id = {$up_id}");
                ranklist::update();
                // slett registrasjonsoppføringen
                \Kofradia\DB::get()->exec("DELETE FROM registration WHERE id = {$this->id}");
                \Kofradia\DB::get()->commit();
                // send e-post
                $email = new email();
                $email->text = 'Hei,

Du har registrert deg som ' . $this->info['user'] . ' på Kofradia.

Velkommen til spillet!

--
www.kofradia.no';
                $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR'];
                $email->headers['Reply-To'] = "*****@*****.**";
                $email->send($this->info['email'], "Velkommen til Kofradia");
                ess::$b->page->add_message('Velkommen til Kofradia!<br /><br />Du er nå registrert som <b>' . $this->info['user'] . '</b> og automatisk logget inn.<br /><br />Sjekk ut menyen til venstre så ser du hva vi har å tilby i dag.<br /><br />Hvis du har noen spørsmål ta en titt under <a href="' . ess::$s['relative_path'] . '/node">hjelp</a> og ta evt. kontakt med <a href="support/">support</a> om du ikke finner svar på det du lurer på!<br /><br />Ikke glem og les gjennom <a href="' . ess::$s['relative_path'] . '/node/6">reglene for forumene</a> før du skriver i forumet. Lykke til i spillet!');
                // hent antall medlemmer
                $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players WHERE up_access_level < {$_game['access_noplay']} AND up_access_level != 0");
                putlog("INFO", "%bNY SPILLER:%b (#{$up_id} - Nummer %b" . $result->fetchColumn(0) . "%b) %u{$this->info['user']}%u registrerte seg! {$__server['absolute_path']}{$__server['relative_path']}/p/" . rawurlencode($this->info['user']));
                // logg inn brukeren
                login::do_login($u_id, $this->info['pass'], LOGIN_TYPE_TIMEOUT, false);
                // slett registrasjonsoppføringen fra session etc
                $this->trash();
                // sjekk om det er mulig multi
                $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT up_name\n\t\t\t\t\tFROM users_players, users\n\t\t\t\t\tWHERE u_online_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . "\n\t\t\t\t\t\tAND u_id != {$u_id}\n\t\t\t\t\t\tAND u_active_up_id = up_id AND up_access_level != 0\n\t\t\t\t\t\tAND up_last_online > " . (time() - 86400 * 30) . "\n\t\t\t\t\tLIMIT 10");
                if ($result->rowCount() > 0) {
                    $names = array();
                    while ($row = $result->fetch()) {
                        $names[] = $row['up_name'];
                    }
                    putlog("CREWCHAN", "%b%c4NY REGISTERT, MULIG MULTI:%c%b (#{$up_id}) %u{$this->info['user']}%u registrerte seg. Andre spillere på IP-en: " . implode(", ", $names) . ". {$__server['path']}/admin/brukere/finn?ip=" . rawurlencode($_SERVER['REMOTE_ADDR']));
                }
                // videresend til hovedsiden
                redirect::handle("", redirect::ROOT);
            }
        }
        echo '
<form action="registrer" method="post">
	<input type="hidden" name="abort" />
	<h1>Bekreftelse av betingelsene</h1>
	<p class="h_right">' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '</p>
</form>
<p>
	På denne siden finner du en oversikt over betingelsene. Betingelsene er ikke lange og er kjapt å lese igjennom. Det er viktig at du er klar over innholdet i disse betingelsene og at du følger dem. Følger du ikke disse betingelsene vil brukeren din bli deaktivert. For å kunne opprette må du godta betingelsene.
</p>
<boxes />
<form action="registrer" method="post">
	<input type="hidden" name="step" value="4" />
	<p>
		Betingelser:<br />
		<div id="betingelser_content">' . game::$settings['tos']['value'] . '</div>
	</p>
	<p>
		<input type="checkbox" name="betingelser" id="betingelser" /><label for="betingelser"> Jeg har lest gjennom og aksepterer betingelsene</label>
	</p>
	<p>
		<input type="checkbox" name="alder" id="alder" /><label for="alder"> Jeg har fylt 13 år</label>
	</p>
	<p>
		<input type="checkbox" name="forste_bruker" id="forste_bruker" /><label for="forste_bruker"> Jeg har ingen bruker som er aktivert fra før av</label> <span class="dark">(Hvis du allerede har en bruker, må du deaktivere den <u>før</u> du registrerer deg på nytt.)</span>
	</p>
	<p>
		' . show_sbutton("Opprett bruker") . '
	</p>
</form>
<form action="registrer" method="post">
	<input type="hidden" name="abort" />
	<p>
		' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '
	</p>
</form>';
    }
示例#25
0
 protected function create_handle()
 {
     // er det noen mottakere som ikke ble funnet?
     if (count($this->receivers) != count($this->players_list)) {
         $this->report_missing();
     }
     // noen infomeldinger
     if (count($this->infos) > 0) {
         ess::$b->page->add_message(implode("<br />", $this->infos));
     }
     // noen feil?
     if (count($this->errors) > 0) {
         ess::$b->page->add_message(implode("<br />", $this->errors), "error");
         return;
     }
     // ingen mottakere?
     if (count($this->receivers) == 0) {
         ess::$b->page->add_message("Du må velge en eller flere mottakere.", "error");
         return;
     }
     // for mange mottakere?
     if (count($this->receivers) > $this->receivers_limit) {
         ess::$b->page->add_message("Du har valgt for mange mottakere. Du har en grense på <b>{$this->receivers_limit}</b> spillere.", "error");
         return;
     }
     // blokkert fra å sende meldinger? (kan kun sende til Crewet og med 1 mottaker)
     $blokkering = blokkeringer::check(blokkeringer::TYPE_MELDINGER);
     $blokkering_ok = true;
     if ($blokkering && count($this->receivers) == 1) {
         // kontroller at den ene mottakeren vi har valgt er i Crewet (tilgang til "crewet")
         $row = reset($this->receivers);
         $result = \Kofradia\DB::get()->query("SELECT up_access_level FROM users_players WHERE up_id = {$row['up_id']}");
         $row = $result->fetch();
         if (!$row || !in_array("crewet", access::types($row['up_access_level']))) {
             $blokkering_ok = false;
         }
     }
     // er mottakere crew?
     $receivers_crew = true;
     foreach ($this->receivers as $row) {
         if (!in_array("crewet", access::types($row['up_access_level']))) {
             $receivers_crew = false;
             break;
         }
     }
     // blokkert og for mange mottakere?
     if ($blokkering && count($this->receivers) > 1) {
         ess::$b->page->add_message("Du er blokkert fra å sende meldinger til andre enn Crewet. Du kan kun ha én mottaker. Blokkeringen varer til " . ess::$b->date->get($blokkering['ub_time_expire'])->format(date::FORMAT_SEC) . ".<br /><b>Begrunnelse:</b> " . game::format_data($blokkering['ub_reason'], "bb-opt", "Ingen begrunnelse gitt."), "error");
         return;
     }
     // blokkert og mottaker er ikke i Crewet?
     if (!$blokkering_ok) {
         ess::$b->page->add_message("Du er blokkert fra å sende meldinger til andre enn Crewet. Blokkeringen varer til " . ess::$b->date->get($blokkering['ub_time_expire'])->format(date::FORMAT_SEC) . ".<br /><b>Begrunnelse:</b> " . game::format_data($blokkering['ub_reason'], "bb-opt", "Ingen begrunnelse gitt."), "error");
         return;
     }
     // er spilleren deaktivert, og mottakere er ikke crew?
     if (!login::$user->player->active && (!$receivers_crew || count($this->receivers) > 1)) {
         ess::$b->page->add_message("Din spiller er deaktivert. Du har kun mulighet til å sende meldinger til Crewet. Kun én deltaker kan legges til.");
         return;
     }
     // ikke sende enda?
     if (!isset($_POST['post'])) {
         return;
     }
     // kontroller ventetid
     if (!$this->check_wait()) {
         return;
     }
     // behandle innhold
     $title = trim(postval("title"));
     $message = trim(postval("message"));
     // lengde
     $plain = strip_tags(game::bb_to_html($message));
     $plain = preg_replace("/[^a-zA-ZæøåÆØÅ0-9]/u", '', $plain);
     // er ikke begge feltene fylt ut?
     if (empty($title) || empty($message)) {
         ess::$b->page->add_message("Både tittelfeltet og tekstfeltet må fylles ut.", "error");
         return;
     }
     // for kort tittel?
     if (mb_strlen($title) < 2) {
         ess::$b->page->add_message("Tittelfeltet må inneholde minst 2 tegn.", "error");
         return;
     }
     // for lang tittel?
     if (mb_strlen($title) > 35) {
         ess::$b->page->add_message("Tittelfeltet kan ikke være lengre enn 35 tegn.", "error");
         return;
     }
     // for kort melding?
     if (mb_strlen($plain) < 10) {
         ess::$b->page->add_message("Meldingen kan ikke inneholde færre enn 10 bokstaver/tall.", "error");
         return;
     }
     $it_id = login::$user->player->send_message($this->receivers, $title, $message);
     redirect::handle("innboks_les?id={$it_id}");
 }
示例#26
0
/**
 * Krever HTTPS tilkobling (redirect hvis ikke)
 * 
 * @param boolean $mode (true for ja, false for ikke)
 */
function force_https($mode = true)
{
    // hvis login-systemet krever ssl kan vi ikke fravike det
    if (defined("LOGIN_FORCE_SSL") || defined("FORCE_HTTPS_ALWAYS")) {
        $mode = true;
    }
    // skal være https - er ikke
    if ($mode && !HTTPS) {
        // endre til https hvis serveren støtter det
        global $__server;
        if ($__server['https_support']) {
            redirect::handle("https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], redirect::ABSOLUTE);
        }
    } elseif (!$mode && HTTPS) {
        // endre til http
        redirect::handle("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], redirect::ABSOLUTE);
    }
}
示例#27
0
            $time->setTime($date[4], $date[5], $date[6]);
        }
        // kontroller beløp
        $amount = round(str_replace(",", ".", $_POST['amount']), 2);
        // ugyldig dato
        if (!$date) {
            $_base->page->add_message("Ugyldig dato.", "error");
        } elseif ($amount <= 0) {
            $_base->page->add_message("Ugyldig beløp.", "error");
        } elseif (isset($_POST['approve'])) {
            // legg til
            \Kofradia\DB::get()->exec("INSERT INTO donations SET d_up_id = " . ($up_id ? $up_id : 'NULL') . ", d_amount = {$amount}, d_time = " . $time->format("U"));
            // tøm cache
            cache::delete("donation_list");
            $_base->page->add_message("Donasjonsoppføringen ble lagt til.");
            redirect::handle();
        } else {
            echo box_start("Registrer donasjon", "xsmall") . '
		<form action="" method="post">
			<input type="hidden" name="up_id" value="' . $up_id . '" />
			<input type="hidden" name="time" value="' . htmlspecialchars($_POST['time']) . '" />
			<input type="hidden" name="amount" value="' . $amount . '" />
			<dl class="dd_right">
				<dt>Bruker</dt>
				<dd>' . ($player ? game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']) : 'Anonym') . '</dd>
				<dt>Tidspunkt</dt>
				<dd>' . $time->format(date::FORMAT_SEC) . '</dd>
				<dt>Beløp</dt>
				<dd>' . game::format_nok($amount) . '</dd>
			</dl>
			<p class="c">' . show_sbutton("Legg til oppføringen", 'name="approve"') . ' ' . show_sbutton("Tilbake", 'name="edit"') . '</p>
示例#28
0
 /**
  * Delete selected contacts
  */
 public function action_delete_many()
 {
     $removed = array();
     if (validate_sid(false) && isset($_POST['id']) && is_array($_POST['id'])) {
         foreach ($_POST['id'] as $id) {
             $contact = Contact::getContactById($id);
             if (!$contact || $contact->getOwnerUserID() != $this->user->id) {
                 break;
             }
             if ($contact->delete()) {
                 $removed[] = '<user id="' . $contact->getTargetPlayerID() . '" />';
             }
         }
     }
     if ($removed) {
         \ess::$b->page->add_message('Du fjernet ' . sentences_list($removed) . ' fra listen.');
     }
     return \redirect::handle("/kontakter", \redirect::ROOT);
 }
示例#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();
    }