示例#1
0
    public static function main()
    {
        $nye_hendelser = page_min_side::$active_player->data['up_log_ff_new'] + page_min_side::$active_player->data['up_log_new'];
        if (page_min_side::$subpage == "log" && page_min_side::$active_user->id == login::$user->id) {
            $nye_hendelser = 0;
        }
        echo '
<p class="minside_toplinks sublinks">
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/eye.png" alt="" />Status', "") . '
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/information.png" alt="" />Info', "info") . (page_min_side::$pstats ? '
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/ruby.png" alt="" />Prestasjoner', "achievements") . '
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/newspaper.png" alt="" />Hendelser' . ($nye_hendelser > 0 ? ' (' . $nye_hendelser . ' ' . fword("ny", "nye", $nye_hendelser) . ')' : ''), "log") : '') . '
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/note_edit.png" alt="" />Forum', "forum") . '
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/page_edit.png" alt="" />Profil', "profil");
        if (page_min_side::$active_player->active && page_min_side::$pstats) {
            echo '
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/delete.png" alt="" />Deaktiver', "deact");
        }
        if (access::has("crewet")) {
            echo '
	' . page_min_side::link('<img src="' . STATIC_LINK . '/icon/key.png" alt="" />Crew', "crew");
        }
        echo '
</p>
<div id="page_user_info" class="player">' . (page_min_side::$active_own && page_min_side::$active_player->id == page_min_side::$active_user->data['u_active_up_id'] && page_min_side::$active_player->active ? '' : '
	<h1>' . page_min_side::$active_player->profile_link() . ' (#' . page_min_side::$active_player->id . ')' . (page_min_side::$active_player->active ? '' : '<br />(' . (page_min_side::$active_player->data['up_deactivated_dead'] == 0 ? 'deaktivert' : 'drept') . ' ' . ess::$b->date->get(page_min_side::$active_player->data['up_deactivated_time'])->format(date::FORMAT_NOTIME) . ')') . '</h1>');
        // status
        if (page_min_side::$subpage == "") {
            self::page_default();
        } elseif (page_min_side::$subpage == "info") {
            self::page_info();
        } elseif (page_min_side::$subpage == "achievements") {
            self::page_achievements();
        } elseif (page_min_side::$subpage == "log" && page_min_side::$pstats) {
            self::page_log();
        } elseif (page_min_side::$subpage == "forum") {
            self::page_forum();
        } elseif (page_min_side::$subpage == "profil") {
            self::page_profil();
        } elseif (page_min_side::$subpage == "deact" && access::has("mod")) {
            self::page_deact_mod();
        } elseif (page_min_side::$subpage == "cdeact" && access::has("mod")) {
            self::page_cdeact();
        } elseif (page_min_side::$subpage == "deact" && page_min_side::$active_own) {
            self::page_deact();
        } elseif (page_min_side::$subpage == "activate" && access::has("mod")) {
            self::page_activate();
        } elseif (page_min_side::$subpage == "crew" && access::has("crewet", NULL, NULL, true)) {
            self::page_crew();
        } else {
            redirect::handle(page_min_side::addr(""));
        }
        echo '
</div>';
    }
示例#2
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>';
    }
示例#3
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();
    }
示例#4
0
 /**
  * Oppdater anti-bot status - for å loggføre de som bruker lang tid mellom anti-bot handlingene
  */
 public function update_status($step, $param = NULL)
 {
     global $__server;
     $n = time();
     // steps:
     //   redir
     //   new_img
     //   new_img_wait
     //   test_init
     //   test_repeat
     //   failed
     //   success
     // har vi noe status fra før?
     if (isset($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name])) {
         $p = array_reverse($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name]);
         if (count($p) > 6) {
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: %u" . login::$user->player->data['up_name'] . "%u har utført mange forskjellige handlinger på rad uten å ha fullført anti-boten (%u{$this->name}%u) - handlingslogg:");
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: {$step}");
             $time_last = $n;
             foreach ($p as $row) {
                 $time = $time_last - $row['time'];
                 $time_last = $row['time'];
                 putlog("ABUSE", "%c10%bANTIBOT-LOG%b: {$time} sekunder --> {$row['step']}");
             }
             $_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name] = array_slice($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name], -2);
         }
         $last = $p[0];
         $last_time = $n - $last['time'];
         // utført anti-bot, men forrige handling var ikke init/repeat?
         if ($step == "success" && $last['step'] != "test_init" && $last['step'] != "test_repeat") {
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: %u" . login::$user->player->data['up_name'] . "%u utførte anti-bot vellykket, men forrige handling var ikke å vise anti-bot testen ({$last_time} sekunder siden forrige handling: {$last['step']}) (%u{$this->name}%u)");
         } elseif ($last_time > 60 && $step == "success") {
             putlog("ABUSE", "%c10%bANTIBOT-LOG%b: %u" . login::$user->player->data['up_name'] . "%u utførte anti-bot vellykket, men brukte lang tid ({$last_time} sekunder siden forrige handling: {$last['step']}) (%u{$this->name}%u)");
         }
     }
     // fjerne?
     if ($step == "success") {
         unset($_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name]);
     } else {
         $_SESSION[$__server['session_prefix'] . 'antibot_status'][$this->name][] = array("step" => $step, "time" => time());
     }
     switch ($step) {
         case "redir":
             // trenger sjekk
             putlog("ANTIBOT", "%c10%bVIDERESENDING%b: %u" . login::$user->player->data['up_name'] . "%u blir nå videresendt til anti-bot testen %u{$this->name}%u");
             break;
         case "new_img_wait":
             putlog("ANTIBOT", "%c8%bNYE BILDER%b: %u" . login::$user->player->data['up_name'] . "%u ba om nye bilder for %u{$this->name}%u men må vente %u{$param}%u sekunder");
             break;
         case "new_img":
             putlog("ANTIBOT", "%c9%bNYE BILDER%b: %u" . login::$user->player->data['up_name'] . "%u ba om nye bilder for %u{$this->name}%u");
             break;
         case "test_repeat":
             putlog("ANTIBOT", "%c13%bSJEKK%b: %u" . login::$user->player->data['up_name'] . "%u viste anti-boten for %u{$this->name}%u på nytt");
             break;
         case "test_init":
             putlog("ANTIBOT", "%bSJEKK OPPRETT BILDER%b: %u" . login::$user->player->data['up_name'] . "%u opprettet anti-bot bilder for %u{$this->name}%u");
             break;
         case "failed":
             putlog("ANTIBOT_ERROR", "%c4%bSJEKK MISLYKKET%b: %u" . login::$user->player->data['up_name'] . "%u mislykket anti-boten ({$this->name}) med %u{$param}%u " . fword("riktig alternativ", "riktige alternativer", $param));
             break;
         case "success":
             putlog("ANTIBOT", "%bSJEKK VELLYKKET%b: %u" . login::$user->player->data['up_name'] . "%u utførte anti-boten for %u{$this->name}%u");
             break;
     }
 }
示例#5
0
    /**
     * Vis side med kart
     */
    public function show_full_page()
    {
        global $__server;
        // hent familierangering
        $ff_list = ff::get_fam_points_rank();
        // deaktiver høyre side
        //define("DISABLE_RIGHT_COL", true);
        ess::$b->page->add_css('
#default_main { overflow: visible }');
        ess::$b->page->add_js_domready('
	sm_scripts.load_hm();
	window.HM.addEvent("f-changed", function(data) {
		//$$(".bydeler_filter a").removeClass("active");
		$$(".bydeler_ressurs").setStyle("display", "none");
		$$(".bydeler_ressurs_"+data).setStyle("display", "block");
		//$("f_"+data).addClass("active");
	});
	window.HM.addEvent("f-removed", function() {
		//$$(".bydeler_filter a").removeClass("active");
		//$("f_").addClass("active");
		$$(".bydeler_ressurs").setStyle("display", "block");
	});
	window.HM.addEvent("b-added", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_b").addClass("active");
		$$(".bydeler_br").setStyle("display", "none");
		$$(".bydeler_steder").setStyle("display", "block");
	});
	window.HM.addEvent("b-removed", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_").addClass("active");
		$$(".bydeler_br").setStyle("display", "block");
		$$(".bydeler_steder").setStyle("display", "none");
	});
	
	$$(".bydeler_steder").setStyle("display", "none");
	$$(".bydeler_alt a").addEvent("click", function(e)
	{
		window.HM.remove("f");
		window.HM.set("b", "");
		e.stop();
	});
	
	$$(".bydeler_filter a").addEvent("click", function(e)
	{
		window.HM.remove("b");
		if (this.get("id") == "f_") window.HM.remove("f");
		else window.HM.set("f", this.get("id").substring(2));
		e.stop();
	});
	
	window.HM.recheck();
');
        // sett opp alle FF og sorter dem i y-retning
        $data = array();
        $pos_x = array();
        $pos_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            if ($id == 0) {
                continue;
            }
            foreach ($bydel['ff'] as $row) {
                $pos_x[] = $row['br_pos_x'];
                $pos_y[] = $row['br_pos_y'];
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                    // antall poeng
                    if (isset($ff_list[$row['ff_id']]) && $ff_list[$row['ff_id']]->data['ff_is_crew'] == 0) {
                        $eier .= '<br />' . game::format_num($ff_list[$row['ff_id']]->data['ff_points_sum']) . ' poeng';
                    }
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                $data[] = '
		<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '" style="left: ' . $row['br_pos_x'] . '%; top: ' . $row['br_pos_y'] . '%">
			<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			<span class="bydeler_ressurs_tekst">
				' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
				' . $eier . '</span>
			</span>
			<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
		</a>';
            }
        }
        array_multisort($pos_y, $pos_x, $data);
        $bydeler_0 = $this->bydeler[0];
        unset($this->bydeler[0]);
        // sorter bydelene i y-retning
        $bydeler_x = array();
        $bydeler_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            $bydeler_x[] = $bydel['bydel_x'];
            $bydeler_y[] = $bydel['bydel_y'];
        }
        array_multisort($bydeler_x, $bydeler_y, $this->bydeler);
        // invitasjoner til FF
        if (count($this->ff_invites) > 0) {
            echo '
<div class="bg1_c small">
	<h1 class="bg1">Invitasjoner<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
            foreach ($this->ff_invites as $row) {
                $type = ff::$types[$row['ff_type']];
                echo '
		<p>Du er invitert til ' . $type['refobj'] . ' <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">' . htmlspecialchars($row['ff_name']) . '</a> som ' . $type['priority'][$row['ffm_priority']] . ' (' . ess::$b->date->get($row['ffm_date_join'])->format(date::FORMAT_NOTIME) . ') - <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">Godta/avslå</a></p>';
            }
            echo '
	</div>
</div>';
        }
        if (count($this->fff) > 0) {
            echo '
<div class="bg1_c medium bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Konkurranse om å danne broderskap<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<table class="table center tablem">
			<thead>
				<tr>
					<th>Avsluttes</th>
					<th>Gjenstår</th>
					<th>Antall broderskap</th>
					<th>Gjenstående broderskap</th>
					<th>&nbsp;</th>
				</tr>
			</thead>
			<tbody class="r">';
            $i = 0;
            $free = 0;
            foreach ($this->fff as $row) {
                if ($row['ff_count'] < ff::MAX_FFF_FF_COUNT) {
                    $free += ff::MAX_FFF_FF_COUNT - $row['ff_count'];
                }
                echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td>' . ess::$b->date->get($row['fff_time_expire'])->format(date::FORMAT_SEC) . '</td>
					<td>' . game::timespan(max(time(), $row['fff_time_expire']), game::TIME_ABS) . '</td>
					<td>' . $row['ff_count'] . '</td>
					<td>' . $row['ff_count_active'] . '</td>
					<td><a href="' . $__server['relative_path'] . '/ff/?fff_id=' . $row['fff_id'] . '">Vis &raquo;</a></td>
				</tr>';
            }
            $create_link = login::$logged_in ? $this->up->rank['number'] < ff::$types[1]['priority_rank'][1] ? ' - Du har ikke høy nok rank til å opprette et broderskap' : ' - Du har høy nok rank - <a href="' . $__server['relative_path'] . '/ff/?create">Opprett broderskap &raquo;</a>' : '';
            echo '
			</tbody>
		</table>' . ($free > 0 ? '
		<p class="c" style="margin-top: 0">Det er ' . $free . ' ' . fword("ledig konkurranseplass", "ledige konkurranseplasser", $free) . $create_link . '</p>' : '
		<p class="c" style="margin-top: 0">Ingen ledige konkurranseplasser.</p>') . '
	</div>
</div>';
        }
        // topp rangerte familier
        if (count($ff_list) > 0) {
            echo '
<div class="bg1_c xxsmall bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Topp rangerte broderskap<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<dl class="dd_right">';
            $i = 0;
            foreach ($ff_list as $ff) {
                $title = "For rank til medlemmer: " . $ff->data['ff_points_up'] . " - For firma til medlemmer: " . $ff->data['ff_points_ff'] . " - For drap: " . $ff->data['ff_points_kill'];
                echo '
			<dt><a href="' . ess::$s['rpath'] . '/ff/?ff_id=' . $ff->id . '">' . htmlspecialchars($ff->data['ff_name']) . '</a></dt>
			<dd title="' . $title . '">' . game::format_num($ff->data['ff_points_sum']) . ' poeng</dd>';
                // vis kun 3 beste familiene
                if (++$i == 3) {
                    break;
                }
            }
            echo '
		</dl>
		<p class="c"><a href="' . ess::$s['rpath'] . '/node/19">Poenginformasjon</a></p>
	</div>
</div>';
        }
        kf_menu::$data['bydeler_menu'] = true;
        echo '
<h1 class="bydeler">Bydeler</h1>
<div class="bydeler">
	<div class="bydeler_kart bydeler_br">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />
		' . implode('', $data) . '
	</div>';
        // har vi noen FF som ikke er plassert?
        if ($bydeler_0['active']) {
            echo '
	<div class="bydeler_uplassert bydeler_br">';
            foreach ($bydeler_0['ff'] as $row) {
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                echo '
		<div class="bydeler_uplassert_boks">
			<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '">
				<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
				<span class="bydeler_ressurs_tekst">
					' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
					' . $eier . '</span>
				</span>
				<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			</a>
		</div>';
            }
            echo '
	</div>';
        }
        echo '
	<div class="bydeler_kart bydeler_steder">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />';
        foreach ($this->bydeler as $bydel) {
            if ($bydel['active'] == 0) {
                continue;
            }
            if ($this->up) {
                $distance = self::calc_travel_distance($this->up->bydel, $bydel);
                $taxi_price = round($distance * self::TAXI_PRICE_KM);
                $taxi_points = round($distance * self::TAXI_POINTS_KM * $this->up->rank['number']);
            }
            echo '
		<div class="map_unit' . ($this->up && $this->up->bydel['id'] == $bydel['id'] ? ' map_active' : '') . '" style="left: ' . $bydel['bydel_x'] . '%; top: ' . $bydel['bydel_y'] . '%" id="map_link_' . $bydel['id'] . '">
			<div class="map_title">
				<p class="map_link"><b><b><b>' . htmlspecialchars($bydel['name']) . '</b></b></b></p>
				<div class="bydeler_sted">
					<div class="bydeler_sted_info">
						<dl class="dd_right">
							<dt>Spillere</dt>
							<dd>' . game::format_number($bydel['num_players']) . '</dd>
							<dt>Penger i omløp</dt>
							<dd>' . game::format_cash($bydel['sum_money']) . '</dd>
						</dl>';
            if (!$this->up) {
            } elseif ($this->up->bydel['id'] == $bydel['id']) {
                echo '
						<p>Du befinner deg i denne bydelen.</p>';
            } elseif ($this->up->fengsel_check()) {
                echo '
						<p>Du er i fengsel og kan ikke reise.</p>';
            } elseif ($this->up->bomberom_check()) {
                echo '
						<p>Du er i bomberom og kan ikke reise.</p>';
            } else {
                echo '
						<div class="bydeler_reise c">
							<form action="bydeler" method="post">
								<input type="hidden" name="reise" value="' . htmlspecialchars($bydel['name']) . '" />';
                // taxi
                if (!$this->up->energy_check(self::TAXI_ENERGY * 1.3)) {
                    echo '
								<p>Du har ikke nok energi til å ta taxi hit.</p>';
                } elseif ($this->up->data['up_points'] < $taxi_points * 2) {
                    echo '
								<p>Du har ikke høy nok rank til å ta taxi hit.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Ta taxi (" . game::format_cash($taxi_price) . ", " . game::format_number(round($taxi_points)) . " poeng)", 'name="taxi"') . '</p>';
                }
                // gta
                if ($this->gta_count == 0) {
                    echo '
								<p>Du har ingen biler i bydelen du oppholder deg i for å reise med.</p>';
                } elseif (!$this->gta_garage[$bydel['id']]['garage']) {
                    echo '
								<p>Det er ingen garasje i denne bydelen.</p>';
                } elseif ($this->gta_garage[$bydel['id']]['garage_free'] == 0) {
                    echo '
								<p>Det er ingen ledige plasser i garasjen i denne bydelen.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Kjør egen bil", 'name="gta"') . '</p>';
                }
                // teleportere
                if (access::is_nostat()) {
                    echo '
								<p>' . show_sbutton("Teleporter hit (nostat)", 'name="teleporter"') . '</p>';
                }
                echo '
							</form>
						</div>';
            }
            echo '
					</div>
				</div>
			</div>
		</div>';
        }
        echo '
	</div>';
        echo '
</div>';
        ess::$b->page->load();
    }
示例#6
0
文件: ip.php 项目: Kuzat/kofradia
			<th>Penger</th>
			<th>Fødselsdato</th>
		</tr>
	</thead>
	<tbody>';
    $i = 0;
    foreach ($list as $row) {
        // spacer
        echo '
		<tr>
			<td colspan="12" class="ip_spacer">&nbsp;</td>
		</tr>';
        $count = count($row);
        echo '
		<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
			<td rowspan="' . $count . '" valign="top"><a href="finn?ip=' . urlencode($row[0]['u_online_ip']) . '">' . htmlspecialchars($row[0]['u_online_ip']) . '</a><br />(' . $count . ' ' . fword("bruker", "brukere", $count) . ')</td>';
        $e = 0;
        foreach ($row as $player) {
            // ny rad?
            if (++$e > 1) {
                echo '
		</tr>
		<tr' . ($i % 2 == 0 ? ' class="color"' : '') . '>';
            }
            $birth = explode("-", $player['u_birth']);
            echo '
			<td>' . game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']) . '</td>
			<td><a href="finn?email=' . urlencode($player['u_email']) . '">' . htmlspecialchars($player['u_email']) . '</a></td>
			<td>' . $_base->date->get($player['up_created_time'])->format(date::FORMAT_SEC) . '</td>
			<td>' . $_base->date->get($player['up_last_online'])->format(date::FORMAT_SEC) . '</td>
			<td class="r">' . game::timespan($player['up_last_online'], game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD) . '</td>
示例#7
0
    /**
     * Plukk ut en parent
     * @param array $priority
     * @param array $members spillerene som skal flyttes
     * @param array $player (enten $member eller $player må sendes med, den andre null)
     * @param string $back_link (skal være html safe)
     */
    protected function pick_parent($priority, $members = null, $player, $back_link, $form_html = null, $invite = false)
    {
        // ikke pri4 eller parent aktivert?
        if ($priority['priority'] != 4 || !$this->ff->type['parent']) {
            return null;
        }
        $parent = null;
        // har vi valgt pri3?
        if (isset($_POST['parent'])) {
            $ok = true;
            // gyldig pri3?
            $pri3_id = (int) $_POST['parent'];
            if (!isset($this->ff->members['members_priority'][3][$pri3_id])) {
                ess::$b->page->add_message("Fant ikke valgt {$this->ff->type['priority'][3]}.", "error");
                $ok = false;
            }
            // kontroller at det er en gyldig pri3 og om ingen parents endret?
            if ($ok && $members) {
                $changed = false;
                foreach ($members as $member) {
                    if (!$changed && ($priority['priority'] != $member->data['ffm_priority'] || $pri3_id != $member->data['ffm_parent_up_id'])) {
                        $changed = true;
                    }
                    // seg selv?
                    if ($member->id == $pri3_id) {
                        ess::$b->page->add_message("Du kan ikke velge en spiller du skal flytte.", "error");
                        $ok = false;
                        break;
                    }
                }
                if (!$changed) {
                    ess::$b->page->add_message(fword("Medlemmet", "Medlemmene", count($members)) . " er allerede underordnet denne {$this->ff->type['priority'][3]}.", "error");
                    $ok = false;
                }
            }
            if ($ok) {
                return $pri3_id;
            }
        }
        // vis oversikt over pri3 man kan velge mellom
        ess::$b->page->add_title("Velg overordnet {$this->ff->type['priority'][3]}");
        $text = "";
        $up_ids = array();
        if (!$members || count($members) == 1) {
            $member = $members ? $members[0] : null;
            $up_ids[] = $member ? $member->id : $player['up_id'];
            $text = '
		<p>Du må velge en ' . $this->ff->type['priority'][3] . ' som skal være overordnet for ' . ($member ? game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) : game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level'])) . ' som vil ' . ($invite ? 'invitert' : 'få posisjonen') . ' som ' . $this->ff->type['priority'][4] . '.' . ($member ? ' (Nåværende posisjon: ' . ucfirst($member->get_priority_name()) . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')' : '') . '</p>';
        } else {
            $list = array();
            foreach ($members as $member) {
                $up_ids[] = $member->id;
                $list[] = '<li><user id="' . $member->id . '" /> (' . $member->get_priority_name() . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')</li>';
            }
            $text = '
		<p>Du må velge en ' . $this->ff->type['priority'][3] . ' som skal være overordnet for følgende spillere:</p>
		<ul>' . implode("", $list) . '</ul>';
        }
        echo '
<div class="section" style="width: 400px">
	<h1>Velg overordnet ' . $this->ff->type['priority'][3] . '</h1>
	<p class="h_right"><a href="' . $back_link . '">Tilbake</a></p>
	<boxes />
	<form action="" method="post">' . $form_html . '
		<input type="hidden" name="up_id' . ($members ? 's' : '') . '" value="' . ($members ? implode(",", $up_ids) : $player['up_id']) . '" />
		<input type="hidden" name="priority" value="' . $priority['priority'] . '" />' . $text . '
		<table class="table center">
			<thead>
				<tr>
					<th>' . ucfirst($this->ff->type['priority'][3]) . '</th>
					<th>Sist pålogget</th>
					<th>' . ucfirst($this->ff->type['priority'][4]) . '</th>
					<th>Inviterte ' . $this->ff->type['priority'][4] . '</th>
				</tr>
			</thead>
			<tbody>';
        $i = 0;
        foreach ($this->ff->members['members_priority'][3] as $member_parent) {
            if ($members && in_array($member_parent->id, $up_ids)) {
                continue;
            }
            echo '
				<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
					<td><input type="radio" name="parent" value="' . $member_parent->id . '" /> ' . game::profile_link($member_parent->id, $member_parent->data['up_name'], $member_parent->data['up_access_level']) . '</td>
					<td class="r">' . ess::$b->date->get($member_parent->data['up_last_online'])->format() . '</td>
					<td class="r">' . (isset($this->ff->members['members_parent'][$member_parent->id]) ? count($this->ff->members['members_parent'][$member_parent->id]) : 0) . '</td>
					<td class="r">' . (isset($this->ff->members['invited_parent'][$member_parent->id]) ? count($this->ff->members['invited_parent'][$member_parent->id]) : 0) . '</td>
				</tr>';
        }
        echo '
			</tbody>
		</table>
		<p class="c">
			' . show_sbutton("Velg {$this->ff->type['priority'][3]}") . '
			<a href="' . $back_link . '">Tilbake</a>
		</p>
	</form>
</div>';
        $this->ff->load_page();
    }
示例#8
0
    protected static function generate_page()
    {
        /*<div class="default_hidden" id="content"><a href="#top">Til toppen av siden</a></div>
        		<div class="default_hidden"><a href="#content">Til toppen av innholdet</a></div>*/
        $extra_classes = '';
        // vise juleheader?
        $d = ess::$b->date->get();
        if ($d->format("m") == 12) {
            $extra_classes .= ' juleheader';
        }
        echo '<!DOCTYPE html>
<html lang="no">
<head>
<title>' . ess::$b->page->generate_title() . '</title>' . ess::$b->page->generate_head() . '</head>
<body class="' . self::$class_browser . self::$class_crew . (self::$locked ? ' is_lock' : '') . $extra_classes . '" id="default_th">' . ess::$b->page->body_start . '
	<!--<div class="default_hidden print" id="top">
		<h1><a href="' . ess::$s['absolute_path'] . '">kofradia.no</a></h1>
		<p class="default_hidden"><a href="#content">Til innholdet</a></p>
	</div>-->
	<div id="default_header_wrap">
		<div id="default_header_img"></div>
		<div id="default_header">';
        $boxes = theme_helper::get_extended_access_boxes();
        if ($boxes) {
            echo '
			<div id="cboxes"' . (!access::has("mod") ? ' class="nocus"' : '') . '>';
            foreach ($boxes as $box) {
                echo '
				<p class="box"><a href="' . $box[0] . '">' . $box[1] . '</a></p>';
            }
            echo '
			</div>';
        }
        echo self::get_extended_access_login();
        echo self::get_extended_access_links();
        echo self::get_extended_access_search();
        echo '
			
			<p id="toplink"><a href="' . ess::$s['path'] . '/" title="Gå til forsiden"></a></p>
			<p id="fb_link"><a href="http://www.facebook.com/kofradia" target="_blank"><span>Du finner oss på Facebook</span></a></p>';
        //<p id="donate_link"><a href="'.ess::$s['relative_path'].'/donasjon" title="Doner &raquo;"><span>Donér &raquo;</span></a></p>';
        $blog_links = self::get_blog_links();
        if ($blog_links) {
            echo '
			<p id="blog_link">' . implode("<br />", $blog_links) . '</p>';
        }
        echo '
			<ul id="default_topmenu">
				<li><a href="' . ess::$s['relative_path'] . '/loggut?sid=' . login::$info['ses_id'] . '" onclick="return confirm(\'Er du sikker på at du vil logge ut?\\n\\nTips! Trykk Esc knappen tre ganger for å logge ut uten å måtte trykke på denne knappen!\')"><b>Logg ut</b></a></li>
				<li><a href="' . ess::$s['relative_path'] . '/innboks">Meldinger</a></li>';
        if (!self::$locked) {
            echo '
				<li><a href="' . ess::$s['relative_path'] . '/kontakter">Kontakter</a></li>
				<li><a href="' . ess::$s['relative_path'] . '/finn_spiller">Finn spiller</a></li>';
        }
        echo '
				<li><a href="' . ess::$s['relative_path'] . '/min_side?u&amp;a=set">Innstillinger</a></li>';
        if (!self::$locked) {
            echo '
				<li><a href="' . ess::$s['relative_path'] . '/irc/client/" target="_blank">Chat</a></li>';
        }
        echo '
			</ul>
			<div id="status_info"></div>
			<p id="default_profilbilde">
				<span id="default_profilbilde_wrap">
					<a href="' . ess::$s['relative_path'] . '/min_side?' . (!login::$user->player->active ? "up_id=" . login::$user->player->id . '&amp;' : '') . 'a=profil&amp;b=profilbilde" class="profile_image_edit"><img src="/static/icon/image.png" /> endre</a>
					<a href="' . ess::$s['relative_path'] . '/p/' . login::$user->player->data['up_name'] . '"><img src="' . htmlspecialchars(login::$user->player->get_profile_image()) . '" alt="Ditt profilbilde" class="profile_image" /></a>
				</span>
			</p>
			<p id="default_playername">' . game::profile_link() . '</p>' . self::get_oppdrag_status() . '
		</div>
		<div id="default_header_subline">
			<p id="server_klokka"><span>' . self::$date_now->format(date::FORMAT_WEEKDAY) . ' ' . self::$date_now->format(date::FORMAT_NOTIME) . ' - ' . self::$date_now->format("H:i:s") . '</span></p>
			<div id="pm_new">' . (self::$num_pm > 0 ? '<p class="notification_box"><a href="' . ess::$s['relative_path'] . '/innboks"><b>' . self::$num_pm . ' ' . fword("ny</b> melding", "nye</b> meldinger", self::$num_pm) . '</a></p>' : '') . '</div>
			<div id="log_new">' . (self::$num_log > 0 ? '<p class="notification_box"><a href="' . ess::$s['relative_path'] . '/min_side?log"><b>' . self::$num_log . ' ' . fword("ny</b> hendelse", "nye</b> hendelser", self::$num_log) . '</a></p>' : '') . '</div>';
        if (login::$user->data['u_log_crew_new'] > 0 && isset(login::$extended_access)) {
            echo '
			<p class="notification_box"><a href="' . ess::$s['relative_path'] . '/min_side?u&a=crewlog"><b>' . login::$user->data['u_log_crew_new'] . '</b> ' . fword("ny hendelse som crew", "nye hendelser som crew", login::$user->data['u_log_crew_new']) . '</a></p>';
        }
        if (!self::$locked) {
            echo '
			<div id="def_ui2">
				<p>' . login::$user->player->getRank()->getName() . '</p>
				<p><span class="farge">Sted: </span> <span id="status_bydel">' . game::$bydeler[login::$user->player->data['up_b_id']]['name'] . '</span></p>
				<p><span class="farge">Har ute</span> <span id="status_cash">' . game::format_cash(login::$user->player->data['up_cash']) . '</span></p>
				<p><span class="farge">Plassering: </span> nr. <span id="status_rankpos">' . login::$user->player->data['upr_rank_pos'] . '</span></p>
			</div>';
        }
        echo '
		</div>
	</div>
	<div id="default_left">';
        if (!login::$user->player->active) {
            echo '
		<div id="default_info_dead">
			<a href="' . ess::$s['relative_path'] . '/lock?f=player">' . (login::$user->player->data['up_deactivated_dead'] == 2 ? '
				<span>Din spiller blødde ihjel pga. lite energi.</span>' : (login::$user->player->data['up_deactivated_dead'] ? '
				<span>Din spiller har blitt drept.</span>' : '
				<span>Din spiller er deaktivert.</span>')) . '
				<span class="link">Ny spiller &raquo;</span>
			</a>
		</div>';
        }
        echo '
		<nav>' . kf_menu::build_menu() . '
		</nav>
	</div>';
        if (defined("DISABLE_RIGHT_COL")) {
            $content_right = '';
        } else {
            $content_right = ess::$b->page->generate_content_right();
            # self::$locked ..?
        }
        echo '
	<div id="default_main">';
        if ($content_right) {
            echo '
		<div id="default_right">' . $content_right . '</div>';
        }
        echo '
		<div id="default_content_wrap"' . (!$content_right ? ' class="noright"' : '') . '>' . self::get_status_bars() . '
			<section id="default_content">' . ess::$b->page->content . '</section>
		</div>
	</div>
	<div id="default_bottom_1">
		<p><a href="/">Kofradia</a> &copy; - Beskyttet av <a href="http://www.lovdata.no/all/nl-19610512-002.html" target="_blank">åndsverkloven</a> - Utviklet av <a href="http://www.henrist.net/" target="_blank">Henrik Steen</a></p>
		<p><a href="' . ess::$s['relative_path'] . '/betingelser">Betingelser for bruk</a> - Besøk <a href="irc://irc.quakenet.org/kofradia" target="_blank">#Kofradia</a> på QuakeNet<!-- <a href="' . ess::$s['relative_path'] . '/forum/topic?id=85">(Hjelp)</a>--> - <a href="' . ess::$s['relative_path'] . '/credits">Takk til</a></p>
	</div>
	<div id="default_bottom_2">';
        $profiler = \Kofradia\DB::getProfiler();
        echo '
		<p>Script: ' . round(microtime(true) - SCRIPT_START - $profiler->time, 4) . ' sek - Database: ' . round($profiler->time, 4) . ' sek (' . $profiler->num . ' spørring' . ($profiler->num == 1 ? '' : 'er') . ')<span id="js_time"></span></p>';
        $revision = self::get_revision_info();
        if ($revision) {
            echo '
		<p>Versjon <a href="https://github.com/hswno/kofradia/commit/' . $revision['commit'] . '" title="' . htmlspecialchars($revision['message']) . '">' . mb_substr($revision['commit'], 0, 8) . '</a> oppdatert ' . ess::$b->date->get($revision['date'])->format() . '. <a href="&rpath;/github">Logg</a></p>';
        } else {
            echo '
		<p>Versjonsinformasjon er utilgjengelig.</p>';
        }
        echo '
		<p>Tid og dato ved visning: <b>' . self::$date_now->format(date::FORMAT_SEC) . '</b>.</p>
	</div>' . ess::$b->page->body_end;
        // debug time
        /*$time = SCRIPT_START;
        		ess::$b->dt("end");
        		$dt = 'start';
        		foreach (ess::$b->time_debug as $row)
        		{
        			$dt .= ' -> '.round(($row[1]-$time)*1000, 2).' -> '.$row[0];
        			$time = $row[1];
        		}*/
        /*if (MAIN_SERVER)
        		{
        			$text = ess::$b->date->get()->format("Y-m-d\tH:i:s\t")."{$_SERVER['REMOTE_ADDR']}\t{$_SERVER['REQUEST_METHOD']}\t{$_SERVER['REQUEST_URI']}\t".login::$user->player->id."\t".login::$user->player->data['up_name']."\t".round(microtime(true)-SCRIPT_START-ess::$b->db->time, 4)."\t".round(ess::$b->db->time, 4)."\t".ess::$b->db->queries."\t".str_replace(" -> ", "\t", $dt)."\n"; 
        			@file_put_contents("/home/smafia/debugtime.log", $text, FILE_APPEND);
        		}*/
        /*echo '
        	<!-- '.$dt.' -->*/
        echo '
</body>
</html>';
    }
示例#9
0
 /**
  * Hent diverse infobokser for crew
  */
 public static function getExtendedAccessBoxes()
 {
     if (!isset(\login::$extended_access)) {
         return;
     }
     if (!\login::extended_access_is_authed()) {
         return;
     }
     $boxes = array();
     // support meldinger
     if (\access::has("crewet")) {
         $row = \tasks::get("support");
         if ($row['t_ant'] > 0) {
             $boxes[] = array(\ess::$s['relative_path'] . '/support/?a=panel&amp;kategori=oppsummering', 'Det er <b>' . $row['t_ant'] . '</b> ' . fword("ubesvart supportmelding", "ubesvarte supportmeldinger", $row['t_ant']) . '!');
         }
     }
     // hent antall nye rapporteringer fra cache
     $row = \tasks::get("rapporteringer");
     if ($row['t_ant'] > 0) {
         $boxes[] = array(\ess::$s['relative_path'] . '/crew/rapportering', 'Det er <b>' . $row['t_ant'] . '</b> ' . fword("ubehandlet rapportering", "ubehandlede rapporteringer", $row['t_ant']) . '.');
     }
     // hent antall nye søknader fra cache
     $row = \tasks::get("soknader");
     if ($row['t_ant'] > 0) {
         $boxes[] = array(\ess::$s['relative_path'] . '/crew/soknader', 'Det er <b>' . $row['t_ant'] . '</b> ' . fword("ubehandlet søknad", "ubehandlede søknader", $row['t_ant']) . '.');
     }
     // antall ubesvarte henvendelser
     if (\access::has("mod")) {
         // hent antall nye henvendelser fra cache
         $row = \tasks::get("henvendelser");
         if ($row['t_ant'] > 0) {
             $boxes[] = array(\ess::$s['relative_path'] . '/henvendelser?a', 'Det er <b>' . $row['t_ant'] . '</b> ' . fword("ny henvendelse", "nye henvendelser", $row['t_ant']) . ' som er ubesvart.');
         }
     }
     // hendelser fra GitHub
     $github = \Kofradia\Users\GitHub::get(\login::$user);
     if (!$github->hasActivated()) {
         $boxes[] = array(\ess::$s['relative_path'] . '/github', 'Du vil nå motta nye hendelser fra GitHub her. Trykk her for å se de siste hendelsene.');
     } else {
         $num_changes = $github->getCodeBehindCount() + $github->getOtherBehindCount();
         if ($num_changes > 0) {
             $boxes[] = array(\ess::$s['relative_path'] . '/github', 'Det er <b>' . $num_changes . '</b> ny' . ($num_changes == 1 ? '' : 'e') . ' hendelse' . ($num_changes == 1 ? '' : 'r') . ' i GitHub.');
         }
     }
     return $boxes;
 }
示例#10
0
文件: panel.php 项目: Kuzat/kofradia
    /**
     * Behandle valg av bygning
     */
    protected function page_br_handle()
    {
        // allerede valgt bygning?
        if ($this->ff->data['br_id'] && !$this->ff->mod) {
            ess::$b->page->add_message(ucfirst($this->ff->type['refobj']) . " er allerede tilknyttet en bygning.");
            redirect::handle();
        }
        ess::$b->page->add_title("Velg bygning");
        $bydel = login::$user->player->bydel;
        // hent ledige bygninger i denne bydelen
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT br_id, br_pos_x, br_pos_y\n\t\t\tFROM bydeler_resources\n\t\t\t\tLEFT JOIN (SELECT DISTINCT ff_br_id FROM ff WHERE ff_inactive = 0 AND ff_br_id IS NOT NULL) ref ON ff_br_id = br_id\n\t\t\tWHERE br_b_id = {$bydel['id']} AND br_type = 1 AND ff_br_id IS NULL");
        $resources_free = array();
        while ($row = $result->fetch()) {
            $resources_free[$row['br_id']] = $row;
        }
        // velge bygning?
        if (isset($_POST['br'])) {
            $br_id = (int) $_POST['br'];
            // ikke gyldig bygning?
            if (!isset($resources_free[$br_id])) {
                ess::$b->page->add_message("Fant ikke valgt bygning.");
            } else {
                // oppdater FF
                \Kofradia\DB::get()->exec("UPDATE ff SET ff_br_id = {$br_id} WHERE ff_id = {$this->ff->id}");
                global $__server;
                putlog("INFO", ucfirst($this->ff->type['refobj']) . " %u{$this->ff->data['ff_name']}%u har nå valgt" . ($this->ff->data['br_id'] ? ' ny' : '') . " bygning på {$bydel['name']}. {$__server['path']}/ff/?ff_id={$this->ff->id}");
                putlog("CREWCHAN", ucfirst($this->ff->type['refobj']) . " %u{$this->ff->data['ff_name']}%u har nå valgt" . ($this->ff->data['br_id'] ? ' ny' : '') . " bygning på {$bydel['name']}. {$__server['path']}/ff/?ff_id={$this->ff->id}");
                // live-feed
                livefeed::add_row(ucfirst($this->ff->refstring) . ' <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $this->ff->id . '">' . htmlspecialchars($this->ff->data['ff_name']) . '</a> har valgt bygning på ' . htmlspecialchars($bydel['name']) . '.');
                // første familien i spillet?
                if ($this->ff->type['type'] == "familie") {
                    hall_of_fame::trigger("familie", $this->ff);
                    hall_of_fame::trigger("ff_owner", $this->ff);
                }
                ess::$b->page->add_message("Du har valgt bygning for {$this->ff->type['refobj']} på {$bydel['name']}.");
                redirect::handle("?ff_id={$this->ff->id}");
            }
        }
        // hent FF-ene i denne bydelen
        $result = \Kofradia\DB::get()->query("SELECT ff_id, ff_name, br_pos_x, br_pos_y FROM ff JOIN bydeler_resources ON ff_br_id = br_id WHERE br_b_id = {$bydel['id']} AND ff_inactive = 0");
        $resources = array();
        while ($row = $result->fetch()) {
            $resources[$row['ff_id']] = $row;
        }
        ess::$b->page->add_css('
#default_main { overflow: visible }
.bydel_parent { position: relative }
.bydel_resource { position: absolute }
.bydel_resource img { cursor: pointer; z-index: 100 }
.bydel_resource div {
	position: absolute;
	left: 28px;
	top: 2px;
	font-size: 11px;
	background-color: #0B0B0B;
	color: #AAA;
	padding: 2px;
	z-index: 1000;
	white-space: nowrap;
}
');
        ess::$b->page->add_js_file("../js/bydeler.js");
        ess::$b->page->add_js_domready('
	var bydel_resources = new Hash(' . js_encode($resources) . ');
	var bydel_resources_free = new Hash(' . js_encode($resources_free) . ');
	var bydel_x = ' . $bydel['b_coords_x'] . ';
	var bydel_y = ' . $bydel['b_coords_y'] . ';
	
	var kart = $("bydelskart");
	kart.getParent().setStyle("position", "relative");
	var pos = kart.getPosition(kart.getParent());
	var bydel_container = new Element("div", {"styles": {"position": "absolute", "left": 4, "top": 0}}).inject(kart, "before");
	
	bydel_resources.each(function(value)
	{
		new BydelResourceFF(value, bydel_container, bydel_x, bydel_y);
	});
	
	var select_br = function()
	{
		if (confirm("Er du sikker på at du vil velge denne bygningen for ' . $this->ff->type['refobj'] . '? Dette kan ikke endres senere."))
		{
			$("br_id").set("value", this.options.data["br_id"]).form.submit();
		}
	};
	
	bydel_resources_free.each(function(value)
	{
		new BydelResourceSelect(value, bydel_container, bydel_x, bydel_y, select_br);
	});');
        echo '
<div class="bg1_c" style="width: ' . ($bydel['b_size_x'] + 30) . 'px; margin: 40px auto">
	<h1 class="bg1">Du er på ' . $bydel['name'] . '<span class="left"></span><span class="right"></span></h1>
	<p class="h_left"><a href="./?ff_id=' . $this->ff->id . '">&laquo; Tilbake</a></p>
	<div class="bg1" style="overflow: visible; padding-top: 1px; margin-top: -1px">
		<form action="" method="post">
			<input type="hidden" name="br" id="br_id" />
			<boxes />' . (count($resources_free) == 0 ? '
			<p>Det er ingen ledige plasser i denne bydelen.</p>' : '
			<p>Det er ' . count($resources_free) . ' ' . fword("ledig plass", "ledige plasser", count($resources_free)) . ' i denne bydelen.</p>') . '
			<p class="c bydel_parent"><img src="' . IMGS_HTTP . '/bydeler/bydel_' . $bydel['id'] . '.png" id="bydelskart" alt="Bydelskart for ' . htmlspecialchars($bydel['name']) . '" /></p>
		</form>
	</div>
</div>';
        $this->ff->load_page();
    }
示例#11
0
文件: index.php 项目: Kuzat/kofradia
    /**
     * Plassere spiller i bomberom
     */
    protected function type_bomberom_set_handle($ledige_plasser, $ant_i_bomberommet)
    {
        $player = login::$user->player;
        $self = true;
        $familie = false;
        // plassere en annen spiller?
        if ($_POST['player'] != "own") {
            // ingen ledige plasser?
            if ($ledige_plasser == 0) {
                ess::$b->page->add_message("Det er ingen ledige plasser til å plassere andre spillere i bomberommet.", "error", null, "bomberom_set");
                redirect::handle();
            }
            // hent spillerinfo
            $player = player::get(postval("player"));
            if (!$player || !$player->active || $player->bomberom_check() || $player->fengsel_check()) {
                ess::$b->page->add_message("Kan ikke plassere spilleren i bomberom.", "error", null, "bomberom_set");
                redirect::handle();
            }
            // kan ikke sette i bomberom pga. rankforskjell?
            if (!login::$user->player->can_set_brom($player)) {
                ess::$b->page->add_message('Kan ikke plassere <user id="' . $player->id . '" /> i bomberom pga. spilleren sin rank er for langt unna din rank. Se mer i <a href="&rpath;node/39">hjelp</a>.', "error", null, "bomberom_set");
                redirect::handle();
            }
            // kontroller at vi er ansvarlig eller har tilgang pga. familie
            if ($player->data['up_brom_up_id'] != $this->up->id) {
                // sjekk at vi er i en felles familie
                $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT ffm_ff_id\n\t\t\t\t\tFROM ff, ff_members, (\n\t\t\t\t\t\tSELECT ffm_ff_id ff_id FROM ff_members WHERE ffm_up_id = " . $this->up->id . " AND ffm_status = 1\n\t\t\t\t\t) ref\n\t\t\t\t\tWHERE ffm_ff_id = ref.ff_id AND ff.ff_id = ref.ff_id AND ff_type = 1 AND ffm_up_id = {$player->id} AND ffm_status = 1\n\t\t\t\t\tLIMIT 1");
                // ikke i felles familie?
                if ($result->rowCount() == 0) {
                    ess::$b->page->add_message('Du kan ikke plassere <user id="' . $player->id . '" /> i bomberom.', "error", null, "bomberom_set");
                    redirect::handle();
                }
                $familie = true;
            }
            // kan vi ikke flytte spilleren?
            if ($familie && $player->data['up_b_id'] != $this->ff->data['br_b_id']) {
                ess::$b->page->add_message('<user id="' . $player->id . '" /> er ikke i samme bydel som bomberommet. Du har ikke mulighet til å flytte spilleren og kan dermed ikke plassere spilleren i dette bomberommt.', "error", null, "bomberom_set");
                redirect::handle();
            }
            $self = false;
        }
        // familie og vi har allerede plassert en spiller de siste 12 timene?
        if ($familie) {
            $familie_wait = max(0, $this->up->data['up_brom_ff_time'] + bomberom::FAMILIY_MEMBERS_WAIT - time());
            if ($familie_wait > 0) {
                ess::$b->page->add_message("Du kan ikke plassere medlemmer av noen broderskap du er med i for øyeblikket, fordi du plasserte forrige spiller fra broderskap " . ess::$b->date->get($this->up->data['up_brom_ff_time'])->format() . ". Du må vente " . game::counter($familie_wait) . ".", "error", null, "bomberom_set");
                redirect::handle();
            }
        }
        // sett opp timepris
        $price_hour = bomberom::PRICE_HOUR + $ant_i_bomberommet * bomberom::PRICE_EACH_PLAYER;
        if (!$self) {
            $price_hour *= bomberom::PRICE_FACTOR_OTHER;
        }
        if ($self && $this->ff->access(true)) {
            $price_hour *= bomberom::PRICE_FACTOR_OWN;
        }
        // sjekke pris?
        $hours = (int) $_POST['hours'];
        if ($hours <= 0) {
            ess::$b->page->add_message("Du må skrive inn et gyldig antall timer.", "error", null, "bomberom_set");
        } elseif ($hours > bomberom::MAX_HOURS) {
            ess::$b->page->add_message("Du kan maksimalt sette en spiller i bomberom i " . bomberom::MAX_HOURS . " timer.", "error", null, "bomberom_set");
        } else {
            // bekreftet pris?
            if (isset($_POST['price']) && $_POST['price'] != "") {
                validate_sid();
                // beregn pris
                $price = $hours * $price_hour;
                // har prisen endret seg?
                if (postval("price") != $price) {
                    ess::$b->page->add_message("Prisen har endret seg og du må bekrefte på nytt.", "error", null, "bomberom_set");
                } else {
                    \Kofradia\DB::get()->beginTransaction();
                    // trekk fra pengene
                    $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price} WHERE up_id = " . $this->up->id . " AND up_cash >= {$price}");
                    if ($a == 0) {
                        ess::$b->page->add_message("Du har ikke så mye penger på hånda.", "error", null, "bomberom_set");
                    } else {
                        $expire = time() + $hours * 3600;
                        $b_id = !$self && !$familie ? ', up_b_id = ' . $this->ff->data['br_b_id'] : '';
                        // sett spilleren i bomberommet
                        $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_brom_ff_id = {$this->ff->id}, up_brom_expire = {$expire}{$b_id} WHERE up_id = {$player->id} AND up_brom_expire = {$player->data['up_brom_expire']}");
                        // kunne ikke plassere spilleren i bomberommet?
                        if ($a == 0) {
                            ess::$b->page->add_message("Kunne ikke plassere spilleren i bomberommet.", "error", null, "bomberom_set");
                            \Kofradia\DB::get()->rollback();
                        } else {
                            // send logg til spilleren
                            if (!$self) {
                                $player->add_log("bomberom_set", $this->up->id . ":" . urlencode($this->ff->data['ff_name']) . ":{$expire}", $this->ff->id);
                            }
                            // oppdatere tidspunkt for familie?
                            if ($familie) {
                                \Kofradia\DB::get()->exec("UPDATE users_players SET up_brom_ff_time = " . time() . " WHERE up_id = " . $this->up->id);
                            }
                            // gi penger til firmaet
                            $this->ff->bank(ff::BANK_TJENT, round($price * ff::BOMBEROM_PERCENT));
                            putlog("DF", "BOMBEROM ANSVARLIG: " . $this->up->data['up_name'] . " satt%c3 " . ($self ? 'seg selv' : $player->data['up_name']) . "%c i bomberom i firmaet {$this->ff->data['ff_name']} for {$hours} timer " . $player->generate_minside_url());
                            ess::$b->page->add_message("Du plasserte " . ($self ? 'deg selv' : '<user id="' . $player->id . '" />') . " i bomberommet med en varighet på <b>{$hours}</b> " . fword("time", "timer", $hours) . ". Det kostet deg <b>" . game::format_cash($price) . "</b>.", null, null, "bomberom_set");
                            \Kofradia\DB::get()->commit();
                            redirect::handle("?ff_id={$this->ff->id}");
                        }
                    }
                    \Kofradia\DB::get()->commit();
                }
            }
            echo '
		' . ess::$b->page->message_get("bomberom_set", true, true) . '
		<p>Du er i ferd med å plassere ' . ($self ? 'deg selv' : $player->profile_link()) . ' i dette bomberommet.</p>
		<p>For tiden er det ' . fwords("%d spiller", "%d spillere", $ant_i_bomberommet) . ' i bomberommet og ' . fwords("%d ledig plass", "%d ledige plasser", $ledige_plasser) . '.' . ($ledige_plasser == 0 ? ' Du har alikevel plass i bomberommet som medlem av firmaet.' : '') . '</p>
		<dl class="dd_right">
			<dt>Antall timer</dt>
			<dd>' . fwords("<b>%d</b> time", "<b>%d</b> timer", $hours) . '</dd>
			<dt>Total kostnad</dt>
			<dd>' . game::format_cash($hours * $price_hour) . '</dd>
			<dt>Varighet til</dt>
			<dd>' . ess::$b->date->get(time() + $hours * 3600)->format(date::FORMAT_SEC) . '</dd>
		</dl>
		<form action="" method="post">' . (!$self ? '
			<input type="hidden" name="player" value="' . $player->id . '" />' : '') . '
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="hours" value="' . $hours . '" />
			<input type="hidden" name="price" value="' . $hours * $price_hour . '" />
			<p class="c">' . show_sbutton("Sett spilleren i bomberom") . '</p>
		</form>
		<form action="" method="post">' . (!$self ? '
			<input type="hidden" name="player" value="' . $player->id . '" />' : '') . '
			<p>Endre antall timer: <input type="text" name="hours" class="styled w30" value="' . $hours . '" /> ' . show_sbutton("Nytt prisoppsett") . '</p>
		</form>
		<p class="c"><a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p>';
        }
    }
示例#12
0
	<p class="h_left"><a href="' . $__server['relative_path'] . '/polls/admin">&laquo; Tilbake</a></p>
	<div class="bg1">
		<p><b>Tittel:</b><br />' . htmlspecialchars($poll['p_title']) . '</p>
		<p><b>Status:</b><br />' . ($poll['p_active'] == 0 ? 'Deaktivert' : 'Synlig') . ' (' . game::format_number($poll['p_votes']) . ' ' . fword("stemme", "stemmer", $poll['p_votes']) . ')</p>
		<p><b>Tidsperiode:</b><br />' . (empty($poll['p_time_start']) ? 'Til ' . (empty($poll['p_time_end']) ? 'ubestemt' : $_base->date->get($poll['p_time_end'])->format()) : 'Fra ' . $_base->date->get($poll['p_time_start'])->format() . ' til ' . (empty($poll['p_time_end']) ? 'ubestemt' : $_base->date->get($poll['p_time_end'])->format())) . (!empty($bb) ? '
		<p><b>Beskrivelse:</b></p>
		<div style="border: 1px solid #1F1F1F; padding: 0 10px">
			<div class="p">' . $bb . '</div>
		</div>' : '') . '
		<p><b>Alternativer:</b>' . (count($poll['options']) == 0 ? '<br />Ingen alternativer er opprettet. <a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '/new">Opprett &raquo;</a>' : '') . '</p>';
    if (count($poll['options']) > 0) {
        echo '
		<ul>';
        foreach ($poll['options'] as $row) {
            echo sprintf('
			<li>%s (%s) [<a href="' . $__server['relative_path'] . '/polls/admin/%d/%d">rediger</a> <a href="' . $__server['relative_path'] . '/polls/admin/%d/%d/delete">slett</a>]</li>', game::bb_to_html($row['po_text']), game::format_number($row['po_votes']) . " " . fword("stemme", "stemmer", $row['po_votes']), $poll['p_id'], $row['po_id'], $poll['p_id'], $row['po_id']);
        }
        echo '
		</ul>';
    }
    echo '
		<ul>
			<li><a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '/new">Nytt alternativ</a></li>
			<li><a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '/edit">Rediger avstemning</a></li>
			<li><a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '/forum_template">Forum mal</a></li>' . ($poll['p_active'] == 0 ? '
			<li><a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '/active?sid=' . login::$info['ses_id'] . '">Sett avstemningen som aktiv</a></li>' : '
			<li><a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '/inactive?sid=' . login::$info['ses_id'] . '">Sett avstemningen som inaktiv</a></li>') . '
			<li><a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '/delete">Slett avstemning</a></li>
		</ul>
	</div>
</div>';
示例#13
0
文件: gta.php 项目: Kuzat/kofradia
 protected function garasje_selg_handle()
 {
     //$this->form->validate(postval("hash"), "Selge biler");
     // hent informasjon om bilene
     $biler_q = array();
     if (isset($_POST['bil']) && is_array($_POST['bil'])) {
         $biler_q = array_unique(array_map("intval", $_POST['bil']));
     }
     // ingen biler?
     if (count($biler_q) == 0) {
         ess::$b->page->add_message("Du må merke bilene du ønsker å selge.", "error");
         redirect::handle();
     }
     // forsøk å selg bilene
     \Kofradia\DB::get()->beginTransaction();
     // sett biler som solgt
     \Kofradia\DB::get()->exec("\n\t\t\tUPDATE users_gta, gta, users_players\n\t\t\tSET b_id = 0\n\t\t\tWHERE up_id = {$this->gta->up->id} AND ug_up_id = up_id AND gtaid = gta.id AND b_id = {$this->gta->up->data['up_b_id']} AND users_gta.id IN (" . implode(",", $biler_q) . ")");
     // beregn hvor mye vi får for bilene
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT SUM(value * (100-damage) / 100)\n\t\t\tFROM users_gta JOIN gta ON gtaid = gta.id\n\t\t\tWHERE ug_up_id = {$this->gta->up->id} AND b_id = 0 AND users_gta.id IN (" . implode(",", $biler_q) . ")");
     $totcash = (int) $result->fetchColumn(0);
     // gi penger til spilleren
     $this->up->update_money($totcash, true, true);
     // fjern bilene som ble solgt
     $ant = \Kofradia\DB::get()->exec("\n\t\t\tDELETE FROM users_gta\n\t\t\tWHERE ug_up_id = {$this->gta->up->id} AND b_id = 0 AND id IN (" . implode(",", $biler_q) . ")");
     \Kofradia\DB::get()->commit();
     ess::$b->page->add_message("Du solgte <b>{$ant}</b> " . fword("bil", "biler", $ant) . " og fikk totalt <b>" . game::format_cash($totcash) . "</b>.");
     redirect::handle();
 }
示例#14
0
		<tr>
			<td colspan="12" class="ip_spacer">&nbsp;</td>
		</tr>';
        $count = count($row);
        $birth_array = explode("-", $row[0]['u_birth']);
        $birth = empty($row[0]['u_birth']) || $row[0]['u_birth'] == "0000-00-00" ? 'Ikke registrert' : intval($birth_array[2]) . ". " . $_lang['months'][intval($birth_array[1])] . " " . $birth_array[0];
        // Hent dagens dato
        $date = $_base->date->get();
        $n_day = $date->format("j");
        $n_month = $date->format("n");
        $n_year = $date->format("Y");
        $age = $birth == 'Ikke registrert' ? 0 : $n_year - $birth_array[0] - ($n_month < $birth_array[1] || $birth_array[1] == $n_month && $n_day < $birth_array[2] ? 1 : 0);
        $birthdate = $age == 0 ? $birth : $birth . ' (' . $age . ' år)';
        echo '
		<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
			<td rowspan="' . $count . '" valign="top">' . $birthdate . '<br />(' . $count . ' ' . fword("bruker", "brukere", $count) . ')</td>';
        $e = 0;
        foreach ($row as $player) {
            // ny rad?
            if (++$e > 1) {
                echo '
		</tr>
		<tr' . ($i % 2 == 0 ? ' class="color"' : '') . '>';
            }
            echo '
			<td>' . game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']) . '</td>
			<td><a href="finn?email=' . urlencode($player['u_email']) . '">' . htmlspecialchars($player['u_email']) . '</a></td>
			<td>' . $_base->date->get($player['up_created_time'])->format(date::FORMAT_SEC) . '</td>
			<td>' . $_base->date->get($player['up_last_online'])->format(date::FORMAT_SEC) . '</td>
			<td class="r">' . game::timespan($player['up_last_online'], game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD) . '</td>
			<td class="r">' . game::format_number($player['up_hits']) . '</td>