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>'; }
/** * 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>'; }
/** * 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(); }
/** * 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; } }
/** * 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> </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 »</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 »</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(); }
<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"> </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>
/** * 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(); }
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 »"><span>Donér »</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&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 . '&' : '') . 'a=profil&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 »</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> © - 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>'; }
/** * 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&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; }
/** * 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 . '">« 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(); }
/** * 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>'; } }
<p class="h_left"><a href="' . $__server['relative_path'] . '/polls/admin">« 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 »</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>';
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(); }
<tr> <td colspan="12" class="ip_spacer"> </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>