public function __construct() { ess::$b->page->add_title("Meldinger"); // finn meldingstråden $this->thread = inbox_thread::get(getval("id")); if (!$this->thread) { ess::$b->page->add_message("Fant ikke meldingstråden.", "error"); redirect::handle("innboks"); } $this->thread->check_rel(); $this->thread->get_receivers(); $this->can_reply = $this->thread->can_reply_access && $this->thread->can_reply_receivers; redirect::store("innboks_les?id={$this->thread->id}"); $this->check_actions(); // oppdater stats og teller $this->thread->stats_view_update(); $this->thread->counter_new_reset(); // finn ut hvor mange meldinger vi kan se $this->num_messages = $this->thread->num_messages(); // sett opp sidenummer $this->set_page_info(); // antall nye meldinger $this->new = $this->thread->data_rel ? $this->thread->data_rel['ir_unread'] : 0; // skrive svar? if (isset($_GET['reply']) && $this->can_reply) { ess::$b->page->add_js_domready(' $("textContent").focus(); $("default_main").goto();'); } // vis meldingen $this->show(); }
/** * Construct */ public function __construct() { $this->ff = ff::get_ff(); $this->ff->needaccess(2); redirect::store("medlemmer?ff_id={$this->ff->id}"); $this->page_handle(); $this->ff->load_page(); }
/** * Construct */ public function __construct() { $this->ff = ff::get_ff(); $this->ff->needtype("bank"); $this->ff->needaccess(3); redirect::store("bank?ff_id={$this->ff->id}"); ess::$b->page->add_title("Bankkontroll"); $this->page_handle(); $this->ff->load_page(); }
/** * Construct */ public function __construct() { access::no_guest(); ess::$b->page->add_title("Anti-bot sjekk"); // hvilken side vi skal sendes til $this->redirect_url = getval("ret"); if (!$this->redirect_url) { $this->redirect_url = ess::$s['relative_path'] . "/"; } // sjekk etter anti-bot $name = getval("name"); $this->antibot = antibot::get($name); if (!$this->antibot->data) { ess::$b->page->add_message("Anti-bot oppføringen er ikke opprettet.", "error"); $this->redirect(); } // kuler? if ($name == "kuler") { // gjennomfør pre-check if (!$this->antibot->kuler_precheck()) { $this->redirect(); } // sett lave ventetider $this->update_delay = 2; $this->retry_delay = 2; } redirect::store("sjekk?name=" . urlencode($this->antibot->name) . '&ret=' . urlencode($this->redirect_url)); // sjekk om anti-boten ikke krever sjekk if (!$this->antibot->is_check_required()) { $this->redirect(); } // sjekk for ventetid $this->check_wait(); // hent bildene $this->load_images(); $this->form = \Kofradia\Form::getByDomain("anti-bot", login::$user); // utføre sjekk? if (isset($_POST['valider']) && isset($this->images) && !$this->wait) { $this->check(); } // nye bilder? if (isset($_POST['new'])) { $this->new_imgs(); } // vis anti-boten $this->show(); }
/** * Behandle forespørsel */ protected function page_handle() { redirect::store("/banken", redirect::ROOT); // hent inn bankinfo $this->bank = page_banken_bank::get($this->up->data['up_bank_ff_id']); // må vi velge en bankkonto? if (!$this->bank) { $this->bank_set(); } // har vi ikke noe bankpassord? if (!$this->up->user->data['u_bank_auth']) { $this->auth_create(); } // kontroller at vi er logget inn i banken $this->auth_verify(); // logge ut? if (isset($_GET['logout']) && !isset(login::$extended_access['authed'])) { login::data_set("banken_last_view", 0); ess::$b->page->add_message("Du er nå logget ut av banken."); redirect::handle(); } // endre bankpassord? if (isset($_GET['authc'])) { $this->auth_change(); } // bytte bankkonto? if (isset($_POST['switch'])) { $this->bank_set(true); } // sette inn penger? if (isset($_POST['sett_inn'])) { $this->sett_inn(); } // ta ut penger? if (isset($_POST['ta_ut'])) { $this->ta_ut(); } // overføre penger? if (isset($_POST['mottaker']) && !isset($_POST['abort'])) { $this->overfor(); } // vis banken $this->show(); }
protected function load_user() { $user = login::$user; // vise en spesiell bruker? if (isset($_GET['u_id']) && access::has("admin")) { // hent bruker $user = user::get((int) $_GET['u_id']); // fant ikke? if (!$user) { echo ' <h1>Meldinger</h1> <p>Fant ingen bruker med ID <b>' . htmlspecialchars($_GET['u_id']) . '</b>.</p>'; $this->load_page(); } $this->show_deleted = true; } $this->inbox = new user_innboks($user); // logg visning av innboks putlog("PROFILVIS", "%c5%bVIS-MELDINGER:%b%c %u" . login::$user->player->data['up_name'] . "%u ({$_SERVER['REQUEST_URI']})"); // lagre redirect adresse redirect::store($this->addr()); }
/** * Construct */ public function __construct() { $this->ff = ff::get_ff(); if ($this->ff->type['type'] != "familie" || $this->ff->data['ff_is_crew']) { $this->ff->needtype("bomberom"); } $this->ff->needaccess(true); $this->fam = $this->ff->type['type'] == "familie"; // konkurrerende broderskap har ikke bomberom if ($this->ff->competition) { ess::$b->page->add_message("Broderskapet er i konkurransemodus og har derfor ikke et aktivt bomberom.", "error"); $this->ff->redirect(); } redirect::store("bomberom?ff_id={$this->ff->id}"); ess::$b->page->add_title("Bomberommet"); // sjekk om vi kan kaste ut nå $this->check_kick_hour(); $this->kick_access = $this->ff->access($this->ff->type['type'] == "familie" ? 2 : true); // behandle forespørselen $this->page_handle(); // last inn siden $this->ff->load_page(); }
/** * Crewside */ protected static function page_crew() { global $__server, $_lang; ess::$b->page->add_title("Crew"); $subpage2 = getval("b"); redirect::store(page_min_side::addr(NULL, $subpage2 != "" ? "b=" . $subpage2 : '')); ess::$b->page->add_css(' .minside_crew_links .active { color: #CCFF00 }'); $links = array(); $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "player")) . '">Min spiller</a>'; $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "")) . '"' . ($subpage2 == "" ? ' class="active"' : '') . '>Oversikt / logg</a>'; if (access::has("forum_mod")) { $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=addlog")) . '"' . ($subpage2 == "addlog" ? ' class="active"' : '') . '>Nytt notat</a>'; } $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk")) . '"' . ($subpage2 == "blokk" ? ' class="active"' : '') . '>Blokkeringer</a>'; if (access::has("mod")) { $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=banka")) . '"' . ($subpage2 == "banka" ? ' class="active"' : '') . '>Bankpassord</a>'; } if (access::has("mod")) { $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=birth")) . '"' . ($subpage2 == "birth" ? ' class="active"' : '') . '>Fødselsdato</a>'; } if (access::has("mod")) { $links[] = '<a href="' . htmlspecialchars(page_min_side::addr("set", "b=pass")) . '">Passord</a>'; } if (access::has("admin")) { $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=level")) . '"' . ($subpage2 == "level" ? ' class="active"' : '') . '>Tilgangsnivå</a>'; } $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=send_email")) . '"' . ($subpage2 == "send_email" ? ' class="active"' : '') . '>Send e-post</a>'; $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=warning")) . '"' . ($subpage2 == "warning" ? ' class="active"' : '') . '>Gi advarsel</a>'; echo ' <p class="c minside_crew_links">' . implode(" | ", $links) . '</p>'; if ($subpage2 == "") { // javascript for rapporteringer ess::$b->page->add_js_domready(' var w = $("minside_reports"); var xhr = new Request({ url: relative_path + "/ajax/minside_report", data: { u_id: ' . page_min_side::$active_user->id . ' }, evalScripts: function(script) { ajax.js += script; } }); xhr.addEvent("success", function(text) { w.set("html", text); w.getElements(".pagenumbers").each(function(elm) { elm.addEvent("set_page", function(s) { load(null, s, true); }); }); ajax.refresh(); }); xhr.addEvent("failure", function(x) { var p = new Element("p", {html: "Feil: " + x}).inject(w.empty()); }); function load(a, s, goto) { if (a !== null) xhr.options.data.a = a; if (s) xhr.options.data.s = s; if (goto) w.getParent().goto(-10); w.set("html", "<p>Laster inn data..</p>"); xhr.send(); } $("minside_reports_from").addEvent("click", function() { load("from", 1, true); }); $("minside_reports_to").addEvent("click", function() { load("to", 1, true); }); $("minside_reports_all").addEvent("click", function() { load("", 1, true); }); load();'); // css for rapporteringer ess::$b->page->add_css(' .rap_wrap { margin: 1em 0; background-color: #222222; position: relative; overflow: auto; } .rap_time { position: absolute; top: 8px; right: 5px; margin: 0; color: #777777; } .rap_time span { color: #EEEEEE; } .rap_w { margin: 0; padding: 5px; background-color: #282828; } .rap_u { font-size: 14px; } .rap_wrap .col2_w { margin: 0 } .rap_wrap .col_w.left { width: 40% } .rap_wrap .col_w.right { width: 60% } .rap_wrap .col_w.left .col { margin: 0 0 0 5px } .rap_wrap .col_w.right .col { margin: 5px 5px 5px 0 } .rap_note { background-color: #1C1C1C; padding: 5px !important; overflow: auto; border: 1px dotted #525252 } '); // faner ess::$b->page->add_js_domready(' $$(".minside_fane_link").addEvent("click", function(elm) { $$(".minside_fane").setStyle("display", "none"); $$(".minside_fane_link").removeClass("minside_fane_active"); this.addClass("minside_fane_active"); $(this.get("rel")).setStyle("display", ""); }); $$(".minside_fane_active").fireEvent("click");'); ess::$b->page->add_css(' .minside_fane_active, .minside_fane_active:hover { color: #CCFF00; }'); echo ' <div class="col2_w"> <div class="col_w left"> <div class="col"> <div class="bg1_c"> <h1 class="bg1">Oversikt<span class="left2"></span><span class="right2"></span></h1> <div class="bg1">'; // hent blokkeringer for brukeren $result = \Kofradia\DB::get()->query("SELECT ub_id, ub_type, ub_time_expire, ub_reason FROM users_ban WHERE ub_u_id = " . page_min_side::$active_user->id . " AND ub_time_expire > " . time()); if ($result->rowCount() > 0) { while ($row = $result->fetch()) { $access = access::has(blokkeringer::$types[$row['ub_type']]['access']); echo ' <p>Blokkert: ' . ($access ? '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk&t={$row['ub_type']}")) . '">' : '') . htmlspecialchars(blokkeringer::$types[$row['ub_type']]['title']) . ($access ? '</a>' : '') . ' (til ' . ess::$b->date->get($row['ub_time_expire'])->format(date::FORMAT_SEC) . ', ' . game::counter($row['ub_time_expire'] - time()) . ')</p>'; } } echo ' <p>Trykk deg inn på de forskjellige spillerene til brukeren for å se informasjon knyttet opp mot dem.</p> </div> </div> </div> </div> <div class="col_w right"> <div class="col"> <div class="bg1_c"> <h1 class="bg1">Crewnotat for brukeren<span class="left2"></span><span class="right2"></span></h1> <p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote")) . '">rediger</a></p> <div class="bg1"> <p>Her kan hvem som helst i crewet legge til eller endre et notat for denne brukeren for å memorere ting som har med <u>brukeren</u> å gjøre.</p>' . (empty(page_min_side::$active_user->data['u_note_crew']) ? ' <p>Ingen notat er registrert.</p>' : ' <div class="p">' . game::bb_to_html(page_min_side::$active_user->data['u_note_crew']) . '</div>') . ' </div> </div> </div> </div> </div> <p class="c"><a class="minside_fane_link minside_fane_active" rel="minside_fane2">Loggoppføringer</a> | <a class="minside_fane_link" rel="minside_fane1">Rapporteringer</a></p> <div id="minside_fane1" class="minside_fane"> <p class="c">Filter: <a id="minside_reports_from">Brukerens egne rapporteringer</a> | <a id="minside_reports_to">Andres rapporteringer</a> | <a id="minside_reports_all">Alle</a></p> <div id="minside_reports"> <p>Laster inn..</p> </div> </div> <div id="minside_fane2" class="minside_fane"> <p class="c">Loggoppføringer for denne brukeren</p>'; // hent loggene for denne brukeren $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50); $result = $pagei->query("SELECT lc_id, lc_up_id, lc_time, lc_lca_id, lc_a_up_id, lc_log FROM log_crew JOIN users_players ON up_u_id = " . page_min_side::$active_user->id . " WHERE lc_a_up_id = up_id ORDER BY lc_time DESC"); // ingen handlinger? if ($result->rowCount() == 0) { echo ' <p class="c">Ingen oppføringer eksisterer.</p>'; } else { $rows = array(); while ($row = $result->fetch()) { $rows[$row['lc_id']] = $row; } $data = crewlog::load_summary_data($rows); $logs = array(); foreach ($data as $row) { // hent sammendrag $summary = crewlog::make_summary($row, NULL, $row['lc_a_up_id'] != page_min_side::$active_player->id); $day = ess::$b->date->get($row['lc_time'])->format(date::FORMAT_NOTIME); $logs[$day][] = '<p><span class="time">' . ess::$b->date->get($row['lc_time'])->format("H:i") . ':</span> ' . $summary . '</p>'; } ess::$b->page->add_css('.crewlog .time { color: #888888; padding-right: 5px }'); foreach ($logs as $day => $items) { echo ' <div class="bg1_c"> <h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1> <div class="bg1 crewlog"> ' . implode(' ', $items) . ' </div> </div>'; } echo ' <p class="c">' . $pagei->pagenumbers() . '</p>'; } echo ' </div>'; } elseif ($subpage2 == "addlog" && access::has("forum_mod")) { // legge til? if (isset($_POST['notat'])) { $notat = trim(postval("notat")); $notat_bb = trim(game::bb_to_html($notat)); if (empty($notat_bb)) { ess::$b->page->add_message("Notatet kan ikke være tomt.", "error"); } else { // legg til i crewloggen crewlog::log("user_add_note", page_min_side::$active_player->id, $notat); ess::$b->page->add_message("Notatet ble registrert."); redirect::handle(page_min_side::addr()); } } ess::$b->page->add_title("Nytt notat"); ess::$b->page->add_js_domready('$("notat_felt").focus();'); echo ' <div class="bg1_c"> <h1 class="bg1">Legg til notat i crewloggen<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Notat: (Vil bli lagt til som vanlig logg i <a href="' . htmlspecialchars(page_min_side::addr(NULL)) . '">Crewloggen</a>.)</p> <form action="" method="post"> <p><textarea name="notat" id="notat_felt" rows="10" cols="30" style="width: 98%; overflow: auto">' . htmlspecialchars(postval("notat")) . '</textarea></p> <p>' . show_sbutton("Legg til notat") . '</p> </form> </div> </div>'; } elseif ($subpage2 == "blokk") { ess::$b->page->add_title("Blokkeringer"); $type = false; if (isset($_GET['t'])) { // kontroller type $type_id = intval($_GET['t']); // fant ikke? if (!isset(blokkeringer::$types[$type_id])) { ess::$b->page->add_message("Ugyldig type '.{$type_id}.'.", "error"); } else { $type = blokkeringer::$types[$type_id]; // har vi tilgang til å gjøre noe med denne blokkeringen? if (!access::has($type['access'])) { ess::$b->page->add_message('Du har ikke tilgang til denne typen blokkering. (' . htmlspecialchars($type['title']) . ')', "error"); $type = false; } } } // vise en type blokkering? if ($type) { redirect::store(page_min_side::addr(NULL, "b=blokk&t={$type_id}")); // sjekk om det er en aktiv blokkering for denne typen $active = blokkeringer::check($type_id, page_min_side::$active_user->id); if ($active) { // hent informasjon om blokkeringen $info = blokkeringer::get_info($active['ub_id']); } // handling: legg til blokkering if (isset($_POST['add']) && $active) { ess::$b->page->add_message("Det er allerede en blokkering på brukeren som varer til " . ess::$b->date->get($active['ub_time_expire'])->format() . ".", "error"); } elseif (isset($_POST['add'])) { // kontroller verdier $date_type = isset($_POST['date_type']) && $_POST['date_type'] == "abs" ? "abs" : "rel"; $rel_weeks = intval(postval("rel_weeks")); $rel_days = intval(postval("rel_days")); $rel_hours = intval(postval("rel_hours")); $rel_mins = intval(postval("rel_mins")); $abs_date = postval("abs_date"); $abs_time = postval("abs_time"); // sjekk type og verdiene $expire = false; // bestemt dato/tidspunkt if ($date_type == "abs") { // kontroller datoen if (!($abs_date_m = check_date($abs_date, "%y-%m-%d"))) { ess::$b->page->add_message('Datoen du skrev inn er ikke gyldig.', "error"); } elseif (!($abs_time_m = check_date($abs_time, "%h:%i:%s"))) { ess::$b->page->add_message('Tidspunktet du skrev inn er ikke gyldig.', "error"); } else { // ok $date = ess::$b->date->get(); $date->setTime($abs_time_m[1], $abs_time_m[2], $abs_time_m[3]); $date->setDate($abs_date_m[1], $abs_date_m[2], $abs_date_m[3]); $expire = $date->format("U"); } } else { // sjekk uker if ($rel_weeks < 0 || $rel_weeks > 9) { ess::$b->page->add_message('Antall uker kan ikke være under 0 eller over 9.', "error"); } elseif ($rel_days < 0 || $rel_days > 6) { ess::$b->page->add_message('Antall dager kan ikke være under 0 eller over 6.', "error"); } elseif ($rel_hours < 0 || $rel_hours > 23) { ess::$b->page->add_message('Antall timer kan ikke være under 0 eller over 23.', "error"); } elseif ($rel_mins < 0 || $rel_mins > 59) { ess::$b->page->add_message('Antall minutter kan ikke være under 0 eller over 59.', "error"); } else { // ok $expire = time() + $rel_weeks * 604800 + $rel_days * 86400 + $rel_hours * 3600 + $rel_mins * 60; } } // sjekke videre? if ($expire) { // sjekk at datoen er minst 1 min fremover i tid if ($expire < time() + 60) { ess::$b->page->add_message('Du kan ikke legge til en blokkering for mindre enn 1 minutt.', "error"); } else { // kontroller begrunnelse og intern informasjon $log = trim(postval("log")); $note = trim(postval("note")); // mangler begrunnelse? if ($log == "") { ess::$b->page->add_message('Mangler begrunnelse.', "error"); } elseif ($note == "") { ess::$b->page->add_message("Mangler intern informasjon", "error"); } else { // forsøk å legg til blokkeringen $add = blokkeringer::add(page_min_side::$active_user->id, $type_id, $expire, $log, $note); if ($add !== true) { ess::$b->page->add_message("Det er allerede en blokkering på brukeren som varer til " . ess::$b->date->get($add['ub_time_expire'])->format() . ".", "error"); } else { // legg til crewlogg crewlog::log("user_ban_active", page_min_side::$active_player->id, $log, array("type" => $type_id, "time_end" => $expire, "note" => $note)); ess::$b->page->add_message('Brukeren er nå blokkert til ' . ess::$b->date->get($expire)->format() . '. (' . htmlspecialchars($type['title']) . ')'); redirect::handle(); } } } } } elseif (isset($_POST['edit']) && !$active) { // ingen blokkering å redigere? ess::$b->page->add_message("Brukeren har ikke lengre denne blokkeringen.", "error"); } elseif (isset($_POST['edit'])) { // godkjent handling? if (isset($_POST['log_change'])) { // kontroller verdier $date = postval("date"); $time = postval("time"); // kontroller datoen if (!($date_m = check_date($date, "%y-%m-%d"))) { ess::$b->page->add_message('Datoen du skrev inn er ikke gyldig.', "error"); } elseif (!($time_m = check_date($time, "%h:%i:%s"))) { ess::$b->page->add_message('Tidspunktet du skrev inn er ikke gyldig.', "error"); } else { $date = ess::$b->date->get(); $date->setTime($time_m[1], $time_m[2], $time_m[3]); $date->setDate($date_m[1], $date_m[2], $date_m[3]); $expire = $date->format("U"); // sjekk at datoen er minst 1 min fremover i tid if ($expire < time() + 60) { ess::$b->page->add_message('Du kan ikke legge til en blokkering for mindre enn 1 minutt.', "error"); } else { // kontroller begrunnelse for utestengelse, begrunnelse for endring og intern informasjon $log_ban = trim(postval("log_ban")); $log_change = trim(postval("log_change")); $note = trim(postval("note")); // mangler begrunnelse for endring? if ($log_change == "") { ess::$b->page->add_message('Mangler begrunnelse for endring.', "error"); } elseif ($log_ban == "") { ess::$b->page->add_message('Mangler begrunnelse for utestengelse.', "error"); } elseif ($note == "") { ess::$b->page->add_message('Mangler intern informasjon.', "error"); } elseif ($expire == $info['ub_time_expire'] && $log_ban == $info['ub_reason'] && $note == $info['ub_note']) { ess::$b->page->add_message('Ingen endringer ble utført.', "error"); } else { // oppdater blokkeringen $edit = blokkeringer::edit($active['ub_id'], $expire, $log_ban, $note); if ($edit == 0) { ess::$b->page->add_message("Blokkeringen kunne ikke bli oppdatert. Den er mest sannsynlig ikke lengre aktiv.", "error"); } else { // legg til crewlogg $data = array("type" => $type_id, "time_end_old" => $info['ub_time_expire'], "log_old" => $info['ub_reason'], "note_old" => $info['ub_note']); if ($expire != $info['ub_time_expire']) { $data["time_end_new"] = $expire; } if ($log_ban != $info['ub_reason']) { $data["log_new"] = $log_ban; } if ($note != $info['ub_note']) { $data["note_new"] = $note; } crewlog::log("user_ban_change", page_min_side::$active_player->id, $log_change, $data); ess::$b->page->add_message('Du har oppdatert blokkeringen. Brukeren er nå blokkert til ' . ess::$b->date->get($expire)->format() . '. (' . htmlspecialchars($type['title']) . ')'); redirect::handle(); } } } } } } elseif (isset($_POST['delete']) && !$active) { // ingen blokkering å slette? ess::$b->page->add_message("Brukeren har ikke lengre denne blokkeringen.", "error"); } elseif (isset($_POST['delete'])) { // godkjent handling? if (isset($_POST['log'])) { $log = trim(postval("log")); // mangler logg? if ($log == "") { ess::$b->page->add_message('Mangler begrunnelse.', "error"); } else { // fjern blokkeringen $delete = blokkeringer::delete($active['ub_id']); if ($delete == 0) { ess::$b->page->add_message("Blokkeringen kunne ikke bli oppdatert. Den er mest sannsynlig ikke lengre aktiv.", "error"); } else { // legg til crewlogg crewlog::log("user_ban_delete", page_min_side::$active_player->id, $log, array("type" => $type_id, "time_end" => $info['ub_time_expire'], "log" => $info['ub_reason'], "note" => $info['ub_note'])); ess::$b->page->add_message('Du har fjernet blokkeringen. (' . htmlspecialchars($type['title']) . ')'); redirect::handle(); } } } } echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Blokkering: ' . htmlspecialchars($type['title']) . '<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <p class="r">Tilgangsnivå: ' . access::name($type['access']) . '</p> <p><u>Hensikt:</u> ' . $type['description'] . '</p>'; // blokkert? if ($active) { echo ' <p>Brukeren er blokkert.</p> <dl class="dd_right"> <dt>Lagt til</dt> <dd>' . ess::$b->date->get($info['ub_time_added'])->format(date::FORMAT_SEC) . '<br />' . game::timespan($info['ub_time_added'], game::TIME_ABS | game::TIME_ALL, 5) . '</dd> <dt>Utestengt til</dt> <dd>' . ess::$b->date->get($info['ub_time_expire'])->format(date::FORMAT_SEC) . '<br />' . game::counter($info['ub_time_expire'] - time()) . '</dd> </dl> <div class="section"> <h2>Begrunnelse</h2> <div class="p">' . (($reason = game::bb_to_html($info['ub_reason'])) == "" ? 'Ikke oppgitt.' : $reason) . '</div> <h2>Intern informasjon</h2> <div class="p">' . (($note = game::bb_to_html($info['ub_note'])) == "" ? 'Ikke oppgitt.' : $note) . '</div> </div>'; // handling: redigere blokkering if (isset($_POST['edit'])) { echo ' <p>Du er i ferd med å endre blokkeringen til brukeren.</p> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Til</dt> <dd> Dato: <input type="text" name="date" id="ban_date" value="' . htmlspecialchars(postval("date", ess::$b->date->get($info['ub_time_expire'])->format("Y-m-d"))) . '" class="styled w80" /> <input type="text" name="time" id="ban_time" value="' . htmlspecialchars(postval("time", ess::$b->date->get($info['ub_time_expire'])->format("H:i:s"))) . '" class="styled w80" /> </dd> <dt>Begrunnelse for endring</dt> <dd><textarea name="log_change" cols="30" rows="5">' . htmlspecialchars(postval("log_change")) . '</textarea></dd> <dt>Begrunnelse for blokkering</dt> <dd><textarea name="log_ban" cols="30" rows="5">' . htmlspecialchars(postval("log_ban", $info['ub_reason'])) . '</textarea></dd> <dt>Intern informasjon</dt> <dd><textarea name="note" cols="30" rows="5">' . htmlspecialchars(postval("note", $info['ub_note'])) . '</textarea></dd> <dd> ' . show_sbutton("Lagre endringer", 'name="edit"') . ' ' . show_sbutton("Avbryt") . ' </dd> </dl> </form>'; } elseif (isset($_POST['delete'])) { echo ' <p>Du er i ferd med å fjerne blokkeringen til brukeren.</p> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Begrunnelse for fjerning</dt> <dd><textarea name="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> <form action="" method="post"> <dd> ' . show_sbutton("Fjern", 'name="delete"') . ' ' . show_sbutton("Avbryt") . ' </dd> </form> </dl> </form>'; } else { echo ' <form action="" method="post"> <p> ' . show_sbutton("Endre", 'name="edit"') . ' ' . show_sbutton("Fjern", 'name="delete"') . ' <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk")) . '" class="button">Tilbake</a> </p> </form>'; } } else { $date_type = isset($_POST['type']) && $_POST['type'] == "abs" ? "abs" : "rel"; $hide_rel = $date_type == "rel" ? '' : ' hide'; $hide_abs = $date_type == "abs" ? '' : ' hide'; echo ' <p>Brukeren har ingen aktiv blokkering.</p> <form action="" method="post"> <input type="hidden" name="date_type" value="' . $date_type . '" /> <dl class="dd_right dl_2x"> <dt class="date_rel' . $hide_rel . '">Varighet (<a href="#" onclick="handleClass(\'.date_abs\', \'.date_rel\', event, this.parentNode.parentNode); $(\'date_type\').value=\'abs\'">velg dato</a>)</dt> <dd class="date_rel' . $hide_rel . '"> <input type="text" name="rel_weeks" class="styled w30 r" style="width: 10px" value="' . intval(postval("rel_weeks")) . '" maxlength="1" /> uker <input type="text" name="rel_days" class="styled w30 r" style="width: 10px" value="' . intval(postval("rel_days")) . '" maxlength="1" /> dager <input type="text" name="rel_hours" class="styled w30 r" style="width: 17px" value="' . intval(postval("rel_hours")) . '" maxlength="2" /> timer <input type="text" name="rel_mins" class="styled w30 r" style="width: 17px" value="' . intval(postval("rel_mins")) . '" maxlength="2" /> minutter </dd> <dt class="date_abs' . $hide_abs . '">Til (<a href="#" onclick="handleClass(\'.date_rel\', \'.date_abs\', event, this.parentNode.parentNode); $(\'date_type\').value=\'rel\'">velg varighet</a>)</dt> <dd class="date_abs' . $hide_abs . '"> Dato: <input type="text" name="abs_date" value="' . htmlspecialchars(postval("abs_date", ess::$b->date->get()->format("Y-m-d"))) . '" class="styled w80" /> <input type="text" name="abs_time" value="' . htmlspecialchars(postval("abs_time", ess::$b->date->get()->format("H:i:s"))) . '" class="styled w60" /> </dd> <dt>Begrunnelse</dt> <dd><textarea name="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> <dt>Intern informasjon</dt> <dd><textarea name="note" cols="30" rows="5">' . htmlspecialchars(postval("note")) . '</textarea></dd> <dd> ' . show_sbutton("Legg til blokkering", 'name="add"') . ' <a href="' . htmlspecialchars(page_min_side::addr(NULL, "a=blokk")) . '" class="button">Tilbake</a> </dd> </dl> </form>'; } echo ' </div> </div>'; } else { // filtrer ut de blokkeringene vi har tilgang til å sette $types = blokkeringer::$types; $links = array(); foreach ($types as $id => $type) { if (!access::has($type['access'])) { continue; } $links[$type['title']] = ' <li><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk&t={$id}")) . '" title="' . htmlspecialchars($type['description']) . '">' . htmlspecialchars($type['title']) . '</a></li>'; } // sorter ksort($links); $links = implode('', $links); // vis oversikt echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Blokkeringer<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Velg type:</p>'; if ($links == '') { echo ' <p>Du har ikke tilgang til noen blokkeringstyper.</p>'; } else { echo ' <ul>' . $links . ' </ul>'; } echo ' </div> </div>'; // hent alle aktive blokkeringer $result = \Kofradia\DB::get()->query("SELECT ub_type, ub_time_expire, ub_reason FROM users_ban WHERE ub_u_id = " . page_min_side::$active_user->id . " AND ub_time_expire > " . time() . " ORDER BY ub_time_expire"); if ($result->rowCount() > 0) { echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Aktive blokkeringer<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <table class="table tablem" style="width: 100%"> <thead> <tr> <th>Type</th> <th>Dato</th> <th>Begrunnelse</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { $type = blokkeringer::get_type($row['ub_type']); $access = access::has($type['access']); echo ' <tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '> <td>' . ($access ? '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=blokk&t={$row['ub_type']}")) . '">' : '') . htmlspecialchars($type['title']) . ($access ? '</a>' : '') . '</td> <td> ' . ess::$b->date->get($row['ub_time_expire'])->format(date::FORMAT_SEC) . '<br /> (' . game::timespan($row['ub_time_expire'], game::TIME_ABS | game::TIME_ALL, 5) . ') </td> <td>' . game::format_data($row['ub_reason'], "bb-opt", "Ingen begrunnelse gitt.") . '</td> </tr>'; } echo ' </tbody> </table> </div> </div>'; } } } elseif ($subpage2 == "send_email") { ess::$b->page->add_title("Send e-post"); // har tekst? $show_form = true; if (isset($_POST['text']) && !isset($_POST['edit'])) { $subject = trim(postval("subject")); $text = trim(postval("text")); // mangler emne? if (empty($subject)) { ess::$b->page->add_message("Du må fylle ut emnefeltet.", "error"); } elseif (empty($text)) { ess::$b->page->add_message("Du må fylle ut innholdet.", "error"); } else { $email_subject = $subject; $email_text = $text . "\n\n--\n" . login::$user->player->data['up_name'] . "\nwww.kofradia.no\n\nDenne meldingen ble sendt til " . page_min_side::$active_user->data['u_email'] . " som tilhører " . page_min_side::$active_player->data['up_name']; // godkjent? if (isset($_POST['send'])) { // send e-posten $email = new email(); $email->text = $email_text; $email->headers['BCC'] = "*****@*****.**"; $email->headers['Reply-To'] = "*****@*****.**"; $email->send(page_min_side::$active_user->data['u_email'], $email_subject); // legg til crewlogg crewlog::log("user_send_email", page_min_side::$active_player->id, NULL, array("email" => page_min_side::$active_user->data['u_email'], "email_subject" => $email_subject, "email_content" => $email_text)); ess::$b->page->add_message("E-posten ble sendt til " . htmlspecialchars(page_min_side::$active_user->data['u_email']) . "."); redirect::handle(page_min_side::addr("")); } echo ' <div class="bg1_c" style="width: 400px"> <h1 class="bg1">Send e-post<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p><b>Mottaker:</b> ' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</p> <p><b>Emne:</b> ' . htmlspecialchars($email_subject) . '</p> <p style="font-family: monospace">' . nl2br(htmlspecialchars($email_text)) . '</p> <form action="" method="post"> <input type="hidden" id="email_subject" name="subject" value="' . htmlspecialchars($subject) . '" /> <input type="hidden" id="email_text" name="text" value="' . htmlspecialchars($text) . '" /> <p>' . show_sbutton("Send e-posten", 'name="send"') . ' ' . show_sbutton("Tilbake / endre", 'name="edit"') . '</p> </form> </div> </div>'; $show_form = false; } } if ($show_form) { ess::$b->page->add_js_domready('$("email_subject").focus();'); echo ' <div class="bg1_c" style="width: 400px"> <h1 class="bg1">Send e-post<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <p>Her sender du e-post til brukeren på vegne av Kofradia. Avsender vil være den normale avsendere all e-post fra Kofradia blir sendt fra.</p> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Mottaker</dt> <dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd> <dt>Emne</dt> <dd><input type="text" value="' . htmlspecialchars(postval("subject")) . '" name="subject" id="email_subject" class="styled w200" /></dd> <dt>Innhold</dt> <dd><textarea name="text" id="email_text" cols="50" rows="10">' . htmlspecialchars(postval("text", "Hei,\n\n")) . '</textarea></dd> <dd>' . show_sbutton("Forhåndsvis / fortsett") . '</dd> </dl> </form> </div> </div>'; } } elseif ($subpage2 == "warning") { ess::$b->page->add_title("Gi advarsel til brukeren"); $types = crewlog::$user_warning_types; // legge til advarsel? if (isset($_POST['log'])) { $log = trim(postval("log")); $note = trim(postval("note")); $type = postval("type"); $priority = (int) postval("priority"); $notify = isset($_POST['notify']); if (empty($log) || empty($note)) { ess::$b->page->add_message("Både begrunnelse og intern informasjon må fylles ut.", "error"); } elseif (!isset($types[$type])) { ess::$b->page->add_message("Ugyldig kategori.", "error"); } elseif ($priority < 1 || $priority > 3) { ess::$b->page->add_message("Ugylig alvorlighet.", "error"); } else { $data = array("type" => $types[$type], "note" => $note, "priority" => $priority); // legge til spillerlogg? if ($notify) { $data['notified'] = 1; $data['notified_id'] = player::add_log_static(gamelog::$items['advarsel'], urlencode($types[$type]) . ':' . urlencode($log), NULL, page_min_side::$active_player->id); ess::$b->page->add_message("Advarselen ble lagret. Brukeren ble informert."); } else { ess::$b->page->add_message("Advarselen ble lagret. Du har ikke informert brukeren om denne advarselen."); } // legg til advarselen crewlog::log("user_warning", page_min_side::$active_player->id, $log, $data); redirect::handle(); } } echo ' <div class="bg1_c" style="width: 400px"> <h1 class="bg1">Gi advarsel til brukeren<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <form action="" method="post"> <boxes /> <p>Dette kan benyttes som et verktøy for å gi advarsler til brukere. Det kan velges om brukeren skal motta advarselen eller ikke. Hvis man ikke velger å informere brukeren om noe, blir det alikevel søkbart i crewloggen for brukeren.</p> <p>Alvorligheten av advarselen blir benyttet for å automatisere en poengsum brukeren får avhengig av antall advarseler. En advarsel med høy alvorlighet varer lenger og teller mer enn en med lav alvorlighet.</p> <dl class="dd_right"> <dt>Kategori</dt> <dd> <select name="type">'; $type = isset($_POST['type']) && isset($types[$_POST['type']]) ? intval($_POST['type']) : false; if ($type === false) { echo ' <option value="">Velg ..</option>'; } foreach ($types as $key => $row) { echo ' <option value="' . $key . '"' . ($key === $type ? ' selected="selected"' : '') . '>' . htmlspecialchars($row) . '</option>'; } echo ' </select> </dd> <dt>Alvorlighet/prioritet</dt> <dd> <select name="priority">'; $priority = isset($_POST['priority']) && is_numeric($_POST['priority']) && $_POST['priority'] >= 1 && $_POST['priority'] <= 3 ? $_POST['priority'] : 2; echo ' <option value="1"' . ($priority == 1 ? ' selected="selected"' : '') . '>Lav</option> <option value="2"' . ($priority == 2 ? ' selected="selected"' : '') . '>Moderat</option> <option value="3"' . ($priority == 3 ? ' selected="selected"' : '') . '>Høy</option> </select> </dd> </dl> <p>Begrunnelse:</p> <p><textarea name="log" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(postval("log")) . '</textarea></p> <p>Intern informasjon:</p> <p><textarea name="note" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(postval("note")) . '</textarea></p> <p><input type="checkbox" name="notify"' . ($_SERVER['REQUEST_METHOD'] == "POST" && !isset($_POST['notify']) ? '' : ' checked="checked"') . ' id="warning_notify" /><label for="warning_notify"> Gi brukeren informasjon om denne advarselen. Kun kategori og begrunnelse vil bli oppgitt til brukeren som en logg i hendelser.</label></p> <p class="c">' . show_sbutton("Lagre") . '</p> </form> </div> </div>'; // analyser advarsler $lca_id = crewlog::$actions['user_warning'][0]; $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15); $result = $pagei->query("\n\t\t\t\tSELECT lc_id, lc_up_id, lc_time, lc_log, lcd_data_int\n\t\t\t\tFROM log_crew\n\t\t\t\t\tJOIN users_players ON lc_a_up_id = up_id AND up_u_id = " . page_min_side::$active_user->id . "\n\t\t\t\t\tLEFT JOIN log_crew_data ON lcd_lc_id = lc_id AND lcd_lce_id = 5\n\t\t\t\tWHERE lc_lca_id = {$lca_id} AND (lcd_data_int IS NULL OR lcd_data_int = 0)\n\t\t\t\tORDER BY lc_time DESC"); $data = array(); while ($row = $result->fetch()) { $data[$row['lc_id']] = $row; } // sett opp data $data = crewlog::load_summary_data($data); echo ' <div class="bg1_c ' . (count($data) == 0 ? 'xsmall' : 'medium') . '"> <h1 class="bg1">Tidligere advarsler<span class="left2"></span><span class="right2"></span></h1> <div class="bg1">'; if (count($data) == 0) { echo ' <p>Brukeren har ingen tidligere advarsler.</p>'; } else { ess::$b->page->add_css(' .advarsel { border: 1px solid #292929; margin: 10px 0; padding: 0 10px }'); foreach ($data as $row) { $priority = $row['data']['priority'] == 1 ? "lav" : ($row['data']['priority'] == 2 ? "moderat" : "høy"); echo ' <div class="advarsel"> <p><b>' . ess::$b->date->get($row['lc_time'])->format() . '</b>: ' . $row['data']['type'] . ' (alvorlighet: <b>' . $priority . '</b>):</p> <ul> <li>' . game::format_data($row['lc_log']) . '</li> <li>Internt notat: ' . game::format_data($row['data']['note']) . '</li> </ul> <p>' . (empty($row['data']['notified']) ? 'Ble IKKE varslet.' : 'Ble varslet.') . ' Av <user id="' . $row['lc_up_id'] . '" /></p> </div>'; } echo ' <p class="c">' . $pagei->pagenumbers() . '</p>'; } echo ' </div> </div>'; } elseif ($subpage2 == "enote") { ess::$b->page->add_title("Endre notat for bruker"); // lagre endringer? if (isset($_POST['notat'])) { $notat = postval("notat"); if ($notat == page_min_side::$active_user->data['u_note_crew']) { ess::$b->page->add_message("Ingen endringer ble utført.", "error"); } else { \Kofradia\DB::get()->exec("UPDATE users SET u_note_crew = " . \Kofradia\DB::quote($notat) . " WHERE u_id = " . page_min_side::$active_user->id); // legg til crewlogg crewlog::log("user_note_crew", page_min_side::$active_player->id, NULL, array("note_old" => page_min_side::$active_user->data['u_note_crew'], "note_diff" => diff::make(page_min_side::$active_user->data['u_note_crew'], $notat))); ess::$b->page->add_message("Notatet ble endret."); redirect::handle(); } } echo ' <div class="bg1_c" style="width: 400px"> <h1 class="bg1">Endre crewnotat for bruker<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <form action="" method="post"> <p>Dette endrer notatet som er tilknyttet brukeren. Du kan også tilknytte <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "player")) . '">informasjon til spilleren</a>, hvis det heller er ønskelig.</p> <p>Notat:</p> <p><textarea name="notat" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(page_min_side::$active_user->data['u_note_crew']) . '</textarea></p> <p class="c">' . show_sbutton("Lagre") . '</p> </form> </div> </div>'; } elseif ($subpage2 == "level" && access::has("admin")) { // nivåer man kan bytte til static $levels = array(1 => "Vanlig bruker", 14 => "Skjult nostat (crewtilgang)", -4 => "Ressurs", 12 => "Ressurs (nostat)", 13 => "Utvikler", 4 => "Forummoderator", 6 => "Forummoderator (nostat)", 5 => "Moderator", 11 => "Seniormoderator"); if (access::has("sadmin")) { $levels[7] = "Administrator"; } if (access::has("sadmin")) { $levels[8] = "Superadministrator"; } // kan vi ikke endre brukernivået til denne brukeren? if (!isset($levels[page_min_side::$active_user->data['u_access_level']])) { ess::$b->page->add_message("Du har ikke rettigheter til å endre tilgangsnivået til denne brukeren.", "error"); redirect::handle(page_min_side::addr()); } // endre brukernivå? if (isset($_POST['level'])) { $level = intval($_POST['level']); $log = trim(postval("log")); // samme brukernivå? if ($level == page_min_side::$active_user->data['u_access_level']) { ess::$b->page->add_message("Du må velge et nytt tilgangsnivå.", "error"); } elseif (!isset($levels[$level])) { ess::$b->page->add_message("Ugyldig tilgangsnivå."); } elseif (empty($log)) { ess::$b->page->add_message("Mangler begrunnelse."); } else { // endre tilgangsnivå $old = page_min_side::$active_user->data['u_access_level']; if (page_min_side::$active_user->change_level($level, isset($_POST['no_update_up']))) { // e-post logg sysreport::log("Endring av tilgangsnivå: " . login::$user->player->data['up_name'] . " endret tilgangsnivået til " . page_min_side::$active_user->data['u_email'] . " (" . page_min_side::$active_player->data['up_name'] . ") fra {$levels[$old]} til {$levels[$level]} {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id . "\n\nBegrunnelse: " . strip_tags(game::format_data($log)), "Kofradia: Endring av tilgangsnivå for " . page_min_side::$active_user->data['u_email'] . " (" . page_min_side::$active_player->data['up_name'] . ")"); // finn totalt beløp spilleren har $result = \Kofradia\DB::get()->query("SELECT up_cash + up_bank FROM users_players WHERE up_id = " . page_min_side::$active_player->id); $money = $result->fetchColumn(0); // crewlogg $data = array("level_old" => $old, "level_old_text" => $levels[$old], "level_new" => $level, "level_new_text" => $levels[$level], "money" => $money, "points" => page_min_side::$active_player->data['up_points']); if (page_min_side::$active_player->active && !isset($_POST['no_update_up'])) { $data['up_id'] = page_min_side::$active_player->id; } crewlog::log("user_level", page_min_side::$active_player->id, $log, $data); putlog("CREWCHAN", "%bEndring av tilgangsnivå%b: " . login::$user->player->data['up_name'] . " endret tilgangsnivået til " . page_min_side::$active_user->data['u_email'] . " (" . page_min_side::$active_player->data['up_name'] . ") fra {$levels[$old]} til {$levels[$level]} {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); ess::$b->page->add_message('Tilgangsnivået ble endret fra <b>' . htmlspecialchars($levels[$old]) . '</b> til <b>' . htmlspecialchars($levels[$level]) . '</b>.'); } else { ess::$b->page->add_message("Tilgangsnivået kunne ikke endres.", "error"); } redirect::handle(); } } echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Endre tilgangsnivå for bruker<span class="left2"></span><span class="right2"></span></h1> <div class="bg1">' . (page_min_side::$active_player->active ? ' <p>Dette vil automatisk berøre spilleren ' . page_min_side::$active_player->profile_link() . '.<p>' : ' <p>Dette vil kun ha innvirkning på brukeren, siden det ikke er noen aktiv spiller.</p>') . ' <form action="" method="post"> <dl class="dd_right"> <dt>Nåværende tilgangsnivå</dt> <dd>' . $levels[page_min_side::$active_user->data['u_access_level']] . '</dd> <dt>Nytt tilgangsnivå</dt> <dd> <select name="level">'; $level = intval(postval("level", page_min_side::$active_user->data['u_access_level'])); foreach ($levels as $id => $name) { echo ' <option value="' . $id . '"' . ($level == $id ? ' selected="selected"' : '') . '>' . htmlspecialchars($name) . '</option>'; } echo ' </select> </dd> <dt>Begrunnelse</dt> <dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> </dl>' . (page_min_side::$active_player->active ? ' <p><input type="checkbox" id="no_update_up" name="no_update_up"' . (isset($_POST['no_update_up']) ? ' checked="checked"' : '') . ' /><label for="no_update_up"> Ikke oppdater det visuelle tilgangsnivået til ' . page_min_side::$active_player->profile_link() . '</label></p>' : '') . ' <p class="c">' . show_sbutton("Endre tilgangsnivå") . '</p> </form> </div> </div>'; } elseif ($subpage2 == "banka" && access::has("mod")) { // lagre nytt passord if (isset($_POST['bank_auth'])) { $bank_auth = postval("bank_auth"); $log = trim(postval("log")); // for kort? if (mb_strlen($bank_auth) < 6) { ess::$b->page->add_message("Passordet må inneholde minst 6 tegn.", "error"); } elseif (password::verify_hash($bank_auth, page_min_side::$active_user->data['u_bank_auth'], 'bank_auth')) { ess::$b->page->add_message("Passordet er det samme som nåværende.", "error"); } elseif ($log == "") { ess::$b->page->add_message("Mangler begrunnelse.", "error"); } else { $newpass = password::hash($bank_auth, null, 'bank_auth'); \Kofradia\DB::get()->exec("UPDATE users SET u_bank_auth = " . \Kofradia\DB::quote($newpass) . " WHERE u_id = " . page_min_side::$active_user->id); // crewlogg crewlog::log("user_bank_auth", page_min_side::$active_player->id, $log, array("pass_old" => page_min_side::$active_user->data['u_bank_auth'], "pass_new" => $newpass)); ess::$b->page->add_message("Bankpassordet ble endret."); redirect::handle(); } } ess::$b->page->add_title("Endre bankpassord"); echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Endre bankpassord<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <form action="" method="post" autocomplete="off"> <dl class="dd_right"> <dt>Nytt bankpassord</dt> <dd><input type="password" id="bank_auth" class="styled w120" /></dd> <dt>Begrunnelse for endring</dt> <dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> </dl> <p class="c">' . show_sbutton("Lagre") . '</p> </form> </div> </div>'; } elseif ($subpage2 == "phone" && access::has("mod")) { // lagre nytt nummer? if (isset($_POST['phone'])) { $phone = postval("phone"); $log = trim(postval("log")); if (!preg_match("/^47\\d{8}\$/Du", $phone) && $phone != "") { ess::$b->page->add_message("Ugyldig telefonnummer. Må bestå av 10 tall inkludert 47 først.", "error"); } else { // kontroller at nummeret ikke er lagt inn fra før $result = \Kofradia\DB::get()->query("SELECT u_id, u_email, up_id, up_name, up_access_level FROM users, users_players WHERE u_phone = " . \Kofradia\DB::quote($phone) . " AND u_id != " . page_min_side::$active_user->id . " AND up_id = u_active_up_id LIMIT 1"); if ($result->rowCount() > 0) { $row = $result->fetch(); ess::$b->page->add_message('Nummeret er allerede i bruk av <a href="min_side?u_id=' . $row['u_id'] . '">' . htmlspecialchars($row['u_email']) . '</a> (' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . ').', "error"); } elseif ($phone == page_min_side::$active_user->data['u_phone']) { ess::$b->page->add_message("Nummeret er det samme som nåværende nummer.", "error"); } elseif ($log == "") { ess::$b->page->add_message("Mangler logg melding."); } else { // lagre nytt nummer \Kofradia\DB::get()->exec("UPDATE users SET u_phone = " . \Kofradia\DB::quote($phone) . " WHERE u_id = " . page_min_side::$active_user->id); crewlog::log("user_phone", page_min_side::$active_player->id, $log, array("phone_old" => page_min_side::$active_user->data['u_phone'], "phone_new" => $phone)); ess::$b->page->add_message('Mobilnummeret ble endret fra <b>' . (empty(page_min_side::$active_user->data['u_phone']) ? 'tomt' : htmlspecialchars(page_min_side::$active_user->data['u_phone'])) . '</b> til <b>' . (empty($phone) ? 'tomt' : $phone) . '</b>.'); } } } ess::$b->page->add_title("Endre mobilnummer"); echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Endre mobilnummer<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Her endrer du mobilnummeret til brukeren. Dette kan bli brukt til å sende ut forskjellig informasjon.</p> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende nummer</dt> <dd>' . (empty(page_min_side::$active_user->data['u_phone']) ? 'Tomt' : htmlspecialchars(page_min_side::$active_user->data['u_phone'])) . '</dd> <dt>Nytt nummer</dt> <dd><input type="text" maxlength="10" value="' . htmlspecialchars(postval("phone", page_min_side::$active_user->data['u_phone'])) . '" name="phone" class="styled w80" /></dd> <dt>Begrunnelse for endring</dt> <dd><textarea name="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> </dl> <p class="c">' . show_sbutton("Lagre") . '</p> </form> </div> </div>'; } elseif ($subpage2 == "birth" && access::has("mod")) { // lagre ny fødselsdato? if (isset($_POST['birth_day']) && isset($_POST['birth_month']) && isset($_POST['birth_year'])) { $birth = postval("birth"); // sjekk fødselsdato $birth_day = intval(postval("birth_day")); $birth_month = intval(postval("birth_month")); $birth_year = intval(postval("birth_year")); $date = ess::$b->date->get(); $n_day = $date->format("j"); $n_month = $date->format("n"); $n_year = $date->format("Y"); $age = $n_year - $birth_year - ($n_month < $birth_month || $birth_month == $n_month && $n_day < $birth_day ? 1 : 0); $birth = $birth_year . "-" . str_pad($birth_month, 2, "0", STR_PAD_LEFT) . "-" . str_pad($birth_day, 2, "0", STR_PAD_LEFT); // sjekk om fødselsdatoen er gyldig $birth_date = ess::$b->date->get(); $birth_date->setDate($birth_year, $birth_month, $birth_day); $birth_valid = $birth_date->format("Y-m-d") == $birth; $log = trim(postval("log")); // ugyldig dag? if ($birth_day < 0 || $birth_day > 31) { ess::$b->page->add_message("Du må velge en gyldig dag.", "error"); } elseif ($birth_month < 0 || $birth_month > 12) { ess::$b->page->add_message("Du må velge en gyldig måned.", "error"); } elseif (($birth_year < 1900 || $birth_year > $n_year) && $birth_year !== 0) { ess::$b->page->add_message("Du må velge et gyldig år.", "error"); } elseif (!$birth_valid && $birth !== '0-00-00') { ess::$b->page->add_message("Datoen du fylte inn for fødselsdatoen din eksisterer ikke."); } elseif ($birth == page_min_side::$active_user->data['u_birth']) { ess::$b->page->add_message("Fødselsdatoen ble ikke endret.", "error"); } elseif ($log == "") { ess::$b->page->add_message("Mangler begrunnelse.", "error"); } else { // oppdater \Kofradia\DB::get()->exec("UPDATE users SET u_birth = " . \Kofradia\DB::quote($birth) . " WHERE u_id = " . page_min_side::$active_user->id); // legg til crewlogg crewlog::log("user_birth", page_min_side::$active_player->id, $log, array("birth_old" => page_min_side::$active_user->data['u_birth'], "birth_new" => $birth)); // alder if ($age < 13) { ess::$b->page->add_message("Fødselsdatoen ble satt til <b>{$birth}</b> ({$age} år). Brukeren oppfyller <u>ikke</u> kravet om alder jf. betingelsene."); } else { ess::$b->page->add_message("Fødselsdatoen ble satt til <b>{$birth}</b> ({$age} år)."); } redirect::handle(); } } $birth = explode("-", page_min_side::$active_user->data['u_birth']); $birth_day = isset($birth[2]) ? intval($birth[2]) : 0; $birth_month = isset($birth[1]) ? intval($birth[1]) : 0; $birth_year = isset($birth[0]) ? intval($birth[0]) : 0; ess::$b->page->add_title("Endre fødselsdato"); echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Endre fødselsdato<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende fødselsdato</dt> <dd>' . (empty(page_min_side::$active_user->data['u_birth']) ? 'Ikke registrert' : htmlspecialchars(page_min_side::$active_user->data['u_birth'])) . '</dd> <dt>Ny fødselsdato</dt> <dd> <select name="birth_day"> <option value="">Dag</option> <option value="0">0</option>'; $active = postval("birth_day", $birth_day); for ($i = 1; $i <= 31; $i++) { echo ' <option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . $i . '</option>'; } echo ' </select> <select name="birth_month"> <option value="">Måned</option> <option value="0">Tom</option>'; $active = postval("birth_month", $birth_month); for ($i = 1; $i <= 12; $i++) { echo ' <option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . ucfirst($_lang['months'][$i]) . '</option>'; } echo ' </select> <select name="birth_year"> <option value="">År</option> <option value="0">0000</option>'; $active = postval("birth_year", $birth_year); for ($i = ess::$b->date->get()->format("Y"); $i >= 1900; $i--) { echo ' <option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . $i . '</option>'; } echo ' </select> </dd> <dt>Begrunnelse for endring</dt> <dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> </dl> <p class="c">' . show_sbutton("Lagre") . '</p> </form> </div> </div>'; } }
// bruker ID if (isset($_GET['u_id']) && access::has("admin")) { // hent info $u_id = (int) getval("u_id"); $user = user::get($u_id); if (!$user) { echo ' <h1>Meldinger</h1> <p>Fant ingen bruker med ID <b>' . $u_id . '</b>.</p>'; $_base->page->load(); } $show_deleted = true; echo ' <h1 class="scroll_here">Meldinger Admin</h1> <p>Du viser meldingene som tilhører ' . game::profile_link($user->player->data['up_id'], $user->player->data['up_name'], $user->player->data['up_access_level']) . '</p>'; redirect::store("innboks_sok?u_id={$u_id}"); } // logg visning av innboks putlog("PROFILVIS", "%c5%bVIS-MELDINGER-SOK:%b%c %u" . login::$user->player->data['up_name'] . "%u ({$_SERVER['REQUEST_URI']})"); // hvem som skal ha kunnet skrevet det man søker på $search_from = array(1 => array("Alle", ""), array("Meg selv", " AND im_up_id = up_ref.up_id"), array("Andre", " AND im_up_id != up_ref.up_id"), array('Spesifiser', NULL, array())); $id = requestval("f"); $search_from_id = isset($search_from[$id]) ? $id : 1; // fant ikke brukeren? if ($search_from_id == 4) { $name = trim(postval("u")); // sett opp brukernavnene $names = explode(",", $name); foreach ($names as $name) { $name = trim($name); if (empty($name)) {
/** * Crewside */ protected static function page_crew() { if (!isset(login::$extended_access['authed'])) { echo ' <p class="c">Du må logge inn for utvidede tilganger.</p>'; } else { $subpage2 = getval("b"); redirect::store(page_min_side::addr(NULL, $subpage2 != "" ? "b=" . $subpage2 : '')); ess::$b->page->add_title("Crew"); ess::$b->page->add_css(' .minside_links .active { color: #CCFF00 }'); $links = array(); $links[] = '<a href="' . htmlspecialchars(page_min_side::addr("crew", "", "user")) . '">Min bruker</a>'; $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "")) . '"' . ($subpage2 == "" ? ' class="active"' : '') . '>Oversikt</a>'; if (access::has("seniormod")) { $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=rank")) . '"' . ($subpage2 == "rank" ? ' class="active"' : '') . '>Juster rank</a>'; } if (access::has("mod")) { $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=name")) . '"' . ($subpage2 == "name" ? ' class="active"' : '') . '>Endre spillernavn</a>'; } echo ' <p class="c minside_links">' . implode(" | ", $links) . '</p>'; if ($subpage2 == "") { echo ' <div class="col2_w"> <div class="col_w left"> <div class="col"> <div class="bg1_c"> <h1 class="bg1">Oversikt<span class="left2"></span><span class="right2"></span></h1> <div class="bg1">' . (access::has("mod") ? ' <ul>' . (access::has("admin") && KOFRADIA_DEBUG ? ' <li><a href="innboks?u_id=' . page_min_side::$active_user->id . '">Vis innboksen</a></li> <li><a href="innboks_sok?u_id=' . page_min_side::$active_user->id . '">Søk i innboksen</a></li>' : '') . ' <li><a href="poker?up_id=' . page_min_side::$active_player->id . '&stats">Vis pokerhistorien</a></li> <li><a href="admin/brukere/bankoverforinger?u1=' . page_min_side::$active_player->id . '">Vis bankoverføringer</a></li> <li><a href="drap?up_id=' . page_min_side::$active_player->id . '">Vis angrep utført av spilleren</a></li> <li><a href="drap?offer_up_id=' . page_min_side::$active_player->id . '">Vis angrep utført mot spilleren</a></li> </ul>' : '') . ' <p>Trykk på <a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "user")) . '">min bruker</a> for å vise informasjon om brukeren.</p> </div> </div> </div> </div> <div class="col_w right"> <div class="col"> <div class="bg1_c"> <h1 class="bg1">Crewnotat for brukeren<span class="left2"></span><span class="right2"></span></h1> <p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "user")) . '">rediger</a></p> <div class="bg1"> <p>Her kan hvem som helst i crewet legge til eller endre et notat for denne brukeren for å memorere ting som har med <u>brukeren</u> å gjøre.</p>' . (empty(page_min_side::$active_user->data['u_note_crew']) ? ' <p>Ingen notat er registrert.</p>' : ' <div class="p">' . game::bb_to_html(page_min_side::$active_user->data['u_note_crew']) . '</div>') . ' </div> </div> <div class="bg1_c"> <h1 class="bg1">Crewnotat for spilleren<span class="left2"></span><span class="right2"></span></h1> <p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote")) . '">rediger</a></p> <div class="bg1"> <p>Her kan hvem som helst i crewet legge til eller endre et notat for denne spilleren for å memorere ting som har med <u>spilleren</u> å gjøre.</p>' . (empty(page_min_side::$active_player->data['up_note_crew']) ? ' <p>Ingen notat er registrert.</p>' : ' <div class="p">' . game::bb_to_html(page_min_side::$active_player->data['up_note_crew']) . '</div>') . ' </div> </div> </div> </div> </div> <p class="c">Loggoppføringer for denne spilleren - <a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "user")) . '">se komplett logg for brukeren</a></p>'; // hent loggene for denne spilleren $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50); $result = $pagei->query("SELECT lc_id, lc_up_id, lc_time, lc_lca_id, lc_a_up_id, lc_log FROM log_crew WHERE lc_a_up_id = " . page_min_side::$active_player->id . " ORDER BY lc_time DESC"); // ingen handlinger? if ($result->rowCount() == 0) { echo ' <p class="c">Ingen oppføringer eksisterer.</p>'; } else { $rows = array(); while ($row = $result->fetch()) { $rows[$row['lc_id']] = $row; } $data = crewlog::load_summary_data($rows); $logs = array(); foreach ($data as $row) { // hent sammendrag $summary = crewlog::make_summary($row, NULL, $row['lc_a_up_id'] != page_min_side::$active_player->id); $day = ess::$b->date->get($row['lc_time'])->format(date::FORMAT_NOTIME); $logs[$day][] = '<p><span class="time">' . ess::$b->date->get($row['lc_time'])->format("H:i") . ':</span> ' . $summary . '</p>'; } ess::$b->page->add_css('.crewlog .time { color: #888888; padding-right: 5px }'); foreach ($logs as $day => $items) { echo ' <div class="bg1_c"> <h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1> <div class="bg1 crewlog"> ' . implode(' ', $items) . ' </div> </div>'; } echo ' <p class="c">' . $pagei->pagenumbers() . '</p>'; } } elseif ($subpage2 == "enote") { ess::$b->page->add_title("Endre notat"); // lagre endringer? if (isset($_POST['notat'])) { $notat = postval("notat"); if ($notat == page_min_side::$active_player->data['up_note_crew']) { ess::$b->page->add_message("Ingen endringer ble utført.", "error"); } else { \Kofradia\DB::get()->exec("UPDATE users_players SET up_note_crew = " . \Kofradia\DB::quote($notat) . " WHERE up_id = " . page_min_side::$active_player->id); // legg til crewlogg crewlog::log("player_note_crew", page_min_side::$active_player->id, NULL, array("note_old" => page_min_side::$active_player->data['up_note_crew'], "note_diff" => diff::make(page_min_side::$active_player->data['up_note_crew'], $notat))); page_min_side::$active_player->data['up_note_crew'] = $notat; ess::$b->page->add_message("Notet ble endret."); redirect::handle(); } } echo ' <div class="bg1_c" style="width: 400px"> <h1 class="bg1">Endre crewnotat for spiller<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <form action="" method="post"> <p>Dette endrer notatet som er tilknyttet denne spilleren. Du kan også tilknytte <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "user")) . '">informasjon til brukeren</a>, eller til en annen av brukerens spillere hvis det heller er ønskelig.</p> <p>Notat:</p> <p><textarea name="notat" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(page_min_side::$active_player->data['up_note_crew']) . '</textarea></p> <p class="c">' . show_sbutton("Lagre") . '</p> </form> </div> </div>'; } elseif ($subpage2 == "rank" && access::has("seniormod")) { // endre? if (isset($_POST['rel']) || isset($_POST['abs'])) { $log = trim(postval("log")); $rel = 0; // mangler begrunnelse? if ($log == "") { ess::$b->page->add_message("Mangler begrunnelse.", "error"); } elseif (isset($_POST['abs'])) { $points = game::intval(postval("points_abs")); // samme? if ($points == page_min_side::$active_player->data['up_points']) { ess::$b->page->add_message("Ingen endringer ble utført.", "error"); } elseif ($points < 0) { ess::$b->page->add_message("Kan ikke sette til negativt tall.", "error"); } elseif ($points > 9999999) { ess::$b->page->add_message("Kan ikke settes til så høyt tall.", "error"); } else { $rel = $points - page_min_side::$active_player->data['up_points']; } } elseif (isset($_POST['rel'])) { $points = game::intval(postval("points_rel")); // ingen endring? if ($points == 0) { ess::$b->page->add_message("Ingen endringer ble utført.", "error"); } elseif (page_min_side::$active_player->data['up_points'] + $points < 0) { ess::$b->page->add_message("Kan ikke utføre handlingen. Vil føre til <b>for lav</b> verdi.", "error"); } elseif (page_min_side::$active_player->data['up_points'] + $points > 9999999) { ess::$b->page->add_message("Kan ikke utføre handlingen. Vil føre til <b>for høy</b> verdi.", "error"); } else { $rel = $points; } } // skal ikke dette annonseres? $silent = isset($_POST['silent']); // øke ranken? if ($rel > 0) { page_min_side::$active_player->increase_rank($rel, false, $silent, 0); // legg til crewlogg crewlog::log("player_rank_inc", page_min_side::$active_player->id, $log, array("points" => $rel)); ess::$b->page->add_message("Endringene ble lagret. Du økte ranken med " . game::format_number($rel) . " poeng." . ($silent ? ' Informasjonen ble ikke annonsert.' : '')); redirect::handle(); } elseif ($rel < 0) { page_min_side::$active_player->increase_rank($rel, false, $silent, 0); $rel = abs($rel); // legg til crewlogg crewlog::log("player_rank_dec", page_min_side::$active_player->id, $log, array("points" => $rel)); ess::$b->page->add_message("Endringene ble lagret. Du senket ranken med " . game::format_number($rel) . " poeng." . ($silent ? ' Informasjonen ble ikke annonsert.' : '')); redirect::handle(); } } ess::$b->page->add_title("Juster rank"); echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Juster rank<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Antall rankpoeng: <b>' . game::format_number(page_min_side::$active_player->data['up_points']) . '</b></p> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Bestem rankpoeng (absolutt verdi)</dt> <dd><input type="text" name="points_abs" value="' . game::format_number(postval("points_abs", page_min_side::$active_player->data['up_points'])) . '" class="styled w60" maxlength="10" /> ' . show_sbutton("Lagre", 'name="abs"') . '</dd> <dt>Juster ranken (relativ verdi)</dt> <dd><input type="text" name="points_rel" value="' . game::format_number(postval("points_rel", 0)) . '" class="styled w60" maxlength="10" /> ' . show_sbutton("Lagre", 'name="rel"') . '</dd> <dd><input type="checkbox" name="silent"' . (isset($_POST['silent']) ? ' checked="checked"' : '') . ' id="silent" /><label for="silent"> Ikke annonser denne endringen (f.eks. på IRC)</label></dd> <dt>Begrunnelse for endring (crewlogg)</dt> <dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> </dl> </form> </div> </div>'; } elseif ($subpage2 == "name" && access::has("mod")) { // lagre nytt spillernavn? if (isset($_POST['name'])) { $name = trim(postval("name")); $log = trim(postval("log")); // ingen endringer utført? if (strcmp(page_min_side::$active_player->data['up_name'], $name) === 0) { ess::$b->page->add_message("Spillernavnet er det samme som før.", "error"); } elseif ($log == "") { ess::$b->page->add_message("Mangler begrunnelse.", "error"); } else { // kontroller spillernavnet (kun hvis endringer utover små/store bokstaver er gjort) $check = strcasecmp(page_min_side::$active_player->data['up_name'], $name) !== 0; if ($check) { $result = \Kofradia\DB::get()->query("SELECT " . \Kofradia\DB::quoteNoNull($name) . " REGEXP regex AS m, error FROM regex_checks WHERE type = 'reg_user_strength' HAVING m = 1"); } if ($check && $result->rowCount() > 0) { // sett opp feilmeldingene $feil = array(); while ($row = $result->fetch()) { $feil[] = '<li>' . htmlspecialchars($row['error']) . '</li>'; } // legg til feilmeldingene ess::$b->page->add_message("<p>Spillernavnet var ikke gyldig:</p><ul>" . implode("", $feil) . "</ul>", "error"); } else { // sjekk at spillernavnet ikke finnes fra før $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_access_level FROM users_players WHERE up_name = " . \Kofradia\DB::quote($name) . " AND up_id != " . page_min_side::$active_player->id . " AND (up_u_id != " . page_min_side::$active_user->id . " OR up_access_level != 0)"); if ($result->rowCount() > 0) { $row = $result->fetch(); ess::$b->page->add_message("Spillernavnet er allerede i bruk: " . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']), "error"); } else { // utfør endringer - endre spillernavnet \Kofradia\DB::get()->exec("UPDATE users_players SET up_name = " . \Kofradia\DB::quote($name) . " WHERE up_id = " . page_min_side::$active_player->id); // legg til crewlogg crewlog::log("player_name", page_min_side::$active_player->id, $log, array("user_old" => page_min_side::$active_player->data['up_name'], "user_new" => $name)); ess::$b->page->add_message("Spillernavnet ble endret fra " . htmlspecialchars(page_min_side::$active_player->data['up_name']) . " til " . game::profile_link(page_min_side::$active_player->id, $name, page_min_side::$active_player->data['up_access_level']) . '.'); redirect::handle(); } } } } ess::$b->page->add_title("Endre spillernavn"); echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Endre spillernavn<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Ikke utfør andre endringer enn store/små bokstaver i spillernavnet dersom det ikke er veldig nødvendig. Dette på grunn av BB-koder som [user=..] ikke lenger vil fungere.</p> <p>Det er mulig å gi en spiller samme navn som en annen spiller, så lenge spillerene tilhører samme bruker.</p> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende spillernavn</dt> <dd>' . htmlspecialchars(page_min_side::$active_player->data['up_name']) . '</dd> <dt>Nytt spillernavn</dt> <dd><input type="text" value="' . htmlspecialchars(postval("name", page_min_side::$active_player->data['up_name'])) . '" name="name" class="styled w120" /></dd> <dt>Begrunnelse for endring (crewlogg)</dt> <dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> </dl> <p class="c">' . show_sbutton("Endre spillernavnet") . '</p> </form> </div> </div>'; } } }
if (isset($pages[2]) && preg_match("/^\\d+\$/Du", $pages[2])) { // hent avstemningen $result = \Kofradia\DB::get()->query("SELECT p_id, p_title, p_text, p_ft_id, p_params, p_active, p_time_start, p_time_end, p_votes FROM polls WHERE p_id = " . intval($pages[2])); if ($result->rowCount() == 0) { $_base->page->add_message("Fant ikke avstemningen.", "error"); redirect::handle(); } $poll = $result->fetch(); $_base->page->add_title($poll['p_title']); // hent alternativene $poll['options'] = array(); $result = \Kofradia\DB::get()->query("SELECT po_id, po_text, po_votes FROM polls_options WHERE po_p_id = {$poll['p_id']}"); while ($row = $result->fetch()) { $poll['options'][$row['po_id']] = $row; } redirect::store("/polls/admin/{$poll['p_id']}"); // TODO: slette stemmer // rediger avstemning? if (isset($pages[3]) && $pages[3] == "edit") { // lagre endringer? if (isset($_POST['title']) && verify_sid()) { $title = trim(postval("title")); $text = trim(postval("text")); $time_start = trim(postval("time_start")); $time_end = trim(postval("time_end")); $error = false; if (mb_strlen($title) < 3) { $_base->page->add_message("Tittelen må inneholde minst 3 tegn.", "error"); $error = true; } if (!$error && $time_start != "") {
// samme som bankpassordet? if (password::verify_hash($_POST['password'], login::$user->data['u_bank_auth'], "bank_auth")) { $_base->page->add_message("Passordet kan ikke være det samme som passordet til banken.", "error"); redirect::handle(); } // er passordene like? if ($_POST['password'] != $_POST['password_repeat']) { $_base->page->add_message("Passordene må være like.", "error"); redirect::handle(); } // lagre passord $hash = password::hash($_POST['password']); login::$user->params->update("extended_access_passkey", $hash, true); putlog("NOTICE", "CREWAUTH: " . login::$user->player->data['up_name'] . " endret sitt passord for utvidede tilganger"); $_base->page->add_message("Du har nå oppdatert ditt passord for crewauth."); redirect::store("extended_access"); } echo ' <h1>Endre passord for crewauth</h1> <p class="h_right"><a href="extended_access">Tilbake</a></p> <form action="extended_access?change" method="post"> <dl class="dd_right w300"> <dt>Nåværende passord</dt> <dd><input type="password" class="styled w100" name="password_current" /></dd> <dt>Ønsket passord</dt> <dd><input type="password" class="styled w100" name="password" /></dd> <dt>Gjenta passord</dt> <dd><input type="password" class="styled w100" name="password_repeat" /></dd> <dd><input type="submit" value="Endre passord" class="button" /></dd> </dl> <p>Ønsket passord må oppfylle kravet til password::LEVEL_STRONG.</p>
<?php require "base.php"; // TODO: lenke fra min side må endres $up = login::$user->player; if (isset($_GET['up_id']) && (access::has("mod") && isset($_GET['stats']) || access::has("sadmin") && KOFRADIA_DEBUG)) { // forsøk å finn spilleren $up = player::get((int) getval("up_id")); if (!$up) { ess::$b->page->add_message("Fant ingen spiller med ID <u>" . htmlspecialchars($_GET['up_id']) . "</u>.", "error"); ess::$b->page->load(); } redirect::store("poker?up_id={$up->id}"); echo ' <p class="c">Du viser pokersiden som tilhører ' . $up->profile_link() . '.' . (!isset($_GET['stats']) ? '<br /><b>Viktig:</b> Utfordringer du gjør her vil bli gjort som denne spilleren, og ikke din egen.' : '') . '</p>'; } $poker = new page_poker($up);
/** * 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(); }
public static function main() { // har vi ikke tilgang? if (!access::has("crewet", null, null, "login")) { redirect::handle("/node", redirect::ROOT); } ess::$b->page->add_title("Innholdsredigering"); nodes::add_node(0, "Innholdsredigering", ess::$s['relative_path'] . "/node/a"); if (isset($_POST['abort']) && !isset($_GET['node_id'])) { ess::$b->page->add_message("Handlingen ble avbrutt."); redirect::handle(); } // opprette ny node? if (isset($_GET['new_node'])) { $parent_node = getval("parent_node", 0); $previous_node = getval("previous_node", 0); // kontroller parent node if ($parent_node != 0 && !isset(nodes::$nodes[$parent_node])) { ess::$b->page->add_message("Fant ikke forelder til elementet. Prøv på nytt.", "error"); redirect::handle(); } // kontroller previous node $siblings = isset(nodes::$nodes_sub[$parent_node]) ? nodes::$nodes_sub[$parent_node] : array(); if ($previous_node != 0 && !in_array($previous_node, $siblings)) { ess::$b->page->add_message("Fant ikke forrige side. Prøv på nytt.", "error"); redirect::handle(); } // finn priority if ($previous_node == 0) { $priority = 1; $priority_num = 1; } else { // hent priority til previous node $result = \Kofradia\DB::get()->query("SELECT node_priority FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_id = {$previous_node} AND node_deleted = 0"); if ($result->rowCount() == 0) { ess::$b->page->add_message("Noe gikk galt. Prøv igjen.", "error"); redirect::handle(); } $priority = $result->fetchColumn(0); // hent priority til den vi skal "erstatte" $result = \Kofradia\DB::get()->query("SELECT node_priority FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_priority > {$priority} AND node_deleted = 0 ORDER BY node_priority LIMIT 1"); if ($result->rowCount() > 0) { $priority = $result->fetchColumn(0); } else { $priority++; } // hent nummer $result = \Kofradia\DB::get()->query("SELECT COUNT(node_id) FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_priority < {$priority} AND node_deleted = 0"); $priority_num = $result->fetchColumn(0) + 1; } // legge til? if (isset($_POST['title']) && isset($_POST['type'])) { // ok tittel? $title = trim(postval("title")); $type = postval("type"); if (empty($title)) { ess::$b->page->add_message("Du må fylle ut en tittel.", "error"); } elseif (!isset(nodes::$types[$type])) { ess::$b->page->add_message("Ugyldig type. Prøv på nytt.", "error"); } else { // sett opp prioritys \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority + 1 WHERE node_parent_node_id = {$parent_node} AND node_priority >= {$priority}"); // legg til side \Kofradia\DB::get()->exec("INSERT INTO nodes SET node_parent_node_id = {$parent_node}, node_title = " . \Kofradia\DB::quote($title) . ", node_type = " . \Kofradia\DB::quote(mb_strtolower($type)) . ", node_priority = {$priority}, node_change = " . time()); $iid = \Kofradia\DB::get()->lastInsertId(); ess::$b->page->add_message("Siden ble lagt til."); redirect::handle("node/a?node_id={$iid}", redirect::ROOT); } } $parent_title = isset(nodes::$nodes[$parent_node]) ? nodes::$nodes[$parent_node]['node_title'] : 'Toppnivå'; echo ' <h1>Ny side</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Forelder</dt> <dd>' . htmlspecialchars($parent_title) . '</dd> <dt>Plassering</dt> <dd>' . $priority_num . '</dd> <dt>Tittel</dt> <dd><input type="text" name="title" class="styled w100" value="' . htmlspecialchars(postval("title")) . '" /></dd> <dt>Type</dt> <dd> <select name="type">'; $selected = postval("type"); if (!isset(nodes::$types[$selected])) { $selected = false; } foreach (nodes::$types as $key => $value) { echo ' <option value="' . htmlspecialchars($key) . '"' . ($selected == $key ? ' selected="selected"' : '') . '>' . htmlspecialchars($value) . '</option>'; } echo ' </select> </dd> </dl> <p>' . show_sbutton("Opprett side") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } $node = false; if (isset($_GET['node_id'])) { $result = nodes::load_node($_GET['node_id'], false); if (!$result) { ess::$b->page->add_message("Fant ikke enheten."); redirect::handle(); } $node = true; #ess::$b->page->add_title(nodes::$node_info['node_title']); redirect::store("node/a?node_id=" . nodes::$node_id, redirect::ROOT); if (isset($_POST['abort'])) { ess::$b->page->add_message("Handlingen ble avbrutt."); redirect::handle(); } // flytt if (isset($_GET['move'])) { // hent tree $root = array(0 => array("number" => 0, "prefix" => "", "prefix_node" => "", "data" => array("node_id" => 0, "node_parent_node_id" => 0, "node_title" => "Innhold (toppnivå)", "node_type" => NULL, "node_params" => NULL, "node_show_menu" => NULL, "node_expand_menu" => NULL, "node_enabled" => true, "node_priority" => 0))); $tree = new tree(nodes::$nodes_sub); $data = $tree->generate(0, $root, nodes::$nodes); // sett opp data og finn ut hvor ting kan plasseres $number_last = 1; $disabled = 0; $list = array(0 => 0); foreach ($data as &$row) { if ($disabled != 0 && $row['number'] <= $disabled) { $disabled = 0; } $number_last = $row['number']; $row['inside'] = $disabled == 0 && nodes::$node_id != $row['data']['node_id']; $row['under'] = $disabled == 0 && nodes::$node_id != $row['data']['node_id']; if (nodes::$node_id == $row['data']['node_id']) { if (isset($list[$row['number']])) { $active = array("under", $list[$row['number']]); } else { $active = array("inside", $list[$row['number'] - 1]); } $disabled = $row['number']; } $list[$row['number']] = $row['data']['node_id']; } unset($row); $data[0]['under'] = false; // lagre endringer? if (isset($_POST['destination_node_id'])) { $match = preg_match("/^(under_)?(\\d+)\$/u", postval("destination_node_id"), $matches); $type = $match && $matches[1] == "under_" ? "under" : "inside"; $dest_node_id = $match ? $matches[2] : -1; $parent_node_id = $type == "inside" ? $dest_node_id : nodes::$nodes[$dest_node_id]['node_parent_node_id']; // finnes? if (!isset($data[$dest_node_id])) { ess::$b->page->add_message("Fant ikke målsiden.", "error"); } elseif (!$data[$dest_node_id][$type]) { ess::$b->page->add_message("Du kan ikke plassere siden her.", "error"); } elseif ($type == $active[0] && $dest_node_id == $active[1]) { ess::$b->page->add_message("Du må velge en ny plassering.", "error"); } else { \Kofradia\DB::get()->beginTransaction(); // flytt de andre kategoriene \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority - 1 WHERE node_parent_node_id = " . nodes::$node_info['node_parent_node_id'] . " AND node_priority > " . nodes::$node_info['node_priority']); \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority + 1 WHERE node_parent_node_id = {$parent_node_id}" . ($type == "under" ? " AND node_priority > " . nodes::$nodes[$dest_node_id]['node_priority'] : "")); // flytt den valgte siden \Kofradia\DB::get()->exec("UPDATE nodes SET node_parent_node_id = {$parent_node_id}, node_priority = " . ($type == "inside" ? 0 : nodes::$nodes[$dest_node_id]['node_priority'] + 1) . " WHERE node_id = " . nodes::$node_id); \Kofradia\DB::get()->commit(); ess::$b->page->add_message("Siden ble flyttet."); redirect::handle(); } } // sett opp plasseringen $items = array(); $parent_node = nodes::$node_info['node_parent_node_id']; while (isset(nodes::$nodes[$parent_node]) && ($item = nodes::$nodes[$parent_node])) { $items[] = $item['node_title']; $parent_node = $item['node_parent_node_id']; } $items[] = "Toppnivå"; // tittel ess::$b->page->add_title("Flytt side"); nodes::add_node(0, "Flytt side", ess::$s['relative_path'] . "/node/a?node_id=" . nodes::$node_id . "&move"); echo ' <h1>' . htmlspecialchars(nodes::$node_info['node_title']) . '</h1> <p><a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . nodes::$node_id . '">Tilbake</a></p> <h2>Flytt side</h2> <form action="" method="post"> <dl class="dl_2x dd_right"> <dt>Nåværende plassering</dt> <dd>' . implode("\\", array_reverse($items)) . '</dd> <dt>Ny plassering</dt> <dd> <table class="table" style="margin-left: auto"> <thead> <tr> <th>Side</th> <th>Inni</th> <th>Nedenfor</th> </tr> </thead> <tbody class="c">'; $i = 0; foreach ($data as $row) { $i++; $class = nodes::$node_id == $row['data']['node_id'] ? ' class="highlight"' : ($i % 2 == 0 ? ' class="color"' : ''); $link = $row['data']['node_id'] == 0 ? $row['data']['node_title'] : '<a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . $row['data']['node_id'] . '">' . htmlspecialchars($row['data']['node_title']) . '</a>'; echo ' <tr' . $class . '> <td class="l"><span class="plain">' . $row['prefix'] . $row['prefix_node'] . '</span> ' . $link . '</td> <td>' . ($row['inside'] ? '<input type="radio" name="destination_node_id" value="' . $row['data']['node_id'] . '"' . ($active[0] == "inside" && $active[1] == $row['data']['node_id'] ? ' checked="checked"' : '') : ' x') . '</td> <td>' . ($row['under'] ? '<input type="radio" name="destination_node_id" value="under_' . $row['data']['node_id'] . '"' . ($active[0] == "under" && $active[1] == $row['data']['node_id'] ? ' checked="checked"' : '') : ' x') . '</td> </tr>'; } echo ' </tbody> </table> </dd> <dt> </dt> <dd>' . show_sbutton("Lagre endringer") . '</dd> </dl> </form>'; page_node::load_page(); } // rediger tittel if (isset($_GET['edit_title'])) { // lagre? if (isset($_POST['title'])) { $title = postval('title'); if (empty($title)) { ess::$b->page->add_message("Du må skrive inn en tittel.", "error"); } else { // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_title = " . \Kofradia\DB::quote($title) . " WHERE node_id = " . nodes::$node_id); ess::$b->page->add_message("Tittelen ble endret fra «" . htmlspecialchars(nodes::$node_info['node_title']) . "» til «" . htmlspecialchars($title) . "»."); redirect::handle(); } } echo ' <h1>Rediger tittel</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende tittel</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> <dt>Ny tittel</dt> <dd><input type="text" name="title" class="styled w100" value="' . htmlspecialchars(postval("title", nodes::$node_info['node_title'])) . '" /></dd> </dl> <p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } // aktiver/deaktiver if (isset($_GET['enabled'])) { $update = false; if ($_GET['enabled'] == "false") { // deaktiver if (nodes::$node_info['node_enabled'] > 0) { $update = 0; ess::$b->page->add_message("Siden er nå deaktivert. Alle undersider vil også være utilgjengelige."); } } else { // aktiver if (nodes::$node_info['node_enabled'] == 0) { $update = 1; ess::$b->page->add_message("Siden er nå aktivert. Alle undersider som ikke er deaktivert vil også være tilgjengelige."); } } // oppdater? if ($update !== false) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_enabled = {$update} WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // skjul fra/vis i menyen if (isset($_GET['show_menu'])) { $update = false; if ($_GET['show_menu'] == "false") { // deaktiver if (nodes::$node_info['node_show_menu'] > 0) { $update = 0; ess::$b->page->add_message("Siden blir ikke lengre vist i menyen. Alle undersider vil også bli skjult fra menyen."); } } else { // aktiver if (nodes::$node_info['node_show_menu'] == 0) { $update = 1; ess::$b->page->add_message("Siden blir nå vist i menyen. Alle undersider som ikke er skjult vil også bli vist i menyen."); } } // oppdater? if ($update !== false) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_show_menu = {$update} WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // vis/skjul undersider if (isset($_GET['expand_menu'])) { $update = false; if ($_GET['expand_menu'] == "false") { // deaktiver if (nodes::$node_info['node_expand_menu'] > 0) { $update = 0; ess::$b->page->add_message("Undersidene blir ikke lengre vist i menyen."); } } else { // aktiver if (nodes::$node_info['node_expand_menu'] == 0) { $update = 1; ess::$b->page->add_message("Undersidene blir nå vist i menyen."); } } // oppdater? if ($update !== false) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_expand_menu = {$update} WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // slett side if (isset($_GET['delete'])) { $table_check = ""; $where_check = ""; // sjekk om det er noen elementer under denne $result = \Kofradia\DB::get()->query("SELECT COUNT(node_id) FROM nodes WHERE node_parent_node_id = " . nodes::$node_id . " AND node_deleted = 0"); $ant = $result->fetchColumn(0); if ($ant > 0) { ess::$b->page->add_message("Du kan ikke slette en side som inneholder undersider. Flytt eller fjern undersidene og prøv på nytt.", "error"); redirect::handle(); } $table_check .= ", (SELECT COUNT(node_id) AS ant FROM nodes WHERE node_parent_node_id = " . nodes::$node_id . " AND node_deleted = 0) AS ref_subnodes"; $where_check .= " AND ref_subnodes.ant = 0"; // sjekk type og spesiell info switch (nodes::$node_info['node_type']) { case "container": // sjekk antall enheter $result = \Kofradia\DB::get()->query("SELECT COUNT(ni_id) FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_deleted = 0"); $ant = $result->fetchColumn(0); if ($ant > 0) { ess::$b->page->add_message("Du kan ikke slette en side som inneholder noen enheter. Fjern enhetene og prøv på nytt.", "error"); redirect::handle(); } $table_check .= ", (SELECT COUNT(ni_id) AS ant FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_deleted = 0) AS ref_items"; $where_check .= " AND ref_items.ant = 0"; break; } // godkjenn? if (isset($_POST['delete'])) { // marker som slettet $a = \Kofradia\DB::get()->exec("UPDATE nodes{$table_check} SET node_deleted = " . time() . " WHERE node_id = " . nodes::$node_id . $where_check); if ($a == 0) { ess::$b->page->add_message("Noe gikk galt. Prøv på nytt.", "error"); redirect::handle(); } ess::$b->page->add_message("Siden ble markert som slettet og er ikke lenger tilgjengelig."); redirect::handle("node/a", redirect::ROOT); } echo ' <h1>Slett side</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Side</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> </dl> <p>' . show_sbutton("Slett", 'name="delete"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } // vanlig side if (nodes::$node_info['node_type'] == "container") { // vis/skjul tittel if (isset($_GET['hide_title'])) { $hide = NULL; if ($_GET['hide_title'] == "false") { // vis tittel if (nodes::$node_params->get("hide_title")) { $hide = false; ess::$b->page->add_message("Tittelen blir nå vist øverst på siden."); } } else { // skjul tittel if (!nodes::$node_params->get("hide_title")) { $hide = true; ess::$b->page->add_message("Tittelen blir ikke lengre vist øverst på siden."); } } // oppdater? if (!is_null($hide)) { // hent friske params $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE"); $params = new params($result->fetchColumn(0)); if ($hide) { $params->update("hide_title", "1"); } else { $params->remove("hide_title"); } // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // vis/skjul sist endret dato if (isset($_GET['hide_time_change'])) { $hide = NULL; if ($_GET['hide_time_change'] == "false") { // vis tittel if (nodes::$node_params->get("hide_time_change")) { $hide = false; ess::$b->page->add_message("Dato for sist endret blir nå vist nederst på siden."); } } else { // skjul tittel if (!nodes::$node_params->get("hide_time_change")) { $hide = true; ess::$b->page->add_message("Dato for sist endret blir ikke lengre vist nederst på siden."); } } // oppdater? if (!is_null($hide)) { // hent friske params $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE"); $params = new params($result->fetchColumn(0)); if ($hide) { $params->update("hide_time_change", "1"); } else { $params->remove("hide_time_change"); } // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // aktiver/deaktiver enhet if (isset($_GET['unit_enable']) || isset($_GET['unit_disable'])) { if (isset($_GET['unit_enable'])) { $value = 1; $msg = "Enheten er nå aktivert og blir vist."; $unit_id = intval($_GET['unit_enable']); } else { $value = 0; $msg = "Enheten er nå deaktivert og blir ikke vist."; $unit_id = intval($_GET['unit_disable']); } // oppdater $affected = \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_enabled = {$value} WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); if ($affected > 0) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_change = " . time() . " WHERE node_id = " . nodes::$node_id); ess::$b->page->add_message($msg); } redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit_id}", redirect::ROOT); } // slett enhet if (isset($_GET['unit_delete'])) { // hent enheten $unit_id = \Kofradia\DB::quote($_GET['unit_delete']); $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_type, nir_content, nir_params, nir_description, ni_priority, ni_enabled, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); // fant ikke? if ($result->rowCount() == 0) { ess::$b->page->add_message("Fant ikke enheten. Prøv på nytt.", "error"); redirect::handle(); } $unit = $result->fetch(); // slette? if (isset($_POST['delete'])) { // marker som slettet \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_deleted = " . time() . " WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); ess::$b->page->add_message("Enheten ble markert som slettet og er ikke lenger tilgjengelig."); redirect::handle(); } echo ' <h1>Slett enhet</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Side</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> </dl> <p>' . show_sbutton("Slett enhet", 'name="delete"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form> <h2>Innhold av enhet</h2>' . nodes::content_build($unit); page_node::load_page(); } // rediger enhet if (isset($_GET['unit_edit'])) { // hent enheten $unit_id = \Kofradia\DB::quote($_GET['unit_edit']); $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_type, nir_content, nir_params, nir_description, ni_priority, ni_enabled, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); // fant ikke? if ($result->rowCount() == 0) { ess::$b->page->add_message("Fant ikke enheten. Prøv på nytt.", "error"); redirect::handle(); } $unit = $result->fetch(); // kan endres? if (!isset(nodes::$item_types[$unit['ni_type']]) || !nodes::$item_types[$unit['ni_type']][1]) { ess::$b->page->add_message("Denne enheten kan ikke redigeres.", "error"); redirect::handle(); } $params = new params($unit['nir_params']); // lagre endringer? if (isset($_POST['description']) && isset($_POST['content'])) { // ingenting endret? if (trim($_POST['description']) == $unit['nir_description'] && trim($_POST['content']) == $unit['nir_content']) { ess::$b->page->add_message("Ingen endringer ble utført.", "error"); } else { \Kofradia\DB::get()->exec("INSERT INTO nodes_items_rev SET nir_ni_id = {$unit['ni_id']}, nir_params = " . \Kofradia\DB::quote($params->build()) . ", nir_content = " . \Kofradia\DB::quote($_POST['content']) . ", nir_description = " . \Kofradia\DB::quote($_POST['description']) . ", nir_time = " . time()); $nir_id = \Kofradia\DB::get()->lastInsertId(); \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_nir_id = {$nir_id}, ni_nir_count = ni_nir_count + 1 WHERE ni_id = {$unit['ni_id']}"); \Kofradia\DB::get()->exec("UPDATE nodes SET node_change = " . time() . " WHERE node_id = " . nodes::$node_id); putlog("CREWCHAN", "NODE REDIGERT: " . login::$user->player->data['up_name'] . " redigerte %u" . nodes::$node_info['node_title'] . "%u " . ess::$s['spath'] . "/node/" . nodes::$node_id); ess::$b->page->add_message("Enheten ble oppdatert."); redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit['ni_id']}", redirect::ROOT); } } // vis form osv echo ' <h1>Rediger enhet</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Forelder</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> <dt>Type</dt> <dd>' . nodes::content_type($unit) . '</dd> <dt>Beskrivelse</dt> <dd> <textarea name="description" cols="30" rows="2">' . htmlspecialchars(postval("description", $unit['nir_description'])) . '</textarea> </dd>'; switch ($unit['ni_type']) { case 1: echo ' <dt>Innhold (BB-kode)</dt> <dd> </dd> </dl> <p> <textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p>'; break; case 2: echo ' <dt>Innhold (ren HTML)</dt> <dd> </dd> </dl> <p class="clear"> <textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p>'; break; case 3: tinymce::add_element("ni_content", true); echo ' <dt>Innhold (HTML editor)</dt> <dd> </dd> </dl> <p class="clear"> <textarea name="content" cols="30" rows="2" id="ni_content" style="width: 530px; height: 400px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p>'; tinymce::load(); break; case 4: echo ' <dt>Ren tekst</dt> <dd> </dd> </dl> <p class="clear"> <textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p'; break; default: redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit['ni_id']}", redirect::ROOT); } echo ' <p>' . show_sbutton("Oppdater") . ' <a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . nodes::$node_id . '&unit_highlight=' . $unit['ni_id'] . '" class="button">Avbryt</a></p> </form>'; page_node::load_page(); } // opprette ny enhet? if (isset($_GET['unit_new'])) { $previous_unit = getval("previous_unit", 0); // hent info om previous unit if ($previous_unit == 0) { $priority = 1; $priority_num = 1; } else { // hent priority til forrige $result = \Kofradia\DB::get()->query("SELECT ni_priority FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$previous_unit} AND ni_deleted = 0"); if ($result->rowCount() == 0) { ess::$b->page->add_message("Noe gikk galt. Prøv igjen.", "error"); redirect::handle(); } $priority = $result->fetchColumn(0); // hent priority til den vi skal "erstatte" $result = \Kofradia\DB::get()->query("SELECT ni_priority FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority > {$priority} AND ni_deleted = 0 ORDER BY ni_priority LIMIT 1"); if ($result->rowCount() > 0) { $priority = $result->fetchColumn(0); } else { $priority++; } // hent nummer $result = \Kofradia\DB::get()->query("SELECT COUNT(ni_id) FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority < {$priority} AND ni_deleted = 0"); $priority_num = $result->fetchColumn(0) + 1; } // legge til? if (isset($_POST['type'])) { // kontroller type $type = postval("type"); if (!isset(nodes::$item_types[$type]) || !nodes::$item_types[$type][1]) { ess::$b->page->add_message("Ugyldig type. Prøv på nytt.", "error"); } else { $description = postval("description", NULL); // sett opp prioritys \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_priority = ni_priority + 1 WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority >= {$priority} AND ni_deleted = 0"); // legg til enhet \Kofradia\DB::get()->exec("INSERT INTO nodes_items SET ni_node_id = " . nodes::$node_id . ", ni_type = " . \Kofradia\DB::quote($type) . ", ni_priority = {$priority}"); $ni_id = \Kofradia\DB::get()->lastInsertId(); \Kofradia\DB::get()->exec("INSERT INTO nodes_items_rev SET nir_ni_id = {$ni_id}, nir_time = " . time() . ", nir_description = " . \Kofradia\DB::quote($description)); $nir_id = \Kofradia\DB::get()->lastInsertId(); \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_nir_id = {$nir_id} WHERE ni_id = {$ni_id}"); ess::$b->page->add_message("Enheten ble lagt til."); redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_edit={$ni_id}", redirect::ROOT); } } echo ' <h1>Ny enhet</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Under side</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> <dt>Plassering</dt> <dd>' . $priority_num . '</dd> <dt>Type</dt> <dd> <select name="type">'; $selected = postval("type", 3); if (!isset(nodes::$item_types[$selected]) || !nodes::$item_types[$selected][1]) { $selected = false; } foreach (nodes::$item_types as $key => $info) { // ikke i bruk? if (!$info[1]) { continue; } echo ' <option value="' . htmlspecialchars($key) . '"' . ($selected == $key ? ' selected="selected"' : '') . '>' . htmlspecialchars($info[0]) . '</option>'; } echo ' </select> </dd> <dt>Beskrivelse</dt> <dd> <textarea name="description" cols="30" rows="2">' . htmlspecialchars(postval("description")) . '</textarea> </dd> </dl> <p>' . show_sbutton("Opprett enhet") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } } elseif (nodes::$node_info['node_type'] == "url_relative" || nodes::$node_info['node_type'] == "url_relative") { // endre adresse if (isset($_GET['edit_url'])) { // lagre? if (isset($_POST['url'])) { // hent friske params $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE"); $params = new params($result->fetchColumn(0)); $params->update("url", $_POST['url']); if (isset($_POST['new_window'])) { $params->update("new_window", 1); } else { $params->remove("new_window"); } // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id); ess::$b->page->add_message("Adressen ble oppdatert."); redirect::handle(); } if (nodes::$node_info['node_type'] == "url_relative") { echo ' <h1>Rediger adresse</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende adresse</dt> <dd>' . htmlspecialchars(ess::$s['path']) . htmlspecialchars(nodes::$node_params->get("url", " ???")) . '</dd> <dt>Ny adresse</dt> <dd>' . htmlspecialchars(ess::$s['path']) . ' <input type="text" name="url" class="styled w150" value="' . htmlspecialchars(nodes::$node_params->get("url", "")) . '" /></dd> <dt>Åpne i nytt vindu</dt> <dd><input type="checkbox" name="new_window"' . (nodes::$node_params->get("new_window") ? ' checked="checked"' : '') . ' /></dd> </dl> <p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; } else { echo ' <h1>Rediger adresse</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende adresse</dt> <dd>' . htmlspecialchars(nodes::$node_params->get("url", "???")) . '</dd> <dt>Ny adresse</dt> <dd><input type="text" name="url" class="styled w250" value="' . htmlspecialchars(nodes::$node_params->get("url", "")) . '" /></Dd> <dt>Åpne i nytt vindu</dt> <dd><input type="checkbox" name="new_window"' . (nodes::$node_params->get("new_window") ? ' checked="checked"' : '') . ' /></dd> </dl> <p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; } page_node::load_page(); } } } if ($node) { self::show_node_info($node); } self::show_nodes_list(); page_node::load_page(); }
/** * Vis en bestemt utgivelse */ protected function specific_publication() { // hent informasjon $ffn = ff_avis_utgivelse::get(intval(getval("ffn")), $this->ff); // fant ikke? if (!$ffn) { ess::$b->page->add_message("Fant ikke utgivelsen.", "error"); $this->ff->load_page(); } redirect::store("avis?ff_id={$this->ff->id}&ffn={$ffn->id}"); ess::$b->page->add_title($ffn->data['ffn_title']); // hent kjøpsinformasjon $ffnp = null; if (login::$logged_in) { $result = \Kofradia\DB::get()->query("SELECT ffnp_cost, ffnp_time FROM ff_newspapers_payments WHERE ffnp_ffn_id = {$ffn->id} AND ffnp_up_id = " . login::$user->player->id); $ffnp = $result->fetch(); } // ikke publisert? if ($ffn->data['ffn_published'] == 0) { if (!$this->ff->access(3)) { ess::$b->page->add_message("Fant ikke utgivelsen.", "error"); $this->ff->load_page(); } redirect::handle("avis?ff_id={$this->ff->id}&u&ffn={$ffn->id}"); } // må vi kjøpe avisutgivelsen? if ($this->ff->active && (!login::$logged_in || !$this->ff->access() && !access::is_nostat() && !$ffnp)) { // har ikke kjøpt avisen, men avisen er gratis? if (login::$logged_in && (!$ffnp && $ffn->data['ffn_cost'] == 0)) { // opprett rad for betaling \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time()); // oppdater utgivelsen \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}"); redirect::handle(); } else { ess::$b->page->add_title("Kjøp utgivelse"); // kjøpe? if (login::$logged_in && isset($_POST['buy'])) { $sid = postval("sid"); $price = postval("price"); if ($sid != login::$info['ses_id']) { ess::$b->page->add_message("Ugyldig.", "error"); } elseif ($price != $ffn->data['ffn_cost']) { ess::$b->page->add_message("Prisen har endret seg. Du må utføre handlingen på nytt.", "error"); } elseif (login::$user->player->data['up_cash'] < $ffn->data['ffn_cost']) { ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error"); } else { // trekk fra pengene fra brukeren if ($ffn->data['ffn_cost'] != 0) { $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$ffn->data['ffn_cost']} WHERE up_id = " . login::$user->player->id . " AND up_cash >= {$ffn->data['ffn_cost']}"); } // mislykket if ($ffn->data['ffn_cost'] != 0 && $a == 0) { ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error"); } else { // legg til oppføring \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time()); // gi pengene til firmaet \Kofradia\DB::get()->exec("UPDATE ff SET ff_bank = ff_bank + {$ffn->data['ffn_cost']} WHERE ff_id = {$this->ff->id}"); // stats for firmaet $ffn->ff->stats_update("money_in", $ffn->data['ffn_cost']); // oppdater utgivelsen \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}"); ess::$b->page->add_message("Du har kjøpt utgivelsen for " . game::format_cash($ffn->data['ffn_cost']) . "."); redirect::handle(); } } } echo ' <p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ' | Kjøp utgivelse | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p> <div class="section center w200"> <h2>Utgivelseinformasjon</h2> <dl class="dd_right"> <dt>Publisert</dt> <dd>' . ess::$b->date->get($ffn->data['ffn_published_time'])->format() . '</dd> <dt>Solgt utgivelser</dt> <dd>' . game::format_number($ffn->data['ffn_sold']) . '</dd> </dl> <p>Artikler:</p>'; // hent artiklene $result = \Kofradia\DB::get()->query("SELECT ffna_title FROM ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} ORDER BY ffna_title"); // ingen artikler? if ($result->rowCount() == 0) { echo ' <p>Ingen artikler.</p>'; } else { echo ' <ul>'; while ($row = $result->fetch()) { echo ' <li>' . htmlspecialchars($row['ffna_title']) . '</li>'; } echo ' </ul>'; } echo ' </div>'; if (login::$logged_in) { echo ' <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="price" value="' . $ffn->data['ffn_cost'] . '" /> <div class="section center w200"> <h2>Kjøp utgivelse</h2> <p>Før du får tilgang til denne utgivelsen må du kjøpe den.</p> <dl class="dd_right"> <dt>Pris</dt> <dd>' . game::format_cash($ffn->data['ffn_cost']) . '</dd> </dl> <p class="c">' . show_sbutton("Kjøp utgivelse", 'name="buy"') . '</p> </div> </form>'; } else { echo ' <p class="c">Du må <a href="&rpath;/">logge inn</a> for å kjøpe og lese denne utgivelsen.</p>'; } $this->ff->load_page(); } } // hent data $data = $ffn->build_avis_html(); echo ' <p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ($this->ff->access(3) ? ' | <a href="avis?ff_id=' . $this->ff->id . '&u&ffn=' . $ffn->data['ffn_id'] . '">Vis detaljer</a>' : '') . ' | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p>' . $data; }
<p class="negative_soknader10 hide"><a href="#" onclick="handleClass(\'.negative_soknader11\', \'.negative_soknader10\', event)">Skjul søknadene med negative verdier (' . $hidden . ' stk) »</a></p>'; } } echo ' </div>'; // bestemt søknad? if (isset($_GET['sa_id'])) { // hent søknaden $sa_id = intval(getval("sa_id")); $result = \Kofradia\DB::get()->query("SELECT sa_id, sa_up_id, sa_added, sa_status, IF(sa_updated=0, sa_added, sa_updated) AS sa_updated, sa_comment, sa_weight, sa_verified, sa_verified_up_id FROM soknader_applicants WHERE sa_id = {$sa_id} AND sa_so_id = {$soknad['so_id']}"); $applicant = $result->fetch(); if (!$applicant) { $_base->page->add_message("Fant ikke søknaden.", "error"); redirect::handle(); } redirect::store("soknader?admin&so_id={$soknad['so_id']}&sa_id={$applicant['sa_id']}"); $_base->page->add_title("Søknad #{$applicant['sa_id']}"); // lagre rating og kommentar? if (isset($_POST['rating']) && isset($_POST['comment'])) { $rating = intval(postval("rating")); $comment = trim(postval("comment")); \Kofradia\DB::get()->exec("UPDATE soknader_applicants SET sa_weight = {$rating}, sa_comment = " . \Kofradia\DB::quote($comment) . ", sa_verified = " . time() . ", sa_verified_up_id = " . login::$user->player->id . " WHERE sa_id = {$applicant['sa_id']}"); $_base->page->add_message("Informasjonen ble lagret."); redirect::handle(); } $result = \Kofradia\DB::get()->query("SELECT saf_sf_id, saf_value FROM soknader_applicants_felt WHERE saf_sa_id = {$applicant['sa_id']}"); $applicant_felt = array(); while ($row = $result->fetch()) { $applicant_felt[$row['saf_sf_id']] = $row['saf_value']; } echo '
/** * Hovedfunksjonen */ public static function main() { // hent informasjon om det vi skal vise if (isset($_GET['up_id'])) { // forsøk å hent denne spilleren $up_id = (int) $_GET['up_id']; if ($up_id != login::$user->data['u_active_up_id']) { $player = new player($up_id); } else { $player = login::$user->player; } // er ikke dette vår spiller? if (!$player->data || login::$user->id != $player->data['up_u_id']) { // må logge inn i utvidede tilganger? if ($player->data && login::$extended_access && !login::$extended_access['authed']) { redirect::handle("extended_access?orign=" . urlencode($_SERVER['REQUEST_URI'])); } elseif (!access::has("crewet")) { ess::$b->page->add_message('Du har ikke tilgang til å vise andre spillere enn dine egne. <a href="min_side">Tilbake</a>', "error"); ess::$b->page->load(); } elseif (!$player->data) { ess::$b->page->add_message("Fant ikke spilleren.", "error"); redirect::handle("/admin/brukere/finn", redirect::ROOT); } } self::$active_type = "player"; self::$active_player = $player; self::$active_user = $player->user; unset($player); } elseif (isset($_GET['u_id'])) { // forsøk å hent brukeren $u_id = (int) $_GET['u_id']; $user = $u_id == login::$user->id ? login::$user : new user($u_id); // er ikke dette vår bruker? if (!$user->data || login::$user->id != $user->id) { // har vi ikke tilgang til å vise andre spillere? if (!access::has("crewet")) { ess::$b->page->add_message('Du har ikke tilgang til å vise andre brukere enn din egen. <a href="min_side">Tilbake</a>', "error"); ess::$b->page->load(); } elseif (!$user->data) { ess::$b->page->add_message("Fant ikke brukeren.", "error"); redirect::handle("/admin/brukere/finn", redirect::ROOT); } } self::$active_type = "user"; self::$active_user = $user; self::$active_player = $user->player; unset($user); } else { self::$active_user = login::$user; self::$active_player = login::$user->player; self::$active_type = self::$active_player->active && !isset($_GET['u']) ? "player" : "user"; } // egen bruker? self::$active_own = login::$user->id == self::$active_user->id; if (!self::$active_own && !access::has("mod")) { self::$pstats = false; } // hendelser? if (isset($_GET['log'])) { redirect::handle(self::addr("log", "", "player")); } // statistikk? if (isset($_GET['stats'])) { self::$active_type = "stats"; } // informasjon om at dette er en annen person sin bruker/spiller if (!self::$active_own && false) { if (self::$active_type == "player") { ess::$b->page->add_message("Denne spilleren tilhører ikke deg."); } else { ess::$b->page->add_message("Denne brukeren tilhører ikke deg."); } } // overskrift if (self::$active_type == "player") { ess::$b->page->add_title(self::$active_player->data['up_name']); } else { ess::$b->page->add_title("Brukerinfo" . (!self::$active_own ? " (" . self::$active_user->data['u_email'] . ",#" . self::$active_user->id . ")" : "")); if (self::$active_type == "stats") { ess::$b->page->add_title("Statistikk" . (!self::$active_own ? " (" . self::$active_user->data['u_email'] . ",#" . self::$active_user->id . ")" : "")); } } // css ess::$b->page->add_css(' #page_user_info { margin: 20px 30px 30px 30px; } #page_user_info h1 { text-align: center } #page_user_info .bg1_c { margin-bottom: 20px } #page_user_info.user .col_w.left { width: 45% } #page_user_info.user .col_w.right { width: 55% } /*#page_user_info.player .col_w.left { width: 55% } #page_user_info.player .col_w.right { width: 45% }*/ #page_user_info .col_w.left .col { margin-right: 10px } #page_user_info .col_w.right .col { margin-left: 10px }'); // overskrift echo ' <p class="minside_toplinks mainlinks"> ' . self::link('<img src="' . STATIC_LINK . '/icon/house.png" alt="" />Min bruker', "", "", "user") . ' ' . self::link('<img src="' . STATIC_LINK . '/icon/user.png" alt="" />Min spiller', "", "", "player") . ' ' . self::link('<img src="' . STATIC_LINK . '/icon/chart_bar.png" alt="" />Statistikk', "", "", "stats") . ' </p>'; // underside self::$subpage = isset($_GET['a']) ? $_GET['a'] : ''; redirect::store(self::addr()); switch (self::$active_type) { // statistikk case "stats": page_min_side_stats::main(); break; // bruker // bruker case "user": page_min_side_user::main(); break; // spiller // spiller default: page_min_side_player::main(); } ess::$b->page->load(); }
/** * Construct */ public function __construct($a_id, player $up) { parent::__construct($up); $this->auksjon = auksjon::get($a_id); if (!$this->auksjon) { ess::$b->page->add_message("Fant ikke auksjonen du lette etter.", "error"); redirect::handle(); } redirect::store("auksjoner?a_id={$this->auksjon->id}"); $this->handle(); }
/** * Vis oversikt over spillere vi kan sette i bomberom */ protected function type_bomberom_list() { redirect::store("?ff_id={$this->ff->id}&brom_list"); // sette en ny spiller som ansvarlig? if (isset($_POST['brom_ans_move'])) { // mangler spiller? if (!isset($_POST['player'])) { ess::$b->page->add_message("Du må velge en spiller.", "error"); redirect::handle(); } // hent informasjon om spilleren og kontroller at vi har ansvar for den $up_id = (int) $_POST['player']; $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT up_id, up_name, up_access_level, up_brom_up_id\n\t\t\t\tFROM users_players\n\t\t\t\tWHERE up_id = {$up_id}"); $player = $result->fetch(); // fant ikke spilleren if (!$player) { ess::$b->page->add_message("Fant ikke spilleren.", "error"); redirect::handle(); } // deaktivert? if ($player['up_access_level'] == 0) { ess::$b->page->add_message('<user id="' . $player['up_id'] . '" /> er deaktivert.', "error"); redirect::handle(); } // er ikke ansvarlig for den? if ($player['up_brom_up_id'] != $this->up->id) { ess::$b->page->add_message('Du kan ikke sette <user id="' . $player['up_id'] . '" /> i bomberom.', "error"); redirect::handle(); } // har vi valgt en spiller det skal overføres til? if (isset($_POST['player_new']) || isset($_POST['player_new_id'])) { // finn spilleren $where = isset($_POST['player_new_id']) ? "up_id = " . (int) $_POST['player_new_id'] : "up_name = " . \Kofradia\DB::quote($_POST['player_new']); $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT up_id, up_name, up_access_level\n\t\t\t\t\tFROM users_players\n\t\t\t\t\tWHERE {$where}\n\t\t\t\t\tORDER BY up_access_level = 0, up_last_online DESC\n\t\t\t\t\tLIMIT 1"); $player_new = $result->fetch(); // fant ikke spilleren? if (!$player_new) { ess::$b->page->add_message("Fant ikke spilleren.", "error"); } elseif ($player_new['up_id'] == $player['up_id']) { ess::$b->page->add_message("Spilleren kan allerede sette seg selv i bomberom.", "error"); } elseif ($player_new['up_id'] == $this->up->id) { ess::$b->page->add_message("Du er allerede den ansvarlige.", "error"); } elseif ($player_new['up_access_level'] == 0) { ess::$b->page->add_message('<user id="' . $player_new['up_id'] . '" /> er ikke levende og kan ikke settes som ansvarlig.', "error"); } else { // bekreftet? if (isset($_POST['confirm'])) { validate_sid(); // sett som ansvarlig \Kofradia\DB::get()->exec("UPDATE users_players SET up_brom_up_id = {$player_new['up_id']} WHERE up_id = {$player['up_id']}"); putlog("LOG", "BOMBEROM ANSVARLIG: " . $this->up->data['up_name'] . " satt " . $player_new['up_name'] . " som ansvarlig for {$player['up_name']}"); ess::$b->page->add_message('Du gav bort muligheten for å sette <user id="' . $player['up_id'] . '" /> i bomberom til <user id="' . $player_new['up_id'] . '" />.'); redirect::handle(); } ess::$b->page->add_title("Gi bort ansvar for spiller"); echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Gi bort ansvar for spiller<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <p>Du er i ferd med å gi bort ansvaret for å kunne sette <user id="' . $player['up_id'] . '" /> i bomberom til <user id="' . $player_new['up_id'] . '" />.</p> <p>Dette vil resultere i at du ikke lenger kan sette spilleren i bomberom.</p> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="player" value="' . $player['up_id'] . '" /> <input type="hidden" name="player_new_id" value="' . $player_new['up_id'] . '" /> <input type="hidden" name="brom_ans_move" /> <p class="c">' . show_sbutton("Bekreft overføring", 'name="confirm"') . '</p> </form> <p class="c"><a href="./?ff_id=' . $this->ff->id . '&brom_list">Tilbake</a></p> </div> </div>'; $this->ff->load_page(); } } ess::$b->page->add_title("Gi bort ansvar for spiller"); echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Gi bort ansvar for spiller<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <p>Du er i ferd med å gi bort ansvaret for å kunne sette <user id="' . $player['up_id'] . '" /> i bomberom til en annen spiller.</p> <p>Dette vil resultere i at du ikke lenger kan sette spilleren i bomberom.</p> <form action="" method="post"> <input type="hidden" name="player" value="' . $player['up_id'] . '" /> <p class="c">Gi ansvar til: <input type="text" name="player_new" class="styled w100" value="' . htmlspecialchars(postval("player_new")) . '" /> ' . show_sbutton("Fortsett", 'name="brom_ans_move"') . '</p> </form> <p class="c"><a href="./?ff_id=' . $this->ff->id . '&brom_list">Tilbake</a></p> </div> </div>'; $this->ff->load_page(); } ess::$b->page->add_title("Oversikt over ansvar"); echo ' <div class="bg1_c small"> <h1 class="bg1">Oversikt over ansvar<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <p>Denne listen viser hvilke spillere som har gitt deg mulighet til å sette dem i bomberom. Du har muligheten til å gi ansvaret videre til en annen spiller.</p>'; // hent spillere vi har ansvar for $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_b_id, up_fengsel_time, up_brom_expire\n\t\t\tFROM users_players\n\t\t\tWHERE up_brom_up_id = " . $this->up->id . " AND up_access_level != 0\n\t\t\tORDER BY up_name"); $ansvar = array(); while ($row = $result->fetch()) { $ansvar[] = $row; } if (count($ansvar) == 0) { echo ' <p>Det er ingen spillere som har gitt deg muligheten til å sette spilleren i bomberom.</p>'; } else { echo ' <form action="" method="post"> <table class="table center"> <thead> <tr> <th>Spiller</th> <th>Status</th> </tr> </thead> <tbody>'; $i = 0; foreach ($ansvar as $row) { $i_bomberom = $row['up_brom_expire'] > time(); $i_fengsel = $row['up_fengsel_time'] > time(); $bydel =& game::$bydeler[$row['up_b_id']]; echo ' <tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '"> <td><input type="radio" name="player" value="' . $row['up_id'] . '" />' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td>Oppholder seg på ' . htmlspecialchars($bydel['name']); if ($i_bomberom) { echo '<br />I bomberom (til ' . ess::$b->date->get($row['up_brom_expire'])->format(date::FORMAT_SEC) . ')'; } elseif ($i_fengsel) { echo '<br />I fengsel (til ' . ess::$b->date->get($row['up_fengsel_time'])->format(date::FORMAT_SEC) . ')'; } echo '</td> </tr>'; } echo ' </tbody> </table> <p class="c">' . show_sbutton("Gi ansvar til en annen spiller", 'name="brom_ans_move"') . '</p> </form>'; } echo ' <p class="c"><a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p> </div> </div>'; $this->ff->load_page(); }
/** * 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(); }
/** * Vis oversikt over garasjen */ protected function garasje_show() { ess::$b->page->add_title("Garasje"); // kjøpe garasje? if (isset($this->parts[1]) && $this->parts[1] == "kjop") { redirect::store("/gta/garasje/kjop", redirect::ROOT); return $this->garasje_kjop_show(); } // avslutte garasje? if (isset($this->parts[1]) && $this->parts[1] == "avslutt") { redirect::store("/gta/garasje/avslutt", redirect::ROOT); return $this->garasje_avslutt_show(); } // endre garasje? if (isset($this->parts[1]) && $this->parts[1] == "endre") { redirect::store("/gta/garasje/endre", redirect::ROOT); return $this->garasje_endre_show(); } // vise detaljer over garasje? if (isset($this->parts[1]) && $this->parts[1] == "detaljer") { redirect::store("/gta/garasje/detaljer", redirect::ROOT); return $this->garasje_details_show(); } // betale leie? if (isset($this->parts[1]) && $this->parts[1] == "betale") { redirect::store("/gta/garasje/betale", redirect::ROOT); return $this->garasje_betale_show(); } // skjema $this->form = \Kofradia\Form::getByDomain("gta_garasje", login::$user); // anti-bot $this->antibot = antibot::get("biltyveri", 10); $this->antibot->check_required(ess::$s['rpath'] . '/gta'); // flytte biler? if (isset($_POST['flytt'])) { return $this->garasje_flytt_show(); } // selge biler? if (isset($_POST['selg'])) { $this->garasje_selg_handle(); } // hent informasjon om garasjen $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ugg_time, ugg_time_next_rent, ugg_cost_total, ugg_places, ff_id, ff_name\n\t\t\tFROM users_garage\n\t\t\t\tLEFT JOIN ff ON ff_id = ugg_ff_id\n\t\t\tWHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']}"); $garasje = $result->fetch(); // kan vi betale nå? $can_pay = $garasje && gta::can_pay($garasje['ugg_time_next_rent']); echo ' <div class="col2_w" style="margin: 50px 50px 0"> <div class="col_w left" style="width: 50%"> <div class="col"> <div class="bg1_c center" style="width: 85%"> <h1 class="bg1">Garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1> <div class="bg1">' . (!$garasje ? ' <p class="c">Du har ingen garasje i denne bydelen.</p> <p class="c"><a href="&rpath;/gta/garasje/kjop">Lei ny garasje</a></p>' : ' <dl class="dd_right"> <dt>Utleiefirma</dt> <dd><a href="&rpath;/ff/?ff_id=' . $garasje['ff_id'] . '">' . htmlspecialchars($garasje['ff_name']) . '</a></dd> <dt>Kapasitet</dt> <dd>' . game::format_num($garasje['ugg_places']) . '</dd> <dt>Neste betalingsfrist</dt> <dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . ($can_pay ? '<br /><a href="&rpath;/gta/garasje/betale">Betal leie før fristen</a>' : '') . '</dd> </dl> <p class="c"><a href="&rpath;/gta/garasje/detaljer">Vis flere detaljer</a></p> <p>Leie for neste periode må betales innen betalingsfristen' . ($can_pay ? '' : ' og blir mulig 3 dager før fristen') . '.</p>') . ' </div> </div> </div> </div> <div class="col_w right" style="width: 50%"> <div class="col"> <p class="c" style="margin-top: 0"><img src="&staticlink;/gta/garasje.jpg" alt="Garasje" style="border: 3px solid #1F1F1F" /></p> </div> </div> </div>'; if ($garasje) { // hent bilene i garasjen $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15); $result = $pagei->query("\n\t\t\t\tSELECT s.id, s.gtaid, s.time, s.time_last_move, s.b_id_org, s.b_id, g.brand, g.model, g.img_mini, g.value, s.damage\n\t\t\t\tFROM users_gta AS s LEFT JOIN gta AS g ON s.gtaid = g.id\n\t\t\t\tWHERE ug_up_id = {$this->gta->up->id} AND s.b_id = {$this->gta->up->data['up_b_id']}\n\t\t\t\tORDER BY s.time DESC"); echo ' <div class="bg1_c xmedium"> <h1 class="bg1">Biler i garasjen<span class="left2"></span><span class="right2"></span></h1> <div class="bg1">'; // har vi ingen biler? if ($result->rowCount() == 0) { echo ' <p>Det er ingen biler plassert i denne garasjen. Bilene du stjeler vil bli plassert i garasjen i bydelen du oppholder deg.</p>'; } else { echo ' <form action="" method="post"> ' . $this->form->getHTMLInput() . ' <table class="table tablemt center"> <thead> <tr> <th><a href="#" class="box_handle_toggle" rel="bil[]">Merk alle</a></th> <th>Merke/Modell</th> <th>Dato anskaffet</th> <th>Skade</th> <th>Verdi</th> </tr> </thead> <tbody>'; $i = 0; while ($row = $result->fetch()) { echo ' <tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '"> <td><input type="checkbox" id="bil_' . $row['id'] . '" name="bil[]" value="' . $row['id'] . '" />' . (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_cash($row['value'] * ((100 - $row['damage']) / 100)) . '</td> </tr>'; } echo ' </tbody> </table>' . ($pagei->pages > 1 ? ' <p class="c">' . $pagei->pagenumbers() . '</p>' : '') . ' <p class="c"> ' . show_sbutton("Selg biler", 'name="selg"') . ' ' . show_sbutton("Flytt biler", 'name="flytt"') . ' </p> </form>'; } echo ' </div> </div>'; } }
<?php define("FORCE_HTTPS", true); define("ALLOW_GUEST", true); require "base.php"; global $__server, $_base; $_base->page->add_title("Henvendelser"); $categories = array(1 => "Generelt", "Utestengt/deaktivert", "Feil/bugs", "Forslag til funksjon", "Annet"); $status = array("crew" => array(0 => "Ny", 1 => "Under behandling", 2 => "Venter på svar", 3 => "Ferdig behandlet", 4 => "Slettet"), "other" => array(0 => "Ikke behandlet", 1 => "Under behandling", 2 => "Trenger svar", 3 => "Ferdig behandlet", 4 => "Slettet")); // administrasjon if (isset($_GET['a']) && access::has("mod", NULL, NULL, true)) { redirect::store("henvendelser?a"); // ikke authed? if (!access::has("mod")) { echo ' <h1>Henvendelser</h1> <p>Du må logge inn for utvidede tilganger for å få tilgang til henvendelsene som er sendt inn.</p>'; $_base->page->load(); } // bestemt henvendelse? if (isset($_GET['h_id'])) { $h_id = intval($_GET['h_id']); $bb = true; // hent henvendelsen $result = \Kofradia\DB::get()->query("SELECT h_id, h_name, h_category, h_email, h_subject, h_name, h_status, h_time, h_random, h_last_visit FROM henvendelser WHERE h_id = {$h_id}"); $h = $result->fetch(); if (!$h) { $_base->page->add_message("Fant ikke henvendelsen.", "error"); redirect::handle(); } // opprette svar?
/** * Behandle endring av medemsgrense */ protected function page_members_limit_handle() { ess::$b->page->add_title("Medlemsbegrensning"); redirect::store("panel?ff_id={$this->ff->id}&a=members_limit"); // hent tall $max = $this->ff->members_limit_max_info(); // øke begrensningen? if (isset($_POST['increase']) && validate_sid()) { // ingen grense? if ($max['active'] == 0) { ess::$b->page->add_message("Det er ingen medlemsbegrensning.", "error"); } elseif ($max['active'] >= $max['max']) { ess::$b->page->add_message("Det er ikke mulig å øke medlemsbegrensningen noe mer." . ($this->ff->competition ? ' Etter konkurranseperioden vil det være mulig å øke antall medlemmer ytterligere.' : ''), "error"); } elseif (postval("count") != $max['active']) { ess::$b->page->add_message("Medlemsbegrensningen har endret seg siden du viste siden. Prøv på nytt om du fremdeles ønsker.", "error"); } else { // forsøk å øk begrensningen if ($this->ff->members_limit_increase()) { redirect::handle(); } } } // senke begrensningen? if (isset($_POST['decrease']) && validate_sid()) { // ingen grense? if ($max['active'] == 0) { ess::$b->page->add_message("Det er ingen medlemsbegrensning.", "error"); } elseif ($max['active'] <= $max['min']) { ess::$b->page->add_message("Det er ikke mulig å senke medlemsbegrensningen noe mer.", "error"); } elseif (count($this->ff->members['members']) + count($this->ff->members['invited']) >= $max['active']) { ess::$b->page->add_message("Det er for mange medlemmer/inviterte til broderskapet, og medlemsbegrensningen kan ikke senkes mer uten å kaste ut/trekke tilbake invitasjon til en spiller.", "error"); } elseif (postval("count") != $max['active']) { ess::$b->page->add_message("Medlemsbegrensningen har endret seg siden du viste siden. Prøv på nytt om du fremdeles ønsker.", "error"); } else { // forsøk å senk begrensningen if ($this->ff->members_limit_decrease()) { redirect::handle(); } } } // ingen begrensning? if ($max['active'] == 0) { echo ' <div class="bg1_c xxsmall"> <h1 class="bg1">Medlemsbegrensning<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <boxes /> <p>Det er ingen medlemsbegrensning for ' . $this->ff->type['refobj'] . '.</p> <p class="c"><a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a></p> </div> </div>'; $this->ff->load_page(); } echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Medlemsbegrensning<span class="left"></span><span class="right"></span></h1> <div class="bg1 j"> <boxes /> <p>Medlemsbegrensningen bestemmer hvor mange medlemmer du kan ha i ' . $this->ff->type['refobj'] . '.</p> <dl class="dd_right"> <dt>Nåværende begrensning</dt> <dd><b>' . $max['active'] . '</b></dd> <dt>Antall medlemmer og inviterte</dt> <dd><b>' . (count($this->ff->members['members']) + count($this->ff->members['invited'])) . '</b></dd> <dt>Minste mulige begrensning</dt> <dd' . ($max['active'] == $max['min'] ? ' style="color: #F00"' : '') . '>' . $max['min'] . '</dd> <dt>Maksimale mulige begrensning</dt> <dd' . ($max['active'] == $max['max'] ? ' style="color: #F00"' : '') . '>' . $max['max'] . '</dd> <dt>Begrensning for driftskostnad</dt> <dd>' . ($max['min'] + $max['extra_max']) . '</dd> </dl>' . ($this->ff->competition ? ' <p>Etter broderskapkonkurransen er ferdig vil du kunne øke medlemsbegrensningen ytterligere.</p>' : '') . ' <p>Når medlemsbegrensningen øker, vil utgangspunktet til driftskostnaden øke med <b>' . game::format_cash(ff::PAY_COST_INCREASE_FFM) . '</b> per medlem. I tillegg må det betales <b>' . game::format_cash(ff::MEMBERS_LIMIT_INCREASE_COST) . '</b> fra banken til ' . $this->ff->type['refobj'] . ' i det begrensningen økes.</p> <p>Når medlemsbegrensningen settes ned må man vente til neste periode for driftskostnad før dette antallet blir satt ned igjen.</p> <dl class="dd_right"> <dt>Penger i <a href="banken?ff_id=' . $this->ff->id . '">banken</a> til ' . $this->ff->type['refobj'] . '</dt> <dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd> </dl> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="count" value="' . $max['active'] . '" />' . ($max['active'] < $max['max'] ? ' <p class="c">' . show_sbutton("Øk med én plass (" . game::format_cash(ff::MEMBERS_LIMIT_INCREASE_COST) . ")", 'name="increase"') . '</p>' : '') . ($max['active'] > $max['min'] ? ' <p class="c">' . show_sbutton("Senk med én plass", 'name="decrease"') . '</p>' : '') . ' </form> <p class="c"><a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a></p> </div> </div>'; $this->ff->load_page(); }
global $_whatpulse, $_base; // sørg for at whatpulse-innstillingene lastes inn class_exists("whatpulse"); // brukes kun for autoloader access::no_guest(); $_base->page->add_title("WhatPulse"); $wpFelt = $_whatpulse['fields_text']; $player = login::$user->player; // skal vi laste inn siden for noen andre spillere? if (isset($_GET['up_id']) && access::has("mod")) { $player = player::get(intval(getval('up_id'))); if (!$player or $player->id == login::$user->player->id) { redirect::handle(); } ess::$b->page->add_message('Du viser nå WhatPulse-informasjonen til <user id="' . $player->id . '" />'); redirect::store("?up_id={$player->id}"); } // sjekk om vi har WhatPulse registrert $result = \Kofradia\DB::get()->query("SELECT sw_userid, sw_time_update, sw_xml, sw_params FROM stats_whatpulse WHERE sw_up_id = " . $player->id . " FOR UPDATE"); if ($result->rowCount() == 0) { echo ' <h1>WhatPulse</h1> <div style="width: 300px" class="center"> <div class="section"> <h3>Informasjon</h3> <p> Du er ikke registrert med WhatPulse informasjon. For å koble WhatPulse informasjonen til din profil fyll ut formen nedenfor. Se på <a href="http://whatpulse.org/" target="_blank">whatpulse.org</a> for informasjon om WhatPulse. </p> </div> <div class="section"> <form action="" method="post">';
} $data[$row['av_up_id']]['votes'][$row['av_ai_id']] = $row; } return $data; } } // har vi valgt en avstemning? if (isset($_GET['ag_id'])) { // hent info $ag = available::get_ag($_GET['ag_id']); if (!$ag) { $_base->page->add_message("Fant ikke avstemningen.", "error"); redirect::handle(); } $_base->page->add_title($ag->info['ag_title']); redirect::store(PHP_SELF . "?ag_id={$ag->ag_id}", redirect::SERVER); // hent alternativene $ag->get_ai_list(); // legge inn stemme? if (isset($_POST['note']) && (!isset($_POST['ai']) || is_array($_POST['ai']))) { // _POST: note, ai[<id>] ai_note[<id>] $note = trim(postval("note")); $ai_list = array(); // gå gjennom alle alternativene og sjekk om det er valgt eller om et notat er lagt med foreach ($ag->ai as $ai) { $set = isset($_POST['ai'][$ai['ai_id']]); $ai_note = isset($_POST['ai_note'][$ai['ai_id']]) ? trim($_POST['ai_note'][$ai['ai_id']]) : ''; // enten valgt eller har notat if ($set || $ai_note != '') { $ai_list[] = array($ai['ai_id'], $ai_note, $set); }
define("FORCE_HTTPS", true); require "base.php"; global $_base; $_base->page->add_title("Søknader"); // hent aktuell søknad $id = \Kofradia\DB::quote(getval("so_id")); $result = \Kofradia\DB::get()->query("SELECT so_id, so_title, so_info, so_expire, so_status FROM soknader_oversikt WHERE so_id = {$id}"); $soknad = $result->fetch(); $closed = $soknad['so_expire'] <= time(); // finnes ikke, eller ikke tilgang til ikke publisert søknad if (!$soknad || $soknad['so_status'] == 0 && !access::has("mod")) { $_base->page->add_message("Fant ikke søknaden.", "error"); redirect::handle("soknader"); } $_base->page->add_title($soknad['so_title']); redirect::store("soknader_vis?so_id={$soknad['so_id']}"); // hent felt til søknaden $result = \Kofradia\DB::get()->query("SELECT sf_id, sf_title, sf_extra, sf_default_value, sf_params FROM soknader_felt WHERE sf_so_id = {$soknad['so_id']} ORDER BY sf_sort"); $felt = array(); while ($row = $result->fetch()) { $row['params'] = new params($row['sf_params']); $felt[$row['sf_id']] = $row; } // hent informasjon om brukeren og denne søknaden $applicant = null; if (login::$logged_in) { $result = \Kofradia\DB::get()->query("SELECT sa_id, sa_added, sa_status, sa_updated FROM soknader_applicants WHERE sa_so_id = {$soknad['so_id']} AND sa_up_id = " . login::$user->player->id); $applicant = $result->fetch(); } // hent felt som denne brukeren har lagt til data for if ($applicant) {
// hent taginfo $taginfo = crewfiles::get_info($pages[1]); if (!$taginfo) { $_base->page->add_message("Fant ikke revisjonen.", "error"); redir_root(); } // hent data, kontroller taginfo og tilgangsnivå $revision = crewfiles::get_revision($taginfo[0]); if (!$revision || !$revision->validate_tag($taginfo[1]) || !$revision->get_file()->access) { $_base->page->add_message("Fant ikke revisjonen.", "error"); redir_root(); } $revurl = $rooturl . 'rev/' . $revision->id . '-' . urlencode(crewfiles::generate_tagname($revision->info['cfr_title'])); $file =& $revision->get_file(); $filurl = $rooturl . 'fil/' . $file->id . '-' . urlencode(crewfiles::generate_tagname($file->info['cff_title'])); redirect::store($filurl, redirect::SERVER); // sett opp hierarki $path = $revision->get_file()->get_dir()->get_path($rooturl); array_unshift($path, '<a href="' . $filurl . '">' . htmlspecialchars($file->info['cff_title']) . '</a>'); array_unshift($path, '<span class="path_active"><a href="' . $revurl . '">' . htmlspecialchars($revision->info['cfr_title']) . '</a></span>'); $hierarchy = implode(" / ", array_reverse($path)); $_base->page->add_title("Revisjon: " . $revision->info['cfr_title']); // handling: slett revisjon if ($subpage == "delete") { // ikke logget inn? if (!login::$logged_in) { $_base->page->add_message("Du må være logget inn for å kunne slette revisjoner.", "error"); redirect::handle(); } // har vi ikke tilgang til å slette denne revisjonen? if ($revision->info['cfr_up_id'] != login::$user->player->id && !access::has("admin")) {
/** * 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>'; }
/** * Vis statistikk for FF */ protected function stats() { ess::$b->page->add_title("Statistikk"); redirect::store("banken?ff_id={$this->ff->id}&stats"); // nullstille? if (isset($_GET['reset'])) { // bekreftet? if (isset($_POST['confirm']) && validate_sid()) { $this->ff->reset_bank_stats(); ess::$b->page->add_message("Statistikken ble nullstilt."); redirect::handle(); } // vis skjema for å bekrefte echo ' <div class="bg1_c xxsmall"> <h1 class="bg1">Nullstille Statistikk<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <p>Du er i ferd med å nullstille statistikken over pengeflyten i ' . $this->ff->type['refobj'] . '.</p> <p>Når du nullstiller statistikken vil du beholde en totaloversikt fra ' . $this->ff->type['refobj'] . ' ble opprettet og frem til nå.</p> <p>Etter at statistikken blir nullstilt vil det være to oversikter, som hver viser statistikk før og etter nullstillingen.</p> <p>Det kan kanskje være ønskelig å ta en kopi av statistikken nå for å kunne sammenlikne senere.</p> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p class="c">' . show_sbutton("Ja, nullstill statistikk", 'name="confirm"') . '</p> <p class="c"><a href="banken?ff_id=' . $this->ff->id . '&stats">Avbryt</a></p> </form> </div> </div>'; $this->ff->load_page(); } // har vi nullstilt? $reset = $this->ff->data['ff_money_reset_time'] ?: null; // sett opp data $stats = array(ff::BANK_INNSKUDD => 0, ff::BANK_UTTAK => 0, ff::BANK_DONASJON => 0, ff::BANK_BETALING => 0, ff::BANK_TILBAKEBETALING => 0, "in" => 0, "out" => 0); $stats = array("before" => $stats, "after" => $stats); ess::$b->page->add_css(' .ff_bank_tot { font-weight: bold; color: #555; border-bottom: 1px solid #333333; margin-bottom: 2px; padding-bottom: 2px } .ff_bank_profit { font-weight: bold; color: #888; border-bottom: 2px solid #333333; padding-bottom: 2px }'); // hent statistikk $this->stats_get($stats['before'], $reset); $this->stats_get($stats['after'], $reset, true); echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Statistikk over pengeflyt i ' . $this->ff->type['refobj'] . '<span class="left"></span><span class="right"></span></h1> <div class="bg1">'; if ($reset) { echo ' <p>Statistikken ble nullstilt ' . ess::$b->date->get($reset)->format() . '. Etter dette tidspunktet er følgende gjeldende:</p>'; } $this->stats_show($stats['after']); if ($reset) { echo ' <p>Før statistikken ble nullstilt:</p>'; $this->stats_show($stats['before']); } echo ' <p>Fortjenesten tar ikke med innskudd og uttak.</p> <p class="c"><a href="banken?ff_id=' . $this->ff->id . '">Tilbake</a> | <a href="banken?ff_id=' . $this->ff->id . '&stats&reset">Nullstill statistikk</a></p> </div> </div>'; $this->ff->load_page(); }