/** * List polls */ public function action_index($page = 1) { \ess::$b->page->add_title("Avstemninger"); // hent avstemningene $pagei = new \pagei(\pagei::PER_PAGE, 10, \pagei::ACTIVE_GET, "side"); $pagei->__construct(\pagei::ACTIVE, intval($page)); $polls = Poll::getPolls($pagei, \login::$logged_in ? \login::$user : null); $data = array(); foreach ($polls as $poll) { $vote = \login::$logged_in ? $poll->getVote() : null; // finn alternativet med flest stemmer $votes_max = 0; foreach ($poll->options as $option) { if ($option->data['po_votes'] > $votes_max) { $votes_max = $option->data['po_votes']; } } $options = array(); foreach ($poll->options as $option) { $options[] = array("item" => $option, "percent" => $option->getPercent(), "is_vote" => $option == $vote, "width" => round($option->data['po_votes'] / $votes_max * 100)); } $data[] = array("item" => $poll, "options" => $options, "in_progress" => $poll->data['p_time_end'] > time()); } return View::forgeTwig("polls/poll_list", array("polls" => $data, "pagei" => $pagei)); }
/** * Get donations * Sorted by newest first * * @param \pagei $pagei * @return array(\Kofradia\Donasjon, ..) */ public static function getDonations(\pagei $pagei = null) { $q = "\n\t\t\tSELECT d_id, d_up_id, d_time, d_amount\n\t\t\tFROM donations\n\t\t\tORDER BY d_time DESC"; $result = $pagei ? $pagei->query($q) : DB::get()->query($q); $list = array(); while ($row = $result->fetch()) { $list[] = static::load($row); } return $list; }
/** * Get polls on the active page * * @param \pagei * @param \user * @return array */ public static function getPolls(\pagei $pagei, \user $user = null) { $time = time(); $result = $pagei->query("\n\t\t\tSELECT p_id, p_active, p_ft_id, p_title, p_text, p_time_start, p_time_end" . ($user ? ", pv_po_id, pv_time" : "") . "\n\t\t\tFROM polls" . ($user ? "\n\t\t\t\tLEFT JOIN polls_votes ON pv_up_id = " . $user->player->id . " AND pv_p_id = p_id" : "") . "\n\t\t\tWHERE p_active != 0 AND p_time_start < {$time}\n\t\t\tGROUP BY p_id\n\t\t\tORDER BY p_time_end != 0, p_time_end DESC, p_id DESC"); if ($result->rowCount() == 0) { return array(); } $polls = array(); // les data while ($row = $result->fetch()) { $polls[$row['p_id']] = static::createFromData($row, $user); } // hent alternativene $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT po_id, po_p_id, po_text, po_votes\n\t\t\tFROM polls_options\n\t\t\tWHERE po_p_id IN (" . implode(",", array_keys($polls)) . ")"); while ($row = $result->fetch()) { new PollOption($row, $polls[$row['po_p_id']]); } return $polls; }
/** * 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(); }
// preinfo if (!empty($row['so_preinfo'])) { echo ' <div class="p">' . game::bb_to_html($row['so_preinfo']) . '</div>'; } echo ' <p>Søknadsfrist: ' . $_base->date->get($row['so_expire'])->format(date::FORMAT_SEC) . '</p> <p><a href="soknader_vis?so_id=' . $row['so_id'] . '">Vis søknad »</a></p> </div>'; } } echo ' </div> </div>'; // hent lukkede søknader $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 20); $result = $pagei->query("SELECT so_id, so_title, so_expire, so_status FROM soknader_oversikt WHERE so_expire <= " . time() . " AND so_status != 0 ORDER BY so_expire DESC, so_title"); if ($result->rowCount() > 0) { echo ' <div class="bg1_c small"> <h1 class="bg1"> Tidligere søknader <span class="left"></span> <span class="right"></span> </h1> <div class="bg1"> <dl class="dd_right">'; $statuses = array(0 => "Inaktiv", 1 => "Ubehandlet", 2 => "Behandles", 3 => "Avsluttet"); while ($row = $result->fetch()) { echo ' <dt><a href="soknader_vis?so_id=' . $row['so_id'] . '">' . htmlspecialchars($row['so_title']) . '</a> <span class="dark">[' . $statuses[$row['so_status']] . ']</span></dt>
/** * Vis logger */ protected function show_logs() { $filters = ""; if ($this->filter_actions) { $filters .= " AND lc_lca_id IN (" . implode(",", $this->filter_actions) . ")"; } if ($this->filter_time_before) { $filters .= " AND lc_time <= {$this->filter_time_before}"; } if ($this->filter_time_after) { $filters .= " AND lc_time >= {$this->filter_time_after}"; } if ($this->filter_by_up) { $filters .= " AND lc_up_id" . (isset($_POST['by_invert']) ? ' NOT' : '') . " IN (" . $this->get_full_up_list($this->filter_by_up) . ")"; } if ($this->filter_a_up) { $filters .= " AND lc_a_up_id" . (isset($_POST['a_invert']) ? ' NOT' : '') . " IN (" . $this->get_full_up_list($this->filter_a_up) . ")"; } $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::ACTIVE_POST, "side", pagei::PER_PAGE, 100); $result = $pagei->query("\n\t\t\tSELECT lc_id, lc_up_id, lc_time, lc_lca_id, lc_a_up_id, lc_log\n\t\t\tFROM log_crew\n\t\t\tWHERE 1{$filters}\n\t\t\tORDER BY lc_time DESC"); $rows = array(); while ($row = $result->fetch()) { $rows[$row['lc_id']] = $row; } $data = crewlog::load_summary_data($rows); $logs = array(); foreach ($data as $row) { // hent sammendrag $summary = crewlog::make_summary($row); $day = ess::$b->date->get($row['lc_time'])->format(date::FORMAT_NOTIME); $logs[$day][] = '<p><span class="time"><a href="' . ess::$s['relative_path'] . '/crew/crewlogg?lc_id=' . $row['lc_id'] . '">' . ess::$b->date->get($row['lc_time'])->format("H:i") . '</a>:</span> ' . $summary . '</p>'; } ess::$b->page->add_css(' h1.crewlog { margin: 30px auto 20px } div.crewlog { margin: 0 30px } .crewlog .time { color: #888888; padding-right: 5px } '); if ($this->filters_active) { echo ' <p class="c">Fant ' . fwords("%d oppføring", "%d oppføringer", $pagei->total) . ' som passet til filteret.</p>'; } echo ' <p class="c">' . $pagei->pagenumbers($this->filters_active ? "input" : null) . '</p> <div class="crewlog">'; foreach ($logs as $day => $items) { echo ' <div class="bg1_c"> <h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> ' . implode(' ', $items) . ' </div> </div>'; } echo ' <p class="c">' . $pagei->pagenumbers($this->filters_active ? "input" : null) . '</p> </div>'; }
/** * Vise komplett liste */ protected function all() { echo ' <div class="bg1_c medium"> <h1 class="bg1">Rangeringsoversikt<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <p class="c"><a href="ranklist">« Vis kun topp-plaseringene</a></p>'; if (isset($_GET['show_nsu'])) { $nsu = ""; ess::$b->page->add_message("Du viser også brukere som ikke vises på vanlig statistikk!"); } else { $nsu = "up_access_level < " . ess::$g['access_noplay'] . " AND "; } // finn ut antall spillere $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players WHERE {$nsu}up_access_level != 0"); $antall_spillere = $result->fetchColumn(0); if ($antall_spillere == 0) { echo ' <p> Det finnes ingen spillere...?! </p>'; } else { // sideoppsett $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50); // hent folka.. $result = $pagei->query("\n\t\t\t\tSELECT up_id, up_name, up_access_level, up_points, up_last_online, upr_rank_pos\n\t\t\t\tFROM users_players\n\t\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\t\tWHERE {$nsu}up_access_level != 0\n\t\t\t\tORDER BY up_points DESC"); $colspan = access::has("mod") ? 6 : 4; $e = 0; echo ' <table class="table tablem" width="100%"> <thead> <tr> <th>#</th> <th>Spillernavn</th> <th>Rank</th> <th>Sist pålogget</th>' . (access::has("mod") ? ' <th>Rankpoeng</th> <th> </th>' : '') . ' </tr> </thead> <tbody> <tr> <td colspan="' . $colspan . '" class="c">' . $pagei->pagenumbers() . '</td> </tr>'; // startverdi $i = $pagei->start; $last_rank = 0; while ($row = $result->fetch()) { $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); echo ' <tr' . (++$e % 2 == 0 ? ' class="color"' : '') . '> <td class="r">' . ($last_rank != $row['upr_rank_pos'] ? '#' . game::format_number($row['upr_rank_pos']) : '<span style="color: #666">#' . game::format_number($row['upr_rank_pos']) . '</span>') . '</td> <td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td class="c">' . $rank['name'] . '</td> <td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td>' . (access::has("mod") ? ' <td class="r">' . game::format_number($row['up_points']) . '</td> <td><a href="admin/brukere/finn?up_id=' . $row['up_id'] . '">IP-sjekk</a></td>' : '') . ' </tr>'; $last_rank = $row['upr_rank_pos']; } echo ' <tr' . (++$e % 2 == 0 ? ' class="color"' : '') . '> <td colspan="' . $colspan . '" class="c">' . $pagei->pagenumbers() . '</td> </tr> </tbody> </table>'; } echo ' </div> </div>'; }
/** * Vis deaktiverte spillere */ protected static function vis_spillere() { global $__server; ess::$b->page->add_title("Deaktiverte brukere"); // hente listen over brukere $pagei = new pagei(pagei::PER_PAGE, 20, pagei::ACTIVE_GET, "side"); $result = $pagei->query("\n\t\t\tSELECT\n\t\t\t\tu_id, u_email, u_access_level, u_deactivated_time, u_deactivated_up_id, u_deactivated_reason, u_deactivated_note,\n\t\t\t\tup_id, up_name, up_access_level, up_deactivated_time, up_deactivated_up_id, up_deactivated_reason, up_deactivated_note\n\t\t\tFROM\n\t\t\t\tusers\n\t\t\t\tJOIN users_players ON u_id = up_u_id\n\t\t\tWHERE\n\t\t\t\tup_access_level = 0 AND (u_access_level != 0 OR u_deactivated_time != up_deactivated_time)\n\t\t\tORDER BY up_deactivated_time DESC"); echo ' <h1>Deaktiverte spillere</h1> <p>Merk: Denne listen viser ikke spillere som har blitt deaktivert samtidig som brukeren ble deaktivert.</p>'; self::table_header(); while ($row = $result->fetch()) { if ($row['u_access_level'] == 0) { echo ' <tr> <td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'], true, $__server['relative_path'] . '/min_side?up_id=' . $row['up_id']) . '</td> <td class="nowrap r">' . ess::$b->date->get($row['up_deactivated_time'])->format() . '</td> <td' . ($row['up_deactivated_up_id'] == $row['up_id'] ? ' class="pcd_self">Ja' : ' class="pcd_crew">Nei') . '</td> <td>' . game::format_data($row['up_deactivated_reason']) . '</td> </tr>'; } } self::table_footer($pagei); }
/** * Vise publiserte utgivelser */ protected function published() { ess::$b->page->add_title("Utgivelser"); // hent publiserte utvivelser $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 10); $ffnp_q = login::$logged_in ? "ffnp_ffn_id = ffn_id AND ffnp_up_id = " . login::$user->player->id : "FALSE"; $result = $pagei->query("SELECT ffn_id, ffn_published_time, ffn_cost, ffn_title, ffn_sold, ffn_description, ffnp_time FROM ff_newspapers LEFT JOIN ff_newspapers_payments ON {$ffnp_q} WHERE ffn_ff_id = {$this->ff->id} AND ffn_published != 0 ORDER BY ffn_published_time DESC"); echo ' <p class="c">Utgivelser</p>'; // ingen publiserte utgivelser? if ($result->rowCount() == 0) { echo ' <p class="c">Ingen utgivelser er publisert.</p>'; } else { echo ' <p class="c">' . $pagei->total . ' utgivelse' . ($pagei->total == 1 ? '' : 'r') . ' er publisert:</p>'; #$i = $pagei->total - ($pagei->per_page*($pagei->active-1)); while ($row = $result->fetch()) { echo ' <div class="section center w200"> <h2><a href="avis?ff_id=' . $this->ff->id . '&ffn=' . $row['ffn_id'] . '">' . htmlspecialchars($row['ffn_title']) . '</a></h2> <dl class="dd_right"> <dt>Publisert</dt> <dd>' . ess::$b->date->get($row['ffn_published_time'])->format() . '</dd> <dt>Solgte utgivelser</dt> <dd>' . game::format_number($row['ffn_sold']) . '</dd> <dt>Pris</dt> <dd>' . game::format_cash($row['ffn_cost']) . '</dd> <dt>Kjøpt?</dt> <dd>' . ($row['ffnp_time'] ? '<a href="avis?ff_id=' . $this->ff->id . '&ffn=' . $row['ffn_id'] . '">Ja</a> (' . ess::$b->date->get($row['ffnp_time'])->format() . ')' : 'Nei [<a href="avis?ff_id=' . $this->ff->id . '&ffn=' . $row['ffn_id'] . '">Kjøp</a>]') . (access::is_nostat() ? ' (nostat)' : '') . '</dd> </dl> <div class="p">' . $this->ff->format_description($row['ffn_description']) . '</div> </div>'; #$i--; } // flere sider? if ($pagei->pages > 1) { echo ' <p class="c">Navigasjon: ' . $pagei->pagenumbers() . '</p>'; } } }
<?php require "config.php"; global $_base, $__server; $_base->page->add_title("Aktive blokkeringer"); // hent liste $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50); $result = $pagei->query("SELECT u_id, up_id, up_name, up_access_level, ub_type, ub_time_added, ub_time_expire, ub_reason, ub_note FROM users, users_players, users_ban WHERE u_id = ub_u_id AND u_active_up_id = up_id AND ub_time_expire > " . time() . " ORDER BY ub_time_expire"); echo ' <h1>Aktive blokkeringer</h1> <p>Denne oversikten viser alle blokkeringer som er satt.</p>'; if ($result->rowCount() == 0) { echo ' <p>Ingen blokkeringer for øyeblikket satt.</p>'; } else { echo ' <table class="table"> <thead> <tr> <th>Bruker/spiller</th> <th>Type blokkering</th> <th>Ble utestengt</th> <th>Utestengt til</th> <th>Begrunnelse</th> <th>Intern info</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { $access = access::has(blokkeringer::$types[$row['ub_type']]['access']);
<boxes /> <form action="" method="post"> <dl class="dd_right"> <dt>Tittel</dt> <dd><input type="text" name="title" class="styled w300" value="' . htmlspecialchars(postval("title")) . '" /></dd> <dt>Beskrivelse</dt> <dd><textarea name="description" rows="10" cols="30" class="w300">' . htmlspecialchars(postval("description")) . '</textarea></dd> </dl> <p class="c">' . show_sbutton("Legg til") . ' <a href="' . PHP_SELF . '">Avbryt</a></p> </form> </div> </div>'; $_base->page->load(); } // hent alle $pagei = new pagei(pagei::ACTIVE_GET, "side"); $result = $pagei->query("SELECT ag_id, ag_title, ag_description, ag_up_id, ag_time FROM available_group ORDER BY ag_time DESC"); echo ' <div class="bg1_c small"> <h1 class="bg1">Avstemninger<span class="left"></span><span class="right"></span></h1> <div class="bg1">'; if ($result->rowCount() == 0) { echo ' <p>Ingen avstemninger er opprettet.</p>'; } else { echo ' <table class="table tablemt" style="width: 100%"> <thead> <tr> <th>Tittel</th> <th>Beskrivelse</th>
/** * Vis logg */ protected function show() { $ff_reset = $this->ff->data['ff_time_reset'] && !$this->ff->mod ? " AND ffl_time > {$this->ff->data['ff_time_reset']}" : ""; // finn ut hva som er tilgjengelig $result = \Kofradia\DB::get()->query("SELECT DISTINCT ffl_type FROM ff_log WHERE ffl_ff_id = {$this->ff->id}{$ff_reset}"); $in_use = array(); while ($row = $result->fetch()) { $in_use[] = $row['ffl_type']; } $tilgjengelig = array(); foreach (ff::$log_id as $id => $name) { if (in_array($id, $in_use)) { $tilgjengelig[] = $id; } } $i_bruk = $tilgjengelig; // filter $filter = array(); $matches = false; foreach ($_GET as $name => $val) { if (preg_match("/^f([0-9]+)\$/Du", $name, $matches) && in_array($matches[1], $tilgjengelig)) { $filter[] = $matches[1]; } } if (count($filter) == 0) { $filter = false; } else { $i_bruk = $filter; $filter = true; ess::$b->page->add_message("Du har aktivert et filter og viser kun bestemte enheter."); } if ($filter) { ess::$b->page->add_css('.filter_inactive { display: none }'); } else { ess::$b->page->add_css('.filter_active { display: none }'); } if (count($tilgjengelig) > 0) { echo ' <form action="" method="get"> <input type="hidden" name="ff_id" value="' . $this->ff->id . '" /> <div class="section" style="width: 400px" id="filteroptions"> <h2>Filter</h2> <p class="h_right"> <span class="logg_filters filter_active"><a href="#" class="box_handle_toggle" rel="f[]">Merk alle</a> <a href="javascript:void(0)" onclick="toggle_display(\'.logg_filters\', event)">Skjul filteralternativer</a></span> <span class="logg_filters filter_inactive"><a href="#" onclick="toggle_display(\'.logg_filters\', event)">Vis filteralternativer</a></span> </p> <div class="logg_filters filter_active"> <table class="table center tablemt" width="100%"> <tbody>'; $tbody = new tbody(min(3, count($tilgjengelig))); // 3 kolonner foreach ($tilgjengelig as $id) { $title = ff::$log[ff::$log_id[$id]][1]; $aktivt = in_array($id, $i_bruk) && $filter; $tbody->append('<input type="checkbox" name="f' . $id . '" rel="f[]" value=""' . ($aktivt ? ' checked="checked"' : '') . ' />' . htmlspecialchars($title), 'class="box_handle"'); } $tbody->clean(); echo ' </tbody> </table> <p class="c">' . show_sbutton("Oppdater") . '</p> </div> </div> </form>'; } $where = $ff_reset; if ($filter) { $where .= ' AND ffl_type IN (' . implode(",", $i_bruk) . ')'; } // sideinformasjon - hent radene på denne siden $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 30); $result = $pagei->query("SELECT SQL_CALC_FOUND_ROWS ffl_id, ffl_time, ffl_type, ffl_data, ffl_extra FROM ff_log WHERE ffl_ff_id = {$this->ff->id}{$where} ORDER BY ffl_time DESC, ffl_id DESC"); if ($result->rowCount() == 0) { echo ' <p class="c"> Ingen logg meldinger ble funnet. </p>'; } else { // css ess::$b->page->add_css(' .ffl_time { color: #AAA; }'); // logg meldingene $logs = array(); while ($row = $result->fetch()) { $day = ess::$b->date->get($row['ffl_time'])->format(date::FORMAT_NOTIME); $data = $this->ff->format_log($row['ffl_id'], $row['ffl_time'], $row['ffl_type'], $row['ffl_data'], $row['ffl_extra']); $logs[$day][] = '<span class="ffl_time">' . ess::$b->date->get($row['ffl_time'])->format("H:i") . ':</span> ' . $data; } foreach ($logs as $day => $items) { echo ' <div class="section" style="width: 400px"> <h2>' . $day . '</h2>'; foreach ($items as $item) { echo ' <p>' . $item . '</p>'; } echo ' </div>'; } echo ' <p class="c"> Viser ' . $pagei->count_page . ' av ' . $pagei->total . ' logg melding' . ($pagei->total == 1 ? '' : 'er'); if ($pagei->pages > 1) { echo '<br /> ' . $pagei->pagenumbers(game::address("logg", $_GET, array("side")) . "#logg", game::address("logg", $_GET, array("side"), array("side" => "_pageid_")) . "#logg"); } echo ' </p>'; } }
$sort->append("asc", "Opprettet", "ses_created_time"); $sort->append("desc", "Opprettet", "ses_created_time DESC"); $sort->append("asc", "Sist aktiv", "ses_last_time"); $sort->append("desc", "Sist aktiv", "ses_last_time DESC"); $sort->append("asc", "Hits", "ses_hits"); $sort->append("desc", "Hits", "ses_hits DESC"); $sort->append("asc", "Rank", "ses_points"); $sort->append("desc", "Rank", "ses_points DESC"); $sort->set_active(getval("sort"), 7); function like_search($value) { return strtr($value, array('_' => '\\_', '%' => '\\%', '*' => '%', '?' => '_')); } $wc = mb_strpos($ip, "*") !== false || mb_strpos($ip, "?") !== false; // hent data $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 200); $sort_info = $sort->active(); $result = $pagei->query("SELECT ses_id, ses_u_id, ses_active, ses_created_time, ses_last_time, ses_logout_time, ses_hits, ses_points, ses_last_ip, u_email, u_access_level, ses_browsers, up_name, up_id, up_access_level FROM sessions LEFT JOIN users ON u_id = ses_u_id LEFT JOIN users_players ON up_id = u_active_up_id WHERE ses_last_ip LIKE " . like_search(\Kofradia\DB::quote($ip)) . " ORDER BY {$sort_info['params']}"); // ingen treff? if ($result->rowCount() == 0) { echo ' <p>Ingen treff.</p>'; } else { echo ' <p>Antall treff: ' . $pagei->total . '</p> <table class="table nowrap" width="100%" style="font-size: 11px"> <thead> <tr> <th>Økt ID ' . $sort->show_link(0, 1) . '</th> <th>Bruker ID ' . $sort->show_link(2, 3) . '</th>' . ($wc ? ' <th>IP-adresse ' . $sort->show_link(4, 5) . '</th>' : '') . '
/** * Vis detaljer */ protected function show_details() { if (empty($_GET['up_id']) || !access::has("mod")) { redirect::handle("etterlyst"); } // last inn spiller $up_id = (int) $_GET['up_id']; $up = player::get($up_id); if (!$up) { ess::$b->page->add_message("Ingen spiller med id {$up_id}.", "error"); redirect::handle("etterlyst"); } $pagei = new pagei(pagei::PER_PAGE, 30, pagei::ACTIVE_GET, 'side'); $result = $pagei->query("SELECT hl_id, hl_up_id, hl_by_up_id, hl_time, hl_amount, hl_amount_valid FROM hitlist WHERE hl_up_id = {$up->id} AND hl_amount_valid > 0 ORDER BY hl_time DESC"); echo ' <div class="bg1_c medium"> <h1 class="bg1"> Etterlyst - ' . $up->data['up_name'] . ' <span class="left"></span><span class="right"></span> </h1> <p class="h_left"><a href="etterlyst">« Tilbake</a></p> <div class="bg1"> <p>Denne listen viser info om alle som har lagt til dusør på spilleren ' . $up->profile_link() . '.</p>'; if ($pagei->total == 0) { echo ' <p><b>Det er ingen som har satt dusør på denne spilleren.</b></p>'; } else { echo ' <table class="table center' . ($pagei->pages == 1 ? ' tablemb' : '') . '"> <thead> <tr> <th>Satt av</th> <th>Tid</th> <th>Opprinnelig dusør</th> <th>Gjenstående dusør</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td><user id="' . $row['hl_by_up_id'] . '" /></td> <td>' . ess::$b->date->get($row['hl_time'])->format() . '</td> <td class="r">' . game::format_cash($row['hl_amount']) . '</td> <td class="r">' . game::format_cash($row['hl_amount_valid']) . '</td> </tr>'; } echo ' </tbody> </table>'; if ($pagei->pages > 1) { echo ' <p class="c">' . $pagei->pagenumbers() . '</p>'; } } echo ' </div> </div>'; }
<?php // vis en liste over de siste registrerte brukerene require "config.php"; global $_base; $_base->page->theme_file = "doc"; // antall brukere $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 20); $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players"); $pagei->set_total($result->fetchColumn(0)); $pagei->calc(); $expire = time() - 604800; // 1 uke $result = \Kofradia\DB::get()->query("\n\tSELECT\n\t\tup.up_id, up.up_name, up.up_access_level, up.up_hits, up.up_last_online, up.up_created_time,\n\t\tup.u_id, up.u_email, up.u_created_ip, up.u_online_ip,\n\t\tCOUNT(ref.up_id) AS ip_count\n\tFROM \n\t\t(SELECT users_players.*, u_id, u_email, u_created_ip, u_online_ip FROM users_players JOIN users ON u_id = up_u_id ORDER BY up_created_time DESC LIMIT {$pagei->start}, {$pagei->per_page}) AS up\n\t\tLEFT JOIN (SELECT users.*, users_players.* FROM users_players JOIN users ON up_u_id = u_id) AS ref ON ref.u_created_ip = up.u_created_ip AND ref.u_id != up.u_id AND ref.up_access_level != 0 AND ref.up_last_online > {$expire}\n\tGROUP BY up.up_id\n\tORDER BY up.up_created_time DESC"); echo ' <h1>Siste registrerte spillere</h1> <table class="table tablemf"> <thead> <tr> <th>ID</th> <th>Spiller</th> <th>E-post</th> <th>Reg IP<br />(for brukeren)</th> <th>Siste IP<br />(for brukeren)</th> <th>Hits</th> <th>Registrert</th> <th>Sist pålogget</th> </tr> </thead> <tbody>'; $color = true;
// hente rapporteringer MOT brukeren? $data = ""; if (postval("a") == "to") { $data .= ' <p class="c">Andre brukere som har rapportert denne brukeren.</p>'; $where = " AND r_up_id = up_id"; } elseif (postval("a") == "from") { $data .= ' <p class="c">Rapporteringer som brukeren selv har opprettet.</p>'; $where = " AND r_source_up_id = up_id"; } else { $data .= ' <p class="c">Alle rapporteringer denne brukeren er involvert i.</p>'; $where = " AND (r_source_up_id = up_id OR r_up_id = up_id)"; } $pagei = new pagei(pagei::ACTIVE_POST, "s", pagei::PER_PAGE, 10); $result = $pagei->query("\n\tSELECT r_id, r_source_up_id, r_up_id, r_type, r_type_id, r_time, r_note, r_state, r_crew_up_id, r_crew_note, r_crew_time\n\tFROM rapportering, users_players\n\tWHERE up_u_id = {$user->id}{$where}\n\tORDER BY IFNULL(r_crew_time, r_time) DESC"); if ($pagei->total == 0) { ajax::html(parse_html($data . ' <p class="c">Ingen oppføringer ble funnet.</p>')); } $raps = array(); while ($row = $result->fetch()) { $raps[] = $row; } rapportering::generate_prerequisite($raps); $data .= ' <p class="c">' . $pagei->pagenumbers_ajax() . '</p>'; foreach ($raps as $row) { $data .= ' <div class="rap_wrap">
/** * Reise til en annen bydel */ protected function reise() { redirect::store("bydeler#b"); $this->up->fengsel_require_no(); $this->up->bomberom_require_no(); // finn bydelen $bydel = false; foreach ($this->bydeler as $row) { if ($row['id'] == 0 || $row['active'] == 0) { continue; } if ($row['name'] == $_POST['reise']) { $bydel = $row; break; } } if (!$bydel) { ess::$b->page->add_message("Fant ikke bydelen.", "error"); redirect::handle(); } // allerede i bydelen? if ($bydel['id'] == $this->up->data['up_b_id']) { $this->reise_error_in($bydel); } // teleportere? if (isset($_POST['teleporter']) && access::is_nostat()) { // teleporter $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_b_id = {$bydel['id']}, up_b_time = " . time() . " WHERE up_id = " . $this->up->id . " AND up_access_level != 0 AND up_b_id != {$bydel['id']}"); if ($a == 0) { $this->reise_error_in($bydel); } ess::$b->page->add_message('Du teleporterte til <b>' . htmlspecialchars($bydel['name']) . '</b>.'); redirect::handle(); } // med bil? if (isset($_POST['gta'])) { if ($this->gta_count == 0) { ess::$b->page->add_message("Du har ingen biler i bydelen du oppholder deg i.", "error"); redirect::handle(); } if (!$this->gta_garage[$bydel['id']]['garage']) { ess::$b->page->add_message('Du har ingen garasje på <b>' . htmlspecialchars($bydel['name']) . '</b> og kan ikke reise dit med bil.', "error"); redirect::handle(); } if ($this->gta_garage[$bydel['id']]['garage_free'] == 0) { ess::$b->page->add_message('Det er ingen ledige plasser i garasjen på <b>' . htmlspecialchars($bydel['name']) . '</b>.', "error"); redirect::handle(); } // regn ut avstand (km) $distance = self::calc_travel_distance($this->up->bydel, $bydel); // har vi valgt en bil? if (isset($_POST['sel'])) { if (!isset($_POST['bil'])) { ess::$b->page->add_message("Du må velge en bil du ønsker å reise med.", "error"); } else { $this->reise_gta_check($bydel, $distance); } // TODO } // vis skjema for å velge en bil å reise med ess::$b->page->add_title($bydel['name'], "Reis med bil"); // hent bilene i garasjen $pagei = new pagei(pagei::ACTIVE_POST, "side", pagei::PER_PAGE, 10); $result = $pagei->query("\n\t\t\t\tSELECT s.id, s.time, g.brand, g.model, g.img_mini, g.value, s.damage, g.points\n\t\t\t\tFROM users_gta AS s\n\t\t\t\t\tJOIN gta AS g ON s.gtaid = g.id\n\t\t\t\tWHERE ug_up_id = {$this->up->id} AND s.b_id = {$this->up->data['up_b_id']}\n\t\t\t\tORDER BY g.points*(100-s.damage) DESC"); echo ' <div class="bg1_c xmedium"> <h1 class="bg1">Reis med bil til ' . htmlspecialchars($bydel['name']) . '<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <p class="c"><a href="bydeler#b">Tilbake</a></p> <form action="bydeler#b" method="post"> <input type="hidden" name="reise" value="' . htmlspecialchars($bydel['name']) . '" /> <input type="hidden" name="gta" /> <table class="table center"> <thead> <tr> <th colspan="2">Merke/Modell</th> <th>Dato anskaffet</th> <th>Skade</th> <th>Energi</th> <th>Utgifter</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { $price = $distance * self::GTA_PRICE_KM * self::get_gta_factor_points($row['points']) * self::get_gta_factor_damage($row['damage']); $energy = self::get_gta_energy($row['damage']); echo ' <tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '"> <td><input type="radio" id="bil_' . $row['id'] . '" name="bil" value="' . $row['id'] . '"' . (postval("bil") == $row['id'] ? ' checked="checked"' : '') . ' />' . (empty($row['img_mini']) ? ' ' : '<img src="' . $row['img_mini'] . '" alt="Bilde" />') . '</td> <td>' . htmlspecialchars($row['brand']) . '<br /><b>' . htmlspecialchars($row['model']) . '</b></td> <td>' . ess::$b->date->get($row['time'])->format() . '</td> <td align="right">' . $row['damage'] . ' %</td> <td align="right">' . game::format_num($energy / $this->up->data['up_energy_max'] * 100, 1) . ' %</td> <td align="right">' . game::format_cash($price) . '</td> </tr>'; } echo ' </tbody> </table>' . ($pagei->pages > 1 ? ' <p class="c">' . $pagei->pagenumbers("input") . '</p>' : '') . ' <p class="c">' . show_sbutton("Reis til " . htmlspecialchars($bydel['name']), 'name="sel"') . '</p> </form> </div> </div>'; ess::$b->page->load(); } // ta taxi? if (isset($_POST['taxi'])) { // har vi ikke nok energi? if (!$this->up->energy_check(self::TAXI_ENERGY * 1.3)) { ess::$b->page->add_message("Du har ikke nok energi for å reise med taxi.", "error"); redirect::handle(); } // regn ut avstand (km) $distance = self::calc_travel_distance($this->up->bydel, $bydel); // regn ut pris og rankpoeng $price = round($distance * self::TAXI_PRICE_KM); $points = round($distance * self::TAXI_POINTS_KM * $this->up->rank['number']); // har ikke nok rank? if ($this->up->data['up_points'] < $points * 2) { ess::$b->page->add_message("Du har ikke nok rank til å reise til " . htmlspecialchars($bydel['name']) . ".", "error"); redirect::handle(); } // forsøk å reis $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price}, up_b_id = {$bydel['id']}, up_b_time = " . time() . " WHERE up_id = " . $this->up->id . " AND up_cash >= {$price} AND up_b_id != {$bydel['id']}"); // feilet? if ($a == 0) { // allerede i bydelen? $result = \Kofradia\DB::get()->query("SELECT up_b_id FROM users_players WHERE up_id = " . $this->up->id); if ($result->fetchColumn(0) == $bydel['id']) { $this->reise_error_in($bydel); } // hadde ikke råd $this->reise_error_cash($bydel); } // energi $this->up->energy_use(self::TAXI_ENERGY); // rank $this->up->increase_rank(-$points); // vellykket ess::$b->page->add_message("Du tok taxi til <b>" . htmlspecialchars($bydel['name']) . "</b>. Det kostet deg <b>" . game::format_cash($price) . "</b> og " . game::format_number($points) . " poeng."); redirect::handle(); } ess::$b->page->add_message("Ukjent reisemetode.", "error"); redirect::handle(); }
$text_search = requestval("profiletext"); // finn ut delene av spørringen $user_parts = search_query($user_search, false); $text_parts = search_query($text_search); // sett opp søkespørringen $search = ""; if (count($user_parts[0]) > 0) { $search .= " AND up_name" . implode(" AND up_name", $user_parts[0]); } if (count($text_parts[0]) > 0) { $search .= " AND up_profile_text" . implode(" AND up_profile_text", $text_parts[0]); } // sortering $sort_info = $sort->active(); $query = "up_id, up_name, up_last_online, up_access_level, up_points, upr_rank_pos FROM users_players LEFT JOIN users_players_rank ON upr_up_id = up_id WHERE 1{$search_online[$search_online_id][1]}{$search_status[$search_status_id][1]}{$search}{$search_ranks_query} ORDER BY {$sort_info['params']}"; $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50); $result = $pagei->query($query, array_merge($user_parts[2], $text_parts[2])); $info = array(); foreach ($user_parts[1] as $part) { $info[] = '<b>Spiller:</b> ' . htmlspecialchars($part); } foreach ($text_parts[1] as $part) { $info[] = '<b>Profiltekst:</b> ' . htmlspecialchars($part); } if (count($search_ranks_active) > 0 && count($search_ranks_active) != count($search_ranks)) { if (count($search_ranks_active) == 1) { $info[] = '<b>Rank:</b> ' . htmlspecialchars($search_ranks[$search_ranks_active[0]][0]); } else { $l = array(); foreach ($search_ranks_active as $key) { $l[] = htmlspecialchars($search_ranks[$key][0]);
width: 55%; } #profileinfo_right { float: right; width: 40%; } #profile_hr { margin-top: 0; padding-top: 0; }'); if (login::$logged_in && login::$user->id != $player->data['up_u_id']) { // sørg for at rapporteringslenkene blir prosessert ess::$b->page->add_js('sm_scripts.report_links();'); } // hent andre spillere med samme navn $pagei_other_up = new pagei(pagei::ACTIVE_GET, "side_up", pagei::PER_PAGE, 10); $result_other_up = $pagei_other_up->query("\n\tSELECT up_id, up_name, up_access_level, up_created_time, up_last_online, up_points, up_deactivated_time, up_deactivated_dead, upr_rank_pos\n\tFROM users_players\n\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\tWHERE up_name = " . \Kofradia\DB::quote($player->data['up_name']) . " AND up_u_id = {$player->data['up_u_id']}\n\tORDER BY up_last_online DESC"); $has_other_up = $result_other_up->rowCount() > 1; // antall angrep man har utført $attacks = $player->data['up_attack_failed_num'] + $player->data['up_attack_damaged_num'] + $player->data['up_attack_killed_num']; echo ' <div id="profile"> <div id="profile_left"> <div class="section"> <h2>Informasjon</h2> <p class="h_right">' . (login::$logged_in && (access::has("mod") || $player->data['up_u_id'] == login::$user->id) ? ' <a href="' . $__server['relative_path'] . '/min_side?' . (login::$user->player->id != $player->id || !login::$user->player->active ? 'up_id=' . $player->id . '&' : '') . 'a=profil">Rediger</a>' : '') . (isset($_GET['signature']) ? ' <a href="' . $__server['relative_path'] . '/p/' . rawurlencode($player->data['up_name']) . '/' . $player->id . '">Vis profil</a>' : ' <a href="' . $__server['relative_path'] . '/p/' . rawurlencode($player->data['up_name']) . '/' . $player->id . '?signature">Vis signatur</a>') . (login::$logged_in && login::$user->id != $player->data['up_u_id'] ? ' <a href="' . $__server['relative_path'] . '/js" class="report_link" rel="profile,' . $player->id . ',1">Rapporter profil</a>' : '') . ' </p>
protected function show() { // tittel på meldingstråden ess::$b->page->add_title($this->thread->data_thread['it_title']); // sett opp deltakere $deltakere = array(); $c = access::has("crewet"); foreach ($this->thread->receivers as $row) { if ($this->thread->data_rel && $this->thread->data_rel['ir_up_id'] == $row['ir_up_id']) { continue; } $p = $row['ir_deleted'] != 0 || $row['up_access_level'] == 0 && (!access::has("crewet") || $row['u_access_level'] == 0 || $row['u_active_up_id'] != $row['ir_up_id']); $deltakere[] = ($p ? '<span class="user_strike">' : '') . '<user id="' . $row['ir_up_id'] . '" />' . ($p ? '</span>' : ''); } $deltakere_siste = array_pop($deltakere); $this->add_receivers(); // overskrift if ($this->thread->restrict || !$this->thread->can_reply_receivers) { echo ' <h1>Melding: ' . htmlspecialchars($this->thread->data_thread['it_title']) . '</h1>'; } else { echo ' <form action="" method="post"> <h1><span class="red">' . show_sbutton("Slett", 'name="slettalle" onclick="return confirm(\'Dette vil slette meldingstråden for alle deltakere. Denne handlingen kan ikke angres uten videre. Fortsette?\')"') . '</span> Melding: ' . htmlspecialchars($this->thread->data_thread['it_title']) . '</h1> </form>'; } // tittel og verktøy echo ' <form action="innboks" method="post"> <p class="im_tools top h_right"> <a href="innboks' . ($this->thread->data_rel ? '' : '?user='******'up_name'])) . '">Tilbake til meldinger</a> <input type="hidden" name="it_id[]" value="' . $this->thread->id . '" />' . (!isset($_GET['reply']) && $this->can_reply ? ' ' . show_sbutton("Opprett svar", 'name="reply" accesskey="s"', 'reply_link_form_show') : '') . ($this->thread->data_rel ? ' <span class="red">' . show_sbutton("Slett", 'name="slett" accesskey="d" onclick="return confirm(\'Er du sikker på at du vil slette meldingen?\')"') . '</span>' : '') . ' </p> </form>'; // deltakere if ($deltakere_siste) { echo ' <p id="im_deltakere"><span id="im_deltakere_i">Deltakere: ' . (count($deltakere) > 0 ? implode(", ", $deltakere) . ' og ' : '') . $deltakere_siste . '</span></p>'; if (!$this->thread->can_reply_access) { echo ' <p>Du har ikke mulighet til å svare i denne meldingen.</p>'; } elseif (!$this->thread->can_reply_receivers) { echo ' <p>Det er ingen mottakere du kan svare til.</p>'; } } else { echo ' <p>Det er ingen andre deltakere enn deg selv i denne meldingstråden.</p>'; } // flere sider? if ($this->pagei->pages > 1) { echo ' <p class="c">' . $this->pagei->pagenumbers(array("goto")) . '</p>'; } // svarskjema echo ' <div id="container_reply"' . (!isset($_GET['reply']) ? ' style="display: none"' : '') . '> <form action="' . htmlspecialchars(game::address(PHP_SELF, $_GET, array(), array("reply" => true))) . '" method="post" onsubmit="this.onsubmit=function(){return false;}"> <div class="section" style="margin-top:0"> <h3>Skriv svar</h3> <dl class="dd_auto_100"> <dt>Innhold</dt> <dd><textarea name="melding" rows="10" cols="75" id="textContent">' . htmlspecialchars(postval("melding")) . '</textarea></dd> <dt' . (isset($_POST['preview']) && isset($_POST['melding']) ? '' : ' style="display: none"') . ' id="previewDT">Forhåndsvisning</dt> <dd' . (isset($_POST['preview']) && isset($_POST['melding']) ? '' : ' style="display: none"') . ' id="previewDD">' . (!isset($_POST['melding']) || empty($_POST['melding']) ? 'Tom melding?!' : game::bb_to_html($_POST['melding'])) . '</dd> </dl> <h3 class="c"> ' . show_sbutton("Send melding", 'name="post" accesskey="s"') . ' ' . show_sbutton("Forhåndsvis", 'name="preview" accesskey="p" id="reply_link_preview"') . ' </h3> </div> </form> </div>'; // meldingene echo ' <div id="innboks">'; // hent meldingene på denne siden $result = $this->thread->get_messages($this->pagei->start, $this->limit); $i = 0; $last_id = 0; while ($row = $result->fetch()) { $e = $this->pagei->total - $i - ($this->pagei->active - 1) * $this->pagei->per_page; if ($i == 0) { $last_id = $row['im_id']; } echo $this->thread->reply_format($row, $e, $this->highlight_im_id == $row['im_id'], $i < $this->new); $i++; } echo ' </div>'; if (!isset($_GET['reply']) && $this->can_reply || $this->thread->data_rel) { echo ' <form action="innboks" method="post"> <input type="hidden" name="it_id[]" value="' . $this->thread->id . '" />' . ($this->thread->data_rel ? ' <p class="im_tools bottom left" id="im_mark"></p>' : '') . ' <p class="im_tools bottom">' . (!isset($_GET['reply']) && $this->can_reply ? ' ' . show_sbutton("Opprett svar", 'name="reply" accesskey="s"', 'reply_link_form_show') : '') . ($this->thread->data_rel ? ' <span class="red">' . show_sbutton("Slett", 'name="slett" accesskey="d" onclick="return confirm(\'Er du sikker på at du vil slette meldingen?\')"') . '</span>' : '') . ' </p> </form>'; } // flere sider? if ($this->pagei->pages > 1) { echo ' <p class="c center w200">' . $this->pagei->pagenumbers(array("goto")) . '</p>'; } echo ' <div class="clear"></div>'; $this->add_css(); $this->add_js($last_id); $this->load_page(); }
echo ' <div class="bg1_c medium"> <h1 class="bg1">Lotto: Historie<span class="left"></span><span class="right"></span></h1> <p class="h_left"><a href="lotto">« Tilbake</a></p> <div class="bg1"> <p class="c">Her er en oversikt over alle gangene du har vunnet på lotto!</p>'; // antall vinn og totalt vunnet $result = \Kofradia\DB::get()->query("SELECT COUNT(id), SUM(won) FROM lotto_vinnere WHERE lv_up_id = {$up_id}"); $row = $result->fetch(\PDO::FETCH_NUM); $ant = $row[0]; $won = $row[1]; if ($ant == 0) { echo ' <p class="c"><b>Du har aldri vunnet på lotto!</b></p>'; } else { $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15); $result = $pagei->query("SELECT l_id, lv_up_id, time, won, total_lodd, total_users, type FROM lotto_vinnere WHERE lv_up_id = {$up_id} ORDER BY id DESC"); echo ' <p class="c">Du har vunnet i lotto <b>' . game::format_number($ant) . '</b> gang' . ($ant == 1 ? '' : 'er') . '! Totalt har du vunnet <b>' . game::format_cash($won) . '</b>!</p> <table class="table center game" id="lotto_vinn" width="100%"> <thead> <tr> <th>Når</th> <th>Plassering</th> <th>Premie</th> <th>Vinnerlodd</th> <th>Solgte lodd</th> <th>Spillere</th> </tr> </thead> <tbody>';
/** * Vis banken */ protected function show() { ess::$b->page->add_js(' var user_bank = ' . js_encode(game::format_cash($this->up->data['up_bank'])) . '; var user_cash = ' . js_encode(game::format_cash($this->up->data['up_cash'])) . ';'); ess::$b->page->add_js_domready(' $$(".bank_amount_set").each(function(elm) { var amount = elm.get("rel").substring(0, 4) == "bank" ? user_bank : user_cash; var e_id = elm.get("rel").substring(5); elm .appendText(" (") .grab(new Element("a", {"text":"alt"}).addEvent("click", function() { $(e_id).set("value", amount); })) .appendText(")"); });'); echo ' <div class="bg1_c small" style="width: 420px"> <h1 class="bg1"> Banken <span class="left"></span><span class="right"></span> </h1> <p class="h_left"> <a href="' . ess::$s['rpath'] . '/node/31">Hjelp</a> </p> <p class="h_right">' . (!isset(login::$extended_access['authed']) ? ' <a href="banken?logout">Logg ut av banken</a>' : '') . ' <a href="banken?authc">Endre pass</a> </p> <div class="bg1" style="padding: 0 15px"> <!-- bankkonto informasjon --> <div style="width: 50%; margin-left: -5px; float: left"> <h2 class="bg1">Bankkonto informasjon<span class="left2"></span><span class="right2"></span></h2> <div class="bg1"> <dl class="dd_right"> <dt>Kontoeier</dt> <dd>' . game::profile_link() . '</dd> <dt>Bankfirma</dt> <dd><a href="ff/?ff_id=' . $this->bank->id . '">' . htmlspecialchars($this->bank->data['ff_name']) . '</a></dd> <dt><abbr title="Overføringstap">Overf.tap</abbr></dt> <dd>' . $this->bank->overforingstap * 100 . ' %</dd> <dt>Plassering</dt> <dd>' . (!isset(game::$bydeler[$this->bank->data['br_b_id']]) ? '<span style="color: #777777">Ukjent</span>' : htmlspecialchars(game::$bydeler[$this->bank->data['br_b_id']]['name'])) . '</dd> <dt>Balanse</dt> <dd>' . game::format_cash($this->up->data['up_bank']) . '</dd> </dl> <p class="c"> <a href="javascript:void(0)" onclick="this.parentNode.style.display=\'none\'; document.getElementById(\'bank_stats\').style.display=\'block\'">Vis statistikk</a> </p> <div id="bank_stats" style="display: none"> <dl class="dd_right"> <dt>Sendt</dt> <dd>' . game::format_number($this->up->data['up_bank_num_sent']) . ' stk</dd> <dd>' . game::format_cash($this->up->data['up_bank_sent']) . '</dd> </dl> <dl class="dd_right"> <dt>Mottatt</dt> <dd>' . game::format_number($this->up->data['up_bank_num_received']) . ' stk</dd> <dd>' . game::format_cash($this->up->data['up_bank_received']) . '</dd> </dl> <dl class="dd_right"> <dt>Overskudd</dt> <dd>' . game::format_cash($this->up->data['up_bank_profit']) . '</dd> </dl> <dl class="dd_right"> <dt><abbr title="Overføringstap">Overf.tap</abbr></dt> <dd>' . game::format_cash($this->up->data['up_bank_charge']) . '</dd> </dl> <dl class="dd_right"> <dt>Renter</dt> <dd>' . game::format_number($this->up->data['up_interest_num']) . ' stk</dd> <dd>' . game::format_cash($this->up->data['up_interest_total']) . '</dd> </dl> </div> <form action="" method="post"> <p class="c">' . show_sbutton("Bytt bank", 'name="switch"') . '</p> </form> </div> </div> <!-- send penger --> <div style="width: 50%; margin-right: -5px; float: right"> <h2 class="bg1">Send penger<span class="left2"></span><span class="right2"></span></h2> <div class="bg1"> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="a" value="send" /> <dl class="dd_right dl_2x"> <dt>Mottaker</dt> <dd><input type="text" name="mottaker" value="' . htmlspecialchars(postval("mottaker")) . '" class="styled w100" /></dd> <dt>Kontakt?</dt> <dd> <select onchange="if(this.value==\'\')var name=prompt(\'Brukernavn?\');else var name=this.value;if(name)document.getElementsByName(\'mottaker\')[0].value=name;this.selectedIndex=0" style="width: 110px; overflow: hidden"> <option>Velg kontakt</option>'; foreach (login::$info['contacts'][1] as $row) { echo ' <option value="' . htmlspecialchars($row['up_name']) . '">' . htmlspecialchars($row['up_name']) . '</option>'; } echo ' <option value="">Egendefinert..</option> </select> </dd> <dt class="bank_amount_set" rel="bank,transf_amount">Beløp</dt> <dd><input type="text" id="transf_amount" name="amount" class="styled w100" value="' . game::format_cash(postval("amount", 0)) . '" /></dd> <dt>Melding?</dt> <dd><input type="text" name="note" value="' . htmlspecialchars(postval("note")) . '" class="styled w100" maxlength="100" /></dd>'; // hoppe over overføringsgebyret? if (access::is_nostat()) { echo ' <dt>Uten gebyr?</dt> <dd><input type="checkbox" name="skip_bog"' . (isset($_POST['skip_bog']) ? ' checked="checked"' : '') . ' /></dd>'; } echo ' </dl> <p class="c">' . show_sbutton("Fortsett") . '</p> </form> </div> </div> <div class="clear"></div> <!-- sett inn penger --> <div style="width: 50%; margin-left: -5px; float: left"> <h2 class="bg1">Sett inn penger<span class="left2"></span><span class="right2"></span></h2> <div class="bg1"> <form action="" method="post"> <dl class="dd_right"> <dt class="bank_amount_set" rel="cash,bank_sett_inn">Beløp</dt> <dd><input type="text" name="sett_inn" id="bank_sett_inn" class="styled w100" value="0" /></dd> </dl> <p class="c">' . show_sbutton("Sett inn") . '</p> </form> </div> </div> <!-- ta ut penger --> <div style="width: 50%; margin-right: -5px; float: right"> <h2 class="bg1">Ta ut penger<span class="left2"></span><span class="right2"></span></h2> <div class="bg1"> <form action="" method="post"> <dl class="dd_right"> <dt class="bank_amount_set" rel="bank,bank_ta_ut">Beløp</dt> <dd><input type="text" name="ta_ut" id="bank_ta_ut" class="styled w100" value="0" /></dd> </dl> <p class="c">' . show_sbutton("Ta ut") . '</p> </form> </div> </div> <div class="clear"></div> </div> </div> <div class="bg1_c large" style="margin-top: 40px"> <h1 class="bg1">Oversikt<span class="left"></span><span class="right"></span></h1> <div class="bg1" style="padding: 0 15px"> <!-- sendte penger --> <div style="width: 50%; margin-left: -5px; float: left"> <h2 class="bg1">Sendte penger<span class="left2"></span><span class="right2"></span></h2> <div class="bg1">'; // sideinformasjon - hent sendte overføringer $pagei = new pagei(pagei::ACTIVE_GET, "side_sendte", pagei::PER_PAGE, 8, pagei::TOTAL, $this->up->data['up_bank_num_sent']); $result = \Kofradia\DB::get()->query("SELECT bl_receiver_up_id, amount, time FROM bank_log WHERE bl_sender_up_id = " . $this->up->id . " ORDER BY time DESC LIMIT {$pagei->start}, {$pagei->per_page}"); if ($result->rowCount() == 0) { echo ' <p> Ingen sendte overføringer. </p>'; } else { echo ' <table class="table tablemt" width="100%"> <thead> <tr> <th>Mottaker</th> <th>Beløp</th> <th>Tidspunkt</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { $date = ess::$b->date->get($row['time']); echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td><user id="' . $row['bl_receiver_up_id'] . '" /></td> <td class="r">' . game::format_cash($row['amount']) . '</td> <td class="c" style="font-size: 10px">' . $date->format(date::FORMAT_NOTIME) . '<br />' . $date->format("H:i:s") . '</td> </tr>'; } echo ' </tbody> </table> <p class="c">' . $pagei->pagenumbers(game::address("banken", $_GET, array("side_sendte")) . "#sendte", game::address("banken", $_GET, array("side_sendte"), array("side_sendte" => "_pageid_")) . "#sendte") . '</p>'; } echo ' </div> </div> <!-- mottatte penger --> <div style="width: 50%; margin-right: -5px; float: right"> <h2 class="bg1">Mottatte penger<span class="left2"></span><span class="right2"></span></h2> <div class="bg1">'; // sideinformasjon - hent mottatte overføringer $pagei = new pagei(pagei::ACTIVE_GET, "side_mottatte", pagei::PER_PAGE, 8, pagei::TOTAL, $this->up->data['up_bank_num_received']); $result = \Kofradia\DB::get()->query("SELECT bl_sender_up_id, amount, time FROM bank_log WHERE bl_receiver_up_id = " . $this->up->id . " ORDER BY time DESC LIMIT {$pagei->start}, {$pagei->per_page}"); if ($result->rowCount() == 0) { echo ' <p> Ingen mottatte overføringer. </p>'; } else { echo ' <table class="table tablemt" width="100%"> <thead> <tr> <th>Sender</th> <th>Beløp</th> <th>Tidspunkt</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { $date = ess::$b->date->get($row['time']); echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td><user id="' . $row['bl_sender_up_id'] . '" /></td> <td class="r">' . game::format_cash($row['amount']) . '</td> <td class="c" style="font-size: 10px">' . $date->format(date::FORMAT_NOTIME) . '<br />' . $date->format("H:i:s") . '</td> </tr>'; } echo ' </tbody> </table> <p class="c">' . $pagei->pagenumbers(game::address("banken", $_GET, array("side_mottatte")) . "#mottatte", game::address("banken", $_GET, array("side_mottatte"), array("side_mottatte" => "_pageid_")) . "#mottatte") . '</p>'; } echo ' </div> </div> <div class="clear"></div> </div> </div>'; }
$p = \Kofradia\DB::get()->prepare("\n\t\t\t\tINSERT IGNORE INTO temp_results (tr_ft_id, tr_match_type)\n\t\t\t\tSELECT ft_id, 'topic'\n\t\t\t\tFROM forum_topics\n\t\t\t\tWHERE 1{$deleted}{$search_forums_query}{$search_from_topic_query}{$search_text_topic}"); $p->execute($text_parts[2]); } // hente svarene? if ($where[2] && $search_text_reply !== false) { $deleted = $search_deleted[$search_deleted_id][2]; \Kofradia\DB::get()->exec("\n\t\t\t\tCREATE TEMPORARY TABLE temp_results2 (\n\t\t\t\t\ttr_ft_id INT(11) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\ttr_fr_id INT(11) UNSIGNED NOT NULL DEFAULT 0\n\t\t\t\t) ENGINE = MEMORY"); $p = \Kofradia\DB::get()->prepare("\n\t\t\t\tINSERT INTO temp_results2\n\t\t\t\tSELECT ft_id, fr_id\n\t\t\t\tFROM\n\t\t\t\t\tforum_topics,\n\t\t\t\t\tforum_replies fr\n\t\t\t\tWHERE ft_id = fr.fr_ft_id{$deleted}{$search_forums_query}{$search_from_reply_query}{$search_text_reply}"); $p->execute($text_parts[2]); // legg til i "funnene" \Kofradia\DB::get()->exec("\n\t\t\t\tINSERT IGNORE INTO temp_results\n\t\t\t\tSELECT DISTINCT tr_ft_id, tr_fr_id, 'reply'\n\t\t\t\tFROM temp_results2"); } // sortering $sort_info = $sort->active(); $query = "\n\t\t\tSELECT\n\t\t\t\ttr_match_type, tr_fr_id,\n\t\t\t\tft_deleted, ft_id, ft_type, ft_fse_id, ft_title, ft_time, ft_up_id, ft_locked, ft_replies, ft_views, ft_last_reply,\n\t\t\t\tup.up_name, up.up_access_level,\n\t\t\t\trup.up_name r_up_name, rup.up_access_level r_up_access_level,\n\t\t\t\tfr_time, fr_up_id\n\t\t\tFROM\n\t\t\t\ttemp_results tr,\n\t\t\t\tforum_topics t\n\t\t\t\tLEFT JOIN users_players up ON ft_up_id = up.up_id\n\t\t\t\tLEFT JOIN forum_replies r ON ft_last_reply = fr_id\n\t\t\t\tLEFT JOIN users_players rup ON fr_up_id = rup.up_id\n\t\t\tWHERE tr_ft_id = ft_id\n\t\t\tORDER BY {$sort_info['params']}"; $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 30); $result = $pagei->query($query); $info = array(); foreach ($title_parts[1] as $part) { $info[] = '<b>Tittel:</b> ' . htmlspecialchars($part); } foreach ($text_parts[1] as $part) { $info[] = '<b>Innhold:</b> ' . htmlspecialchars($part); } if ($search_from_id == 4) { $u = array(); foreach ($players as $player) { $u[] = game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']); } $info[] = '<b>Bruker:</b> ' . implode(" eller ", $u); }
/** * Get events * * @param \pagei * @return array(\Kofradia\GitHub\Event, ..) */ public static function getEvents(\pagei $pagei) { $result = $pagei->query("\n\t\t\tSELECT gl_id, gl_time, gl_event_type, gl_contents, gl_log_count\n\t\t\tFROM github_log\n\t\t\tORDER BY gl_id DESC"); return static::parseResult($result); }
$sort->append("asc", "E-postadresse", "u_email"); $sort->append("desc", "E-postadresse", "u_email DESC"); $sort->append("asc", "Sist pålogget", "up_last_online"); $sort->append("desc", "Sist pålogget", "up_last_online DESC"); $sort->append("asc", "Hits", "up_hits"); $sort->append("desc", "Hits", "up_hits DESC"); $sort->append("asc", "Rank", "up_points"); $sort->append("desc", "Rank", "up_points DESC"); $sort->append("asc", "Penger", "money"); $sort->append("desc", "Penger", "money DESC"); $sort->append("asc", "Fødselsdato", "u_birth"); $sort->append("desc", "Fødselsdato", "u_birth DESC"); $sort->append("asc", "Spiller ID", "up_id"); $sort->append("desc", "Spiller ID", "up_id DESC"); $sort->set_active(getval("sort"), 11); $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 100); $sort_info = $sort->active(); $result = $pagei->query("\n\t\t\tSELECT\n\t\t\t\tu_id, u_access_level, u_online_ip, u_email, u_birth, u_online_ip,\n\t\t\t\tup_id, up_name, up_access_level, up_hits, up_points, up_cash+up_bank AS money, up_created_time, up_last_online\n\t\t\tFROM users\n\t\t\t\tJOIN users_players ON up_u_id = u_id\n\t\t\tWHERE " . implode(" OR ", $where) . "\n\t\t\tGROUP BY up_id\n\t\t\tORDER BY {$sort_info['params']}"); function ip_sessions_link($ip) { return '<a href="ip_sessions?ip=' . urlencode($ip) . '">' . htmlspecialchars($ip) . '</a> (<a href="http://www.ripe.net/fcgi-bin/whois?form_type=simple&full_query_string=&searchtext=' . urlencode($ip) . '&do_search=Search">RIPE</a>)'; } $list = array(); if (count($u_id) > 0) { $list[] = '<span class="dark">Bruker ID:</span> ' . implode(", ", $u_id); } if (count($up_id) > 0) { $list[] = '<span class="dark">Spiller ID:</span> ' . implode(", ", $up_id); } if (count($up_name) > 0) { $list[] = '<span class="dark">Spiller:</span> ' . (count($up_name) == 0 ? '<i>Ikke valgt.</i>' : implode(", ", array_map("htmlspecialchars", $up_name)));
/** * Spillere tilhørende brukeren */ protected static function page_up() { // hent spillerene tilhørende denne personen $pagei = new pagei(pagei::ACTIVE_GET, "side_up", pagei::PER_PAGE, 15); $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_created_time, up_points, up_deactivated_time, up_hits, up_cash+up_bank money, upr_rank_pos\n\t\t\tFROM users_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE up_u_id = " . page_min_side::$active_user->id . "\n\t\t\tORDER BY up_last_online DESC"); echo ' <div class="bg1_c"> <h1 class="bg1">Spillere tilhørende brukeren<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <table class="table ' . ($pagei->pages == 1 ? 'tablem' : 'tablemt') . '" style="width: 100%"> <thead> <tr> <th>Spiller</th> <th>Opprettet</th> <th>Rank</th> <th>Penger</th> <th>Visninger</th> <th>Status</th> </tr> </thead> <tbody>'; while ($row = $result->fetch()) { $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); echo ' <tr> <td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'], true, 'min_side?up_id=' . $row['up_id']) . '</td> <td>' . ess::$b->date->get($row['up_created_time'])->format() . '</td> <td>' . $rank['name'] . ($rank['orig'] ? '<br />(' . $rank['orig'] . ')' : '') . '</td> <td class="r">' . game::format_cash($row['money']) . '</td> <td class="r">' . game::format_number($row['up_hits']) . '</td> <td>' . ($row['up_access_level'] == 0 ? 'Deaktivert:<br />' . ess::$b->date->get($row['up_deactivated_time'])->format() : 'Status: I live') . '</td> </tr>'; } echo ' </tbody> </table>' . ($pagei->pages > 1 ? ' <p class="c">' . $pagei->pagenumbers() . '</p>' : '') . ' </div> </div>'; }
<?php require "base.php"; global $_base; $_base->page->add_title("Lotto", "Trekninger"); kf_menu::$data['lotto'] = true; echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Lotto: Siste trekninger<span class="left"></span><span class="right"></span></h1> <p class="h_left"><a href="lotto">« Tilbake</a></p> <div class="bg1">'; // hent trekningene på nåværende side $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 12); $result = $pagei->query("SELECT CEILING((time-900)/1800)*1800+900 FROM smafia_database.lotto_vinnere WHERE time > " . (time() - 259200) . " GROUP BY CEILING((time-900)/1800)*1800+900 ORDER BY time DESC"); if ($result->rowCount() == 0) { echo ' <p class="c">Ingen trekninger har blitt utført.</p>'; } else { $row = $result->fetch(\PDO::FETCH_NUM); $last = $row[0]; do { $first = $row[0] - 1800; } while ($row = $result->fetch(\PDO::FETCH_NUM)); echo ' <p class="c">' . $_base->date->get($first + 1800)->format() . ' til ' . $_base->date->get($last)->format() . '</p>'; // hent vinnerene $result = \Kofradia\DB::get()->query("SELECT lv_up_id, time, won, total_lodd, total_users, type FROM smafia_database.lotto_vinnere WHERE time >= {$first} AND time < {$last} ORDER BY type"); $rounds = array(); // legg i riktig gruppe while ($row = $result->fetch()) { $end = ceil(($row['time'] - 900) / 1800) * 1800 + 900;
</p>'; } else { // sett opp søkespørringen $search = ""; if (count($title_parts[0]) > 0) { $search .= " AND it_title" . implode(" AND it_title", $title_parts[0]); } if (count($text_parts[0]) > 0) { $search .= " AND id_text" . implode(" AND id_text", $text_parts[0]); } // søke i slettede meldinger? $deleted = $show_deleted ? " AND im_deleted = 0" : " AND ir_deleted = 0"; // sortering $sort_info = $sort->active(); $per_page = login::data_get("innboks_per_side", 15); $pagei = new pagei(pagei::ACTIVE_POST, "side", pagei::PER_PAGE, $per_page); // AND it_id = im_it_id{$search_where[$search_where_id][1]} $result = $pagei->query("\n\t\t\tSELECT it_id, it_title, ir_up_id, ir_unread, ir_unread, ir_deleted, ir_marked, im_id, im_up_id, im_time, id_text, up.up_name, up.up_access_level\n\t\t\tFROM inbox_threads, inbox_rel, users_players up_ref, inbox_data, inbox_messages LEFT JOIN users_players up ON up.up_id = im_up_id\n\t\t\tWHERE\n\t\t\t\tup_ref.up_u_id = {$user->id}\n\t\t\t\tAND ir_up_id = up_ref.up_id{$deleted}\n\t\t\t\tAND it_id = ir_it_id\n\t\t\t\tAND im_it_id= it_id{$search_from[$search_from_id][1]}\n\t\t\t\tAND im_time <= ir_restrict_im_time\n\t\t\t\tAND im_id = id_im_id{$search}\n\t\t\tORDER BY {$sort_info['params']}", array_merge($title_parts[2], $text_parts[2])); $info = array(); foreach ($title_parts[1] as $part) { $info[] = '<b>Tittel:</b> ' . htmlspecialchars($part); } foreach ($text_parts[1] as $part) { $info[] = '<b>Innhold:</b> ' . htmlspecialchars($part); } if ($search_from_id == 4) { if (count($search_from[4][2]) == 1) { $info[] = '<b>Avsender:</b> <user="******" />'; } else { $u = array(); foreach ($search_from[4][2] as $name) {
/** * Vis fengsel */ protected function show() { // er vi i fengsel nå? if ($wait = $this->up->fengsel_wait()) { ess::$b->page->add_js_domready('$("fengsel_dusor").focus();'); echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Du er i fengsel<span class="left"></span><span class="right"></span></h1> <p class="h_right"><a href="node/16">Hjelp</a></p> <div class="bg1"> <p>Du befinner deg for øyeblikket i fengsel og slipper ut om ' . game::counter($wait, true) . '.</p>' . (!$this->up->is_nostat() ? ' <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="expire" value="' . $this->up->data['up_fengsel_time'] . '" /> <dl class="dd_right"> <dt>Dusør for å bryte deg ut</dt> <dd><input type="text" class="styled w80" name="amount" id="fengsel_dusor" value="' . game::format_cash($this->up->data['up_fengsel_dusor']) . '" /></dd> </dl> <p class="c">' . show_sbutton($this->up->data['up_fengsel_dusor'] > 0 ? "Endre dusør" : "Sett dusør", 'name="dusor"') . '</p> <p class="c">Spilleren som bryter ut mottar kun ' . self::DUSOR_PROFIT * 100 . ' % av dusøren.</p> </form>' : '') . ' </div> </div>'; } // sortering $sort = new sorts("sort"); $sort->append("asc", "Spiller", "up_name"); $sort->append("desc", "Spiller", "up_name DESC"); $sort->append("asc", "Wanted nivå", "up_wanted_level, up_fengsel_time DESC"); $sort->append("desc", "Wanted nivå", "up_wanted_level DESC, up_fengsel_time DESC"); $sort->append("asc", "Tid igjen", "up_fengsel_time"); $sort->append("desc", "Tid igjen", "up_fengsel_time DESC"); $sort->set_active(requestval("sort"), 5); // hent folk i fengsel $sort_info = $sort->active(); $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15); $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_fengsel_time, up_fengsel_num, up_fengsel_dusor, ROUND(up_fengsel_dusor * " . self::DUSOR_PROFIT . ") up_fengsel_dusor_get, up_wanted_level\n\t\t\tFROM users_players\n\t\t\tWHERE up_fengsel_time > " . time() . " AND up_access_level != 0\n\t\t\tORDER BY {$sort_info['params']}"); $num = $result->rowCount(); echo ' <div class="bg1_c ' . ($num == 0 ? 'xsmall' : 'xlarge') . '"> <h1 class="bg1">Fengsel<span class="left"></span><span class="right"></span></h1> <p class="h_right"><a href="node/16">Hjelp</a></p> <div class="bg1"> <form action="" method="post"> <p class="c dark">Ditt wanted nivå er på ' . game::format_number($this->up->data['up_wanted_level'] / 10, 1) . ' %.</p>'; if ($num == 0) { echo ' <p class="c dark">Ingen er i fengselet for øyeblikket.</p> <p class="c"><a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a></p>'; } else { echo ' <table class="table center" width="100%"> <thead> <tr> <th>Spiller ' . $sort->show_link(0, 1) . '</th> <th>Wanted<br />nivå ' . $sort->show_link(2, 3) . '</th> <th>Utbrytning<br />sannsynlighet</th> <th>Ca. poeng</th> <th>Dusør</th> <th>Tid igjen ' . $sort->show_link(4, 5) . '</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { $prefix = ""; $attr = new attr("class"); if (++$i % 2 == 0) { $attr->add("color"); } if (!$this->up->fengsel_check()) { $attr->add("box_handle"); $prefix = '<input type="radio" name="up_id" value="' . $row['up_id'] . '_' . $row['up_fengsel_time'] . '_' . $row['up_fengsel_dusor'] . '" /> '; } $time = $row['up_fengsel_time'] - time(); $prob = self::calc_prob($time, $row['up_wanted_level'] / 10); $points = self::calc_points($prob); echo ' <tr' . $attr->build() . '> <td>' . $prefix . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td class="c">' . game::format_number($row['up_wanted_level'] / 10, 1) . ' %</td> <td class="c">' . game::format_number($prob, 1) . ' %</td> <td class="c">' . game::format_num($points) . '</td> <td class="r nowrap">' . game::format_cash($row['up_fengsel_dusor_get']) . '</td> <td class="r">' . game::counter($time) . '</td> </tr>'; } echo ' </tbody> </table> <p class="c">' . (($wait = $this->up->fengsel_wait()) == 0 ? ' ' . show_sbutton("Bryt ut", 'name="brytut"') : ' Du er i fengsel og slipper ut om ' . game::counter($wait, true) . '. </p> <p class="c">') . ' <a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a> </p>'; // flere sider? if ($pagei->pages > 1) { echo ' <div class="hr"></div> <p class="c"> ' . $pagei->pagenumbers() . ' </p>'; } } echo ' </form> </div> </div>'; // testing if (!MAIN_SERVER || access::is_nostat() && access::has("mod")) { echo ' <div class="bg1_c xxsmall bg1_padding"> <h1 class="bg1">' . (MAIN_SERVER ? 'No-stat' : 'Testing') . '<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <form action="" method="post">' . ($this->up->fengsel_check() ? ' <p class="c">' . show_sbutton("Gå ut av fengsel", 'name="remove"') . '</p>' : ' <dl class="dd_right dl_2x"> <dt>Tid</dt> <dd><input type="text" name="time" value="' . htmlspecialchars(postval("time", 20)) . '" class="styled w40" /> sekunder</dd> </dl> <p class="c">' . show_sbutton("Gå inn i fensgel") . '</p>') . ' </form> </div> </div>'; } }
$s_1 = 2160 * 3600; // 90 dager $s_2 = 2880 * 3600; // 120 dager $s_3 = 4320 * 3600; // 180 dager $expire_1 = $time - $s_1; $expire_2 = $time - $s_2; $expire_3 = $time - $s_3; \Kofradia\DB::get()->exec("\n\tINSERT INTO temp_results (temp_up_id, temp_points)\n\t\tSELECT lc_a_up_id, IF(d1.lcd_data_int = 1,\n\t\t\t{$m_1} * (1 - ({$time} - lc_time) / {$s_1}),\n\t\t\tIF (d1.lcd_data_int = 3,\n\t\t\t\t{$m_3} * (1 - ({$time} - lc_time) / {$s_3}),\n\t\t\t\t{$m_2} * (1 - ({$time} - lc_time) / {$s_2})\n\t\t\t)) AS points\n\t\tFROM log_crew\n\t\t\tJOIN log_crew_data d1 ON d1.lcd_lc_id = lc_id AND d1.lcd_lce_id = {$lcd_lce_id_priority}\n\t\t\tLEFT JOIN log_crew_data d2 ON d2.lcd_lc_id = lc_id AND d2.lcd_lce_id = {$lcd_lce_id_invalidated}\n\t\tWHERE lc_lca_id = {$lca_id} AND lc_time > {$expire} AND (d2.lcd_data_int IS NULL OR d2.lcd_data_int = 0)\n\tON DUPLICATE KEY UPDATE temp_points = temp_points + VALUES(temp_points)"); // vis oversikt echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Oversikt over brukere med høy advarselpoeng<span class="left"></span><span class="right"></span></h1> <div class="bg1">'; $pagei = new pagei(pagei::PER_PAGE, 30, pagei::ACTIVE_GET, "side"); $result = $pagei->query("\n\tSELECT SUM(temp_points) AS points, active.up_id\n\tFROM temp_results\n\t\tJOIN users_players ref ON temp_up_id = ref.up_id\n\t\tJOIN users ON u_id = ref.up_u_id\n\t\tJOIN users_players active ON u_active_up_id = active.up_id\n\tWHERE u_access_level != 0\n\tGROUP BY active.up_id\n\tORDER BY points DESC"); if ($result->rowCount() == 0) { echo ' <p>Fant ingen spillere.</p>'; } else { echo ' <table class="table tablemt center"> <thead> <tr> <th>Aktiv spiller</th> <th>Antall poeng</th> </tr> </thead> <tbody>'; while ($row = $result->fetch()) {