$_base->page->add_message("Ugyldig ID!", "error"); $show_form = true; } elseif ($data == "Unknow UserID given!") { $_base->page->add_message("Ingen bruker er opprettet med den ID-en.", "error"); $show_form = true; } else { // forsøk å lese data (XML) if (!$wp->update($data, false)) { $_base->page->add_message("Ukjent feil oppsto.<br /><br />" . htmlspecialchars($data)); $show_form = true; } else { $info = array($wp->stat_info("UserID"), $wp->stat_info("AccountName"), $wp->stat_info("DateJoined")); // godkjent? if (isset($_POST['confirm'])) { $params = new params(); $params->update("fields", "UserID,AccountName,GeneratedTime,DateJoined,Keys,AvKPS,Clicks,AvCPS"); $params_text = $params->build(); \Kofradia\DB::get()->exec("INSERT INTO stats_whatpulse SET sw_userid = {$id}, sw_up_id = " . $player->id . ", sw_time_add = " . time() . ", sw_params = " . \Kofradia\DB::quote($params_text)); putlog("NOTICE", "%c12%bWHATPULSE-OPPRETTELSE:%b%c (" . $player->data['up_name'] . ") la til WhatPulse til sin profil (WPID: %u{$id}%u)."); $_base->page->add_message("Du har nå koblet din WhatPulse konto til din konto her på Kofradia.<br />Du kan nå velge hvilke felt du ønsker å vise på profilen din."); redirect::handle(); } echo ' <input type="hidden" name="hentWP" value="' . $id . '" /> <input type="hidden" name="confirm" /> <h3>Legg til WhatPulse informasjon (trinn 2)</h3> <p class="h_right"><a href="./">Avbryt</a></p> <p> Her er litt informasjon fra WhatPulse profilen du anga. Hvis dette er din WhatPulse profil som du ønsker å legge til trykk på legg til knappen nederst, eller trykk avbryt over. </p> <dl class="dl_30">';
/** * Opprett auksjon for FF */ public static function create_auksjon_ff(ff $ff, $start = null, $end = null) { $time = time(); if (!$start) { $start = $time; } else { $start = (int) $start; } if (!$end) { // varighet er til 21:00 med minimum 12 timer $date = ess::$b->date->get(); $date->setTime(21, 0, 0); $min_time = 3600 * 12; if ($date->format("U") < $time + $min_time) { $date->modify("+1 day"); } $expire = $date->format("U"); } else { $expire = (int) $end; } // sett opp params for ff_id $params = new params(); $params->update("ff_id", $ff->id); // opprett auksjonen \Kofradia\DB::get()->exec("INSERT INTO auksjoner SET a_type = " . self::TYPE_FIRMA . ", a_title = " . \Kofradia\DB::quote($ff->data['ff_name']) . ", a_start = {$start}, a_end = {$expire}, a_bid_start = 1000000, a_bid_jump = 500000, a_active = 1, a_params = " . \Kofradia\DB::quote($params->build())); $a_id = \Kofradia\DB::get()->lastInsertId(); // logg putlog("INFO", "%bAUKSJON:%b Auksjon for %u" . $ff->data['ff_name'] . "%u ble opprettet " . ess::$s['spath'] . "/auksjoner?a_id={$a_id}"); // live-feed livefeed::add_row('<a href="' . ess::$s['rpath'] . '/auksjoner?a_id=' . $a_id . '">Auksjon</a> for <a href="' . ess::$s['rpath'] . '/ff/?ff_id=' . $ff->id . '">' . htmlspecialchars($ff->data['ff_name']) . '</a> ble opprettet.'); self::update_cache(); }
/** * Marker en endring utført i forumet slik at den blir synlig i menyen */ public function forum_changed() { \Kofradia\DB::get()->beginTransaction(); // hent og lås params for alle medlemmer $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT u_id, u_params\n\t\t\tFROM ff_members\n\t\t\t\tJOIN users_players ON ffm_up_id = up_id\n\t\t\t\tJOIN users ON u_id = up_u_id\n\t\t\tWHERE ffm_ff_id = {$this->id} AND ffm_status = 1\n\t\t\tFOR UPDATE"); while ($u = $result->fetch()) { // hopp over den aktive brukeren if (login::$logged_in && $u['u_id'] == login::$user->id) { continue; } $params = new params($u['u_params']); if (!$params->exists("forums")) { continue; } $container = new container($params->get("forums")); foreach ($container->items as $key => $row) { if ($row[0] != "ff") { continue; } if ($row[1] != $this->id) { continue; } // oppdater if (!isset($row[4])) { $row[4] = 0; } $row[4]++; // lagre $container->items[$key] = $row; $params->update("forums", $container->build()); \Kofradia\DB::get()->exec("UPDATE users SET u_params = " . \Kofradia\DB::quote($params->build()) . " WHERE u_id = {$u['u_id']}"); continue; } } // fullfør transaksjon \Kofradia\DB::get()->commit(); }
/** * Juster kapasiteten i bomberommene */ public static function adjust_capacity() { // finn antall pålogget siste 48 timer $expire = time() - 86400 * 2; $result = \Kofradia\DB::get()->query("SELECT COUNT(*) FROM users_players WHERE up_access_level != 0 AND up_last_online > {$expire}"); $ant_online = $result->fetchColumn(0); // for julaften og nyttår $d = array("12-24", "12-30", "12-31"); $f = 1; if (in_array(ess::$b->date->get()->format("m-d"), $d)) { $f = 3; // 3 ganger så mange plasser } // antall som skal fordeles (minimum 5 stk) $ant_fordeles = max(5, ceil($ant_online * self::CAPACITY_FACTOR * $f)); \Kofradia\DB::get()->beginTransaction(); // hent ut alle bomberommene $result = \Kofradia\DB::get()->query("SELECT ff_id, ff_params FROM ff WHERE ff_type = 4 AND ff_inactive = 0 FOR UPDATE"); $bomberom = array(); while ($row = $result->fetch()) { $row['rest'] = 0; // antall ekstra plasser det skal settes av (de som blir fordelt tilfeldig) $bomberom[] = $row; } // ingen bomberom? $ant_bomberom = count($bomberom); if ($ant_bomberom == 0) { putlog("LOG", "BOMBEROM KAPASITET: Ingen bomberom eksisterer."); \Kofradia\DB::get()->commit(); return; } // fordel plasser på bomberommene $per_bomberom = floor($ant_fordeles / $ant_bomberom); $rest = $ant_fordeles % $ant_bomberom; // eksta å fordele tilfeldig? if ($rest > 0) { // plukk ut tilfeldige bomberom $tilfeldige = (array) array_rand($bomberom, $rest); foreach ($tilfeldige as $key) { $bomberom[$key]['rest']++; } } // oppdater bomberommene foreach ($bomberom as $row) { // antall bomberommet skal ha plass til $ant = $row['rest'] + $per_bomberom; // frihavnen får dobbelt så mange plasser if ($row['ff_id'] == 44) { $ant += $per_bomberom; } // oppdater $params = new params($row['ff_params']); $params->update("bomberom_kapasitet", $ant); // lagre \Kofradia\DB::get()->exec("UPDATE ff SET ff_params = " . \Kofradia\DB::quote($params->build()) . " WHERE ff_id = {$row['ff_id']}"); } // lagre \Kofradia\DB::get()->commit(); }
/** * Selge kuler på auksjon */ protected function new_bullets() { // har ikke noe våpen eller nok kuler? if (!$this->up->weapon || $this->up->data['up_weapon_bullets'] < auksjon::BULLETS_MIN) { redirect::handle(); } // opprette auksjon? if (isset($_POST['create'])) { $price = game::intval(postval("price")); $bullets = (int) postval("bullets"); $time = (int) postval("time"); // for få kuler? if ($bullets < auksjon::BULLETS_MIN) { ess::$b->page->add_message("Du må legge ut minimum " . auksjon::BULLETS_MIN . " kuler på auksjon.", "error"); } elseif ($bullets > auksjon::BULLETS_MAX) { ess::$b->page->add_message("Du kan ikke legge ut flere enn " . auksjon::BULLETS_MAX . " kuler på auksjon.", "error"); } elseif ($bullets > $this->up->data['up_weapon_bullets']) { ess::$b->page->add_message("Du har ikke så mange kuler.", "error"); } elseif ($price <= 0) { ess::$b->page->add_message("Startprisen må være over 0.", "error"); } elseif ($time < auksjon::BULLETS_TIME_MIN) { ess::$b->page->add_message("Auksjonen må ha en varighet på minimum " . game::timespan(auksjon::BULLETS_TIME_MIN * 60, game::TIME_FULL) . ".", "error"); } elseif ($time > auksjon::BULLETS_TIME_MAX) { ess::$b->page->add_message("Auksjonen kan ikke vare lengre enn " . game::timespan(auksjon::BULLETS_TIME_MAX * 60, game::TIME_FULL) . ".", "error"); } else { // trekk fra kulene $a = \Kofradia\DB::get()->exec("\n\t\t\t\t\tUPDATE users_players\n\t\t\t\t\tSET up_weapon_bullets = up_weapon_bullets - {$bullets}, up_weapon_bullets_auksjon = up_weapon_bullets_auksjon + {$bullets}\n\t\t\t\t\tWHERE up_id = {$this->up->id} AND up_weapon_bullets >= {$bullets}"); // hadde ikke nok kuler? if ($a == 0) { ess::$b->page->add_message("Du har ikke så mange kuler.", "error"); } else { // opprett auksjon $params = new params(); $params->update("bullets", $bullets); $params = \Kofradia\DB::quote($params->build()); $timen = time(); $expire = $timen + $time * 60; \Kofradia\DB::get()->exec("INSERT INTO auksjoner SET a_type = " . auksjon::TYPE_KULER . ", a_title = '{$bullets} kuler', a_up_id = {$this->up->id}, a_start = {$timen}, a_end = {$expire}, a_bid_start = {$price}, a_bid_jump = 50000, a_active = 1, a_params = {$params}"); $a_id = \Kofradia\DB::get()->lastInsertId(); putlog("INFO", "%bKULEAUKSJON:%b %u{$this->up->data['up_name']}%u opprettet en auksjon for " . $bullets . " kuler med budstart på " . game::format_cash($price) . " " . ess::$s['spath'] . "/auksjoner?a_id={$a_id}"); $auksjon = auksjon::get($a_id); if ($auksjon) { $this->up->trigger("auksjon_start", array("auksjon" => $auksjon)); } // oppdater cache auksjon::update_cache(); // live-feed #livefeed::add_row('<user id="'.$this->up->id.'" /> opprettet en auksjon for <a href="'.ess::$s['relative_path'].'/auksjoner?a_id='.$a_id.'">'.$bullets.' kuler</a> med startbud på '.game::format_cash($price).'.'); ess::$b->page->add_message("Auksjonen ble opprettet."); redirect::handle("auksjoner?a_id={$a_id}"); } } } echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Selg kuler på auksjon<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <p class="c"><a href="auksjoner?t=2">Tilbake</a></p> <p>Her har du muligheten til å selge kuler på auksjon. På den måten kan du være heldig å tjene på tiden du har brukt for å få tak i kulene.</p> <p>Når du oppretter en auksjon, har du ikke mulighet til å trekke den tilbake. Hvis ingen byr på auksjonen din vil du få kulene returnert.</p> <p>Du har for øyeblikket <b>' . $this->up->data['up_weapon_bullets'] . '</b> kuler som du kan selge.</p> <form action="" method="post"> <dl class="dd_right"> <dt>Antall kuler som skal selges</dt> <dd><input type="text" class="styled w40" name="bullets" value="' . max(auksjon::BULLETS_MIN, intval(postval("bullets"))) . '" /></dd> <dt>Varighet for auksjon (minutter)</dt> <dd><input type="text" class="styled w40" name="time" value="' . intval(postval("time", auksjon::BULLETS_TIME_MAX)) . '" /></dd> <dt>Startpris på auksjon</dt> <dd><input type="text" class="styled w80" name="price" value="' . game::format_cash(postval("price", 10000)) . '" /></dd> </dl> <p class="c">' . show_sbutton("Opprett auksjon", 'name="create"') . '</p> </form> </div> </div>'; ess::$b->page->load(); }
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(); }
$text = trim(postval("text")); $active = isset($_POST['active']); // sette en annen bruker ID enn den som redigerer teksten? if (access::has("admin") && postval("up_id") != "0" && postval("up_id") != "") { $up_id = intval(postval("up_id")); // kontroller at brukeren finnes $result = \Kofradia\DB::get()->query("SELECT up_name FROM users_players WHERE up_id = {$up_id}"); if ($result->rowCount() == 0) { $_base->page->add_message("Fant ikke spilleren med ID {$up_id}. Bruker din ID.", "error"); $up_id = login::$user->player->id; } } else { $up_id = login::$user->player->id; } $params = new params($poll['p_params']); $params->update("forum_active", $active ? 1 : 0); $params->update("forum_text", $text); $params->update("forum_up_id", $up_id); $params = $params->build(); // oppdater \Kofradia\DB::get()->exec("UPDATE polls SET p_params = " . \Kofradia\DB::quote($params) . " WHERE p_id = {$poll['p_id']}"); $_base->page->add_message("Endringene ble lagret."); // slett cache cache::delete("polls_list"); redirect::handle(); } $params = new params($poll['p_params']); echo ' <div class="bg1_c small"> <h1 class="bg1">Endre forum mal<span class="left"></span><span class="right"></span></h1> <p class="h_left"><a href="' . $__server['relative_path'] . '/polls/admin/' . $poll['p_id'] . '">« Tilbake</a></p>
<?php require "../base.php"; global $_base; access::no_guest(); $_base->page->add_title("Generer params"); $count = 0; $params = new params(); if (isset($_POST['name']) && is_array($_POST['name'])) { $params->add_text(postval("empty")); foreach ($_POST['name'] as $key => $row) { if (empty($row)) { continue; } $params->update($row, $_POST['value'][$key]); } $count = count($params->params); } echo ' <div class="bg1_c small"> <h1 class="bg1">Generer params<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <p>Her kan du generere params for å bruke i databasen osv.</p>' . ($params ? ' <p>Resultat:</p> <p><input type="text" value="' . htmlspecialchars($params->build()) . '" class="styled w300" /></p>' : '') . ' <form action="" method="post"> <dl class="dd_right"> <dt>Base:</dt> <dd><input type=text" name="empty" class="styled w200" /></dd>'; $list = array(); foreach ($params->params as $name => $value) {
} .oppdrag_list_img { position: absolute; right: -10px; top: 0; margin: 0; padding: 0; opacity: 0.5; } '); // for å generere nødvendige params til nye oppdrag if (false) { $p = new params("20=4:name11:rank_points13=6:points3:01519=10:time_limit4:180048=5:prize38:13=4:cash5:1000019=11:rank_points3:500"); #$p->update("chips", 250000); #$p->update("chips_start", 5000); $p->update("list_img", "http://i38.tinypic.com/mj3d76.png"); dump($p->build()); } // sjekk for nye oppdrag login::$user->player->oppdrag->check_new(); /*echo ' <form action="" method="post"> <p class="c">'.show_sbutton("Fjern alle mine oppdrag (testing)", 'name="delete_oppdrag"').' <a href="oppdrag?fiks" class="button">GI TILGANG TIL OPPDRAGENE</a></p> </form>'; */ echo ' <div class="bg1_c medium"> <h1 class="bg1">Oppdrag<span class="left"></span><span class="right"></span></h1> <p class="h_right"><a href="' . ess::$s['rpath'] . '/node/26">Hjelp</a></p> <div class="bg1 r2b">'; // noen nye oppdrag?