protected function show() { ess::$b->page->add_css(' #crewlog_filter { padding: 0 10px } #crewlog_filter td { font-size: 10px }'); ess::$b->page->add_js_domready(' // vise/skjule filter $("crewlog_filter_a").addEvent("click", function() { var elm = $("crewlog_filter"); if (elm.hasClass("hide")) { // vis skjemaet elm.removeClass("hide"); } else { // skjul skjemaet elm.addClass("hide"); } });'); echo ' <h1>Crewets handlinger - crewlogg</h1> <form action="" method="post"> <div class="bg1_c large"> <h1 id="crewlog_filter_a" class="bg1 pointer">Filteralternativer<span class="left"></span><span class="right"></span></h1> <div id="crewlog_filter" class="bg1' . (!$this->filters_active ? ' hide' : '') . '">'; $this->show_filters(); echo ' <p class="c">' . show_sbutton("Oppdater") . '</p> </div> </div>'; if ($this->filter_by_up || $this->filter_a_up || $this->filter_time_before || $this->filter_time_after) { echo ' <div class="section center" style="width: 50%"> <h2>Filter</h2> <ul>'; $list_users = function ($list) { $d = array(); foreach ($list as $r) { $d[] = '<user="******" />'; } return sentences_list($d, ", ", " eller "); }; if ($this->filter_by_up) { echo ' <li>' . (isset($_POST['by_invert']) ? 'Ikke u' : 'U') . 'tført av: ' . $list_users($this->filter_by_up) . '</li>'; } if ($this->filter_a_up) { echo ' <li>' . (isset($_POST['a_invert']) ? 'Ikke s' : 'S') . 'piller berørt: ' . $list_users($this->filter_a_up) . '</li>'; } if ($this->filter_time_before && !$this->filter_time_after) { echo ' <li>Før/lik ' . ess::$b->date->get($this->filter_time_before)->format() . '</li>'; } elseif (!$this->filter_time_before && $this->filter_time_after) { echo ' <li>Etter/lik ' . ess::$b->date->get($this->filter_time_after)->format() . '</li>'; } elseif ($this->filter_time_before && $this->filter_time_after) { echo ' <li>Mellom/lik ' . ess::$b->date->get($this->filter_time_after)->format() . ' og ' . ess::$b->date->get($this->filter_time_before)->format() . '</li>'; } echo ' </div>'; } $this->show_logs(); echo ' </form>'; }
/** * Vis resultat fra angrep */ protected function attack_result_show($result, $bullets) { echo ' <div class="bg1_c xsmall"> <h1 class="bg1">' . ($result['drept'] ? 'Spiller drept' : 'Spiller skadet') . '<span class="left2"></span><span class="right2"></span></h1> <div class="bg1">'; // sett opp hva vi fikk $got = array(); $got[] = game::format_num($result['rankpoeng']) . ' poeng' . ($result['drept'] ? '' : ' fra spilleren'); if (isset($result['penger']) && $result['penger'] > 0) { $got[] = game::format_cash($result['penger']) . ' som offeret hadde på hånda'; } if (isset($result['penger_bank']) && $result['penger_bank'] > 0) { $got[] = game::format_cash($result['penger_bank']) . ' som deler av det offeret hadde i banken'; } if (isset($result['hitlist']) && $result['hitlist'] > 0) { $got[] = game::format_cash($result['hitlist']) . ' fra hitlista'; } $got = sentences_list($got); // vellykket? if ($result['drept']) { $place = bydeler::get_random_place(login::$user->player->bydel['id']); echo ' <p>Du fant ' . $this->up_offer->profile_link() . ' som hadde ranken ' . $this->up_offer->rank['name'] . ' og var plassert som nummer ' . $this->up_offer->data['upr_rank_pos'] . ' på ranklista' . ($place ? ' ved ' . $place : '') . ' og angrep spilleren med ' . $bullets . ' ' . fword("kule", "kuler", $bullets) . '.</p> <p>Spilleren døde av angrepet ditt. Du fikk ' . $got . '.' . ($result['penger'] == 0 ? ' Offeret hadde ingen penger på hånda.' : '') . '</p>'; } else { $place = bydeler::get_random_place(login::$user->player->bydel['id']); echo ' <p>Du fant ' . $this->up_offer->profile_link() . ' med ranken ' . $this->up_offer->rank['name'] . ' og plassering nummer ' . $this->up_offer->data['upr_rank_pos'] . ' på ranklista' . ($place ? ' ved ' . $place : '') . ' og angrep spilleren med ' . $bullets . ' ' . fword("kule", "kuler", $bullets) . '.</p> <p>Spilleren ble skadet av angrepet men overlevde. Du mottok ' . $got . '.</p>'; } // list opp vitner if (count($result['vitner']) == 0) { echo ' <p>Ingen spillere vitnet ' . ($result['drept'] ? 'drapet' : 'drapsforsøket') . '.</p>'; } else { // sett opp liste over navngitte spillere som oppdaget det $list = array(); $count_other = 0; foreach ($result['vitner'] as $vitne) { if ($vitne['visible']) { $list[] = $vitne['up']->profile_link(); } else { $count_other++; } } if ($count_other > 0) { $list[] = fwords("%d ukjent spiller", "%d ukjente spillere", $count_other); } echo ' <p>Du ble oppdaget av ' . sentences_list($list) . ' da ' . ($result['drept'] ? 'drapet' : 'drapsforsøket') . ' ble gjennomført.</p>'; } // fengselendring? if (isset($result['fengsel'])) { // kom i fengsel? if ($result['fengsel'] === false) { // fjern meldingen som allerede er lagt inn ess::$b->page->message_get("fengsel"); echo ' <p>Du kom i fengsel og slipper ut om ' . game::counter(login::$user->player->data['up_fengsel_time'] - time()) . '. Wanted nivået er nå på ' . game::format_num(login::$user->player->data['up_wanted_level'] / 10, 1) . ' %.</p>'; } else { echo ' <p>Wanted nivået økte med ' . game::format_num($result['fengsel'] / 10, 1) . ' %.</p>'; } } echo ' <p class="c"><a href="angrip">Tilbake</a></p> </div> </div>'; ess::$b->page->load(); }
/** * Bryte ut fra fengsel */ protected function bryt_ut() { // allerede i fengsel? if ($this->up->fengsel_check()) { ess::$b->page->add_message("Du er allerede i fengsel.", "error"); redirect::handle(); } // har vi ikke nok energi? if (!$this->up->energy_check(self::ENERGY)) { ess::$b->page->add_message("Du har ikke nok energi for å bryte ut andre spillere nå."); redirect::handle(); } $time = intval(postval('time')); // hent informasjon @(list($up_id, $expire, $dusor) = explode("_", $_POST['up_id'] . "_", 3)); $up_id = intval($up_id); $expire = intval($expire); $dusor = game::intval($dusor); $up = player::get($up_id); if (!$up) { ess::$b->page->add_message("Fant ikke brukeren.", "error"); redirect::handle(); } // ikke i fengsel lengre? $wait = $up->fengsel_wait(); if ($wait == 0) { ess::$b->page->add_message('<user id="' . $up->id . '" /> er nok allerede brutt ut!', "error"); redirect::handle(); } // ikke riktig tid? if ($up->data['up_fengsel_time'] != $expire) { ess::$b->page->add_message('<user id="' . $up->id . '" /> har kommet i fengsel på nytt. Prøv igjen.', "error"); redirect::handle(); } // feil dusør? if ($up->data['up_fengsel_dusor'] != $dusor) { ess::$b->page->add_message('Dusøren til <user id="' . $up->id . '" /> har endret seg. Prøv på nytt.', "error"); redirect::handle(); } // sett opp sannsynlighet $prob = self::calc_prob($wait, $up->data['up_wanted_level'] / 10); $points = self::calc_points($prob); // sett opp dusør $dusor_org = $up->data['up_fengsel_dusor']; $dusor = bcmul($up->data['up_fengsel_dusor'], self::DUSOR_PROFIT); // klarte vi det? $success = rand(0, 999) < $prob * 10; if ($success) { // penger man får for utbrytelsen $cash = round(max(0, 100 - $prob) / 100 * self::CASH_MAX); // sett som utbrytet $a = \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_fengsel_time = " . (time() - 1) . ", up_fengsel_dusor_total_out = up_fengsel_dusor_total_out + up_fengsel_dusor, up_fengsel_dusor = 0\n\t\t\t\tWHERE up_id = {$up->id} AND up_fengsel_time = {$up->data['up_fengsel_time']} AND up_fengsel_dusor = {$up->data['up_fengsel_dusor']}"); if ($a == 0) { ess::$b->page->add_message('<user id="' . $up->id . '" /> er nok allerede brutt ut!', "error"); redirect::handle(); } $up->data['up_fengsel_time'] = time() - 1; $up->data['up_fengsel_dusor_total_out'] = bcadd($up->data['up_fengsel_dusor_total_out'], $up->data['up_fengsel_dusor']); $up->data['up_fengsel_dusor'] = 0; // oppdater antall utbrytninger og gi evt. penger \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_fengsel_num_out_tries = up_fengsel_num_out_tries + 1, up_fengsel_num_out_success = up_fengsel_num_out_success + 1, up_cash = up_cash + {$cash} + {$dusor}, up_fengsel_dusor_total_in = up_fengsel_dusor_total_in + {$dusor}\n\t\t\t\tWHERE up_id = " . $this->up->id); $this->up->update_money(bcadd($cash, $dusor), true, false); // hendelse for spilleren som ble brutt ut $up->add_log("fengsel", $dusor_org > 0 ? $dusor_org : null, $this->up->id); $fengsel = $this->up->fengsel_rank($points, true); // penger, dusør og poeng vi mottar $mottok = array(); if ($cash > 0) { $mottok[] = game::format_cash($cash); } if ($dusor > 0) { $mottok[] = "dusøren på " . game::format_cash($dusor); } $mottok[] = game::format_num($points) . ' poeng'; // melding $msg = 'Du brøt ut <user id="' . $up->id . '" /> fra fengselet og mottok ' . sentences_list($mottok) . '.'; if ($fengsel > 0) { $msg .= ' Wanted nivået økte med ' . game::format_number($fengsel / 10, 1) . ' %.'; } ess::$b->page->add_message($msg); // logg putlog("LOG", "FENGSELUTBRYTNING: {$this->up->data['up_name']} brøt ut {$up->data['up_name']} fra fengsel (wait={$wait}, cash={$cash}, dusør={$dusor_org}, prob={$prob}, rank={$points})"); // rank $this->up->increase_rank($points); } else { // mislykket $fengsel = $this->up->fengsel_rank($points, false, true); // oppdater antall utbrytninger (kun forsøk) \Kofradia\DB::get()->exec("UPDATE users_players SET up_fengsel_num_out_tries = up_fengsel_num_out_tries + 1 WHERE up_id = " . $this->up->id); if ($fengsel > 0) { ess::$b->page->add_message('Mislykket! Wanted nivået økte med ' . game::format_number($fengsel / 10, 1) . ' %.'); } } // trigger $this->up->trigger("fengsel", array("success" => $success, "up" => $up, "wait" => $wait, "prob" => $prob, "points" => $points, "cash" => $success ? $cash : null, "dusor" => $dusor, "dusor_org" => $dusor_org)); $up->trigger("fengsel_affected", array("success" => $success, "up" => $this->up, "wait" => $wait, "prob" => $prob, "points" => $points, "cash" => $success ? $cash : null, "dusor" => $dusor, "dusor_org" => $dusor_org)); // energy $this->up->energy_use(self::ENERGY); redirect::handle(); }
/** * Delete selected contacts */ public function action_delete_many() { $removed = array(); if (validate_sid(false) && isset($_POST['id']) && is_array($_POST['id'])) { foreach ($_POST['id'] as $id) { $contact = Contact::getContactById($id); if (!$contact || $contact->getOwnerUserID() != $this->user->id) { break; } if ($contact->delete()) { $removed[] = '<user id="' . $contact->getTargetPlayerID() . '" />'; } } } if ($removed) { \ess::$b->page->add_message('Du fjernet ' . sentences_list($removed) . ' fra listen.'); } return \redirect::handle("/kontakter", \redirect::ROOT); }
/** * Last inn relasjon mellom spillere og familier */ public function ff_get_familier($up_ids) { if (count($up_ids) == 0) { $this->ff_rel = null; return; } $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ffm_up_id, ff_id, ff_name\n\t\t\tFROM ff_members\n\t\t\t\tJOIN ff ON ff_id = ffm_ff_id AND ff_inactive = 0 AND ff_is_crew = 0 AND ff_type = 1\n\t\t\tWHERE ffm_up_id IN (" . implode(",", $up_ids) . ") AND ffm_status = 1"); $ff = array(); while ($row = $result->fetch()) { $ff[$row['ffm_up_id']][] = '<a href="' . \ess::$s['rpath'] . '/ff/?ff_id=' . $row['ff_id'] . '" title="Broderskap">' . htmlspecialchars($row['ff_name']) . '</a>'; } foreach ($ff as $up => &$rows) { $rows = sentences_list($rows); } $this->ff_rel = $ff; }
/** * Formatter tekst for premie (og gi ut hvis spesifisert) */ protected function prize($give = false) { // mulige premier: // * cash // * points // * bullets $params = new params($this->a->data['ac_prize']); $text = array(); // cash if ($cash = $params->get("cash")) { if ($give) { $this->up->update_money($cash); } $text[] = game::format_cash($cash); } // points if ($points = $params->get("points")) { if ($give) { $this->up->increase_rank($points); } $text[] = game::format_num($points) . " rankpoeng"; } // kuler if ($bullets = $params->get("bullets")) { $bullets = (int) $bullets; // har vi plass til noen kuler? if ($this->up->weapon) { $kap = $this->up->weapon ? $this->up->weapon->data['bullets'] : 0; $free = $kap - $this->up->data['up_weapon_bullets'] - $this->up->data['up_weapon_bullets_auksjon']; $bullets = max(0, min($free, $bullets)); if ($bullets > 0) { if ($give) { // gi kuler \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets = up_weapon_bullets + {$bullets} WHERE up_id = {$this->up->id}"); $this->up->data['up_weapon_bullets'] += $bullets; } $text[] = fwords("%d kule", "%d kuler", $bullets); } } } return sentences_list($text); }
/** * Sett opp tekst for en logg */ public function format_log($type, $note, $num) { global $_game, $__server; $html = false; // typenavn $type_name = self::$items_id[$type]; switch ($type_name) { case "utpressing": $melding = '[user id=' . $note . '] presset deg for [b]' . game::format_cash($num) . '[/b]!'; break; case "fengsel": $dusor = empty($note) ? '' : ' og mottok dusøren på ' . game::format_cash($note); $melding = '[user id=' . $num . '] brøt deg ut av fengselet' . $dusor . '!'; break; case "fengsel_dusor_return": $melding = 'Ingen hadde brutt deg ut av fengsel innen du kom ut og du fikk tilbake dusøren på ' . game::format_cash($num) . '.'; break; case "renter": $melding = "Du mottok [b]" . game::format_cash($num) . "[/b] i renter fra banken!" . (!empty($note) ? ' ' . $note : ''); break; case "forfremmelse": $melding = "Du ble forfremmet til [b]{$note}[/b]!"; break; case "nedgradering": $melding = "Du ble nedgradert til [b]{$note}[/b]!"; break; // rank bonus // rank bonus case "rank_bonus": // syntax: plassering(int):prosent bonus(float), num = bonus $info = explode(":", $note); $melding = 'Du var den ' . ($info[0] == 1 ? 'beste' : $info[0] . '. beste') . ' rankeren de siste 24 timene og fikk ' . game::format_num($info[1] * 100) . ' % i bonus av poengene du hadde skaffet (' . game::format_num($num) . ' poeng i bonus).'; break; // verve bonus // verve bonus case "verve_bonus": // syntax: antall_spillere num = bonus $melding = 'Du mottok ' . game::format_num($num) . ' poeng i bonus fra ' . fwords("%d spiller", "%d spillere", $note) . ' du har vervet som hadde ranket de siste 24 timene.'; break; case "testing": $melding = "Testing - Melding: {$note} - Tall: {$num}"; break; case "raw": $html = true; $melding = $note; break; case "systeminfo": $melding = "Systeminformasjon: " . $note; break; // emen i crewforumet // emen i crewforumet case "crewforum_emne": $u = explode(":", $note, 2); $html = true; $melding = '<user id="' . $u[0] . '" /> opprettet <a href="forum/topic?id=' . $num . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet.'; break; // svar i crewforumet // svar i crewforumet case "crewforum_svar": $u = explode(":", $note, 2); $s = explode("#", $u[0]); $u[0] = $s[0]; $replyid = isset($s[1]) ? '&replyid=' . $s[1] : ''; $html = true; $melding = '<user id="' . $u[0] . '" /> svarte i <a href="forum/topic?id=' . $num . $replyid . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet'; break; // emne i crewforumet (arkiv) // emne i crewforumet (arkiv) case "crewforuma_emne": $u = explode(":", $note, 2); $html = true; $melding = '<user id="' . $u[0] . '" /> opprettet <a href="forum/topic?id=' . $num . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet (arkiv).'; break; // svar i crewforumet (arkiv) // svar i crewforumet (arkiv) case "crewforuma_svar": $u = explode(":", $note, 2); $s = explode("#", $u[0]); $u[0] = $s[0]; $replyid = isset($s[1]) ? '&replyid=' . $s[1] : ''; $html = true; $melding = '<user id="' . $u[0] . '" /> svarte i <a href="forum/topic?id=' . $num . $replyid . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet (arkiv).'; break; // emne i idémyldringsforumet // emne i idémyldringsforumet case "crewforumi_emne": $u = explode(":", $note, 2); $html = true; $melding = '<user id="' . $u[0] . '" /> opprettet <a href="forum/topic?id=' . $num . '">' . htmlspecialchars($u[1]) . '</a> i idémyldringsforumet.'; break; // svar i idémyldringsforumet // svar i idémyldringsforumet case "crewforumi_svar": $u = explode(":", $note, 2); $s = explode("#", $u[0]); $u[0] = $s[0]; $replyid = isset($s[1]) ? '&replyid=' . $s[1] : ''; $html = true; $melding = '<user id="' . $u[0] . '" /> svarte i <a href="forum/topic?id=' . $num . $replyid . '">' . htmlspecialchars($u[1]) . '</a> i idémyldringsforumet.'; break; case "bankoverforing": $info = explode(":", $note, 2); $melding = '[user id=' . $num . '] sendte deg [b]' . game::format_cash($info[0]) . '[/b]!' . (!empty($info[1]) ? ' [b]Melding[/b]: ' . $info[1] : ''); break; case "lotto": $info = explode(":", $note); $data = array(); $data[] = 'Du kom på <b>' . $info[0] . '</b>. plass i lotto'; $data[] = 'vant <b>' . game::format_cash($num) . '</b>'; if (isset($info[1])) { $data[] = 'mottok <b>' . game::format_num($info[1]) . '</b> poeng'; } $melding = sentences_list($data) . "!"; $html = true; break; case "informasjon": $html = $num == 1; $melding = $note; break; case "poker": // winner:utfordrer:pott $info = explode(":", $note, 3); $melding = 'Du brukte for lang tid da du utfordret [user id=' . $info[1] . '] i poker for [b]' . game::format_cash($num) . '[/b]. Spillet valgte kort for deg automatisk..'; switch ($info[0]) { case 1: $melding .= ' Motstanderen vant runden.'; break; case 2: $melding .= ' Du vant runden og fikk [b]' . game::format_cash($info[2]) . '[/b].'; break; default: $melding .= ' Det ble uavgjort og du fikk tilbake [b]' . game::format_cash($info[2]) . '[/b].'; } break; // oppdrag // oppdrag case "oppdrag": $html = true; $melding = $note; break; // døde // døde case "dead": // syntax: instant(int:0/1) $html = true; $melding = $note ? "Du ble angrepet og klarte ikke å stå i mot angrepet. Du døde." : "Du døde på grunn av lav energi og lav helse."; break; case "support": // avsluttet? if (mb_substr($note, 0, 2) == "c:") { $info = explode(":", $note, 3); // c:sum_up_id:su_title $html = true; $melding = '<user id="' . $info[1] . '" /> avsluttet din henvendelse «<a href="' . $__server['relative_path'] . '/support/?a=show&su_id=' . $num . '">' . htmlspecialchars($info[2]) . '</a>» hos support.'; break; } // oppdatert $info = explode(":", $note, 2); // sum_up_id:su_title $html = true; $melding = '<user id="' . $info[0] . '" /> oppdaterte din henvendelse «<a href="' . $__server['relative_path'] . '/support/?a=show&su_id=' . $num . '">' . htmlspecialchars($info[1]) . '</a>» hos support.'; break; case "blokkering": // ny blokkering: 1:type:end:reason // blokkering endret: 2:type:end:reason end og reason kan være blank hvis feltet ikke ble endret // blokkering fjernet: 3:type $info = explode(":", $note); $blokkering = isset(blokkeringer::$types[$num]) ? blokkeringer::$types[$num]['userlog'] : '(type ukjent: ' . $num . ')'; switch ($info[0]) { // ny blokkering case 1: $melding = 'Du har blitt blokkert fra å ' . $blokkering . '. Varer til ' . ess::$b->date->get($info[1])->format() . '. Begrunnelse: ' . urldecode($info[2]); break; // blokkering endret // blokkering endret case 2: $melding = 'Blokkeringen for å ' . $blokkering . ' har blitt endret.'; if ($info[1] != "") { $melding .= ' Ny varighet til ' . ess::$b->date->get($info[1])->format() . '.'; } if ($info[2] != "") { $melding .= ' Ny begrunnelse: ' . urldecode($info[2]); } break; // blokkering fjernet // blokkering fjernet case 3: $melding = 'Blokkeringen for å ' . $blokkering . ' har blitt fjernet.'; break; } break; case "advarsel": // type:reason $info = explode(":", $note, 2); $melding = 'Du har fått en advarsel fra Crewet (kategori: ' . urldecode($info[0]) . '). Begrunnelse: ' . urldecode($info[1]); break; case "soknader": // av enkelthetskyld (og praktiske årsaker) blir meldinger lagt til med full tekst fra søknadssystemet // dette kan utvidees ved en senere anledning // syntax: html:Din søknad [..] // syntax: bb:Din søknad [..] $info = explode(":", $note, 2); if ($info[0] == "html") { $html = true; $melding = $info[1]; } elseif ($info[0] == "bb") { $melding = $info[1]; } break; // spiller bløde ihjel etter angrep // spiller bløde ihjel etter angrep case "player_bleed": $html = true; $melding = '<user id="' . $num . '" /> døde av skadene som ble påført i ditt tidligere angrep.'; break; // vitne // vitne case "vitne": // syntax: drept:attack_type:ble_sett:offer_up_id (num = angriper) $info = explode(":", $note); $html = true; $melding = 'Du vitnet <user id="' . $num . '" /> ' . ($info[0] ? 'drepe' : 'skade') . ' <user id="' . $info[3] . '" />.'; // ble vi oppdaget? if ($info[2]) { $melding .= ' Du ble oppdaget av <user id="' . $num . '" />.'; } break; // mistet beskyttelse // mistet beskyttelse case "beskyttelse_lost": // syntax: gammel_beskyttelse_navn:ny_beskyttelse_navn:ny_beskyttelse_state (navn er urlencode-ed) $info = explode(":", $note); $html = true; $melding = 'Du mistet din beskyttelse <b>' . htmlspecialchars(urldecode($info[0])) . '</b>. Du har nå <b>' . htmlspecialchars(urldecode($info[1])) . '</b> som beskyttelse med en status på <b>' . game::format_num($info[2] * 100, 2) . ' %</b>.'; break; // angrepet? // angrepet? case "attacked": // syntax: lost_health:lost_energy:lost_protection:lost_rankpoints:new_health:new_energy:new_protection:new_rankpoints:gammel_bydel:ny_bydel:bank:cash $info = explode(":", $note); $html = true; // vise hvor mye vi mistet $d = array(); $d[] = '<b>' . game::format_num($info[0] * 100, 2) . ' %</b> helse'; $d[] = '<b>' . game::format_num($info[1] * 100, 2) . ' %</b> energi'; if ($info[2]) { $d[] = '<b>' . game::format_num($info[2] * 100, 2) . ' %</b> beskyttelse'; } $d[] = '<b>' . $info[3] . '</b> poeng'; $melding = 'Du ble angrepet av en spiller og mistet ' . sentences_list($d) . '.'; // vis verdiene etter angrepet $d = array(); $d[] = '<b>' . game::format_num($info[4] * 100, 2) . ' %</b> helse'; $d[] = '<b>' . game::format_num($info[5] * 100, 2) . ' %</b> energi'; if ($info[6]) { $d[] = '<b>' . game::format_num($info[6] * 100, 2) . ' %</b> beskyttelse'; } $melding .= ' Du endte opp med ' . sentences_list($d) . '.'; // mistet vi penger? if (!empty($info[10])) { $melding .= ' Angriperen fikk i tillegg med seg <b>' . game::format_cash($info[10]) . '</b> fra hånda di.'; } // ble vi flyttet til en annen bydel? if (!empty($info[8])) { $melding .= ' Du ble flyttet fra bydelen ' . htmlspecialchars(urldecode($info[8])) . ' til <b>' . htmlspecialchars(urldecode($info[9])) . '</b> siden du hadde under ' . game::format_num(player::HEALTH_MOVE_AUTO * 100) . ' % helse.'; } break; // mistet/nedgradert våpen // mistet/nedgradert våpen case "weapon_lost": // syntax 1: weapon_id:weapon_name:bullets (num = 0) // syntax 2: weapon_id:weapon_name:bullets:new_weapon:new_training (num = 1) $info = explode(":", $note); $html = true; if ($num == 1) { $melding = 'Våpentreningen falt under 25 % og ditt våpen <b>' . htmlspecialchars(urldecode($info[1])) . '</b>' . ($info[2] > 0 ? ' med <b>' . $info[2] . '</b> kuler' : '') . ' ble nedgradert til våpnet <b>' . htmlspecialchars(urldecode($info[3])) . '</b> med ' . game::format_num($info[4] * 100) . ' % våpentrening og 0 kuler.'; } else { $melding = 'Våpentreningen falt under 25 % og du mistet våpenet <b>' . htmlspecialchars(urldecode($info[1])) . '</b>' . ($info[2] > 0 ? ' og <b>' . $info[2] . '</b> kuler' : '') . '.'; } break; // kastet ut av bomberom // kastet ut av bomberom case "bomberom_kicked": // syntax: up_id(som utfører handlingen):urlencode(ff_name):up_brom_expire(når vi egentlig skulle gå ut av bomberommet) num=ff_id $info = explode(":", $note); $html = true; $melding = 'Du ble kastet ut fra bomberommet <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $num . '">' . htmlspecialchars(urldecode($info[1])) . '</a>. Du skulle egentlig sittet til ' . ess::$b->date->get($info[2])->format() . '.'; break; // plassert i bomberom // plassert i bomberom case "bomberom_set": // syntax: up_id(som utfører handlingen):urlencode(ff_name):up_brom_expire(hvor lenge vi er inne) num=ff_id $info = explode(":", $note); $html = true; $melding = '<user id="' . $info[0] . '" /> plasserte deg i bomberommet <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $num . '">' . htmlspecialchars(urldecode($info[1])) . '</a> til ' . ess::$b->date->get($info[2])->format() . '.'; break; // fikk penger fra etterlyst for angrep // fikk penger fra etterlyst for angrep case "etterlyst_receive": // syntax: up_id(som ble angrepet):bool(instant?):bool(bare skadet?) $info = explode(":", $note); $html = true; $melding = '<user id="' . $info[0] . '" /> ' . (!empty($info[2]) ? 'ble skadet av ditt angrep' : 'døde etter ditt angrep') . ' og du mottok ' . game::format_cash($num) . ' som' . (!empty($info[2]) ? ' del av det' : '') . ' spilleren var etterlyst for.'; break; // fikk tilbake penger fra etterlyst fordi spiller ble deaktivert // fikk tilbake penger fra etterlyst fordi spiller ble deaktivert case "etterlyst_deactivate": // syntax: up_id(som ble deaktivert) $html = true; $melding = '<user id="' . $note . '" /> ble deaktivert og du fikk tilbake ' . game::format_cash($num) . ' fra etterlyst som du hadde plassert på spilleren.'; break; // lagt til på etterlyst // lagt til på etterlyst case "etterlyst_add": $melding = 'En spiller la til en dusør for deg på ' . game::format_cash($num) . '.'; break; // kuleauksjon avsluttet uten bud // kuleauksjon avsluttet uten bud case "auksjon_kuler_no_bid": // syntax: a_id(auksjonen) num=antall kuler returnert $html = true; $melding = 'Ingen vant <a href="' . ess::$s['relative_path'] . '/auksjoner?a_id=' . $note . '">auksjonen</a> for kuler du la ut for salg og du fikk tilbake ' . $num . ' kuler.'; break; // vinner kuleauksjon // vinner kuleauksjon case "auksjon_kuler_won": // syntax: a_id(auksjonen):amount(beløp man vant med) num=antall kuler $info = explode(":", $note); $html = true; $melding = 'Du vant <a href="' . ess::$s['relative_path'] . '/auksjoner?a_id=' . $info[0] . '">auksjonen</a> for kuler med ditt bud på ' . game::format_cash($info[1]) . ' og mottok ' . $num . ' kuler.'; break; // mistet garasje // mistet garasje case "garage_lost": // syntax: urlencode(bydel) num=antal biler $html = true; $melding = 'Du mistet garasjen din på ' . htmlspecialchars(urldecode($note)) . ($num > 0 ? ' og ' . fwords("den ene bilen", "de %d bilene", $num) . ' som var i garasjen' : '') . '.'; break; // FF-systemet // FF-systemet case "ff_invite": // ff_id:ff_name:stilling:parent $info = explode(":", $note, 4); $html = true; $melding = '<user id="' . $num . '" /> inviterte deg til <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> for posisjonen <b>' . htmlspecialchars(urldecode($info[2])) . '</b>' . (!empty($info[3]) ? ' underordnet <user id="' . $info[3] . '" />' : '') . '.'; break; case "ff_delinvite": // ff_id:ff_name $info = explode(":", $note, 2); $html = true; if ($num) { $melding = '<user id="' . $num . '" /> fjernet din invitasjon til <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a>.'; } else { $melding = 'Din invitasjon til <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble fjernet.'; } break; case "ff_member_priority": // num = action_user_id // ff_id:ff_name:priority_old:priority_new:parent_old:parent_new $info = explode(":", $note); $html = true; if ($num) { $melding = '<user id="' . $num . '" /> endret din posisjon i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> fra ' . htmlspecialchars(urldecode($info[2])) . (!empty($info[4]) ? ' underordnet <user id="' . $info[4] . '" />' : '') . ' til <b>' . htmlspecialchars(urldecode($info[3])) . '</b>' . (!empty($info[5]) ? ' underordnet <user id="' . $info[5] . '" />' : '') . '.'; } else { // anonym $melding = 'Din posisjon i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble endret fra ' . htmlspecialchars(urldecode($info[2])) . (!empty($info[4]) ? ' underordnet <user id="' . $info[4] . '" />' : '') . ' til <b>' . htmlspecialchars(urldecode($info[3])) . '</b>' . (!empty($info[5]) ? ' underordnet <user id="' . $info[5] . '" />' : '') . '.'; } break; case "ff_member_set_priority": // ff_id:ff_name:priority:parent_up_id $info = explode(":", $note); $html = true; $melding = 'Du ble satt som ' . htmlspecialchars(urldecode($info[2])) . (!empty($info[3]) ? ' underordnet <user id="' . $info[3] . '" />' : '') . ' i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a>.'; break; case "ff_member_parent": // num = action_user_id // ff_id:ff_name:parent_old:parent_new $info = explode(":", $note); $html = true; if ($num) { $melding = '<user id="' . $num . '" /> endret din overordnede i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> fra <user id="' . $info[2] . '" /> til <user id="' . $info[3] . '" />.'; } else { // anonym $melding = 'Din overordnede i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble endret fra <user id="' . $info[2] . '" /> til <user id="' . $info[3] . '" />.'; } break; case "ff_kick": // ff_id:ff_name:note $info = explode(":", $note, 3); $html = true; $note = empty($info[2]) ? '' : ' Begrunnelse: ' . game::bb_to_html(urldecode($info[2])); $melding = '<user id="' . $num . '" /> kastet deg ut fra <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a>.' . $note; break; case "ff_dead": // refstring,name $info = explode(":", $note, 2); $html = true; $melding = ucfirst($info[0]) . ' <b>' . htmlspecialchars(urldecode($info[1])) . '</b> har blitt oppløst.'; break; case "ff_dead_invited": // refstring,name $info = explode(":", $note, 2); $html = true; $melding = ucfirst($info[0]) . ' <b>' . htmlspecialchars(urldecode($info[1])) . '</b> som du var invitert til har blitt oppløst.'; break; case "ff_diverse": $html = true; $melding = $note; break; case "ff_low_health": // ff_id:ff_name:stilling:parent $info = explode(":", $note, 4); $html = true; $melding = 'Du mistet posisjonen som <b>' . htmlspecialchars(urldecode($info[2])) . '</b>' . (!empty($info[3]) ? ' underordnet <user id="' . $info[3] . '" />' : '') . ' i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> grunnet for lav helse.'; break; case "ff_takeover": // ff_id:ff_name_org:ff_name_new:ff_type_ref:ff_stilling $info = explode(":", $note, 5); $html = true; $melding = 'Ditt angrep førte til at ' . htmlspecialchars(urldecode($info[3])) . ' ' . htmlspecialchars(urldecode($info[1])) . ' ble stående uten ' . htmlspecialchars(urldecode($info[4])) . '. Du tok derfor over ' . htmlspecialchars(urldecode($info[3])) . ' som fikk navnet <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[2])) . '</a>.'; break; // forumtråd flyttet // forumtråd flyttet case "forum_topic_move": // ft_id, ft_title, fromname, toname, up_id(hvem gjorde det) $info = explode(":", $note); $html = true; $melding = 'Din forumtråd <a href="' . ess::$s['relative_path'] . '/forum/topic?id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble flyttet fra ' . htmlspecialchars(urldecode($info[2])) . ' til ' . htmlspecialchars(urldecode($info[3])) . '.'; break; // prestasjon oppnådd // prestasjon oppnådd case "achievement": // count(repetisjonsnummer), ac_name, prize // num: ac_id $info = explode(":", $note); $html = true; $rep = $info[0] > 1 ? ' for ' . $info[0] . '. gang' : ''; $prize = !empty($info[2]) ? ' og mottok ' . $info[2] : ''; $melding = 'Du oppnådde prestasjonen «' . htmlspecialchars(urldecode($info[1])) . "»" . $rep . $prize . '.'; break; // hall of fame // hall of fame case "hall_of_fame": $html = true; $melding = 'Du ble den ' . $note . ' og havnet på <a href="' . ess::$s['rpath'] . '/hall_of_fame">Hall of Fame</a>!'; break; default: $type = "Ukjent ({$type})"; $melding = $note; } $melding = $html ? $melding : game::bb_to_html($melding); return $melding; }
private function show() { $data = $this->obj->load_data(); $answers = $this->obj->load_winners(); $my_answers = $this->obj->load_my_answers(); $n = 0; $today = $this->get_today(); $admin_link = $this->check_access_julekalender() ? ' - <a href="?jul">admin</a>' : ''; echo ' <article id="julekalender"> <h1 class="jul_h">Julekalender' . $admin_link . '</h1> <section> <div class="jul_rad"><!--'; foreach ($data as $day) { if ($n++ % 6 == 0 && $n != 1) { echo ' --></div> <div class="jul_rad"><!--'; } $classes = ''; if (!$day) { $classes .= " no_day"; } else { if ($day['j_day'] == $today) { $classes .= " today"; if (isset($_POST['day'])) { $classes .= " hover"; } } else { if ($day['j_day'] > $today) { $classes .= " ahead"; } else { $classes .= " prev"; } } } echo ' --><div class="jul_cell_wrap"> <div class="jul_cell' . $classes . '"> <h1>' . $n . '</h1>'; $my_answer = isset($my_answers[$n]) ? $my_answers[$n] : null; $my_answer_value = $my_answer ? $my_answer['jb_answer'] : ""; // ingen luke if (!$day) { echo ' <div class="jul_data"> <p>Ingen spørsmål denne dagen.</p> </div>'; } elseif ($day['j_day'] > $today) { echo ' <div class="jul_data"> <p>Kom tilbake ' . $n . '. desember for å se denne luken.</p> </div>'; } elseif ($day['j_day'] < $today) { // ikke avsluttet? if ($day['j_status'] == 0) { echo ' <div class="jul_data"> <p class="question">' . $day['j_question'] . '</p> <p>Vinner er ikke annonsert enda.</p>' . ($my_answer_value ? ' <p>Ditt svar: ' . htmlspecialchars($my_answer_value) . '</p>' : '') . ' </div>'; } else { $winners = array(); $user = function ($up_id) { return '<user id="' . $up_id . '" />'; }; if (isset($answers[$day['j_day']][1])) { $winners[] = 'Førsteplass: ' . sentences_list(array_map($user, $answers[$day['j_day']][1])); } if (isset($answers[$day['j_day']][2])) { $winners[] = 'Deltakerpremie: ' . sentences_list(array_map($user, $answers[$day['j_day']][2])); } if (!$winners) { $winners[] = 'Ingen deltok i luken.</p>'; } // riktig/galt svar $answer_info = ''; if ($my_answer_value) { switch ($my_answer['jb_status']) { case 0: $answer_info = 'Feil'; break; case 1: $answer_info = 'Korrekt'; break; default: $answer_info = 'Ikke deltatt'; break; } } echo ' <div class="jul_data"> <p class="question">' . $day['j_question'] . '</p> <p>Riktig svar: ' . $day['j_answer'] . ($my_answer_value ? '<br /> Ditt svar: ' . htmlspecialchars($my_answer_value) . ' (' . $answer_info . ')' : '') . '</p> <p>' . implode('<br /> ', $winners) . '</p> </div>'; } } else { $up_alert = $my_answer && $my_answer['jb_up_id'] != $this->up->id ? ' <p><i style="color: #FF0000"><b>Obs!</b> Ditt svar gjelder ikke din nåværende spiller. Du må trykke "svar" for å delta med din nye spiller.</i></p>' : ''; echo ' <div class="jul_data"> <p class="question">' . $day['j_question'] . '</p> <form action="&rpath;/" method="post"> <input type="hidden" name="day" value="' . $day['j_day'] . '" />' . $up_alert . ' <p><input type="text" class="styled w180" name="answer" value="' . htmlspecialchars(postval("answer", $my_answer_value)) . '" /> ' . show_sbutton("Svar") . '</p> <p><i>Du kan oppdatere svaret ditt frem til midnatt.</i></p> </form> </div>'; } echo ' </div> </div><!--'; } echo ' --></div> <div class="jul_notes"> <p>Det velges en tilfeldig vinner hver dag blant alle korrekte svar. Premie: 10 mill kr og 1 500 poeng.</p> <p>Det velges også ut en tilfeldig deltaker hver dag av alle som deltar: Premie 5 mill kr og 1 000 poeng.</p> <p>Dobbel premie på julaften.</p> </div> </section> </article>'; }
/** * Kjør konkurransen og trekk vinnere */ public function run() { // hent informasjon om runden $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT COUNT(id), COUNT(DISTINCT IF(up_id IS NOT NULL AND up_access_level != 0, l_up_id, NULL))\n\t\t\tFROM lotto LEFT JOIN users_players ON l_up_id = up_id"); $row = $result->fetch(\PDO::FETCH_NUM); $this->antall = $row[0]; $this->brukere = $row[1]; // ingen deltakere? if ($this->antall == 0) { putlog("INFO", "%bLOTTO%b: Ingen spillere deltok i denne lottorunden!"); return; } $this->premier = lotto::$premier; // korriger ranken i forhold til antall spillere som har deltatt if ($this->brukere < lotto::PLAYERS_TOP) { $f = min(1, $this->brukere / lotto::PLAYERS_TOP); for ($i = 0; $i < 5; $i++) { $this->premier[$i][0] = round($this->premier[$i][0] * $f); } } // sett opp fordeling av gevinsten if ($this->brukere < 5) { // beregn hvor mye som blir fordelt i utgangspunktet $tot = 0; for ($i = 0; $i < $this->brukere; $i++) { $tot += $this->premier[$i][1]; } // beregn maks som kan fordeles $max = $tot; for (; $i < 5; $i++) { $max += $this->premier[$i][1]; } // korriger utgangspunktet for ($i = 0; $i < $this->brukere; $i++) { $this->premier[$i][1] = $this->premier[$i][1] * $max / $tot; } } // beregn hvor mye man tjener $lodd_pris = lotto::get_lodd_price(); $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT\n\t\t\t\t{$this->antall} * {$lodd_pris},\n\t\t\t\t{$this->antall} * {$lodd_pris} * {$this->premier[0][1]},\n\t\t\t\t{$this->antall} * {$lodd_pris} * {$this->premier[1][1]},\n\t\t\t\t{$this->antall} * {$lodd_pris} * {$this->premier[2][1]},\n\t\t\t\t{$this->antall} * {$lodd_pris} * {$this->premier[3][1]},\n\t\t\t\t{$this->antall} * {$lodd_pris} * {$this->premier[4][1]}"); $row = $result->fetch(\PDO::FETCH_NUM); $this->pott = $row[0]; for ($i = 1; $i <= 5; $i++) { $this->premier[$i - 1][2] = round($row[$i]); } $this->vinnere = array(); $this->vinnere_text = array(); putlog("INFO", "%bLOTTO%b: " . game::format_number($this->brukere) . " spiller" . ($this->brukere == 1 ? '' : 'e') . " deltok i denne lottorunden med totalt " . game::format_number($this->antall) . " lodd og en pott på " . game::format_cash($this->pott) . "!"); $to = min(5, $this->brukere); for ($i = 1; $i <= $to; $i++) { $this->give_prize($i); } if (count($this->vinnere) == 0) { putlog("INFO", "%bLOTTO%b: Ingen spillere deltok i denne lottorunden!"); } else { // melding $ekstra = ""; $ekstra_l = ""; if (count($this->vinnere_text) > 1) { $e = array(); $el = array(); foreach ($this->vinnere_text as $n => $u) { if ($n == 0) { continue; } $e[] = "%u{$u}%u"; $el[] = '<user id="' . $this->vinnere[$n] . '" />'; } $ekstra = " 2" . (count($this->vinnere_text) > 2 ? '-' . count($this->vinnere_text) : '') . " plass ble " . implode(", ", $e); $ekstra_l = " 2" . (count($this->vinnere) > 2 ? '-' . count($this->vinnere) : '') . " plass ble " . sentences_list($el) . "."; } putlog("INFO", "%bLOTTO%b: %u{$this->vinnere_text[0]}%u vant runden!{$ekstra}"); // live-feed //livefeed::add_row('<user id="'.$this->vinnere[0].'" /> vant lottorunden.'.$ekstra_l); } // fjern loddene som var kjøpt \Kofradia\DB::get()->exec("DELETE FROM lotto"); }
/** * Prestasjoner */ protected static function page_achievements() { ess::$b->page->add_title("Prestasjoner"); kf_menu::page_id("achievements"); // kan ikke se? if (!page_min_side::$pstats) { echo ' <p class="c">Du har ikke tilgang til å se denne siden.</p>'; return; } echo ' <p class="c">Du har oppnådd totalt ' . game::format_num(page_min_side::$active_player->data['up_achievements_points']) . ' prestasjonspoeng.</p> <div class="achievements">'; // hent repetisjoner $rep_all = page_min_side::$active_player->achievements->get_rep_count(); // grupper etter gjentakelsemulighet $list = array("norep" => array(), "rep" => array()); foreach (achievements::$achievements as $a) { $list[$a->data['ac_recurring'] ? 'rep' : 'norep'][] = $a; } foreach ($list as $type => $all) { echo ' <div class="achievements_group"> <p class="ac_group">' . ($type == "rep" ? 'Repeterende prestasjoner:' : 'Enkeltoppnående prestasjoner:') . '</p>'; foreach ($all as $a) { // hent premie $prize = sentences_list($a->get_prizes()); if (empty($prize)) { $prize = ' '; } // sjekk om utført if (isset($rep_all[$a->id])) { if ($a->data['ac_recurring']) { $done = 'Oppnådd ' . fwords("%d gang", "%d ganger", $rep_all[$a->id]['count_upa_id']); $done .= '<br />Sist ' . ess::$b->date->get($rep_all[$a->id]['max_upa_time'])->format(); } else { $done = 'Oppnådd ' . ess::$b->date->get($rep_all[$a->id]['max_upa_time'])->format(); } } else { $done = "Du har ikke oppnådd denne prestasjonen"; } $img = isset($rep_all[$a->id]) && !$a->data['ac_recurring'] ? '<img src="' . STATIC_LINK . '/icon/ruby.png" alt="" title="Oppnådd" /> ' : ''; // fremdrift $progress = ''; $progress_text = ''; $item = new achievement_player_item(page_min_side::$active_player, $a); $item->load_active(); if ($p = $item->get_progress()) { $w = round($p['current'] / $p['target'] * 100, 1); $progress = ' <div class="ac_progress" title="Fremdrift: ' . $p['current'] . ' / ' . $p['target'] . '" style="width: ' . $w . '%"></div>'; $progress_text = ' <p class="ac_progress_text" style="text-align: right;">Fremdrift: ' . $p['current'] . ' / ' . $p['target'] . '</p>'; } echo ' <div class="ac_row">' . $progress . ' <div class="ac_data' . ($progress ? ' ac_data_progress' : '') . '"> <h2>' . htmlspecialchars($a->data['ac_name']) . '</h2>' . ($a->data['ac_text'] ? ' <p class="ac_text">' . $a->data['ac_text'] . '</p>' : '') . ' <p class="ac_prize">Premie: ' . $prize . '</p> <p class="ac_apoints" title="Prestasjonspoeng">' . $img . $a->data['ac_apoints'] . '</p> <p class="ac_status">' . $done . '</p> ' . $progress_text . ' </div> </div>'; } echo ' </div>'; } echo ' </div>'; }
echo "\n* Andre endringer..\n"; \Kofradia\DB::get()->exec("UPDATE {$nc[0]}.scheduler SET s_active = 0 WHERE s_name IN ('bank_renter_info', 'trac_rss', 'wordpress_entries')"); // korrigerer tasks \Kofradia\DB::get()->exec("UPDATE {$nc[0]}.tasks SET t_ant = 0, t_last = 0"); // generer dummy-data // TODO: forumet // TODO: polls // TODO: rapporteringer // TODO: support // dummy: donasjoner $result = \Kofradia\DB::get()->query("SELECT up_id FROM {$no[0]}.users_players WHERE up_access_level != 0 AND up_last_online > " . (time() - 86400 * 7) . " ORDER BY RAND() LIMIT 15"); while ($row = $result->fetch()) { \Kofradia\DB::get()->exec("INSERT INTO {$nc[0]}.donations SET d_up_id = {$row['up_id']}, d_amount = " . rand(10, 100) . ", d_time = " . (time() - rand(0, 604800))); } \Kofradia\DB::get()->exec("SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS"); $files = array(); foreach ($export_names as $name) { $files[] = "export_to_devdb." . ess::$b->date->get()->format("Ymd-His") . ($extended ? '.extended' : '') . ".{$name}.sql"; } // eksporter databasene foreach ($nc as $key => $name) { echo "\n* Eksporterer databasen {$name}..\n"; echo shell_exec("mysqldump --hex-blob --skip-extended-insert --skip-add-drop-table {$name} > {$files[$key]}"); echo " Data eksportert til {$files[$key]}\n"; } // dropp databasene echo "\n* Dropper databasene " . sentences_list($nc) . "\n"; foreach ($nc as $name) { \Kofradia\DB::get()->exec("DROP DATABASE {$name}"); } echo "\nFullført.\n";