Example #1
0
    /**
     * Vis logg
     */
    protected function show()
    {
        $ff_reset = $this->ff->data['ff_time_reset'] && !$this->ff->mod ? " AND ffl_time > {$this->ff->data['ff_time_reset']}" : "";
        // finn ut hva som er tilgjengelig
        $result = \Kofradia\DB::get()->query("SELECT DISTINCT ffl_type FROM ff_log WHERE ffl_ff_id = {$this->ff->id}{$ff_reset}");
        $in_use = array();
        while ($row = $result->fetch()) {
            $in_use[] = $row['ffl_type'];
        }
        $tilgjengelig = array();
        foreach (ff::$log_id as $id => $name) {
            if (in_array($id, $in_use)) {
                $tilgjengelig[] = $id;
            }
        }
        $i_bruk = $tilgjengelig;
        // filter
        $filter = array();
        $matches = false;
        foreach ($_GET as $name => $val) {
            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.");
        }
        if ($filter) {
            ess::$b->page->add_css('.filter_inactive { display: none }');
        } else {
            ess::$b->page->add_css('.filter_active { display: none }');
        }
        if (count($tilgjengelig) > 0) {
            echo '
<form action="" method="get">
	<input type="hidden" name="ff_id" value="' . $this->ff->id . '" />
	<div class="section" style="width: 400px" id="filteroptions">
		<h2>Filter</h2>
		<p class="h_right">
			<span class="logg_filters filter_active"><a href="#" class="box_handle_toggle" rel="f[]">Merk alle</a> <a href="javascript:void(0)" onclick="toggle_display(\'.logg_filters\', event)">Skjul filteralternativer</a></span>
			<span class="logg_filters filter_inactive"><a href="#" onclick="toggle_display(\'.logg_filters\', event)">Vis filteralternativer</a></span>
		</p>
		<div class="logg_filters filter_active">
			<table class="table center tablemt" width="100%">
				<tbody>';
            $tbody = new tbody(min(3, count($tilgjengelig)));
            // 3 kolonner
            foreach ($tilgjengelig as $id) {
                $title = ff::$log[ff::$log_id[$id]][1];
                $aktivt = in_array($id, $i_bruk) && $filter;
                $tbody->append('<input type="checkbox" name="f' . $id . '" rel="f[]" value=""' . ($aktivt ? ' checked="checked"' : '') . ' />' . htmlspecialchars($title), 'class="box_handle"');
            }
            $tbody->clean();
            echo '
				</tbody>
			</table>
			<p class="c">' . show_sbutton("Oppdater") . '</p>
		</div>
	</div>
</form>';
        }
        $where = $ff_reset;
        if ($filter) {
            $where .= ' AND ffl_type IN (' . implode(",", $i_bruk) . ')';
        }
        // sideinformasjon - hent radene på denne siden
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 30);
        $result = $pagei->query("SELECT SQL_CALC_FOUND_ROWS ffl_id, ffl_time, ffl_type, ffl_data, ffl_extra FROM ff_log WHERE ffl_ff_id = {$this->ff->id}{$where} ORDER BY ffl_time DESC, ffl_id DESC");
        if ($result->rowCount() == 0) {
            echo '
<p class="c">
	Ingen logg meldinger ble funnet.
</p>';
        } else {
            // css
            ess::$b->page->add_css('
.ffl_time {
	color: #AAA;
}');
            // logg meldingene
            $logs = array();
            while ($row = $result->fetch()) {
                $day = ess::$b->date->get($row['ffl_time'])->format(date::FORMAT_NOTIME);
                $data = $this->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;
            }
            foreach ($logs as $day => $items) {
                echo '
<div class="section" style="width: 400px">
	<h2>' . $day . '</h2>';
                foreach ($items as $item) {
                    echo '
	<p>' . $item . '</p>';
                }
                echo '
</div>';
            }
            echo '
<p class="c">
	Viser ' . $pagei->count_page . ' av ' . $pagei->total . ' logg melding' . ($pagei->total == 1 ? '' : 'er');
            if ($pagei->pages > 1) {
                echo '<br />
	' . $pagei->pagenumbers(game::address("logg", $_GET, array("side")) . "#logg", game::address("logg", $_GET, array("side"), array("side" => "_pageid_")) . "#logg");
            }
            echo '
</p>';
        }
    }