/** * 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(); }
/** * Sett oppdrag som aktivt * * @param integer $o_id * @return boolean active */ public function active_set($o_id) { // allerede satt som aktivt? if ($this->active && $this->active['o_id'] == $o_id) { return false; } // finnes ikke oppdraget? (må være hentet først for at vi kan fortsette) if (!isset($this->oppdrag[$o_id])) { return false; } $oppdrag =& $this->oppdrag[$o_id]; // ikke aktivt allerede? if ($oppdrag['uo_active'] == 0) { // sjekk om noen andre oppdrag er aktive $result = \Kofradia\DB::get()->query("SELECT uo_o_id, uo_active_time FROM users_oppdrag WHERE uo_up_id = {$this->up->id} AND uo_active != 0 LIMIT 1"); if ($result->rowCount() > 0) { $uo = $result->fetch(); // et annet oppdrag? if ($uo['uo_o_id'] != $oppdrag['o_id']) { // sett riktig aktivt oppdrag if (!isset($this->oppdrag[$uo['uo_o_id']]) && !$this->oppdrag_loaded) { $this->user_load_all(); } $this->active_set($uo['uo_o_id']); // må sette alle andre oppdrag som innaktive før vi kan begynne på et nytt oppdrag return false; } $oppdrag['uo_active'] = 1; $oppdrag['uo_active_time'] = $uo['uo_active_time']; } else { $oppdrag['uo_active'] = 1; $oppdrag['uo_active_time'] = time(); \Kofradia\DB::get()->exec("UPDATE users_oppdrag SET uo_active = 1, uo_active_time = {$oppdrag['uo_active_time']} WHERE uo_up_id = {$this->up->id} AND uo_o_id = {$oppdrag['o_id']}"); } } // sett aktivt oppdrag if ($this->up->params->get("oppdrag_id") != $oppdrag['o_id']) { $params = new params(); $params->params = $oppdrag; $this->up->params->lock(); $this->up->params->update("oppdrag", $params->build()); $this->up->params->update("oppdrag_id", $oppdrag['o_id'], true); } $this->active =& $oppdrag; // sett nye triggere $this->link_triggers(); // sjekk om oppdraget er over tiden sin $params = $this->params[$oppdrag['o_id']]['o_params']; $time_start = $oppdrag['uo_active_time']; $time_limit = $params->get("time_limit", oppdrag::DEFAULT_TIME_LIMIT_ACTIVE); if ($time_start + $time_limit < time()) { // kontroller trigger if (isset($this->triggers_id[$o_id])) { $trigger = $this->triggers_id[$o_id]; switch ($params->get("name")) { case "single_poker": // nådde vi beløpet? if ($trigger['status']->get("chips") >= $trigger['trigger']->get("chips")) { $this->success($o_id, 'Du klarte å spille deg opp til ' . game::format_number($trigger['status']->get("chips")) . ' chips i løpet av ' . game::timespan($time_limit, game::TIME_FULL) . ', noe som var mer enn ' . game::format_number($trigger['trigger']->get("chips")) . ' chips. Oppdraget «$name» ble vellykket!'); } else { $this->failed($o_id, 'Du spilte deg opp til ' . game::format_number($trigger['status']->get("chips")) . ' chips i løpet av ' . game::timespan($time_limit, game::TIME_FULL) . '. Det var mindre enn ' . game::format_cash($trigger['trigger']->get("chips")) . ' chips. Oppdraget «$name» ble mislykket.'); } break; } } // hvis oppdraget fortsatt er aktivt, sett det som feilet pga. tid if (isset($this->oppdrag[$o_id]) && $this->oppdrag[$o_id]['uo_active'] != 0) { $this->failed($o_id, 'Du brukte for lang tid på oppdraget «$name» og mislykket.'); } return false; } return true; }
$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">'; $i = 0;
/** * 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(); }
/** * 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(); }
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(); }
$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) { $list[] = array($name, $value); } for ($i = 0; $i < max(5, $count + 2); $i++) { echo ' <dt><input type="text" name="name[' . $i . ']" class="styled w100" value="' . (isset($list[$i]) ? htmlspecialchars($list[$i][0]) : '') . '" /></dt> <dd><input type="text" name="value[' . $i . ']" class="styled w200" value="' . (isset($list[$i]) ? htmlspecialchars($list[$i][1]) : '') . '" /></dt>'; } echo ' </dl>
.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? if (count(login::$user->player->oppdrag->new) > 0) {