Beispiel #1
0
 /**
  * Constructor
  * @param integer $s_id seksjonID
  */
 public function __construct($s_id)
 {
     $this->id = (int) $s_id;
     // hent informasjon om forumet
     $result = \Kofradia\DB::get()->query("SELECT fse_id, fse_name, fse_description, fse_params, fse_ff_id FROM forum_sections WHERE fse_id = {$this->id}");
     // fant ikke forumet?
     $this->info = $result->fetch();
     if (!$this->info) {
         $this->error_404();
         return;
     }
     // ff?
     if ($this->info['fse_ff_id']) {
         $this->ff = \ff::get_ff($this->info['fse_ff_id'], \ff::LOAD_IGNORE);
         if (!$this->ff) {
             throw new \HSException("Fant ikke FF med ID {$this->info['fse_ff_id']}.");
         }
     }
     // sett opp params
     $this->params = new \params($this->info['fse_params']);
     // har vi forum-mod tilganger til dette forumet?
     if ($this->ff) {
         $this->fmod = $this->ff->access(2);
     } else {
         $this->fmod = \access::has("forum_mod");
     }
     // ikke vise NY
     if (!\login::$logged_in) {
         self::$fs_check = false;
     }
 }
Beispiel #2
0
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     $this->ff->needaccess(2);
     redirect::store("medlemmer?ff_id={$this->ff->id}");
     $this->page_handle();
     $this->ff->load_page();
 }
Beispiel #3
0
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     $this->ff->needaccess(true);
     ess::$b->page->add_title("Logg");
     $this->show();
     $this->ff->load_page();
 }
Beispiel #4
0
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     $this->ff->needtype("avis");
     redirect::store("avis?ff_id={$this->ff->id}");
     echo '<boxes />';
     $this->page_handle();
     $this->ff->load_page();
 }
Beispiel #5
0
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     $this->ff->needtype("bank");
     $this->ff->needaccess(3);
     redirect::store("bank?ff_id={$this->ff->id}");
     ess::$b->page->add_title("Bankkontroll");
     $this->page_handle();
     $this->ff->load_page();
 }
Beispiel #6
0
    /**
     * Construct
     */
    public function __construct()
    {
        $this->ff = ff::get_ff();
        $this->ff->needaccess(2, "Du har ikke tilgang til denne banken.");
        $this->priority_write = $this->ff->get_bank_write_priority();
        if (false && !access::has("admin")) {
            echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">' . ucfirst($this->ff->type['type']) . 'bank stengt<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<p>' . ucfirst($this->ff->type['type']) . 'banken er stengt for å unngå distribusjon av penger. Pengenivået vil bli justert til å være ihht. verdiene ved midnatt.</p>
	</div>
</div>';
            $this->ff->load_page();
        }
        redirect::store("banken?ff_id={$this->ff->id}");
        ess::$b->page->add_title("Banken");
        $this->nostat = access::is_nostat() && login::$user->player->id != 1;
        // kontroller at vi har bankkonto
        if (!login::$user->player->user->data['u_bank_auth']) {
            ess::$b->page->add_message("Banken for {$this->ff->type['refobj']} benytter seg av passordet i din vanlige bank. For å få tilgang til den må du først opprette et passord. Etter du har opprettet et passord kan du gå tilbake til banken til {$this->ff->type['refobj']}.");
            redirect::handle("banken", redirect::ROOT);
        }
        // kontroller at vi er logget inn i banken
        $this->auth_verify();
        // gi/fjerne tilgang for medeier?
        if ((isset($_POST['pri2_wt']) || isset($_POST['pri2_wf'])) && validate_sid()) {
            $this->pri2_access();
        }
        // vise statistikk
        if (isset($_GET['stats'])) {
            $this->stats();
        }
        // sette inn penger?
        if (isset($_POST['bank_inn']) && !$this->nostat && $this->ff->access($this->priority_write)) {
            $this->sett_inn();
        }
        // ta ut penger
        if (isset($_POST['bank_ut']) && !$this->nostat && $this->ff->access($this->priority_write)) {
            $this->ta_ut();
        }
        // vis banken
        $this->show();
        $this->ff->load_page();
    }
Beispiel #7
0
 /**
  * Construct
  */
 public function __construct()
 {
     $this->ff = ff::get_ff();
     if ($this->ff->type['type'] != "familie" || $this->ff->data['ff_is_crew']) {
         $this->ff->needtype("bomberom");
     }
     $this->ff->needaccess(true);
     $this->fam = $this->ff->type['type'] == "familie";
     // konkurrerende broderskap har ikke bomberom
     if ($this->ff->competition) {
         ess::$b->page->add_message("Broderskapet er i konkurransemodus og har derfor ikke et aktivt bomberom.", "error");
         $this->ff->redirect();
     }
     redirect::store("bomberom?ff_id={$this->ff->id}");
     ess::$b->page->add_title("Bomberommet");
     // sjekk om vi kan kaste ut nå
     $this->check_kick_hour();
     $this->kick_access = $this->ff->access($this->ff->type['type'] == "familie" ? 2 : true);
     // behandle forespørselen
     $this->page_handle();
     // last inn siden
     $this->ff->load_page();
 }
Beispiel #8
0
 /**
  * Behandle auksjonen når den er ferdig
  */
 protected function handle_complete()
 {
     // forsøk å sett som behandlet
     $this->data['a_completed'] = 1;
     $affected = \Kofradia\DB::get()->exec("UPDATE auksjoner SET a_completed = 1 WHERE a_id = {$this->id} AND a_completed = 0");
     // allerede behandlet?
     if ($affected == 0) {
         return;
     }
     // hent vinnerbudet
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ab_id, ab_bid, ab_up_id\n\t\t\tFROM auksjoner_bud\n\t\t\tWHERE ab_a_id = {$this->id} AND ab_active != 0\n\t\t\tORDER BY ab_time DESC LIMIT 1");
     $bud = $result->fetch();
     unset($result);
     // har ikke noe bud?
     if (!$bud) {
         // behandle hver type auksjon forskjellig
         switch ($this->data['a_type']) {
             // firma
             case self::TYPE_FIRMA:
                 // forleng auksjonen med 3 timer fra nå
                 $this->data['a_end'] = time() + 10800;
                 $this->data['a_completed'] = 0;
                 $this->status = self::STATUS_ACTIVE;
                 \Kofradia\DB::get()->exec("UPDATE auksjoner SET a_end = {$this->data['a_end']}, a_completed = 0 WHERE a_id = {$this->id}");
                 break;
                 // kuler
             // kuler
             case self::TYPE_KULER:
                 // gi kulene tilbake til personen som startet auksjonen
                 $kuler = (int) $this->params->get("bullets");
                 if ($kuler && $this->data['a_up_id']) {
                     player::add_log_static("auksjon_kuler_no_bid", $this->id, $kuler, $this->data['a_up_id']);
                     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets = up_weapon_bullets + {$kuler}, up_weapon_bullets_auksjon = GREATEST(0, up_weapon_bullets_auksjon - {$kuler}) WHERE up_id = {$this->data['a_up_id']}");
                 }
                 break;
         }
     } else {
         $up = player::get($bud['ab_up_id']);
         // behandle hver type auksjon forskjellig
         switch ($this->data['a_type']) {
             // firma
             case self::TYPE_FIRMA:
                 // inviter spilleren til firmaet
                 $ff_id = $this->params->get("ff_id");
                 if ($ff_id) {
                     $ff = ff::get_ff($ff_id, ff::LOAD_SCRIPT);
                     $ff->player_set_priority($bud['ab_up_id'], 1);
                     $ff->reset_date_reg(true);
                     // første firma av denne typen i spillet?
                     hall_of_fame::trigger("ff_owner", $ff);
                 }
                 break;
                 // kuler
             // kuler
             case self::TYPE_KULER:
                 // gi kulene til vinneren av auksjonen
                 $kuler = (int) $this->params->get("bullets");
                 if ($kuler) {
                     // oppdater antall auksjonskuler for spilleren som holdt auksjonen
                     if ($this->data['a_up_id']) {
                         \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets_auksjon = GREATEST(0, up_weapon_bullets_auksjon - {$kuler}) WHERE up_id = {$this->data['a_up_id']}");
                     }
                     // gi kulene til vinneren
                     $up->add_log("auksjon_kuler_won", $this->id . ":" . $bud['ab_bid'], $kuler);
                     $up->data['up_weapon_bullets'] += $kuler;
                     $up->data['up_weapon_bullets'] = max(0, $up->data['up_weapon_bullets'] - $kuler);
                     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets = up_weapon_bullets + {$kuler}, up_weapon_bullets_auksjon = GREATEST(0, up_weapon_bullets_auksjon - {$kuler}) WHERE up_id = {$bud['ab_up_id']}");
                 }
                 break;
         }
         // live-feed
         livefeed::add_row('<user id="' . $bud['ab_up_id'] . '" /> vant auksjonen <a href="' . ess::$s['relative_path'] . '/auksjoner?a_id=' . $this->id . '">' . htmlspecialchars($this->data['a_title']) . '</a>.');
         // gi penger til den som la ut auksjonen
         if ($this->data['a_up_id']) {
             \Kofradia\DB::get()->exec("\n\t\t\t\t\tUPDATE users_players\n\t\t\t\t\tSET up_cash = up_cash + {$bud['ab_bid']}, up_auksjoner_total_in = up_auksjoner_total_in = {$bud['ab_bid']}\n\t\t\t\t\tWHERE up_id = {$this->data['a_up_id']}");
         }
         // oppdater statistikk til spilleren som vant budet
         \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_auksjoner_total_out = up_auksjoner_total_out = {$bud['ab_bid']}\n\t\t\t\tWHERE up_id = {$bud['ab_up_id']}");
         // hent alle budene som skal settes inaktive
         $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT ab_id, ab_bid, ab_up_id\n\t\t\t\tFROM auksjoner_bud\n\t\t\t\tWHERE ab_a_id = {$this->id} AND ab_active != 0 AND ab_id != {$bud['ab_id']}");
         while ($row = $result->fetch()) {
             self::set_bud_inactive($row, $this);
         }
         // behandle trigger
         $up->trigger("auksjon_won", array("auksjon" => $this, "bud" => $bud));
     }
     // behandle trigger
     if ($this->data['a_up_id']) {
         $up = player::get($this->data['a_up_id']);
         if ($up) {
             $up->trigger("auksjon_complete", array("auksjon" => $this, "winner_bud" => $bud));
         }
     }
     // oppdater cache
     self::update_cache();
 }
Beispiel #9
0
 /**
  * Frigjør relasjon grunnet lav helse
  */
 public function release_relations_low_health($release_all = null, player $up_attack = null, $instant = null)
 {
     $ret = array("ffm" => array());
     // behandle FF
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ff_id\n\t\t\tFROM ff_members\n\t\t\t\tJOIN ff ON ffm_ff_id = ff_id AND ff_inactive = 0" . ($release_all ? "" : " AND ff_is_crew = 0") . "\n\t\t\tWHERE ffm_up_id = {$this->id} AND ffm_status != " . ff_member::STATUS_KICKED . " AND ffm_status != " . ff_member::STATUS_DEACTIVATED);
     $lost = false;
     while ($row = $result->fetch()) {
         $ff = ff::get_ff($row['ff_id'], ff::LOAD_SCRIPT);
         if ($ff && isset($ff->members['list'][$this->id])) {
             $ffm = $ff->members['list'][$this->id];
             if ($ffm->data['ffm_status'] == ff_member::STATUS_MEMBER) {
                 $ret['ffm'][] = $ffm;
             }
             $ffm->remove_player(true, $instant ? $up_attack : null);
         }
         $lost = true;
     }
     // oppdater tidspunkt for når man mistet FF
     if ($lost) {
         \Kofradia\DB::get()->exec("UPDATE users_players SET up_health_ff_time = 0 WHERE up_id = {$this->id}");
     }
     // fjern fra aktive auksjoner for firma
     if (!$release_all) {
         auksjon::player_release($this, null, auksjon::TYPE_FIRMA);
     }
     return $ret;
 }
Beispiel #10
0
 /**
  * Godta/avslå søknad
  * @param boolean $outcome - om søknaden blir innvilget eller ikke
  * @param integer $ds_id
  * @param string $reason
  */
 public static function decide($outcome, $ds_id, $reason)
 {
     global $_base, $__server;
     $ds_id = (int) $ds_id;
     // hent søknaden
     $soknad = self::get($ds_id);
     // fant ikke søknaden?
     if (!$soknad) {
         return false;
     }
     // er søknaden allerede behandlet?
     if ($soknad['ds_reply_decision'] != 0) {
         return false;
     }
     // typen
     $type = self::get_type($soknad['ds_type']);
     // har vi tilgang til søknaden?
     if (!access::has($type['access'])) {
         return false;
     }
     // sjekk for tom begrunnelse
     $have_reason = trim(game::format_data($reason)) != "";
     // sett opp params
     $params = unserialize($soknad['ds_params']);
     // sett opp søknadsinfo
     $info = self::get_info($type['name'], $soknad, $params);
     // info er ikke gyldig - søknaden er ikke gyldig
     if (!is_array($info)) {
         // slett søknaden
         self::delete($ds_id);
         return $info;
     }
     // avslå søknad
     if (!$outcome) {
         $msg = 'bb:' . $type['title'] . ': Din søknad ble avslått. (' . $info['bb'] . ') Begrunnelse: ' . ($have_reason ? $reason : 'Ingen begrunnelse gitt.');
         // spesielle handlinger
         switch ($type['name']) {
             case "ff_name":
                 // sett tilbakepengene på bankkontoen
                 if (isset($params['cost']) && $params['cost'] > 0) {
                     $msg .= ' Beløpet på ' . game::format_cash($params['cost']) . ' som ble innbetalt ved søknad er satt inn på kontoen igjen.';
                     ff::bank_static(ff::BANK_TILBAKEBETALING, $params['cost'], $soknad['ds_rel_id'], 'Navnsøknad avslått: ' . $params['name']);
                 }
                 break;
         }
     } else {
         $msg = 'bb:' . $type['title'] . ': Din søknad har blitt innvilget. (' . $info['bb'] . ') Begrunnelse: ' . ($have_reason ? $reason : 'Ingen begrunnelse gitt.');
         // spesielle handlinger
         switch ($type['name']) {
             case "ff_name":
                 $ff = ff::get_ff($soknad['ds_rel_id'], ff::LOAD_SCRIPT);
                 if ($ff) {
                     $ff->change_name($params['name'], $soknad['ds_up_id']);
                     // lagre gammelt navn på FF i søknaden
                     $params['name_old'] = $info['ff_name'];
                 }
                 break;
         }
     }
     // legg til logg hos spilleren
     player::add_log_static("soknader", $msg, 0, $soknad['ds_up_id']);
     // oppdater søknaden
     \Kofradia\DB::get()->exec("UPDATE div_soknader SET ds_params = " . \Kofradia\DB::quote(serialize($params)) . ", ds_reply_decision = " . ($outcome ? 1 : -1) . ", ds_reply_reason = " . \Kofradia\DB::quote($reason) . ", ds_reply_up_id = " . self::up_id() . ", ds_reply_time = " . time() . " WHERE ds_id = {$ds_id}");
     // oppdater cache
     tasks::set("soknader", \Kofradia\DB::get()->query("SELECT COUNT(ds_id) FROM div_soknader WHERE ds_reply_decision = 0")->fetchColumn(0));
     return $info;
 }
Beispiel #11
0
<?php

global $_base;
/*
 * Dette scriptet tar ut betalinger fra familier som må betale for å overleve
 * Se "Holde familien oppe" i familiedokumentet
 * 
 * Familier med Crewstatus slipper å betale
 */
/*
 * Dette scriptet skal kjøres hver dag kl. 12.00
 * Scriptet skal ikke kjøres før kl. 12.00
 */
// hent oversikt over familier som skulle ha betalt nå
$time = time();
$result = \Kofradia\DB::get()->query("\n\tSELECT ff_id\n\tFROM ff\n\tWHERE ff_inactive = 0 AND ff_is_crew = 0 AND ff_pay_status = 1 AND ff_pay_next IS NOT NULL AND ff_pay_next <= {$time}");
while ($row = $result->fetch()) {
    $familie = ff::get_ff($row['ff_id'], ff::LOAD_SCRIPT);
    putlog("CREWCHAN", "Broderskapet %u{$familie->data['ff_name']}%u har ikke betalt inn broderskapkostnad og blir nå lagt ned.");
    // legg ned familien
    $familie->dies();
}
// hent ut de familiene som skal trekkes for familiekostnad automatisk
$result = \Kofradia\DB::get()->query("\n\tSELECT ff_id\n\tFROM ff\n\tWHERE ff_inactive = 0 AND ff_is_crew = 0 AND ff_pay_status = 0 AND ff_pay_next IS NOT NULL AND ff_pay_next <= {$time}");
while ($row = $result->fetch()) {
    $familie = ff::get_ff($row['ff_id'], ff::LOAD_SCRIPT);
    // forsøk å trekk fra familiekostnaden
    $familie->pay_scheduler();
}
Beispiel #12
0
 /**
  * Generer kart
  */
 protected function map_draw()
 {
     // hent inn ff
     $this->ff = ff::get_ff(null, ff::LOAD_SILENT);
     if (!$this->ff) {
         page_not_found();
     }
     // har ingen bydel?
     if (!$this->ff->data['br_id']) {
         die("Har ingen bydel.");
     }
     $map = new bydeler_map();
     $map->mini_map($this->ff->data['br_id']);
     $map->push();
     die;
 }
Beispiel #13
0
    /**
     * Hendelsene til spilleren
     */
    protected static function page_log()
    {
        // kan ikke se?
        if (!page_min_side::$pstats) {
            echo '
	<p class="c">Du har ikke tilgang til å se denne siden.</p>';
            return;
        }
        global $_game;
        ess::$b->page->add_title("Hendelser");
        ess::$b->page->add_css('
.gamelog { width: 80%; margin: 0 auto }
.gamelog .time { color: #888888; padding-right: 2px }
.ffl_time {
	color: #AAA;
}
.log_section {
	background-color: #1C1C1C;
	padding: 15px 15px 5px;
	margin: 30px 0;
	border: 10px solid #111111;
}');
        echo '
	<div class="gamelog">';
        $gamelog = new gamelog();
        // finn ut hva som er tilgjengelig
        $result = \Kofradia\DB::get()->query("SELECT type, COUNT(id) AS count FROM users_log WHERE ul_up_id IN (0, " . page_min_side::$active_player->id . ") GROUP BY type");
        $in_use = array();
        $count = array();
        $total = 0;
        while ($row = $result->fetch()) {
            $in_use[] = $row['type'];
            $count[$row['type']] = $row['count'];
        }
        $tilgjengelig = array();
        foreach (gamelog::$items_id as $id => $name) {
            if (in_array($id, $in_use)) {
                $tilgjengelig[$id] = $id;
            }
        }
        // fjern ting vi ikke har tilgang til
        unset($tilgjengelig[gamelog::$items['crewforum_emne']], $count[gamelog::$items['crewforum_emne']]);
        unset($tilgjengelig[gamelog::$items['crewforum_svar']], $count[gamelog::$items['crewforum_svar']]);
        unset($tilgjengelig[gamelog::$items['crewforuma_emne']], $count[gamelog::$items['crewforuma_emne']]);
        unset($tilgjengelig[gamelog::$items['crewforuma_svar']], $count[gamelog::$items['crewforuma_svar']]);
        unset($tilgjengelig[gamelog::$items['crewforumi_emne']], $count[gamelog::$items['crewforumi_emne']]);
        unset($tilgjengelig[gamelog::$items['crewforumi_svar']], $count[gamelog::$items['crewforumi_svar']]);
        $i_bruk = $tilgjengelig;
        $total = array_sum($count);
        // nye hendelser (viser også nye hendelser i firma/familie)?
        if ((page_min_side::$active_player->data['up_log_ff_new'] > 0 || page_min_side::$active_player->data['up_log_new'] > 0) && page_min_side::$active_own) {
            echo '
		<h1 class="c">Nye hendelser</h1>';
            // nye hendelser i ff?
            if (page_min_side::$active_player->data['up_log_ff_new'] > 0) {
                // totalt antall logg hendelser som blir vist
                $counter_total = 0;
                // hent FF vi skal hente logg for
                $ffm_result = \Kofradia\DB::get()->query("SELECT ffm_ff_id, ffm_log_new FROM ff_members WHERE ffm_up_id = " . page_min_side::$active_player->id . " AND ffm_status = 1 AND ffm_log_new > 0");
                while ($ffm = $ffm_result->fetch()) {
                    $ff = ff::get_ff($ffm['ffm_ff_id'], ff::LOAD_SILENT);
                    if (!$ff) {
                        continue;
                    }
                    // hent hendelsene
                    $result = \Kofradia\DB::get()->query("SELECT ffl_id, ffl_time, ffl_type, ffl_data, ffl_extra FROM ff_log WHERE ffl_ff_id = {$ff->id} ORDER BY ffl_time DESC LIMIT {$ffm['ffm_log_new']}");
                    if ($result->rowCount() > 0) {
                        $logs = array();
                        while ($row = $result->fetch()) {
                            $counter_total++;
                            $day = ess::$b->date->get($row['ffl_time'])->format(date::FORMAT_NOTIME);
                            $data = $ff->format_log($row['ffl_id'], $row['ffl_time'], $row['ffl_type'], $row['ffl_data'], $row['ffl_extra']);
                            $logs[$day][] = '<span class="ffl_time">' . ess::$b->date->get($row['ffl_time'])->format("H:i") . ':</span> ' . $data;
                        }
                        echo '
		<div class="log_section">';
                        $ff->load_header();
                        foreach ($logs as $day => $items) {
                            echo '
			<div class="section">
				<h2>' . $day . '</h2>';
                            foreach ($items as $item) {
                                echo '
				<p>' . $item . '</p>';
                            }
                            echo '
			</div>';
                        }
                        echo '
			<p class="c"><a href="ff/logg?ff_id=' . $ff->id . '">Vis alle hendelsene for ' . $ff->type['refobj'] . ' &raquo;</a></p>';
                        $ff->load_footer();
                        echo '
		</div>';
                    }
                }
                // ble det ikke vist noen hendelser?
                if ($counter_total == 0) {
                    echo '
		<div class="bg1_c xsmall">
			<h1 class="bg1">Logg for firma og broderskap<span class="left"></span><span class="right"></span></h1>
			<div class="bg1">
				<p>Ingen nye hendelser tilknyttet firma eller broderskap.</p>
			</div>
		</div>';
                }
                // nullstill telleren
                \Kofradia\DB::get()->exec("UPDATE ff_members SET ffm_log_new = 0 WHERE ffm_up_id = " . page_min_side::$active_player->id);
                \Kofradia\DB::get()->exec("UPDATE users_players SET up_log_ff_new = 0 WHERE up_id = " . page_min_side::$active_player->id);
                page_min_side::$active_player->data['up_log_ff_new'] = 0;
            }
            // nye normale hendelser
            if (page_min_side::$active_player->data['up_log_new'] > 0) {
                ess::$b->page->add_css('.ny { color: #FF0000 }');
                $i_bruk[] = 'NULL';
                $where = ' AND type IN (' . implode(",", $i_bruk) . ')';
                $result = \Kofradia\DB::get()->query("SELECT time, type, note, num FROM users_log WHERE ul_up_id IN (0, " . page_min_side::$active_player->id . "){$where} ORDER BY time DESC, id DESC LIMIT " . page_min_side::$active_player->data['up_log_new']);
                if ($result->rowCount() == 0) {
                    echo '
		<p class="c">Ingen hendelser ble funnet.</p>';
                } else {
                    // vis hendelsene
                    $logs = array();
                    while ($row = $result->fetch()) {
                        $day = ess::$b->date->get($row['time'])->format(date::FORMAT_NOTIME);
                        $data = $gamelog->format_log($row['type'], $row['note'], $row['num']);
                        $logs[$day][] = '
				<p><span class="time"><span class="ny">Ny!</span> - ' . ess::$b->date->get($row['time'])->format("H:i") . ':</span> ' . $data . '</p>';
                    }
                    foreach ($logs as $day => $items) {
                        echo '
		<div class="bg1_c">
			<h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1>
			<div class="bg1">';
                        foreach ($items as $item) {
                            echo $item;
                        }
                        echo '
			</div>
		</div>';
                    }
                    echo '
				<p class="c">Viser ' . page_min_side::$active_player->data['up_log_new'] . ' <b>ny' . (page_min_side::$active_player->data['up_log_new'] == 1 ? '' : 'e') . '</b> hendelse' . (page_min_side::$active_player->data['up_log_new'] == 1 ? '' : 'r') . '<br /><a href="' . htmlspecialchars(page_min_side::addr()) . '">Se full oversikt</a></p>';
                }
                \Kofradia\DB::get()->exec("UPDATE users_players SET up_log_new = 0 WHERE up_id = " . page_min_side::$active_player->id);
                page_min_side::$active_player->data['up_log_new'] = 0;
            } else {
                echo '
		<div class="bg1_c small bg1_padding">
			<h1 class="bg1">Normale hendelser<span class="left"></span><span class="right"></span></h1>
			<div class="bg1" id="logg">
				<p class="c"><a href="' . htmlspecialchars(page_min_side::addr()) . '">Vis oversikt over alle normale hendelser &raquo;</a></p>
			</div>
		</div>';
            }
        } else {
            // filter
            $filter = array();
            foreach ($_GET as $name => $val) {
                $matches = NULL;
                if (preg_match("/^f([0-9]+)\$/Du", $name, $matches) && in_array($matches[1], $tilgjengelig)) {
                    $filter[] = $matches[1];
                }
            }
            if (count($filter) == 0) {
                $filter = false;
            } else {
                $i_bruk = $filter;
                $filter = true;
                ess::$b->page->add_message("Du har aktivert et filter og viser kun bestemte enheter.");
            }
            // hva skal vi vise?
            if (!$filter) {
                echo '
		<p class="c filterbox"><a href="#" onclick="toggle_display(\'.filterbox\', event)">Vis filteralternativer</a></p>';
            }
            echo '
		<div' . (!$filter ? ' style="display: none"' : '') . ' class="filterbox bg1_c">
			<h1 class="bg1">Filter<span class="left2"></span><span class="right2"></span></h1>
			<div class="bg1">
				<p class="c">Velg filter (<a href="#" class="box_handle_toggle" rel="f[]">Merk alle</a>)</p>
				<form action="" method="get">' . (!page_min_side::$active_own || !page_min_side::$active_player->active ? '
					<input type="hidden" name="up_id" value="' . page_min_side::$active_player->id . '" />' : '') . '
					<input type="hidden" name="a" value="log" />
					<table class="table center" width="100%">
						<tbody>';
            $tbody = new tbody(3);
            // 3 kolonner
            foreach ($tilgjengelig as $id) {
                $title = gamelog::$items_name[$id];
                $aktivt = in_array($id, $i_bruk) && $filter;
                $ant = $count[$id];
                $tbody->append('<input type="checkbox" name="f' . $id . '" rel="f[]" value=""' . ($aktivt ? ' checked="checked"' : '') . ' />' . htmlspecialchars($title) . ' <span class="dark">(' . $ant . ' stk)</span>', 'class="box_handle"');
            }
            $tbody->clean();
            echo '
						</tbody>
					</table>
					<p class="c">' . show_sbutton("Oppdater") . '</p>
				</form>
			</div>
		</div>';
            $i_bruk[] = "NULL";
            $where = ' AND type IN (' . implode(",", $i_bruk) . ')';
            // sideinformasjon - hent loggene på denne siden
            $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, max(50, page_min_side::$active_player->data['up_log_new']));
            $result = $pagei->query("SELECT time, type, note, num FROM users_log WHERE ul_up_id IN (0, " . page_min_side::$active_player->id . "){$where} ORDER BY time DESC, id DESC");
            if ($result->rowCount() == 0) {
                echo '
		<p class="c">Ingen hendelser ble funnet.</p>';
            } else {
                echo '
		<p class="c">Totalt har du <b>' . game::format_number($total) . '</b> hendelse' . ($total == 1 ? '' : 'r') . '.</p>';
                if ($pagei->pages > 1) {
                    echo '
		<p class="c">' . address::make($_GET, "", $pagei) . '</p>';
                }
                // hendelsene
                $logs = array();
                $i = 0;
                $e = $pagei->start;
                while ($row = $result->fetch()) {
                    $day = ess::$b->date->get($row['time'])->format(date::FORMAT_NOTIME);
                    $data = $gamelog->format_log($row['type'], $row['note'], $row['num']);
                    $ny = $e < page_min_side::$active_player->data['up_log_new'];
                    $logs[$day][] = '
				<p><span class="time">' . ($ny ? '<span class="ny">Ny!</span> - ' : '') . '' . ess::$b->date->get($row['time'])->format("H:i") . ':</span> ' . $data . '</p>';
                    $e++;
                }
                foreach ($logs as $day => $items) {
                    echo '
		<div class="bg1_c">
			<h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1>
			<div class="bg1">';
                    foreach ($items as $item) {
                        echo $item;
                    }
                    echo '
			</div>
		</div>';
                }
                echo '
		<p class="c">Viser ' . $pagei->count_page . ' av ' . $pagei->total . ' hendelse' . ($pagei->total == 1 ? '' : 'r') . '</p>';
                if ($pagei->pages > 1) {
                    echo '
		<p class="c">' . address::make($_GET, "", $pagei) . '</p>';
                }
            }
        }
        echo '
	</div>';
    }