/** * Hent beste ranker siste 24 timer */ public function action_bestranker() { $stats = new \Kofradia\Users\Stats(); $players = $stats->getBestRankers(); if (count($players) == 0) { return \Kofradia\View::forgeTwig('users/login/helpers/best_ranker', array("player" => null)); } $player = reset($players); return \Kofradia\View::forgeTwig('users/login/helpers/best_ranker', array("player" => $player, "img" => \player::get_profile_image_static($player['up_profile_image_url']), "rank" => new \Kofradia\Game\Player\Rank($player['up_points'], $player['upr_rank_pos'], $player['up_access_level']), "profile_link" => \game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']))); }
function visliste($name, $where) { global $_base; $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_access_level, up_last_online FROM users_players WHERE {$where} ORDER BY up_name"); // hopp over hvis det ikke finnes noen if ($result->rowCount() == 0) { return; } echo ' <h2 class="bg1">' . $name . '<span class="left2"></span><span class="right2"></span></h2> <div class="bg1"> <dl class="dd_right">'; while ($row = $result->fetch()) { echo ' <dt>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</dt> <dd>' . game::timespan($row['up_last_online'], game::TIME_ABS | game::TIME_NOBOLD) . '</dd>'; } echo ' </dl> </div>'; }
protected static function show_stats_users($players, $id, &$reply_users, $last_online) { if (!isset($players[$id])) { return ' <tr> <td colspan="3">Ingen brukere.</td> </tr>'; } $i = 0; $ret = ''; foreach ($players[$id] as $player) { $ant = array_key_exists($player['up_id'], $reply_users) ? $reply_users[$player['up_id']] : 0; unset($reply_users[$player['up_id']]); $ret .= ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td>' . game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']) . '</td> <td class="r">' . game::format_number($ant) . '</td> <td class="r">' . game::timespan($last_online[$player['up_id']], game::TIME_ABS) . '</td> </tr>'; } return $ret; }
/** * Behandle ny spiller */ protected function solve_player() { ess::$b->page->add_title("Ny spiller"); redirect::store($_SERVER['REQUEST_URI']); // sjekk om vi allerede har en spiller fra før som ikke er den aktive $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_created_time, up_last_online, up_access_level FROM users_players WHERE up_u_id = " . login::$user->id . " AND up_access_level != 0"); if ($result->rowCount() > 0) { // sett opp liste over spillere $players = array(); while ($row = $result->fetch()) { $players[$row['up_id']] = $row; } // velge aktiv spiller? if (isset($_POST['select']) && isset($_POST['up_id']) && validate_sid()) { $up_id = (int) $_POST['up_id']; if (!isset($players[$up_id])) { ess::$b->page->add_message("Fant ikke spillere.", "error"); redirect::handle(); } // sett som aktiv spiller \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = " . login::$user->id); ess::$b->page->add_message('Du har valgt <user="******" /> som din aktive spiller.'); redirect::handle("min_side"); } echo ' <div class="bg1_c xmedium"> <h1 class="bg1">Ny spiller<span class="left2"></span><span class="right2"></span></h1> <p class="h_left"><a href="' . htmlspecialchars($this->url) . '">Tilbake</a></p> <div class="bg1"> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p>Du har allerede en annen spiller som er i live. Du må enten deaktivere spilleren eller velge å bruke den som din aktive spiller.</p> <table class="table center"> <thead> <tr> <th>ID</th> <th>Spiller</th> <th>Opprettet</th> <th>Sist aktiv</th> <th>Deaktiver</th> </tr> </head> <tbody>'; foreach ($players as $row) { echo ' <tr class="box_handle"> <td><input type="radio" name="up_id" value="' . $row['up_id'] . '" />' . $row['up_id'] . '</td> <td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td>' . ess::$b->date->get($row['up_created_time'])->format() . '</td> <td>' . ess::$b->date->get($row['up_last_online'])->format() . '</td> <td><a href="min_side?up_id=' . $row['up_id'] . '&a=deact">Deaktiver</a></td> </tr>'; } echo ' </tbody> </table> <p class="c">' . show_sbutton("Velg som aktiv spiller", 'name="select"') . '</p> </form> </div> </div>'; ess::$b->page->load(); } // opprette ny spiller? if (isset($_POST['name']) && !isset($_POST['abort']) && validate_sid()) { $name = trim($_POST['name']); $bydel = postval("bydel"); if (!isset(game::$bydeler[$bydel]) || !game::$bydeler[$bydel]['active']) { $bydel = false; } // kontroller navnet $result1 = \Kofradia\DB::get()->query("SELECT " . \Kofradia\DB::quoteNoNull($name) . " REGEXP regex AS m, error FROM regex_checks WHERE (type = 'reg_user_special' OR type = 'reg_user_strength') HAVING m = 1"); $where = ALLOW_SAME_PLAYERNAME ? " AND (up_u_id != " . login::$user->id . " OR up_access_level != 0)" : ""; $result2 = \Kofradia\DB::get()->query("SELECT up_id FROM users_players WHERE up_name = " . \Kofradia\DB::quote($name) . $where); $result3 = \Kofradia\DB::get()->query("SELECT id FROM registration WHERE user = "******"Spillernavnet var ikke gyldig:<ul>" . implode("", $feil) . "</ul>", "error"); } elseif (empty($name)) { ess::$b->page->add_message("Du må skrive inn et navn du ønsker at din nye spiller skal ha.", "error"); } elseif ($result2->rowCount() > 0) { ess::$b->page->add_message("Spillernavnet er allerede tatt! Velg et annet.", "error"); } elseif ($result3->rowCount() > 0) { ess::$b->page->add_message("Noen holder allerede på å registrere seg med dette spillernavnet. Velg et annet.", "error"); } else { // godkjent? if (isset($_POST['confirm'])) { // finne tilfeldig bydel? if (!$bydel) { // finn en tilfeldig bydel $result = \Kofradia\DB::get()->query("SELECT id FROM bydeler WHERE active = 1 ORDER BY RAND()"); $bydel = $result->fetchColumn(0); } \Kofradia\DB::get()->beginTransaction(); // opprett spiller og tilknytt brukeren \Kofradia\DB::get()->exec("INSERT INTO users_players SET up_u_id = " . login::$user->id . ", up_name = " . \Kofradia\DB::quote($name) . ", up_created_time = " . time() . ", up_b_id = {$bydel}"); $up_id = \Kofradia\DB::get()->lastInsertId(); // sett opp riktig rank plassering #\Kofradia\DB::get()->exec("UPDATE users_players AS main, (SELECT COUNT(users_players.up_id)+1 AS pos, ref.up_id FROM users_players AS ref LEFT JOIN users_players ON users_players.up_points > ref.up_points AND users_players.up_access_level < ".ess::$g['access_noplay']." AND users_players.up_access_level != 0 WHERE ref.up_id = $up_id GROUP BY ref.up_id) AS rp SET main.up_rank_pos = rp.pos WHERE main.up_id = rp.up_id"); \Kofradia\DB::get()->exec("INSERT INTO users_players_rank SET upr_up_id = {$up_id}"); ranklist::update(); // sett spilleren som den aktive spilleren for brukerne \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = " . login::$user->id); \Kofradia\DB::get()->commit(); // hent antall medlemmer $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players WHERE up_access_level < " . ess::$g['access_noplay'] . " AND up_access_level != 0"); putlog("INFO", "%bNY SPILLER:%b (#{$up_id} - Nummer %b" . $result->fetchColumn(0) . "%b) %u{$name}%u registrerte seg! " . ess::$s['path'] . "/p/" . rawurlencode($name)); ess::$b->page->add_message("Du har opprettet en ny spiller med navnet <b>" . htmlspecialchars($name) . "</b>!"); redirect::handle("min_side"); } echo ' <div class="bg1_c xxsmall"> <h1 class="bg1">Bekreft ny spiller<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <form action="" method="post">' . ($bydel ? ' <input type="hidden" name="bydel" value="' . $bydel['id'] . '" />' : '') . ' <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="name" value="' . htmlspecialchars($name) . '" /> <p>Du er i ferd med å opprette følgende spiller:</p> <dl class="dd_right"> <dt>Spillernavn</dt> <dd><b>' . htmlspecialchars($name) . '</b></dd> <dt>Bydel</dt> <dd>' . ($bydel ? htmlspecialchars(game::$bydeler[$bydel]['name']) : 'Tilfeldig valgt') . '</dd> </dl> <p>Du kan ikke bytte dette spillernavnet senere uten og opprette en ny spiller.</p> <p class="c">' . show_sbutton("Opprett spiller", 'name="confirm"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form> </div> </div>'; ess::$b->page->load(); } } ess::$b->page->add_css(' #name_validate { color: #AAA } #name_validate_ok { color: #CCFF00 } #name_validate_loading img { vertical-align: text-bottom; margin: -2px 0 } #name_validate_taken { color: #900000 } '); ess::$b->page->add_js_domready(' var status = function(val) { if (val == "") $("name_validate").removeClass("hide"); else $("name_validate").addClass("hide"); if (val == "taken") $("name_validate_taken").removeClass("hide"); else $("name_validate_taken").addClass("hide"); if (val == "ok") $("name_validate_ok").removeClass("hide"); else $("name_validate_ok").addClass("hide"); if (val == "loading") $("name_validate_loading").removeClass("hide"); else $("name_validate_loading").addClass("hide"); }; var change_last = null, change_timer; var change = function() { if (this.get("value") == change_last) return; change_last = this.get("value"); if (this.get("value") == "") { status(""); return; } $clear(change_timer); change_timer = this.search.delay(500, this, true); status("loading"); }; $("name_enter").addEvents({ "keyup": change, "change": change }).focus(); var xhr; $("name_enter").search = function() { if (!xhr) { xhr = new Request({"url": relative_path + "/ajax/find_user"}); xhr.addEvent("success", function(text, xml) { if (xmlGetValue(xml, "user")) status("taken"); else status("ok"); }); xhr.addEvent("failure", function(x) { alert("En feil oppsto."); }); } xhr.send({"data": {"q": $("name_enter").get("value").trim()' . (ALLOW_SAME_PLAYERNAME ? ', "is": true' : '') . '}}); }; if ($("name_enter").get("value") != "") $("name_enter").search.run(null, $("name_enter")); else status(""); change_last = $("name_enter").get("value");'); echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Ny spiller<span class="left2"></span><span class="right2"></span></h1> <p class="h_left"><a href="' . htmlspecialchars($this->url) . '">Tilbake</a></p> <div class="bg1"> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p>Du er nå i ferd med å opprette en ny spiller. Du kan også se informasjon for din tidligere spiller <a href="min_side?up_id=' . login::$user->player->id . '">' . htmlspecialchars(login::$user->player->data['up_name']) . '</a>.</p> <p>Du kan ikke bytte spillernavnet du velger å opprette her uten og opprette en ny spiller.</p> <dl class="dd_right" style="overflow: hidden"> <dt>Nytt spillernavn</dt> <dd><input type="text" id="name_enter" name="name" class="styled w120" value="' . htmlspecialchars(postval("name")) . '" /></dd> <dt>Status: <span class="name_v hide" id="name_validate_loading"><img src="' . STATIC_LINK . '/other/loading-black.gif" /></span> <span class="name_v hide" id="name_validate">Skriv inn ønsket navn</span> <span class="name_v hide" id="name_validate_ok">Ledig</span> <span class="name_v hide" id="name_validate_taken">Opptatt</span> </dt> </dl> <dl class="dd_right"> <dt>Bydel</dt> <dd> <select name="bydel">'; $active = postval("bydel"); if (!isset(game::$bydeler[$active]) || !game::$bydeler[$active]['active']) { $active = false; } echo ' <option' . (!$active ? ' selected="selected"' : '') . '>Velg tilfeldig</option>'; foreach (game::$bydeler as $bydel) { if (!$bydel['active']) { continue; } echo ' <option value="' . $bydel['id'] . '"' . ($active == $bydel['id'] ? ' selected="selected"' : '') . '>' . htmlspecialchars($bydel['name']) . '</option>'; } echo ' </select> </dd> </dl> <p class="c">' . show_sbutton("Fortsett") . '</p> </form> </div> </div>'; }
protected function js() { // mottakere $list = array(); foreach ($this->receivers as $row) { $list[] = array($row['up_id'], $row['up_name'], game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'])); } // hent javascript filen til innboksen ess::$b->page->add_js_file(ess::$s['relative_path'] . "/js/innboks.js"); // javascript ess::$b->page->add_js_domready(' innboks_ny.receivers = ' . js_encode($list) . '; innboks_ny.limit = ' . $this->receivers_limit . '; innboks_ny.init();'); }
<?php $i = 0; foreach ($contacts as $contact) { ?> <tr class="box_handle<?php echo ++$i % 2 == 0 ? ' color' : ''; ?> "> <td><input type="checkbox" name="id[]" rel="id_<?php echo $type; ?> " value="<?php echo $contact->data['uc_id']; ?> " /><?php echo \game::profile_link($contact->data['uc_contact_up_id'], $contact->data['up_name'], $contact->data['up_access_level']); ?> </td> <td class="r"><?php echo \game::timespan($contact->data['up_last_online'], game::TIME_ABS); ?> </td> <td class="r"><?php echo \ess::$b->date->get($contact->data['uc_time'])->format(date::FORMAT_NOTIME); ?> </td> <td><?php echo empty($contact->data['uc_info']) ? '<span class="dark">Ingen info</span>' : \game::bb_to_html($contact->data['uc_info']); ?> </td> <td><a href="kontakter/edit/<?php
.f_lock { color: #FFFFFF } .f_u a span { color: #FFFFFF; text-decoration: none } .f_u a:hover span { text-decoration: underline } .f_time { color: #AAAAAA } .f_deld { color: #FFF; font-size: 11px }'); // vis hver topic $i = 0; while ($row = $result->fetch()) { echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td><a href="forum?id=' . $row['ft_fse_id'] . '">' . htmlspecialchars($sections[$row['ft_fse_id']]['name']) . '</a></td> <td class="l' . ($row['ft_type'] == 3 ? ' f_viktig' : ($row['ft_type'] == 2 ? ' f_sticky' : '')) . '"><a href="topic?id=' . $row['ft_id'] . '">' . htmlspecialchars($row['ft_title']) . '</a>' . ($row['ft_type'] == 3 ? ' <span class="info">(Viktig)</span>' : ($row['ft_type'] == 2 ? ' <span class="info">(Sticky)</span>' : '')) . ($row['ft_locked'] == 1 ? ' <span class="f_lock">(låst)</span>' : '') . ($row['ft_deleted'] != 0 ? ' <span class="f_deld">(Slettet)</span>' : '') . '</td> <td class="f_u">' . game::profile_link($row['ft_up_id'], $row['up_name'], $row['up_access_level']) . '<br /><span class="f_time">' . $_base->date->get($row['ft_time'])->format() . '</span></td> <td>' . game::format_number($row['ft_replies']) . '</td> <td>' . game::format_number($row['ft_views']) . '</td> <td class="f_u">' . ($row['fr_time'] ? game::profile_link($row['fr_up_id'], $row['r_up_name'], $row['r_up_access_level']) . '<br /><span class="f_time">' . game::timespan($row['fr_time'], game::TIME_ABS) . '</span>' : '<span style="color: #AAA">Ingen</span>') . '</td> <td>' . ($row['tr_match_type'] == 'subject' ? 'Tittel' : ($row['tr_match_type'] == 'topic' ? 'Hoved' : '<a href="topic?id=' . $row['ft_id'] . '&replyid=' . $row['tr_fr_id'] . '">Svar »</a>')) . '</td> </tr>'; } echo ' </tbody> </table>'; // flere sider? if ($pagei->pages > 1) { echo ' <p class="c">' . $pagei->pagenumbers() . '</p>'; } } echo ' </div> </div>';
/** * Rette på HTML før output. * * @param string $content * @return string */ function parse_html($content) { global $__server; // fikse noen <user="" /> ? $matches = false; if (preg_match_all("/(<user=\"([0-9a-zA-Z\\-_ ]+)\"( nolink)? \\/>|<user id=\"([0-9]+)\"( nolink)? \\/>)/", $content, $matches)) { $users = array(); $ids = array(); // sett opp brukernavn liste foreach ($matches[2] as $user) { if (!empty($user)) { if (!in_array($user, $users)) { $users[] = $user; } } } // sett opp ID liste foreach ($matches[4] as $id) { if (!empty($id)) { if (!in_array($id, $ids)) { $ids[] = $id; } } } // fant gyldige treff if (count($users) > 0 || count($ids) > 0) { global $_base; $q = array(); // brukernavn if (count($users) > 0) { $q[] = "\n\t\t\t\t\tSELECT up_id, up_name, up_access_level FROM (\n\t\t\t\t\t\tSELECT up_id, up_name, up_access_level\n\t\t\t\t\t\tFROM users_players\n\t\t\t\t\t\tWHERE up_name IN (" . implode(",", array_map(array($_base->db, "quote"), $users)) . ")\n\t\t\t\t\t\tORDER BY up_access_level = 0, up_last_online DESC\n\t\t\t\t\t) ref\n\t\t\t\t\tGROUP BY up_name"; } // id if (count($ids) > 0) { $q[] = "SELECT up_id, up_name, up_access_level FROM users_players WHERE up_id IN (" . implode(",", array_unique(array_map("intval", $ids))) . ")"; } // hent info og bytt om $result = \Kofradia\DB::get()->query(implode(" UNION ", $q)); while ($row = $result->fetch()) { $content = preg_replace('/(<user="******"/") . '" \\/>|<user id="' . $row['up_id'] . '" \\/>)/i', game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']), $content); $content = preg_replace('/(<user="******"/") . '" nolink \\/>|<user id="' . $row['up_id'] . '" nolink \\/>)/i', game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'], false), $content); } } // ordne de som ikke ble funnet $content = preg_replace('~<user="******"( nolink)? />~i', '<a href="' . $__server['relative_path'] . '/finn_spiller?finn=$1">$1 (ukjent spiller)</a>', $content); $content = preg_replace('~<user id="([0-9]+)"( nolink)? />~i', '<a href="' . $__server['relative_path'] . '/finn_spiller">#$1 (ukjent spiller)</a>', $content); } // fikse noen <ff_link>id</ff_link> ? $matches = false; if (preg_match_all("~(<ff_link>([0-9]+)</ff_link>)~", $content, $matches)) { $ids = array(); // sett opp ID liste foreach ($matches[2] as $id) { if (!in_array($id, $ids)) { $ids[] = (int) $id; } } // fant gyldige treff if (count($ids) > 0) { // hent info og bytt om $result = \Kofradia\DB::get()->query("SELECT ff_id, ff_name, ff_inactive FROM ff WHERE ff_id IN (" . implode(",", $ids) . ")"); while ($row = $result->fetch()) { $link = $row['ff_inactive'] && !access::has("mod") ? htmlspecialchars($row['ff_name']) : '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">' . htmlspecialchars($row['ff_name']) . '</a>'; $content = preg_replace('~(<ff_link>' . $row['ff_id'] . '</ff_link>)~', $link, $content); } } // ordne de som ikke ble funnet $content = preg_replace('~<ff_link>([0-9]+)</ff_link>~', '<span class="ff_unknown">ukjent firma/broderskap (#$1)</span>', $content); } // fiks entities $content = str_replace(array("&rpath;", "&spath;", "&path;", "&staticlink;"), array(ess::$s['rpath'], ess::$s['spath'], ess::$s['path'], STATIC_LINK), $content); return $content; }
/** * 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); }
/** * Returner profillenke */ public function profile_link($link = true, $linkurl = NULL) { return game::profile_link($this->id, $this->data['up_name'], $this->data['up_access_level'], $link, $linkurl); }
/** * Lag HTML for forhåndsvisning av et forumsvar * @param array $data * * $data må inneholde: * * ft_id * fr_text * fr_last_edit [optional] * fr_last_edit_up_id [optional] * * fr_up_id * up_name * up_access_level * up_points * upr_rank_pos * up_forum_signature * up_profile_image_url * * fs_new [boolean, optional] */ public static function template_topic_reply_preview($data) { if (!\login::$logged_in) { throw new \HSNotLoggedIn(); } $date = \ess::$b->date->get(); // sett opp ranken $rank = \game::rank_info($data['up_points'], $data['upr_rank_pos'], $data['up_access_level']); $rank = $rank['name']; $player_ff_position = ''; $html = ' <div class="forum_topic"> <h2 class="forum_title"><a href="topic?id=' . $data['ft_id'] . '" class="forum_permlink r4">#XX</a> - ' . $date->format(\date::FORMAT_NOTIME) . ' <b>' . $date->format("H:i:s") . '</b> - Av ' . \game::profile_link($data['fr_up_id'], $data['up_name'], $data['up_access_level']) . $player_ff_position . (isset($data['fs_new']) && $data['fs_new'] ? ' <span class="fs_new">(Ny)</span>' : '') . '</h2> <p class="h_left"><a href="#default_header_wrap"><img src="' . STATIC_LINK . '/other/up.gif" title="Til toppen" /></a></p> <p class="h_right" style="text-transform: uppercase; margin: -17px 10px 0 !important; color: #DDD">Forhåndsvisning</p>'; // profilbildet og rank $img = ' <div class="forum_profile_image"><a href="' . \ess::$s['relative_path'] . '/p/' . $data['up_name'] . '/' . $data['fr_up_id'] . '"><img src="' . htmlspecialchars(\player::get_profile_image_static($data['up_profile_image_url'])) . '" class="profile_image" alt="" /><span class="forum_rank">' . $rank . '</span></a></div>'; // innlegget $html .= ' <div class="forum_text">' . $img . ' ' . \game::format_data($data['fr_text']) . ' </div>'; // signaturen $signatur = false; if (\login::$user->data['u_forum_show_signature']) { $signatur = \game::format_data($data['up_forum_signature']); } if (!empty($signatur)) { $html .= ' <div class="forum_signature">' . $signatur . '</div>'; } // sist endret if (!empty($data['fr_last_edit'])) { $html .= ' <p class="forum_last_edit">Sist redigert av <user id="' . $data['fr_last_edit_up_id'] . '" /> ' . \ess::$b->date->get($data['fr_last_edit'])->format(\date::FORMAT_SEC) . '</p>'; } $html .= ' </div>'; return $html; }
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>'; }
/** Behandle respons */ public function handle_ret($id, $data = NULL) { switch ($id) { case self::RET_INFO_DELETED_OWN: echo ' <p class="info_box">Du viser en av dine egne meldinger som har blitt slettet.</p>'; break; case self::RET_INFO_DELETED: echo ' <p class="info_box">Denne meldingen tilhører ikke deg.</p>'; break; case self::RET_INFO_REPORTED: echo ' <p class="info_box">Du har tilgang til denne meldingstråden fordi den er eller har vært rapportert.</p>'; break; case self::RET_ERROR_404: ess::$b->page->add_message("Fant ikke meldingstråden.", "error"); redirect::handle("innboks"); break; case self::RET_ERROR_CANNOT_REPLY: ess::$b->page->add_message("Du kan ikke svare på denne meldingstråden.", "error"); redirect::handle(); break; case self::RET_ERROR_NO_RECEIVERS: ess::$b->page->add_message("Det er ingen mottakere du kan sende svar til.", "error"); redirect::handle(); break; case self::RET_ERROR_BAN_CREW: ess::$b->page->add_message("Du er blokkert fra å sende meldinger til andre enn Crewet. Du kan kun ha én mottaker. Blokkeringen varer til " . ess::$b->date->get($data['ub_time_expire'])->format(date::FORMAT_SEC) . ".<br /><b>Begrunnelse:</b> " . game::format_data($data['ub_reason'], "bb-opt", "Ingen begrunnelse gitt."), "error"); break; case self::RET_ERROR_BAN: ess::$b->page->add_message("Du er blokkert fra å sende meldinger til andre enn Crewet. Blokkeringen varer til " . ess::$b->date->get($data['ub_time_expire'])->format(date::FORMAT_SEC) . ".<br /><b>Begrunnelse:</b> " . game::format_data($data['ub_reason'], "bb-opt", "Ingen begrunnelse gitt."), "error"); break; case self::RET_ERROR_BLOCKED: foreach ($data as &$row) { $row = game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . (($reason = game::bb_to_html($row['uc_info'])) == "" ? "" : ' - begrunnelse: ' . $reason); } ess::$b->page->add_message("Du kan ikke svare på denne meldingstråden fordi følgende brukere har blokkert deg:<ul><li>" . implode("</li><li>", $data) . "</li></ul>", "error"); break; case self::RET_INFO_BLOCKED: foreach ($data as &$row) { $row = game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . (($reason = game::bb_to_html($row['uc_info'])) == "" ? "" : ' - begrunnelse: ' . $reason); } ess::$b->page->add_message("Følgende brukere har egentlig blokkert deg:<ul><li>" . implode("</li><li>", $data) . "</li></ul>"); break; case self::RET_ERROR_WAIT: global $__server; ess::$b->page->add_message('Du må vente ' . game::counter($data) . ' før du kan sende en melding!', "error"); putlog("LOG", "%c13%bMELDING FORSØK%b%c: %u" . login::$user->player->data['up_name'] . "%u forsøkte å svare på en melding til it_id {$this->id} (%u{$this->data_thread['it_title']}%u). Må vente {$data} sekunder. {$__server['path']}/innboks_les?id={$this->id}"); break; case self::RET_ERROR_CONTENT_SHORT: ess::$b->page->add_message("Meldingen kan ikke inneholde færre enn 3 bokstaver/tall.", "error"); break; case self::RET_ERROR_MARK_NO_REL: ess::$b->page->add_message("Du har ikke mulighet til å markere denne meldingstråden da du ikke er en deltaker i den.", "error"); break; case self::RET_INFO_MARK_ALREADY: if ($this->data_rel['ir_marked']) { ess::$b->page->add_message("Meldingstråden er allerede markert som merket."); } else { ess::$b->page->add_message("Meldingstråden er ikke merket fra før."); } break; case self::RET_INFO_MARK_TRUE: ess::$b->page->add_message("Meldingstråden er nå markert for oppfølging."); break; case self::RET_INFO_MARK_FALSE: ess::$b->page->add_message("Meldingstråden er ikke lenger markert for oppfølging."); break; default: throw new HSException("Ukjent behandler."); } }
public static function format_data($data, $type = "bb", $args = null) { global $_base; switch ($type) { case "bb": case "signature": // bb kode return game::bb_to_html($data); // bb-kode eller egendefinert tekst hvis bb-kode er tom // bb-kode eller egendefinert tekst hvis bb-kode er tom case "bb-opt": $bb = trim(game::bb_to_html($data)); if ($bb == "") { return $args; } return $bb; case "music_pre": return preg_replace('~\\[music\\](https?://.+?)\\[/music\\]~ieu', 'game::music_add(\'$1\')', $data); case "music_post": return game::music_replace($data); case "profile": $data = game::format_data($data, "music_pre"); // sett opp ranken $rank = game::rank_info($args->data['up_points'], $args->data['upr_rank_pos'], $args->data['up_access_level']); // diverse bb koder $data = str_replace(array("[counter]", "[visits]", "[visitor]", "[rank]", "[bank]", "[cash]", "[money]", "[renter]", "[pm_ulest]", "[pengerank]"), array('<img src="&rpath;/counter?count=' . $args->data['up_profile_hits'] . '" alt="Antall visninger: ' . $args->data['up_profile_hits'] . '" />', $args->data['up_profile_hits'], game::profile_link(), $rank['orig'] ? $rank['orig'] : $rank['name'], game::format_cash($args->data['up_bank']), game::format_cash($args->data['up_cash']), game::format_cash($args->data['up_cash'] + $args->data['up_bank']), game::format_cash($args->data['up_interest_last']), game::format_number($args->user->data['u_inbox_new']), game::cash_name($args->data['up_cash'] + $args->data['up_bank'])), game::bb_to_html($data)); // rankbar $type = false; $match_rank = preg_match("~\\[rank_(neste_tid|neste_dato|tid|dato)\\]~iu", $data); if (preg_match("~\\[rankbar( type=(1|2))?\\]~iu", $data, $type) || $match_rank) { // høyeste rank? if ($rank['need_points'] == 0) { global $_game; $prosent = $args->data['up_points'] / game::$ranks['items_number'][count(game::$ranks['items_number'])]['points'] * 100; $rankbar_total = ' <div class="progressbar"> <div class="progress"><p>' . game::format_num($prosent, 3) . ' %</p></div> </div>'; $rankbar_total2 = ' <div class="progressbar" style="margin-top: 1em"> <div class="progress"><p>' . game::format_num($prosent, 3) . ' %</p></div> </div>'; $data = str_replace(array("[rankbar]", "[rankbar type=1]", "[rankbar type=2]", "[rank_tid]", "[rank_dato]", "[rank_neste_tid]", "[rank_neste_dato]"), array($rankbar_total . $rankbar_total2, $rankbar_total, $rankbar_total, "Oppnådd", "Oppnådd", "Oppnådd", "Oppnådd"), $data); } else { // i forhold til den høyeste ranken global $_game; // antall poeng for den høyeste ranken $points_max = game::$ranks['items']; end($points_max); $points_max = current($points_max); $points_max = $points_max['points']; // hvor langt ifra er vi? $percent_total = round($args->data['up_points'] / $points_max, 2) * 100; #if ($percent_total > 100) $percent_total = 100; if ($percent_total == 0) { $percent_total = 0.01; } $rankbar_total = ' <div class="progressbar"> <div class="progress" style="width: ' . floor($percent_total) . '%"><p>' . game::format_num($percent_total, 2) . ' % i forhold til høyeste rank.</p></div> </div>'; // i forhold til neste rank $points_rank = $args->data['up_points'] - $rank['points']; $percent = round($points_rank / $rank['need_points'] * 100, 2); #if ($percent ) $rankbar_next = ' <div class="progressbar"> <div class="progress" style="width: ' . floor($percent) . '%"><p>' . game::format_num($percent, 2) . ' % i forhold til neste rank</p></div> </div>'; $rankbar_next2 = ' <div class="progressbar" style="margin-top: 1em"> <div class="progress" style="width: ' . floor($percent) . '%"><p>' . game::format_num($percent, 2) . ' % i forhold til neste rank</p></div> </div>'; // fiks bb kodene $data = str_replace(array("[rankbar]", "[rankbar type=1]", "[rankbar type=2]"), array($rankbar_total . $rankbar_next2, $rankbar_total, $rankbar_next), $data); // beregn antatt tid det tar å nå høyeste rank if ($match_rank) { // hent ut aktiviteten de siste X dagene $expire = ess::$b->date->get(); $expire->modify("-21 days"); $expire = max($args->data['up_created_time'], $expire->format("U")); // maks tid: siste 21 dager eller siden reg (om registrert innen 30 dager) $result = \Kofradia\DB::get()->query("SELECT SUM(uhi_points) FROM users_hits WHERE uhi_up_id = {$args->id} AND uhi_secs_hour >= {$expire}"); $points = (int) $result->fetchColumn(0); if ($points == 0) { $data = str_replace(array("[rank_tid]", "[rank_dato]", "[rank_neste_tid]", "[rank_neste_dato]"), array("ukjent", "ukjent", "ukjent", "ukjent"), $data); } else { // antall sekunder poengene skal fordeles på $time_elapsed = time() - $expire; // beregn til neste rank og erstatt BB-kode $need = $rank['points'] + $rank['need_points'] - $args->data['up_points']; $time_left = $need / $points * $time_elapsed; if ($time_left > 63072000) { $text_left = "over 2 år"; $text_date = "om over 2 år"; } else { $text_left = game::timespan($time_left); $text_date = ess::$b->date->get($time_left + time())->format(date::FORMAT_NOTIME); } $data = str_replace(array("[rank_neste_tid]", "[rank_neste_dato]"), array($text_left, $text_date), $data); // beregn til øverste rank og erstatt BB-kode $need = $points_max - $args->data['up_points']; $time_left = $need / $points * $time_elapsed; if ($time_left > 63072000) { $text_left = "over 2 år"; $text_date = "om over 2 år"; } else { $text_left = game::timespan($time_left); $text_date = ess::$b->date->get($time_left + time())->format(date::FORMAT_NOTIME); } $data = str_replace(array("[rank_tid]", "[rank_dato]"), array($text_left, $text_date), $data); } } } } // kontaktliste? if (mb_strpos($data, "[kontakter]") !== false) { // hent kontaktliste $result = \Kofradia\DB::get()->query("SELECT uc_contact_up_id, up_name, up_access_level, up_last_online FROM users_contacts LEFT JOIN users_players ON uc_contact_up_id = up_id WHERE uc_u_id = {$args->data['up_u_id']} AND uc_type = 1 ORDER BY up_name"); $html = ' <table class="table l tablem"> <thead> <tr> <th>Spiller</th> <th>Sist pålogget</th> </tr> </thead> <tbody>'; while ($row = $result->fetch()) { $html .= ' <tr> <td>' . game::profile_link($row['uc_contact_up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td> </tr>'; } $html .= ' </tbody> </table>'; // sett inn som bb kode $data = str_replace("[kontakter]", $html, $data); } // blokkeringliste? if (mb_strpos($data, "[blokkert]") !== false) { // hent blokkeringliste $result = \Kofradia\DB::get()->query("SELECT uc_contact_up_id, up_name, up_access_level, up_last_online FROM users_contacts LEFT JOIN users_players ON uc_contact_up_id = up_id WHERE uc_u_id = {$args->data['up_u_id']} AND uc_type = 2 ORDER BY up_name"); $html = ' <table class="table l tablem"> <thead> <tr> <th>Spiller</th> <th>Sist pålogget</th> </tr> </thead> <tbody>'; while ($row = $result->fetch()) { $html .= ' <tr> <td>' . game::profile_link($row['uc_contact_up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td> </tr>'; } $html .= ' </thead> </table>'; // sett inn som bb kode $data = str_replace("[blokkert]", $html, $data); } return game::format_data($data, "music_post"); default: // ukjent! throw new HSException("Ukjent type ({$type})"); } return false; }
/** * Vis beste rankere forrige periode */ protected function show_beste_rankere() { $d = ess::$b->date->get(); $a = $d->format("H") < 21 ? 2 : 1; $d->modify("-{$a} day"); $d->setTime(21, 0, 0); $date_from = $d->format("U"); $d->modify("+1 day"); $date_to = $d->format("U"); // hent statistikk $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, sum_uhi_points, up_points, up_last_online, up_profile_image_url, upr_rank_pos\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\t\tSELECT uhi_up_id, SUM(uhi_points) sum_uhi_points\n\t\t\t\t\tFROM users_hits\n\t\t\t\t\t\tJOIN users_players ON up_id = uhi_up_id AND (up_access_level != 0 OR up_deactivated_time < {$date_to}) AND up_access_level < " . ess::$g['access_noplay'] . "\n\t\t\t\t\tWHERE uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}\n\t\t\t\t\tGROUP BY uhi_up_id\n\t\t\t\t\tHAVING sum_uhi_points > 0\n\t\t\t\t\tORDER BY sum_uhi_points DESC\n\t\t\t\t\tLIMIT 3\n\t\t\t\t) ref,\n\t\t\t\tusers_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE uhi_up_id = up_id"); if ($result->rowCount() == 0) { return; } $players = array(); $up_list = array(); while ($row = $result->fetch()) { $players[] = $row; $up_list[] = $row['up_id']; } // hent familier hvor spilleren er medlem $result_ff = \Kofradia\DB::get()->query("\n\t\t\tSELECT ffm_up_id, ffm_priority, ff_id, ff_type, ff_name\n\t\t\tFROM\n\t\t\t\tff_members\n\t\t\t\tJOIN ff ON ff_id = ffm_ff_id AND ff_type = 1 AND ff_inactive = 0\n\t\t\tWHERE ffm_up_id IN (" . implode(",", $up_list) . ") AND ffm_status = " . ff_member::STATUS_MEMBER . "\n\t\t\tORDER BY ff_name"); $familier = array(); while ($row = $result_ff->fetch()) { $pos = ff::$types[$row['ff_type']]['priority'][$row['ffm_priority']]; $text = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" title="' . htmlspecialchars($pos) . '">' . htmlspecialchars($row['ff_name']) . '</a>'; $familier[$row['ffm_up_id']][] = $text; } $data = ' <p>Beste rankere siste periode</p>'; $e = 0; foreach ($players as $row) { $e++; $img = player::get_profile_image_static($row['up_profile_image_url']); $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); $data .= ' <p class="ranklist_box"> <a href="' . ess::$s['relative_path'] . '/p/' . rawurlencode($row['up_name']) . '" title="Vis profil"><img src="' . htmlspecialchars($img) . '" alt="Profilbilde" class="profile_image" /></a> <span class="ranklist_pos">#' . $e . '</span> <span class="ranklist_player"> <span class="rp_up">' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</span><br /> <span class="rp_rank">' . $rank['name'] . '</span> </span> <span class="rp_familie">' . (!isset($familier[$row['up_id']]) ? '<i class="rp_no_familie">Ingen broderskap</i>' : implode(", ", $familier[$row['up_id']])) . '</span> </p>'; if ($e == 15) { break; } } $data .= ' <p class="dark">En rankperiode er fra sist klokka var 21:00 og 24 timer før. De beste rankerene <a href="' . ess::$s['rpath'] . '/node/59">mottar bonus</a> for sin innsats.</p>'; $this->put_box($data); }
/** * 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>'; } }
box.setStyle(p, s); } }; fn(); img.addEvent("load", fn); })(); </script>'; die; } header("Content-Type: text/xml"); echo '<?xml version="1.0" encoding="utf-8"?> <playerinfo> <up_id>' . $player['up_id'] . '</up_id> <url>' . htmlspecialchars($__server['relative_path'] . "/p/" . rawurlencode($player['up_name']) . "/" . $player['up_id']) . '</url> <up_name>' . htmlspecialchars($player['up_name']) . '</up_name> <up_name_display>' . htmlspecialchars(game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level'])) . '</up_name_display> <status>' . htmlspecialchars($status) . '</status> <reg_time_abs>' . htmlspecialchars($_base->date->get($player['up_created_time'])->format(date::FORMAT_SEC)) . '</reg_time_abs> <reg_time_rel>' . htmlspecialchars(game::timespan($player['up_created_time'], game::TIME_ABS)) . '</reg_time_rel> <last_online_abs>' . htmlspecialchars($_base->date->get($player['up_last_online'])->format(date::FORMAT_SEC)) . '</last_online_abs> <last_online_rel>' . htmlspecialchars(game::timespan($player['up_last_online'], game::TIME_ABS)) . '</last_online_rel> <activated>' . htmlspecialchars($player['up_access_level'] == 0 ? 0 : 1) . '</activated> <profile_image>' . htmlspecialchars($profile_image) . '</profile_image> <rank_name>' . htmlspecialchars($rank['name'] . ($rank['orig'] ? ' (' . $rank['orig'] . ')' : '')) . '</rank_name>'; // moderator stæsj if ($mod) { echo ' <ip>' . $player['u_online_ip'] . '</ip> <email>' . htmlspecialchars($player['u_email']) . '</email> <hits>' . $player['up_hits'] . '</hits> <money>' . game::format_cash($player['money']) . '</money>';
/** * Kaste ut en spiller */ protected function kick_handle() { // valider sid validate_sid(); // kan vi ikke kaste ut noen spillere nå? if (login::$user->player->fengsel_check() || login::$user->player->bomberom_check() || login::$user->player->data['up_b_id'] != $this->ff->data['br_b_id'] || !$this->kick_hour_ok) { redirect::handle(); } // mangler spillervalg? if (!isset($_POST['player'])) { ess::$b->page->add_message("Du må velge en spiller du vil kaste ut.", "error"); redirect::handle(); } // er ikke spilleren i bomberommet? $up_id = (int) $_POST['player']; $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT u_email, up_id, up_name, up_access_level, up_brom_expire\n\t\t\tFROM users_players JOIN users ON up_u_id = u_id\n\t\t\tWHERE up_id = {$up_id} AND up_brom_ff_id = {$this->ff->id} AND up_brom_expire > " . time() . " AND up_access_level != 0"); $cost = $this->fam ? self::KICK_PLAYER_COST_FAMILIE : self::KICK_PLAYER_COST; $up = $result->fetch(); if (!$up) { ess::$b->page->add_message("Fant ikke spilleren.", "error"); redirect::handle(); } // sett opp skjema $form = \Kofradia\Form::getByDomain("other", login::$user); // har vi bekreftet ønsket om å kaste ut en spiller? if (isset($_POST['confirm']) && $form->validateHashOrAlert(null, "Kast ut spiller fra bomberom")) { \Kofradia\DB::get()->beginTransaction(); // forsøk å trekk fra pengene if (!$this->ff->bank(ff::BANK_BETALING, $cost, "Kaste ut spilleren [user id={$up['up_id']}] fra bomberommet")) { ess::$b->page->add_message("Det er ikke nok penger i " . ($this->fam ? "broderskapbanken" : "firmabanken") . ".", "error"); \Kofradia\DB::get()->commit(); } else { // finn en tilfeldig bydel å plassere spilleren $result = \Kofradia\DB::get()->query("SELECT id, name FROM bydeler WHERE active != 0 ORDER BY RAND() LIMIT 1"); $b_id = $result->fetchColumn(0); // forsøk å trekk ut spilleren fra bomberommet $a = \Kofradia\DB::get()->exec("\n\t\t\t\t\tUPDATE users_players\n\t\t\t\t\tSET up_brom_expire = 0, up_b_id = {$b_id}\n\t\t\t\t\tWHERE up_id = {$up['up_id']} AND up_brom_ff_id = {$this->ff->id} AND up_brom_expire = {$up['up_brom_expire']} AND up_access_level != 0"); // feilet? if ($a == 0) { // avbryt transaksjon \Kofradia\DB::get()->rollback(); ess::$b->page->add_message("Kunne ikke kaste ut spilleren fra bomberommet.", "error"); } else { // legg til hendelse hos spilleren player::add_log_static("bomberom_kicked", login::$user->player->id . ":" . urlencode($this->ff->data['ff_name']) . ":{$up['up_brom_expire']}", $this->ff->id, $up['up_id']); // send e-post til spilleren $email = new email(); $email->text = 'Hei, Din spiller ble kastet ut fra bomberommet av ' . ($this->fam ? 'broderskapet' : 'firmaet') . ' som styrer bomberommet. -- www.kofradia.no'; $email->send($up['u_email'], "Kastet ut av bomberom"); // firmalogg $this->ff->add_log("bomberom_kick", login::$user->player->id . ":{$up['up_id']}:{$up['up_brom_expire']}"); // logg putlog("DF", "BOMBEROM: {$up['up_name']} ble kastet ut av bomberommet {$this->ff->data['ff_name']} av " . login::$user->player->data['up_name'] . " " . ess::$s['spath'] . "/min_side?up_id={$up['up_id']}"); ess::$b->page->add_message('Du kastet ut <user id="' . $up['up_id'] . '" /> fra bomberommet. ' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' betalte et gebyr på ' . game::format_cash($cost) . '.'); \Kofradia\DB::get()->commit(); redirect::handle(); } } } ess::$b->page->add_title("Kaste ut spiller"); // vis informasjon echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Kaste ut spiller fra bomberommet<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Du er i ferd med å kaste ut ' . game::profile_link($up['up_id'], $up['up_name'], $up['up_access_level']) . ' fra bomberommet.</p> <p>Spilleren skal i utgangspunktet sitte i bomberommet til ' . ess::$b->date->get($up['up_brom_expire'])->format(date::FORMAT_SEC) . ' (' . game::counter($up['up_brom_expire'] - time()) . ' gjenstår).</p> <p>For å kaste ut spilleren må det betales en avgift på <b>' . game::format_cash($cost) . '</b> som betales fra ' . ($this->fam ? 'broderskapkontoen' : 'firmakontoen') . '.</p>'; // har vi ikke nok penger i firmakontoen? if ($this->ff->data['ff_bank'] < $cost) { echo ' <p>' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' har for øyeblikket kun ' . game::format_cash($this->ff->data['ff_bank']) . ' på konto, noe som ikke er nok. ' . ($this->ff->access(1) ? '<a href="' . ess::$s['relative_path'] . '/ff/banken?ff_id=' . $this->ff->id . '">Sett inn penger på ' . ($this->fam ? 'broderskapkontoen' : 'firmakontoen') . '</a>' : '<a href="' . ess::$s['relative_path'] . '/ff/panel?ff_id=' . $this->ff->id . '">Donér til ' . ($this->fam ? 'broderskapet' : 'firmaet') . '</a>') . ' først for å kunne kaste ut spilleren.</p> <p class="c"><a href="bomberom?ff_id=' . $this->ff->id . '">Tilbake</a></p>'; } else { echo ' <p>' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' har for øyeblikket ' . game::format_cash($this->ff->data['ff_bank']) . ' på konto.</p> <form action="" method="post"> ' . $form->getHTMLInput() . ' <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="player" value="' . $up['up_id'] . '" /> <input type="hidden" name="kick" /> <p class="c">' . show_sbutton("Bekreft, kast ut spilleren", 'name="confirm"') . ' <a href="bomberom?ff_id=' . $this->ff->id . '">Avbryt</a></p> </form>'; } echo ' </div> </div>'; $this->ff->load_page(); }
<?php require "base.php"; global $_base; $_base->page->add_title("Lotto", "Vinn"); // hvem skal vi vise oversikten over? $up_id = login::$user->player->id; if (isset($_GET['up_id']) && access::has("mod")) { $find = (int) getval("up_id"); $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_access_level FROM users_players WHERE up_id = {$find}"); if ($result->rowCount() == 0) { $_base->page->add_message("Fant ingen spiller med ID <b>" . htmlspecialchars($_GET['up_id']) . "</b>!", "error"); } else { $row = $result->fetch(); $up_id = $row['up_id']; $_base->page->add_message("Du viser lottoresultatene for spilleren " . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . "!"); } } 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 '
/** * 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(); }
/** * Vis toppliste */ protected function top() { if (access::has("crewet") && !isset($_GET['update'])) { echo ' <p class="c"><a href="ranklist?update">Oppdater ranklista hvis det er feil i den »</a></p>'; } // hent folka.. $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_points, up_last_online, up_profile_image_url, 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_access_level < " . ess::$g['access_noplay'] . " AND up_access_level != 0\n\t\t\tORDER BY up_points DESC\n\t\t\tLIMIT 15"); // hent familier hvor spilleren er medlem $result_ff = \Kofradia\DB::get()->query("\n\t\t\tSELECT ffm_up_id, ffm_priority, ff_id, ff_type, ff_name\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\t\tSELECT up_id\n\t\t\t\t\tFROM users_players\n\t\t\t\t\tWHERE up_access_level < " . ess::$g['access_noplay'] . " AND up_access_level != 0\n\t\t\t\t\tORDER BY up_points DESC\n\t\t\t\t\tLIMIT 15\n\t\t\t\t) ref\n\t\t\t\tJOIN ff_members ON ffm_up_id = up_id AND ffm_status = " . ff_member::STATUS_MEMBER . "\n\t\t\t\tJOIN ff ON ff_id = ffm_ff_id AND ff_type = 1 AND ff_inactive = 0\n\t\t\tORDER BY ff_name"); $familier = array(); while ($row = $result_ff->fetch()) { $pos = ff::$types[$row['ff_type']]['priority'][$row['ffm_priority']]; $text = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" title="' . htmlspecialchars($pos) . '">' . htmlspecialchars($row['ff_name']) . '</a>'; $familier[$row['ffm_up_id']][] = $text; } ess::$b->page->add_css(' .ranklist_box { background-color: #1D1D1D; margin: 15px auto; overflow: hidden; padding-left: 10px; position: relative; /*width: 60%;*/ } .ranklist_box .profile_image { float: left; margin: 0 10px 0 -10px; border: 0; } .ranklist_box_1 { max-height: 100px; min-height: 80px; } .ranklist_box_2 { min-height: 60px; max-height: 60px; } .ranklist_box_2 .profile_image { width: 80px; } .ranklist_pos { position: absolute; top: 10px; right: 10px; font-size: 30px; } .ranklist_box_2 .ranklist_pos { font-size: 20px } .ranklist_player { position: absolute; top: 10px; left: 130px; } .ranklist_player img { display: none } .ranklist_box_2 .ranklist_player { left: 90px } .rp_up { font-size: 16px } .rp_rank { display: block; padding-top: 5px; color: #555; } .rp_familie { position: absolute; bottom: 10px; right: 10px; text-align: right; } .rp_no_familie { color: #555 }'); echo ' <div class="bg1_c small"> <h1 class="bg1">Rangeringsoversikt<span class="left"></span><span class="right"></span></h1> <div class="bg1">'; $e = 0; while ($row = $result->fetch()) { $e++; $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); echo ' <p class="ranklist_box ranklist_box_' . ($e > 5 ? "2" : "1") . '"> <img src="' . htmlspecialchars(player::get_profile_image_static($row['up_profile_image_url'])) . '" alt="Profilbilde" class="profile_image" /> <span class="ranklist_pos">#' . $e . '</span> <span class="ranklist_player"> <span class="rp_up">' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</span><br /> <span class="rp_rank">' . $rank['name'] . '</span> </span> <span class="rp_familie">' . (!isset($familier[$row['up_id']]) ? '<i class="rp_no_familie">Ingen broderskap</i>' : implode(", ", $familier[$row['up_id']])) . '</span> </p>'; if ($e == 15) { break; } } echo ' <p class="c"><a href="ranklist?alle">Vis komplett liste »</a></p> </div> </div>'; }
</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> <td class="r">' . game::format_number($player['up_hits']) . '</td> <td class="r">' . game::format_number($player['up_points']) . '</td> <td class="r">' . game::format_cash($player['money']) . '</td> <td class="r">' . (empty($player['u_birth']) || $player['u_birth'] == "0000-00-00" ? 'Ikke registrert' : intval($birth[2]) . ". " . $_lang['months'][intval($birth[1])] . " " . $birth[0]) . '</td>'; } echo ' </tr>'; } echo ' </tbody> </table>';
/** * Rankplassering siden kl 21 */ protected static function page_rank_pos() { // finn vår plassering for ranking siden forrige rankperiode startet $d = ess::$b->date->get(); if ($d->format("H") < 21) { $d->modify("-1 day"); } $d->setTime(21, 0, 0); $date_from = $d->format("U"); $d->modify("+1 day"); $date_to = $d->format("U"); // hent statistikk $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, sum_uhi_points, up_points, up_last_online, up_profile_image_url, upr_rank_pos\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\t\tSELECT uhi_up_id, SUM(uhi_points) sum_uhi_points\n\t\t\t\t\tFROM users_hits\n\t\t\t\t\t\tJOIN users_players ON up_id = uhi_up_id AND (up_access_level != 0 OR up_deactivated_time < {$date_to}) AND up_access_level < " . ess::$g['access_noplay'] . "\n\t\t\t\t\tWHERE uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}\n\t\t\t\t\tGROUP BY uhi_up_id\n\t\t\t\t\tHAVING sum_uhi_points > 0\n\t\t\t\t\tORDER BY sum_uhi_points DESC\n\t\t\t\t\tLIMIT 5\n\t\t\t\t) ref,\n\t\t\t\tusers_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE uhi_up_id = up_id"); $players = array(); $up_list = array(); $in_list = false; $pos = null; while ($row = $result->fetch()) { $players[] = $row; $up_list[] = $row['up_id']; if ($row['up_id'] == page_min_side::$active_player->id) { $in_list = true; } } // er vi ikke i lista? if (!$in_list) { // hvor mange poeng har vi fått? $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT SUM(uhi_points) sum_uhi_points\n\t\t\t\tFROM users_hits\n\t\t\t\tWHERE uhi_up_id = " . page_min_side::$active_player->id . " AND uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}"); $points = $result->fetchColumn(0); if ($points > 0) { // finn plasseringen vår $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT COUNT(uhi_up_id) FROM (\n\t\t\t\t\t\tSELECT uhi_up_id, SUM(uhi_points) sum_uhi_points\n\t\t\t\t\t\tFROM users_hits\n\t\t\t\t\t\t\tJOIN users_players ON up_id = uhi_up_id AND (up_access_level != 0 OR up_deactivated_time < {$date_to}) AND up_access_level < " . ess::$g['access_noplay'] . "\n\t\t\t\t\t\tWHERE uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}\n\t\t\t\t\t\tGROUP BY uhi_up_id\n\t\t\t\t\t\tHAVING sum_uhi_points > {$points}\n\t\t\t\t\t) ref"); $pos = $result->fetchColumn(0) + 1; } } echo ' <div class="bg1_c"> <h1 class="bg1">Rankplassering siste periode<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Statistikk gjelder fra kl 21.</p>'; if (count($players) == 0) { echo ' <p>Ingen har ranket i denne perioden.</p>'; } else { echo ' <ol>'; foreach ($players as $row) { $me = $row['up_id'] == page_min_side::$active_player->id ? " (meg)" : ""; echo ' <li>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . $me . '</li>'; } echo ' </ol>'; if (!$in_list && !$pos) { echo ' <p>Du har ikke ranket i perioden og har ingen plassering.</p>'; } elseif ($pos) { echo ' <p>Din plassering: ' . game::format_num($pos) . '</p>'; } } echo ' </div> </div>'; }
/** * 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>'; }
} $q = $_POST['q']; // limit $limit = intval(min(100, max(1, postval("limit", 10)))); // ekskluder? $exclude = ""; $exclude_ids = array(); if (isset($_POST['exclude'])) { $exclude_ids = array_unique(array_map("intval", explode(",", $_POST['exclude']))); if (count($exclude_ids) > 0) { $exclude = "up_id NOT IN (" . implode(",", $exclude_ids) . ") AND "; } } // ignorere egne deaktiverte spillere? if (isset($_POST['is'])) { $exclude .= "up_u_id != " . login::$user->id . " AND "; } // hent brukere $q2 = \Kofradia\DB::quote(str_replace("_", "\\_", $q)); $result = \Kofradia\DB::get()->query("SELECT SQL_CALC_FOUND_ROWS up_id, up_name, up_access_level FROM users_players WHERE {$exclude}up_name LIKE {$q2} ORDER BY LENGTH(up_name), up_name LIMIT {$limit}"); $result2 = \Kofradia\DB::get()->query("SELECT FOUND_ROWS()"); $num = $result2->fetchColumn(0); // logg putlog("LOG", "%c3%bFINN-SPILLER:%b%c %u" . login::$user->player->data['up_name'] . "%u søkte etter %u{$q}%u!"); // xml $data = '<userlist query="' . htmlspecialchars($q) . '" limit="' . $limit . '" results="' . $num . '">'; while ($row = $result->fetch()) { $data .= '<user up_id="' . $row['up_id'] . '" up_name="' . htmlspecialchars($row['up_name']) . '">' . htmlspecialchars(game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'])) . '</user>'; } $data .= '</userlist>'; ajax::xml($data);
/** * 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>'; }
echo ' <table class="table tablemb"> <thead> <tr> <th>Bruker</th> <th>E-post</th> <th>Sist pålogget</th> <th> </th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td>' . htmlspecialchars($row['u_email']) . '</td> <td>' . $_base->date->get($row['up_last_online'])->format(date::FORMAT_SEC) . '</td> <td><form action="" method="post"><input type="hidden" name="up_id" value="' . $row['up_id'] . '" />' . show_sbutton("Velg") . '</form></td> </tr>'; } echo ' </tbody> </table>'; } echo box_end(); } show_search_form(); $_base->page->load(); function like_search($value) {
.it_dato { text-align: center; white-space: nowrap; color: #888888; width: 100px } #meldinger a { text-decoration: none } .utgaaende { color: #888888 }' . ($show_deleted ? ' .slettet { color: #BBBB99 }' : ' .ir_marked { color: #BBBB99; font-weight: bold }')); $i = 0; while ($row = $result->fetch()) { $content = trim(strip_tags(game::bb_to_html($row['id_text']))); $length = mb_strlen($content); $max = 60; if (mb_strlen($content) > $max) { $content = mb_substr($content, 0, $max - 4) . " ..."; } echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td class="it_u">' . ($row['im_up_id'] == $user->player->id ? '<span class="utgaaende">Utgående</span>' : game::profile_link($row['im_up_id'], $row['up_name'], $row['up_access_level'])) . '</td> <td><a href="innboks_les?id=' . $row['it_id'] . '&goto=' . $row['im_id'] . '">' . htmlspecialchars($row['it_title']) . '</a>' . ($row['ir_unread'] == 1 ? ' <span class="ny">(Ny!)</span>' : ($row['ir_unread'] > 1 ? ' <span class="ny">(' . $row['ir_unread'] . ' nye!)</span>' : '')) . ($row['ir_deleted'] != 0 ? ' <span class="slettet">(Slettet)</span>' : '') . ($row['ir_up_id'] != $user->player->id || !$user->player->active ? ' <span class="it_locked">(Låst)</span>' : '') . ($row['ir_marked'] != 0 ? ' <span class="ir_marked">(Til oppfølging)</span>' : '') . '</td> <td class="dark">' . htmlspecialchars($content) . ' (' . $length . ' tegn)</td> <td class="it_dato">' . $_base->date->get($row['im_time'])->format() . '</td> </tr>'; } echo ' </tbody> </table>'; // flere sider? if ($pagei->pages > 1) { echo ' <div class="hr"></div> <p class="c"> ' . $pagei->pagenumbers("input") . ' </p>';
<option value="d3">Siden 3 dager</option> <option value="24t">Siste 24 timer</option> <option value="1u">Siste uken</option> </select> <noscript> <input type="submit" value="Go" /> </noscript> </div> <p>Denne listen viser hvem som har vært aktive i løpet av siste ' . game::timespan($time, game::TIME_FULL) . '</p> </form>'; // hent brukerne $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_access_level FROM users_players WHERE up_last_online >= " . (time() - $time) . " ORDER BY up_name"); // sett opp alfabetisk liste $liste = array(); while ($row = $result->fetch()) { $liste[mb_strtolower(mb_substr($row['up_name'], 0, 1))][] = game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']); } echo ' <table class="table tablemb"> <thead> <tr> <th colspan="2">Spillere pålogget - ' . game::format_number($result->rowCount()) . ' spiller' . ($result->rowCount() == 1 ? '' : 'e') . '</th> </tr> </thead> <tbody>'; foreach ($liste as $char => $rows) { echo ' <tr> <th>' . htmlspecialchars($char) . '</th> <td>' . implode(", ", $rows) . '</td> </tr>';
/** * Vis informasjon om medlemmene */ protected function page_members_handle() { ess::$b->page->add_title("Medlemsdetaljer"); // ingen medlemmer? if (count($this->ff->members['members']) == 0) { redirect::handle(); } // sett opp medlemsliste og hent utvidet informasjon $members_id = array(); foreach ($this->ff->members['members'] as $member) { $members_id[] = $member->id; } $members = array(); $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_health, up_health_max, up_b_id, up_brom_expire\n\t\t\tFROM users_players\n\t\t\tWHERE up_id IN (" . implode(",", $members_id) . ")"); while ($row = $result->fetch()) { $members[$row['up_id']] = $row; } echo ' <div class="bg1_c xmedium"> <h1 class="bg1">Medlemsdetaljer<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <table class="table tablem center"> <thead> <tr> <th>Spiller</th> <th>Sist pålogget</th> <th>Plassering</th> <th>I bomberom?</th> <th>Helse</th> </tr> </thead> <tbody>'; // vis oversikt over medlemmene $i = 0; foreach ($this->ff->members['members'] as $member) { $info = $members[$member->id]; $brom = $info['up_brom_expire'] > time() ? 'Ja (til ' . ess::$b->date->get($info['up_brom_expire'])->format(date::FORMAT_SEC) . ')' : 'Nei'; $helse_p = $info['up_health'] / $info['up_health_max']; $helse = $helse_p > 0.9 ? 'Over 90 %' : ($helse_p < 0.1 ? 'Under 10 %' : ($helse_p < 0.5 ? 'Under 50 %' : 'Over 50 %')); echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td>' . game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) . '<br /><b>' . ucfirst($member->get_priority_name()) . '</b></td> <td class="r">' . ess::$b->date->get($member->data['up_last_online'])->format() . '<br />' . game::timespan($member->data['up_last_online'], game::TIME_ABS) . '</td> <td>' . htmlspecialchars(game::$bydeler[$info['up_b_id']]['name']) . '</td> <td>' . $brom . '</td> <td class="r">' . $helse . '</td> </tr>'; } echo ' </tbody> </table> </div> </div>'; $this->ff->load_page(); }