コード例 #1
0
ファイル: Stats.php プロジェクト: Kuzat/kofradia
 /**
  * Hent beste ranker siste 24 timer
  */
 public static function getBestRankers($limit = null)
 {
     $limit = (int) ($limit ?: 1);
     // tidsperiode
     $d = \ess::$b->date->get();
     $a = $d->format("H") < 21 ? 2 : 1;
     $d->modify("-{$a} day");
     $d->setTime(21, 0, 0);
     $date_from = $d->format("U");
     $d->modify("+1 day");
     $date_to = $d->format("U");
     // hent spiller
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, sum_uhi_points, up_points, up_last_online, up_profile_image_url, upr_rank_pos\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\t\tSELECT uhi_up_id, SUM(uhi_points) sum_uhi_points\n\t\t\t\t\tFROM users_hits\n\t\t\t\t\tWHERE uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}\n\t\t\t\t\tGROUP BY uhi_up_id\n\t\t\t\t\tHAVING sum_uhi_points > 0\n\t\t\t\t\tORDER BY sum_uhi_points DESC\n\t\t\t\t\tLIMIT {$limit}\n\t\t\t\t) ref,\n\t\t\t\tusers_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE uhi_up_id = up_id");
     if ($result->rowCount() == 0) {
         return array();
     }
     $players = array();
     $up_id = array();
     while ($row = $result->fetch()) {
         $row['ff_links'] = array();
         $players[$row['up_id']] = $row;
         $up_id[] = $row['up_id'];
     }
     // hent familier hvor spilleren er medlem
     $ff = \ff::get_ff_list($up_id, \ff::TYPE_FAMILIE);
     foreach ($ff as $row) {
         $players[$row['ffm_up_id']]['ff'][] = $row;
         $players[$row['ffm_up_id']]['ff_links'][] = $row['link'];
     }
     return $players;
 }
コード例 #2
0
ファイル: Category.php プロジェクト: Kuzat/kofradia
 /**
  * Last inn siden
  */
 public function load_page()
 {
     if ($this->ff) {
         $this->ff->load_page();
     }
     \ess::$b->page->load();
 }
コード例 #3
0
ファイル: panel.php プロジェクト: Kuzat/kofradia
 /**
  * Ta ut kuler
  */
 protected function bullets_out()
 {
     if (!login::$user->player->weapon) {
         redirect::handle();
     }
     $num = (int) postval("bullets_out", 0);
     if ($num <= 0) {
         redirect::handle();
     }
     // på vegne av en spiller?
     $up = login::$user->player;
     $real_up = null;
     if ($this->ff->uinfo->data['ffm_priority'] != 4 && !empty($_POST['bullets_up'])) {
         // har vi ikke ansvar for denne spilleren?
         $id = postval("bullets_up");
         if (!isset($this->ff->members['members'][$id]) || $this->ff->uinfo->data['ffm_priority'] == 3 && $this->ff->members['members'][$id]->data['ffm_parent_up_id'] != login::$user->player->id || $this->ff->uinfo->data['ffm_priority'] < 3 && $this->ff->members['members'][$id]->data['ffm_priority'] != 4) {
             ess::$b->page->add_message("Ugyldig spillervalg.", "error");
             redirect::handle();
         }
         $real_up = $up;
         $up = player::get($id);
         // har ikke våpen?
         if (!$up->weapon) {
             ess::$b->page->add_message('Spilleren <user id="' . $up->id . '" /> har ikke noe våpen og har derfor ikke plass til noen kuler.', "error");
             redirect::handle();
         }
     }
     $ret = $this->ff->bullets_out($num, $up, $real_up);
     switch ($ret) {
         case "missing":
             ess::$b->page->add_message("Det er ikke så mange kuler i broderskapet.", "error");
             break;
         case "full":
             if ($real_up) {
                 $f = max(0, $up->weapon->data['bullets'] - $up->data['up_weapon_bullets'] - $up->data['up_weapon_bullets_auksjon']);
                 ess::$b->page->add_message('<user id="' . $up->id . '" /> har ' . ($f == 0 ? 'ikke plass til flere kuler' : 'bare plass til ' . fwords("%d kule til", "%d kuler til", $f)) . '.', "error");
             } else {
                 ess::$b->page->add_message("Du har ikke plass til så mange kuler.", "error");
             }
             break;
         default:
             if ($real_up) {
                 ess::$b->page->add_message("Du gav " . fwords("%d kule", "%d kuler", $num) . ' til <user id="' . $up->id . '" /> fra kulelageret til broderskapet.');
             } else {
                 ess::$b->page->add_message("Du tok ut " . fwords("%d kule", "%d kuler", $num) . " fra kulelageret til broderskapet.");
             }
             redirect::handle();
     }
 }
コード例 #4
0
ファイル: avis.php プロジェクト: Kuzat/kofradia
    /**
     * Vise publiserte utgivelser
     */
    protected function published()
    {
        ess::$b->page->add_title("Utgivelser");
        // hent publiserte utvivelser
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 10);
        $ffnp_q = login::$logged_in ? "ffnp_ffn_id = ffn_id AND ffnp_up_id = " . login::$user->player->id : "FALSE";
        $result = $pagei->query("SELECT ffn_id, ffn_published_time, ffn_cost, ffn_title, ffn_sold, ffn_description, ffnp_time FROM ff_newspapers LEFT JOIN ff_newspapers_payments ON {$ffnp_q} WHERE ffn_ff_id = {$this->ff->id} AND ffn_published != 0 ORDER BY ffn_published_time DESC");
        echo '
<p class="c">Utgivelser</p>';
        // ingen publiserte utgivelser?
        if ($result->rowCount() == 0) {
            echo '
<p class="c">Ingen utgivelser er publisert.</p>';
        } else {
            echo '
<p class="c">' . $pagei->total . ' utgivelse' . ($pagei->total == 1 ? '' : 'r') . ' er publisert:</p>';
            #$i = $pagei->total - ($pagei->per_page*($pagei->active-1));
            while ($row = $result->fetch()) {
                echo '
<div class="section center w200">
	<h2><a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">' . htmlspecialchars($row['ffn_title']) . '</a></h2>
	<dl class="dd_right">
		<dt>Publisert</dt>
		<dd>' . ess::$b->date->get($row['ffn_published_time'])->format() . '</dd>
		<dt>Solgte utgivelser</dt>
		<dd>' . game::format_number($row['ffn_sold']) . '</dd>
		<dt>Pris</dt>
		<dd>' . game::format_cash($row['ffn_cost']) . '</dd>
		<dt>Kjøpt?</dt>
		<dd>' . ($row['ffnp_time'] ? '<a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">Ja</a> (' . ess::$b->date->get($row['ffnp_time'])->format() . ')' : 'Nei [<a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">Kjøp</a>]') . (access::is_nostat() ? ' (nostat)' : '') . '</dd>
	</dl>
	<div class="p">' . $this->ff->format_description($row['ffn_description']) . '</div>
</div>';
                #$i--;
            }
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
<p class="c">Navigasjon: ' . $pagei->pagenumbers() . '</p>';
            }
        }
    }
コード例 #5
0
ファイル: bomberom.php プロジェクト: Kuzat/kofradia
    /**
     * Kaste ut en spiller
     */
    protected function kick_handle()
    {
        // valider sid
        validate_sid();
        // kan vi ikke kaste ut noen spillere nå?
        if (login::$user->player->fengsel_check() || login::$user->player->bomberom_check() || login::$user->player->data['up_b_id'] != $this->ff->data['br_b_id'] || !$this->kick_hour_ok) {
            redirect::handle();
        }
        // mangler spillervalg?
        if (!isset($_POST['player'])) {
            ess::$b->page->add_message("Du må velge en spiller du vil kaste ut.", "error");
            redirect::handle();
        }
        // er ikke spilleren i bomberommet?
        $up_id = (int) $_POST['player'];
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT u_email, up_id, up_name, up_access_level, up_brom_expire\n\t\t\tFROM users_players JOIN users ON up_u_id = u_id\n\t\t\tWHERE up_id = {$up_id} AND up_brom_ff_id = {$this->ff->id} AND up_brom_expire > " . time() . " AND up_access_level != 0");
        $cost = $this->fam ? self::KICK_PLAYER_COST_FAMILIE : self::KICK_PLAYER_COST;
        $up = $result->fetch();
        if (!$up) {
            ess::$b->page->add_message("Fant ikke spilleren.", "error");
            redirect::handle();
        }
        // sett opp skjema
        $form = \Kofradia\Form::getByDomain("other", login::$user);
        // har vi bekreftet ønsket om å kaste ut en spiller?
        if (isset($_POST['confirm']) && $form->validateHashOrAlert(null, "Kast ut spiller fra bomberom")) {
            \Kofradia\DB::get()->beginTransaction();
            // forsøk å trekk fra pengene
            if (!$this->ff->bank(ff::BANK_BETALING, $cost, "Kaste ut spilleren [user id={$up['up_id']}] fra bomberommet")) {
                ess::$b->page->add_message("Det er ikke nok penger i " . ($this->fam ? "broderskapbanken" : "firmabanken") . ".", "error");
                \Kofradia\DB::get()->commit();
            } else {
                // finn en tilfeldig bydel å plassere spilleren
                $result = \Kofradia\DB::get()->query("SELECT id, name FROM bydeler WHERE active != 0 ORDER BY RAND() LIMIT 1");
                $b_id = $result->fetchColumn(0);
                // forsøk å trekk ut spilleren fra bomberommet
                $a = \Kofradia\DB::get()->exec("\n\t\t\t\t\tUPDATE users_players\n\t\t\t\t\tSET up_brom_expire = 0, up_b_id = {$b_id}\n\t\t\t\t\tWHERE up_id = {$up['up_id']} AND up_brom_ff_id = {$this->ff->id} AND up_brom_expire = {$up['up_brom_expire']} AND up_access_level != 0");
                // feilet?
                if ($a == 0) {
                    // avbryt transaksjon
                    \Kofradia\DB::get()->rollback();
                    ess::$b->page->add_message("Kunne ikke kaste ut spilleren fra bomberommet.", "error");
                } else {
                    // legg til hendelse hos spilleren
                    player::add_log_static("bomberom_kicked", login::$user->player->id . ":" . urlencode($this->ff->data['ff_name']) . ":{$up['up_brom_expire']}", $this->ff->id, $up['up_id']);
                    // send e-post til spilleren
                    $email = new email();
                    $email->text = 'Hei,

Din spiller ble kastet ut fra bomberommet av ' . ($this->fam ? 'broderskapet' : 'firmaet') . ' som styrer bomberommet.

--
www.kofradia.no';
                    $email->send($up['u_email'], "Kastet ut av bomberom");
                    // firmalogg
                    $this->ff->add_log("bomberom_kick", login::$user->player->id . ":{$up['up_id']}:{$up['up_brom_expire']}");
                    // logg
                    putlog("DF", "BOMBEROM: {$up['up_name']} ble kastet ut av bomberommet {$this->ff->data['ff_name']} av " . login::$user->player->data['up_name'] . " " . ess::$s['spath'] . "/min_side?up_id={$up['up_id']}");
                    ess::$b->page->add_message('Du kastet ut <user id="' . $up['up_id'] . '" /> fra bomberommet. ' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' betalte et gebyr på ' . game::format_cash($cost) . '.');
                    \Kofradia\DB::get()->commit();
                    redirect::handle();
                }
            }
        }
        ess::$b->page->add_title("Kaste ut spiller");
        // vis informasjon
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Kaste ut spiller fra bomberommet<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<p>Du er i ferd med å kaste ut ' . game::profile_link($up['up_id'], $up['up_name'], $up['up_access_level']) . ' fra bomberommet.</p>
		<p>Spilleren skal i utgangspunktet sitte i bomberommet til ' . ess::$b->date->get($up['up_brom_expire'])->format(date::FORMAT_SEC) . ' (' . game::counter($up['up_brom_expire'] - time()) . ' gjenstår).</p>
		<p>For å kaste ut spilleren må det betales en avgift på <b>' . game::format_cash($cost) . '</b> som betales fra ' . ($this->fam ? 'broderskapkontoen' : 'firmakontoen') . '.</p>';
        // har vi ikke nok penger i firmakontoen?
        if ($this->ff->data['ff_bank'] < $cost) {
            echo '
		<p>' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' har for øyeblikket kun ' . game::format_cash($this->ff->data['ff_bank']) . ' på konto, noe som ikke er nok. ' . ($this->ff->access(1) ? '<a href="' . ess::$s['relative_path'] . '/ff/banken?ff_id=' . $this->ff->id . '">Sett inn penger på ' . ($this->fam ? 'broderskapkontoen' : 'firmakontoen') . '</a>' : '<a href="' . ess::$s['relative_path'] . '/ff/panel?ff_id=' . $this->ff->id . '">Donér til ' . ($this->fam ? 'broderskapet' : 'firmaet') . '</a>') . ' først for å kunne kaste ut spilleren.</p>
		<p class="c"><a href="bomberom?ff_id=' . $this->ff->id . '">Tilbake</a></p>';
        } else {
            echo '
		<p>' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' har for øyeblikket ' . game::format_cash($this->ff->data['ff_bank']) . ' på konto.</p>
		<form action="" method="post">
			' . $form->getHTMLInput() . '
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="player" value="' . $up['up_id'] . '" />
			<input type="hidden" name="kick" />
			<p class="c">' . show_sbutton("Bekreft, kast ut spilleren", 'name="confirm"') . ' <a href="bomberom?ff_id=' . $this->ff->id . '">Avbryt</a></p>
		</form>';
        }
        echo '
	</div>
</div>';
        $this->ff->load_page();
    }
コード例 #6
0
ファイル: class.player.php プロジェクト: Kuzat/kofradia
 /**
  * Spiller dør av lite helse/deaktiverer seg selv
  */
 public function bleed_handle()
 {
     $expire = time() - 3600 * 4;
     $by_up = null;
     // er dødsfallet innenfor tidspunktet hvor noen kan få kreditt for det?
     if ($this->data['up_attacked_time'] >= $expire) {
         // har vi en spiller som vi skal gi kreditt?
         if ($this->data['up_attacked_up_id']) {
             $by_up = player::get($this->data['up_attacked_up_id']);
             if ($by_up) {
                 // gi kreditt
                 \Kofradia\DB::get()->exec("UPDATE users_players SET up_attack_bleed_num = up_attack_bleed_num + 1 WHERE up_id = {$by_up->id}");
                 // gi beskjed til spilleren om at denne spillerne blødde ihjel
                 $by_up->add_log("player_bleed", NULL, $this->id);
             }
         }
         // har vi noen FF som skal få kreditt?
         if ($this->data['up_attacked_ff_id_list']) {
             ff::attack_update(false, "bleed", array_map("intval", explode(",", $this->data['up_attacked_ff_id_list'])));
         }
     }
     // oppdater ff spilleren er med i
     $this->attacked_ff_update("bleed");
     return $by_up;
 }
コード例 #7
0
ファイル: class.ff.php プロジェクト: Kuzat/kofradia
 /**
  * Fjern salg av FF hvis brukeren er involvert i det
  */
 public function sell_remove()
 {
     $sell_status = $this->ff->sell_status();
     if ($sell_status) {
         if ($sell_status['up_id'] == $this->id) {
             // avslå salg
             $this->ff->sell_reject();
         } elseif ($sell_status['init_up_id'] == $this->id) {
             // trekk tilbake salg
             $this->ff->sell_abort();
         }
     }
 }
コード例 #8
0
ファイル: logg.php プロジェクト: Kuzat/kofradia
    /**
     * 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>';
        }
    }
コード例 #9
0
ファイル: banken.php プロジェクト: Kuzat/kofradia
    /**
     * Vis banken
     */
    protected function show()
    {
        echo '
<h1 class="c">Banken</h1>

<div class="section" style="width: 250px">
	<h2>Bankinformasjon</h2>
	<dl class="dd_right">
		<dt>Balanse</dt>
		<dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd>
	</dl>';
        // tilgang til medeier
        if ($this->ff->access(1)) {
            echo '
	<form action="" method="post">
		<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />';
            if ($this->priority_write == 1) {
                echo '
		<p>' . ucfirst($this->ff->type['priority'][2]) . ' har ikke tilgang til å sette inn/ta ut penger fra denne banken.</p>
		<p class="c">' . show_sbutton("Gi tilgang til {$this->ff->type['priority'][2]}", 'name="pri2_wt"') . '</p>';
            } else {
                echo '
		<p>' . ucfirst($this->ff->type['priority'][2]) . ' <b>har</b> tilgang til å sette inn/ta ut penger fra denne banken.</p>
		<p class="c">' . show_sbutton("Fjern tilgang til {$this->ff->type['priority'][2]}", 'name="pri2_wf"') . '</p>';
            }
            echo '
	</form>';
        }
        echo '
	<p class="c"><a href="banken?ff_id=' . $this->ff->id . '&amp;stats">Vis statistikk over pengeflyt i ' . $this->ff->type['refobj'] . ' &raquo;</a></p>
</div>';
        // kun boss kan ta ut og sette inn penger
        if ($this->ff->access($this->priority_write) && !$this->nostat) {
            echo '
<div style="margin: 0 auto; width: 420px">

<!-- sett inn penger -->
<div style="width: 205px; float: left; margin-right: 10px">
	<div class="section">
		<form action="" method="post">
			<h2>Sett inn penger</h2>
			<dl class="dd_right dl_2x">
				<dt>Beløp</dt>
				<dd><input type="text" name="bank_inn" class="styled w90" value="0" style="margin-right: 3px" />' . show_button("Alt", 'onclick="this.previousSibling.value=\'' . game::format_cash(login::$user->player->data['up_cash']) . '\'"') . '
				
				<dt>Notat</dt>
				<dd><input type="text" name="note" value="" maxlength="50" class="styled w120" /></dd>
			</dl>
			<h4>' . show_sbutton("Sett inn") . '</h4>
		</form>
	</div>
</div>

<!-- ta ut penger -->
<div style="width: 205px; float: left">
	<div class="section">
		<form action="" method="post">
			<h2>Ta ut penger</h2>
			<dl class="dd_right dl_2x">
				<dt>Beløp</dt>
				<dd><input type="text" name="bank_ut" class="styled w90" value="0" style="margin-right: 3px" />' . show_button("Alt", 'onclick="this.previousSibling.value=\'' . game::format_cash($this->ff->data['ff_bank']) . '\'"') . '
				
				<dt>Notat</dt>
				<dd><input type="text" name="note" value="" maxlength="50" class="styled w120" /></dd>
			</dl>
			<h4>' . show_sbutton("Ta ut") . '</h4>
		</form>
	</div>
</div>
<div class="clear"></div>

</div>';
        }
        echo '
<div class="fhr"></div>';
        $ff_reset = $this->ff->data['ff_time_reset'] && !$this->ff->mod ? " AND ffbl_time > {$this->ff->data['ff_time_reset']}" : "";
        // sideinformasjon - hent siste bevegelser
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
        $result = $pagei->query("SELECT ffbl_type, ffbl_amount, ffbl_up_id, ffbl_note, ffbl_time, ffbl_balance FROM ff_bank_log WHERE ffbl_ff_id = {$this->ff->id}{$ff_reset} ORDER BY ffbl_time DESC");
        if ($result->rowCount() == 0) {
            echo '
<p class="c">
	Ingen overføringer er enda registrert.
</p>';
        } else {
            echo '
<h1 id="bevegelser" class="c">Siste bevegelser</h1>
<table class="table center">
	<thead>
		<tr>
			<th>Type</th>
			<th>Person</th>
			<th>Beløp</th>
			<th>Tidspunkt</th>
			<th>Notat</th>
			<th>Balanse</th>
		</tr>
	</thead>
	<tbody class="nowrap">';
            $i = 0;
            $typer = array(1 => "bank_inn", "bank_ut", "bank_doner", "bank_betaling", "bank_tbetaling");
            while ($row = $result->fetch()) {
                $type = isset($typer[$row['ffbl_type']]) ? ff::$bank_ikoner[$typer[$row['ffbl_type']]] : 'Ukjent';
                $type .= " " . (isset(ff::$bank_types[$row['ffbl_type']]) ? ff::$bank_types[$row['ffbl_type']] : 'Ukjent');
                if ($row['ffbl_type'] == 2 || $row['ffbl_type'] == 4) {
                    $row['ffbl_amount'] = "-" . $row['ffbl_amount'];
                }
                $player = $row['ffbl_up_id'] ? '<user id="' . $row['ffbl_up_id'] . '" />' : 'Spillet';
                echo '
		<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
			<td>' . $type . '</td>
			<td>' . $player . '</td>
			<td class="r">' . game::format_cash($row['ffbl_amount']) . '</td>
			<td>' . ess::$b->date->get($row['ffbl_time'])->format(date::FORMAT_SEC) . '</td>
			<td class="wrap">' . (empty($row['ffbl_note']) ? '<span style="color: #AAA">Tomt</span>' : game::bb_to_html($row['ffbl_note'])) . '</td>
			<td class="r">' . game::format_cash($row['ffbl_balance']) . '</td>
		</tr>';
            }
            echo '
	</tbody>
</table>';
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
<p class="c">' . $pagei->pagenumbers(game::address(PHP_SELF, $_GET, array("side")) . "#bevegelser", game::address(PHP_SELF, $_GET, array("side"), array("side" => "_pageid_")) . "#bevegelser") . '</p>';
            }
        }
    }
コード例 #10
0
ファイル: familier_pay.php プロジェクト: Kuzat/kofradia
<?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();
}
コード例 #11
0
ファイル: familier_free.php プロジェクト: Kuzat/kofradia
     // har ikke oppnådd minstekravet?
     $rank_points = $familie->competition_rank_points();
     if ($rank_points < $familie->data['fff_required_points']) {
         $familie->dies();
     } else {
         $ff[$familie->id] = $familie;
         if (!isset($ff_rank[0]) || $ff_rank[0] < $rank_points) {
             $ff_rank = array($rank_points, $familie->id);
         }
     }
 }
 // ingen ff har oppnådd minstekravet?
 if (count($ff) == 0) {
     putlog("INFO", "Ingen broderskap overlevde eller klarte minstekravet i broderskapkonkurransen. {$__server['path']}/ff/?fff_id={$faf['fff_id']}");
     // kjør ny konkurranse
     ff::create_competition();
     // sett konkurransen som avsluttet
     \Kofradia\DB::get()->exec("UPDATE ff_free SET fff_active = 0 WHERE fff_id = {$faf['fff_id']}");
 } else {
     // legg ned familiene som ikke vant
     foreach ($ff as $familie) {
         if ($familie->id == $ff_rank[1]) {
             continue;
         }
         $familie->dies();
     }
     // utrop vinneren
     $familie = $ff[$ff_rank[1]];
     $familie->competition_won();
     // sett status for konkurransen at bygning skal velges
     \Kofradia\DB::get()->exec("UPDATE ff_free SET fff_time_expire_br = " . (time() + 86400) . ", fff_active = 2 WHERE fff_id = {$faf['fff_id']}");
コード例 #12
0
ファイル: index.php プロジェクト: Kuzat/kofradia
    /**
     * Endre leiepris
     */
    protected function type_garasjeutleie_price($price)
    {
        // nylig endret?
        $last = $this->ff->params->get("garasje_time_change");
        $expire = time() - 86400 * 3;
        if ($last > $expire && !access::has("mod")) {
            ess::$b->page->add_message("Leieprisen ble sist forandret " . ess::$b->date->get($last)->format() . ". Du må vente " . game::counter($last - $expire, true) . " før leieprisen kan endres på nytt.");
            $this->ff->redirect();
        }
        // valgt pris?
        if (isset($_POST['price'])) {
            $price_new = game::intval($_POST['price']);
            if ($price_new == $price) {
                ess::$b->page->add_message("Du må skrive inn en ny pris.", "error");
            } elseif ($price_new < ff::GTA_GARAGE_PRICE_LOW) {
                ess::$b->page->add_message("Leieprisen kan ikke være under " . game::format_cash(ff::GTA_GARAGE_PRICE_LOW) . ".", "error");
            } elseif ($price_new > ff::GTA_GARAGE_PRICE_HIGH) {
                ess::$b->page->add_message("Leieprisen kan ikke være over " . game::format_cash(ff::GTA_GARAGE_PRICE_HIGH) . ".", "error");
            } else {
                // lagre ny pris
                $this->ff->params->update("garasje_price", $price_new);
                if (!access::has("mod")) {
                    $this->ff->params->update("garasje_time_change", time(), true);
                } else {
                    $this->ff->params->commit();
                }
                ess::$b->page->add_message("Leieprisen ble endret til " . game::format_cash($price_new) . ".");
                $this->ff->redirect();
            }
        }
        echo '
<div class="bg1_c xxsmall" style="width: 280px">
	<h1 class="bg1">Leiepris for garasje<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />
		<form action="" method="post">
			<dl class="dd_right">
				<dt>Nåværende pris per plass</dt>
				<dd>' . game::format_cash($price) . '</dd>
				<dt>Ny leiepris per plass</dt>
				<dd><input type="text" class="styled w80" name="price" value="' . game::format_cash(game::intval(postval("price", $price))) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Lagre ny pris") . ' <a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p>
			<p>Leieprisen kan settes fra ' . game::format_cash(ff::GTA_GARAGE_PRICE_LOW) . ' til ' . game::format_cash(ff::GTA_GARAGE_PRICE_HIGH) . ' og kan kun justeres hver 3. time</p>
		</form>
	</div>
</div>';
        $this->ff->load_page();
    }
コード例 #13
0
ファイル: min_side_player.php プロジェクト: Kuzat/kofradia
    /**
     * 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>';
    }
コード例 #14
0
ファイル: gta.php プロジェクト: Kuzat/kofradia
    /**
     * Betale leie for garasje
     */
    protected function garasje_betale_show()
    {
        ess::$b->page->add_title("Betale leie");
        // hent informasjon om garasjen
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ugg_time, ugg_time_next_rent, ugg_ff_id, ugg_cost_total, ugg_places\n\t\t\tFROM users_garage\n\t\t\tWHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']}");
        $garasje = $result->fetch();
        // har vi ingen garasje eller kan ikke betale leie nå?
        if (!$garasje || !gta::can_pay($garasje['ugg_time_next_rent'])) {
            redirect::handle("/gta/garasje", redirect::ROOT);
        }
        // hent alle firmaene og plukk ut det korrekte
        $ff_list = $this->gta->get_ff();
        if (!isset($ff_list[$garasje['ugg_ff_id']])) {
            throw new HSException("Mangler firma for garasje.");
        }
        $ff = $ff_list[$garasje['ugg_ff_id']];
        // beregn pris for neste periode
        $price = $garasje['ugg_places'] * $ff['price'];
        // utføre betaling?
        if (isset($_POST['pay'])) {
            $places = (int) postval("places");
            $price_old = (int) postval("price");
            // bydel forandret seg
            if (postval("b_id") != $this->gta->up->data['up_b_id']) {
                ess::$b->page->add_message("Du har reist til en annen bydel siden du sist viste siden.", "error");
                redirect::handle("/gta/garasje", redirect::ROOT);
            }
            if ($places != $garasje['ugg_places']) {
                ess::$b->page->add_message("Kapasiteten i garasjen har endret seg.", "error");
            } elseif ($price_old != $price) {
                ess::$b->page->add_message("Leieprisen hos utleiefirmaet har endret seg.", "error");
            } else {
                // trekk fra penger
                $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price} WHERE up_id = {$this->gta->up->id} AND up_cash >= {$price}");
                if ($a == 0) {
                    ess::$b->page->add_message("Du har ikke råd til å betale for denne leien.", "error");
                } else {
                    // sett opp tidspunkt for neste innbetaling
                    $next = ess::$b->date->get($garasje['ugg_time_next_rent']);
                    $next->setTime(6, 0, 0);
                    $next->modify("+7 days");
                    $next = $next->format("U");
                    // oppdater garasje
                    $a = \Kofradia\DB::get()->exec("UPDATE users_garage SET ugg_time_next_rent = {$next}, ugg_cost_total = ugg_cost_total + {$price} WHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']} AND ugg_time_next_rent = {$garasje['ugg_time_next_rent']} AND ugg_places = {$garasje['ugg_places']}");
                    // kunne ikke oppdatere garasje
                    if ($a == 0) {
                        // gi tilbake pengene
                        \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash + {$price} WHERE up_id = {$this->gta->up->id}");
                    } else {
                        // gi pengene til firmaet
                        ff::bank_static(ff::BANK_TJENT, round($price * ff::GTA_PERCENT), $ff['ff_id']);
                        ess::$b->page->add_message('Du har utvidet leieavtalen på <b>' . game::$bydeler[$this->gta->up->data['up_b_id']]['name'] . '</b> hos firmaet <a href="&rpath;/ff/?ff_id=' . $ff['ff_id'] . '">' . htmlspecialchars($ff['ff_name']) . '</a> med 7 dager for ' . game::format_cash($price) . '.');
                    }
                    redirect::handle("/gta/garasje", redirect::ROOT);
                }
            }
        }
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Betale leie for garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<p class="c"><a href="&rpath;/gta/garasje">Tilbake</a></p>
		<dl class="dd_right">
			<dt>Utleiefirma</dt>
			<dd><a href="&rpath;/ff/?ff_id=' . $ff['ff_id'] . '">' . htmlspecialchars($ff['ff_name']) . '</a></dd>
			<dt>Kapasitet</dt>
			<dd>' . game::format_num($garasje['ugg_places']) . '</dd>
			<dt>Leiepris per plass</dt>
			<dd>' . game::format_cash($ff['price']) . '</dd>
			<dt>Neste betalingsfrist</dt>
			<dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="price" value="' . $price . '" />
			<input type="hidden" name="places" value="' . $garasje['ugg_places'] . '" />
			<input type="hidden" name="b_id" value="' . $this->gta->up->data['up_b_id'] . '" />
			<dl class="dd_right">
				<dt>Total leiepris neste periode</dt>
				<dd>' . game::format_cash($price) . '</dd>
			</dl>
			<p class="c">' . show_sbutton("Utfør betaling for neste leie", 'name="pay"') . '</p>
		</form>
		<p class="c">Husk at det kan hende det lønner seg å bytte til et <a href="&rpath;/gta/garasje/detaljer">annet firma</a>. Du kan også <a href="&rpath;/gta/garasje/endre">justere kapasiteten</a> før du betaler for å få billigere leie.</p>
	</div>
</div>';
    }
コード例 #15
0
ファイル: medlemmer.php プロジェクト: Kuzat/kofradia
    /**
     * Plukk ut en parent
     * @param array $priority
     * @param array $members spillerene som skal flyttes
     * @param array $player (enten $member eller $player må sendes med, den andre null)
     * @param string $back_link (skal være html safe)
     */
    protected function pick_parent($priority, $members = null, $player, $back_link, $form_html = null, $invite = false)
    {
        // ikke pri4 eller parent aktivert?
        if ($priority['priority'] != 4 || !$this->ff->type['parent']) {
            return null;
        }
        $parent = null;
        // har vi valgt pri3?
        if (isset($_POST['parent'])) {
            $ok = true;
            // gyldig pri3?
            $pri3_id = (int) $_POST['parent'];
            if (!isset($this->ff->members['members_priority'][3][$pri3_id])) {
                ess::$b->page->add_message("Fant ikke valgt {$this->ff->type['priority'][3]}.", "error");
                $ok = false;
            }
            // kontroller at det er en gyldig pri3 og om ingen parents endret?
            if ($ok && $members) {
                $changed = false;
                foreach ($members as $member) {
                    if (!$changed && ($priority['priority'] != $member->data['ffm_priority'] || $pri3_id != $member->data['ffm_parent_up_id'])) {
                        $changed = true;
                    }
                    // seg selv?
                    if ($member->id == $pri3_id) {
                        ess::$b->page->add_message("Du kan ikke velge en spiller du skal flytte.", "error");
                        $ok = false;
                        break;
                    }
                }
                if (!$changed) {
                    ess::$b->page->add_message(fword("Medlemmet", "Medlemmene", count($members)) . " er allerede underordnet denne {$this->ff->type['priority'][3]}.", "error");
                    $ok = false;
                }
            }
            if ($ok) {
                return $pri3_id;
            }
        }
        // vis oversikt over pri3 man kan velge mellom
        ess::$b->page->add_title("Velg overordnet {$this->ff->type['priority'][3]}");
        $text = "";
        $up_ids = array();
        if (!$members || count($members) == 1) {
            $member = $members ? $members[0] : null;
            $up_ids[] = $member ? $member->id : $player['up_id'];
            $text = '
		<p>Du må velge en ' . $this->ff->type['priority'][3] . ' som skal være overordnet for ' . ($member ? game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) : game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level'])) . ' som vil ' . ($invite ? 'invitert' : 'få posisjonen') . ' som ' . $this->ff->type['priority'][4] . '.' . ($member ? ' (Nåværende posisjon: ' . ucfirst($member->get_priority_name()) . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')' : '') . '</p>';
        } else {
            $list = array();
            foreach ($members as $member) {
                $up_ids[] = $member->id;
                $list[] = '<li><user id="' . $member->id . '" /> (' . $member->get_priority_name() . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')</li>';
            }
            $text = '
		<p>Du må velge en ' . $this->ff->type['priority'][3] . ' som skal være overordnet for følgende spillere:</p>
		<ul>' . implode("", $list) . '</ul>';
        }
        echo '
<div class="section" style="width: 400px">
	<h1>Velg overordnet ' . $this->ff->type['priority'][3] . '</h1>
	<p class="h_right"><a href="' . $back_link . '">Tilbake</a></p>
	<boxes />
	<form action="" method="post">' . $form_html . '
		<input type="hidden" name="up_id' . ($members ? 's' : '') . '" value="' . ($members ? implode(",", $up_ids) : $player['up_id']) . '" />
		<input type="hidden" name="priority" value="' . $priority['priority'] . '" />' . $text . '
		<table class="table center">
			<thead>
				<tr>
					<th>' . ucfirst($this->ff->type['priority'][3]) . '</th>
					<th>Sist pålogget</th>
					<th>' . ucfirst($this->ff->type['priority'][4]) . '</th>
					<th>Inviterte ' . $this->ff->type['priority'][4] . '</th>
				</tr>
			</thead>
			<tbody>';
        $i = 0;
        foreach ($this->ff->members['members_priority'][3] as $member_parent) {
            if ($members && in_array($member_parent->id, $up_ids)) {
                continue;
            }
            echo '
				<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
					<td><input type="radio" name="parent" value="' . $member_parent->id . '" /> ' . game::profile_link($member_parent->id, $member_parent->data['up_name'], $member_parent->data['up_access_level']) . '</td>
					<td class="r">' . ess::$b->date->get($member_parent->data['up_last_online'])->format() . '</td>
					<td class="r">' . (isset($this->ff->members['members_parent'][$member_parent->id]) ? count($this->ff->members['members_parent'][$member_parent->id]) : 0) . '</td>
					<td class="r">' . (isset($this->ff->members['invited_parent'][$member_parent->id]) ? count($this->ff->members['invited_parent'][$member_parent->id]) : 0) . '</td>
				</tr>';
        }
        echo '
			</tbody>
		</table>
		<p class="c">
			' . show_sbutton("Velg {$this->ff->type['priority'][3]}") . '
			<a href="' . $back_link . '">Tilbake</a>
		</p>
	</form>
</div>';
        $this->ff->load_page();
    }
コード例 #16
0
ファイル: bank.php プロジェクト: Kuzat/kofradia
    /**
     * Behandle forespørsel
     */
    protected function page_handle()
    {
        $access = $this->ff->access(1);
        $this->form = \Kofradia\Form::getByDomain("firma", login::$user);
        ess::$b->page->add_title("Bankkontroll");
        // hent antall klienter
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT COUNT(up_id)\n\t\t\tFROM users_players\n\t\t\tWHERE up_access_level != 0 AND up_access_level < " . ess::$g['access_noplay'] . " AND up_bank_ff_id = {$this->ff->id}");
        $num_klienter = $result->fetchColumn(0);
        // finn ut nåværende status
        $status = $this->ff->params->get("bank_overforing_tap_change", 0);
        $status_text = $status == 0 ? 'Ingen endring' : ($status > 0 ? 'Øke ' . game::format_number($status * 100, 2) . ' %' : 'Synke ' . game::format_number(abs($status) * 100, 2) . ' %');
        // finn "tilgjengelige" overføringer
        $expire_ffbt = time() - 3600;
        $result = \Kofradia\DB::get()->query("SELECT COUNT(ffbt_id), SUM(ffbt_amount), SUM(ffbt_profit) FROM ff_bank_transactions WHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = 0 AND ffbt_time >= {$expire_ffbt}");
        $info = $result->fetch(\PDO::FETCH_NUM);
        // nåværende overføringsgebyr
        $overforing_tap = $this->ff->params->get("bank_overforing_tap", 0);
        // forandre fortjeneste?
        if (isset($_POST['fortjenestep_2']) && isset($_POST['fortjenestep_0']) && $access) {
            // kontroller verdier
            $fortjenestep_2 = intval($_POST['fortjenestep_2']);
            $fortjenestep_0 = intval($_POST['fortjenestep_0']);
            //$this->ff->params_lock();
            $this->ff->params->lock();
            $i = 0;
            // medeier
            if ($fortjenestep_2 > 40 || $fortjenestep_2 < 5) {
                ess::$b->page->add_message("Fortjenesten for {$this->ff->type['priority'][2]} kan ikke være under 5 % eller over 40  %.", "error");
                $i++;
            } elseif ($fortjenestep_2 != $this->ff->params->get("fortjenestep_2", 0.25) * 100) {
                $this->ff->params->update("fortjenestep_2", $fortjenestep_2 / 100);
                ess::$b->page->add_message("Fortjenesten for " . $this->ff->type['priority'][2] . " er nå på " . $fortjenestep_2 . " %.");
                $i++;
            }
            // øvrige ansatte
            if ($fortjenestep_0 > 40 || $fortjenestep_0 < 5) {
                ess::$b->page->add_message("Fortjenesten for øvrige ansatte kan ikke være under 5 % eller over 40 %.", "error");
                $i++;
            } elseif ($fortjenestep_0 != $this->ff->params->get("fortjenestep_0", 0.1) * 100) {
                $this->ff->params->update("fortjenestep_0", $fortjenestep_0 / 100);
                ess::$b->page->add_message("Fortjenesten for øvrige ansatte er nå på " . $fortjenestep_0 . " %.");
                $i++;
            }
            // ingen som ble endret?
            if ($i == 0) {
                ess::$b->page->add_message("Ingen endringer ble utført.");
            }
            //$this->ff->params_save();
            $this->ff->params->commit();
            redirect::handle();
        }
        // hente gebyr?
        if (isset($_POST['hent_gebyr']) && $this->form->validateHashOrAlert()) {
            // ingen gebyr å hente?
            if ($info[0] == 0) {
                ess::$b->page->add_message("Det er ingen gebyr å hente.", "error");
                redirect::handle();
            }
            // sjekk at det har gått lang nok tid siden forrige gang
            // FIXME: denne er ikke i bruk (bank_gebyr_siste blir aldri satt)
            $expire = $this->ff->uinfo->params->get("bank_gebyr_siste", 0) + 900;
            if ($expire > time()) {
                ess::$b->page->add_message("Du må vente " . ess::$b->date->get($expire)->format(date::FORMAT_SEC) . " før du kan hente nye gebyr.", "error");
                redirect::handle();
            }
            \Kofradia\DB::get()->beginTransaction();
            // oppdater gebyrene til vår bruker
            \Kofradia\DB::get()->exec("UPDATE ff_bank_transactions SET ffbt_up_id = " . login::$user->player->id . " WHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = 0 AND ffbt_time >= {$expire_ffbt}");
            // finn ut hvor mange prosent vi skal få og firmaet skal få
            $p_player = $access ? 0.5 : ($this->ff->access(2) ? $this->ff->params->get("fortjenestep_2", 0.25) : $this->ff->params->get("fortjenestep_0", 0.1));
            $p_firma = max(0, 0.5 - $p_player);
            // hent ut informasjon om hvor mye vi fikk
            $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT COUNT(ffbt_id), SUM(ffbt_amount), SUM(ffbt_profit)*{$p_player}, SUM(ffbt_profit)*{$p_firma}\n\t\t\t\tFROM ff_bank_transactions\n\t\t\t\tWHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = " . login::$user->player->id . " AND ffbt_status = 0");
            $info = $result->fetch(\PDO::FETCH_NUM);
            // 0 => antall, 1 => overført, 2 => profit bruker, 3 => profit firma
            // sett pengene til riktige steder
            \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players, ff, ff_bank_transactions, ff_members, (\n\t\t\t\t\t\tSELECT SUM(ffbt_profit) AS ffbt_profit_sum\n\t\t\t\t\t\tFROM ff_bank_transactions\n\t\t\t\t\t\tWHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = " . login::$user->player->id . " AND ffbt_status = 0\n\t\t\t\t\t) AS ref\n\t\t\t\tSET up_cash = up_cash + ffbt_profit_sum*{$p_player}, ff_bank = ff_bank + ffbt_profit_sum*{$p_firma}, ffbt_status = 1, ffm_earnings = ffm_earnings + ffbt_profit_sum*{$p_player}, ffm_earnings_ff = ffm_earnings_ff + ffbt_profit_sum*{$p_firma}\n\t\t\t\tWHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = " . login::$user->player->id . " AND ffbt_status = 0 AND up_id = ffbt_up_id AND ff_id = ffbt_ff_id AND ffm_ff_id = ff_id AND ffm_up_id = up_id");
            // oppdater stats
            $this->ff->stats_update("money_in", $info[3]);
            // TODO: Slette ffbt oppføringene
            \Kofradia\DB::get()->commit();
            // ingen ble oppdatert?
            if ($info[0] == 0) {
                ess::$b->page->add_message("Det er ingen gebyr å hente.", "error");
            } else {
                ess::$b->page->add_message("Du hentet {$info[0]} gebyr og fikk totalt " . game::format_cash($info[2]) . ". " . game::format_cash($info[1]) . " var blitt overført. Firmaet fikk " . game::format_cash($info[3]) . ".");
            }
            redirect::handle();
        }
        // finn ut hvor lang tid det er til neste endring
        $date = ess::$b->date->get();
        $next_update = 3600 - $date->format("i") * 60 - $date->format("s");
        // endre overføringsgebyr
        if (isset($_POST['eog_value']) && $access) {
            // sjekk at verdien er en av de vi kan velge?
            $step = floatval($_POST['eog_value']);
            if (!in_array($step, ff::$type_bank['eog_steps'])) {
                ess::$b->page->add_message("Verdien du valgte var ikke gyldig.", "error");
                redirect::handle("bank?ff_id={$this->ff->id}");
            }
            $this->ff->params->lock();
            $overforing_tap = $this->ff->params->get("bank_overforing_tap", 0);
            // øke?
            if ($step > 0) {
                // allerede på topp?
                if ($overforing_tap >= ff::$type_bank['bank_overforing_gebyr_max']) {
                    ess::$b->page->add_message("Overføringsgebyret kan ikke økes mer.", "error");
                    $this->ff->params->commit();
                    redirect::handle("bank?ff_id={$this->ff->id}");
                }
                // overstiger maks?
                if ($step + $overforing_tap > ff::$type_bank['bank_overforing_gebyr_max']) {
                    $step = ff::$type_bank['bank_overforing_gebyr_max'] - $overforing_tap;
                }
            } elseif ($step < 0) {
                // allerede på bunn?
                if ($overforing_tap <= ff::$type_bank['bank_overforing_gebyr_min']) {
                    ess::$b->page->add_message("Overføringsgebyret kan ikke senkes mer.", "error");
                    $this->ff->params->commit();
                    redirect::handle("bank?ff_id={$this->ff->id}");
                }
                // overstiger min?
                if ($step + $overforing_tap < ff::$type_bank['bank_overforing_gebyr_min']) {
                    $step = ff::$type_bank['bank_overforing_gebyr_min'] - $overforing_tap;
                }
            }
            // lagre
            $this->ff->params->update("bank_overforing_tap_change", $step, true);
            if ($step == 0) {
                ess::$b->page->add_message("Overføringsgebyret vil ikke lengre bli endret.");
            } else {
                $status = $step > 0 ? 'økt med ' . game::format_number($step * 100, 2) . ' %' : 'senket med ' . game::format_number(abs($step) * 100, 2) . ' %';
                ess::$b->page->add_message('Overføringsgebyret vil bli ' . $status . ' til ' . game::format_number(($overforing_tap + $step) * 100, 2) . ' % om ' . game::counter($next_update) . '.');
            }
            redirect::handle("bank?ff_id={$this->ff->id}");
        }
        echo '
<!--<h1>Bankkontroll</h1>-->
<div class="section" style="width: 250px; margin-left: auto; margin-right: auto">
	<h2>Bankinformasjon</h2>' . ($access ? '
	<p class="h_right eog_off"><a href="../js" onclick="handleClass(\'.eog_on\', \'.eog_off\', event, this.parentNode.parentNode)">Endre overføringsgebyr</a></p>
	<p class="h_right eog_on hide"><a href="../js" onclick="handleClass(\'.eog_off\', \'.eog_on\', event, this.parentNode.parentNode)">Avbryt endringer</a></p>' : '') . '
	<dl class="dd_right' . ($access ? ' eog_off' : '') . '">
		<dt>Overføringsgebyr</dt>
		<dd>' . game::format_number($overforing_tap * 100, 2) . ' %</dd>
		<dt>Neste endring</dt>
		<dd>' . $status_text . '</dd>
		<dt>Tid før neste endring</dt>
		<dd>' . game::counter($next_update) . '</dd>
		<dt>Antall klienter</dt>
		<dd>' . game::format_number($num_klienter) . '</dd>
	</dl>';
        if ($access) {
            echo '
	<form action="" method="post" class="eog_on hide">
		<dl class="dd_right">
			<dt>Nåværende overføringsgebyr</dt>
			<dd>' . game::format_number($overforing_tap * 100, 2) . ' %</dd>
			<dt>Nåværende status</dt>
			<dd>' . $status_text . '</dd>
			<dt>Ny handling</dt>
			<dd>
				<select name="eog_value">';
            $active = in_array($status, ff::$type_bank['eog_steps']) ? $status : 0;
            foreach (ff::$type_bank['eog_steps'] as $step) {
                $status = $step == 0 ? 'Ingen endring' : ($step > 0 ? 'Øke ' . game::format_number($step * 100, 2) . ' %' : 'Senke ' . game::format_number(abs($step) * 100, 2) . ' %');
                echo '
					<option value="' . $step . '"' . ($step == $active ? ' selected="selected"' : '') . '>' . $status . '</option>';
            }
            echo '
				</select>
			</dd>
		</dl>
		<p class="c">
			<input type="submit" class="button" value="Lagre endringer" />
			<a href="../js" class="button" onclick="handleClass(\'.eog_off\', \'.eog_on\', event, this.parentNode.parentNode.parentNode)">Avbryt endringer</a>
		</p>
		<div class="hr"></div>
		<p>Overføringsgebyret blir endret hver hele time og handlingen fortsetter til du endrer den eller du når en av grensene.</p>
		<dl class="dd_right">
			<dt>Minimumsverdi</dt>
			<dd>' . game::format_number(ff::$type_bank['bank_overforing_gebyr_min'] * 100, 2) . ' %</dd>
			<dt>Maksimumsverdi</dt>
			<dd>' . game::format_number(ff::$type_bank['bank_overforing_gebyr_max'] * 100, 2) . ' %</dd>
		</dl>
	</form>';
        }
        echo '
</div>
<div class="section" style="width: 250px; margin-left: auto; margin-right: auto">
	<h2>Overføringsgebyr</h2>
	<p class="h_right">
		<a href="../js" onclick="abortEvent(event);hideClass(\'bankinfo0\');showClass(\'bankinfo1\')" class="bankinfo0">Vis informasjon</a>
		<a href="../js" onclick="abortEvent(event);hideClass(\'bankinfo1\');showClass(\'bankinfo0\')" class="bankinfo1 hide">Skjul informasjon</a>
	</p>
	<dl class="dd_right">
		<dt>Uhentede gebyr</dt>
		<dd>' . game::format_number($info[0]) . '</dd>

		<dt>&nbsp;</dt>
		<dd>' . game::format_cash($info[2]) . '</dd>

		<dt>&nbsp;</dt>
		<dd>(' . game::format_cash($info[1]) . ')</dd>
	</dl>
	<div class="bankinfo1 hide j">
		<div class="hr"></div>
		<p>
			For at banken skal motta overføringsgebyrene må disse hentes inn før det har gått 60 minutter etter at overføringen har skjedd.
		</p>
		<p>
			Den som henter inn gebyrene mottar en viss prosent av gebyrets beløp:
		</p>
		<ul>
			<li>' . ucfirst($this->ff->type['priority'][1]) . ': 50 %</li>
			<li>' . ucfirst($this->ff->type['priority'][2]) . ': ' . intval($this->ff->params->get("fortjenestep_2", 0.25) * 100) . ' % (' . intval(50 - $this->ff->params->get("fortjenestep_2", 0.25) * 100) . ' % til firmaet)</li>
			<li>Øvrige ansatte: ' . intval($this->ff->params->get("fortjenestep_0", 0.1) * 100) . ' % (' . intval(50 - $this->ff->params->get("fortjenestep_0", 0.1) * 100) . ' % til firmaet)</li></li>
		</ul>
		<p>
			Når du har hentet inn nåværende gebyr må du vente 15 minutter til neste gang du kan hente inn gebyr.
		</p>
	</div>' . ($info[0] > 0 ? '
	<form action="" method="post">
		' . $this->form->getHTMLInput() . '
		<h4>' . show_sbutton("Hent gebyr", 'name="hent_gebyr"') . '</h4>
	</form>' : '') . '
</div>';
        // endre fortjeneste
        if ($access) {
            echo '
<div class="section w250 center">
	<h2>Endre fortjeneste</h2>
	<p>Som eier kan du bestemme hvor mange prosent de som henter ut gebyrene skal få. Du må velge mellom 5 % og 40 %. Firmaet får det som er igjen av totalt 50 %.</p>
	<form action="" method="post">
		<dl class="dd_right dl_2x">
			<dt>' . ucfirst($this->ff->type['priority'][2]) . '</dt>
			<dd><input name="fortjenestep_2" type="text" value="' . intval($this->ff->params->get("fortjenestep_2", 0.25) * 100) . '" class="styled w30 r" /> %</dd>

			<dt>Øvrige ansatte</dt>
			<dd><input name="fortjenestep_0" type="text" value="' . intval($this->ff->params->get("fortjenestep_0", 0.1) * 100) . '" class="styled w30 r" /> %</dd>
		</dl>
		<h4>' . show_sbutton("Lagre endringer") . '</h4>
	</form>
</div>';
        }
    }
コード例 #17
0
ファイル: bydeler.php プロジェクト: Kuzat/kofradia
    /**
     * Vis side med kart
     */
    public function show_full_page()
    {
        global $__server;
        // hent familierangering
        $ff_list = ff::get_fam_points_rank();
        // deaktiver høyre side
        //define("DISABLE_RIGHT_COL", true);
        ess::$b->page->add_css('
#default_main { overflow: visible }');
        ess::$b->page->add_js_domready('
	sm_scripts.load_hm();
	window.HM.addEvent("f-changed", function(data) {
		//$$(".bydeler_filter a").removeClass("active");
		$$(".bydeler_ressurs").setStyle("display", "none");
		$$(".bydeler_ressurs_"+data).setStyle("display", "block");
		//$("f_"+data).addClass("active");
	});
	window.HM.addEvent("f-removed", function() {
		//$$(".bydeler_filter a").removeClass("active");
		//$("f_").addClass("active");
		$$(".bydeler_ressurs").setStyle("display", "block");
	});
	window.HM.addEvent("b-added", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_b").addClass("active");
		$$(".bydeler_br").setStyle("display", "none");
		$$(".bydeler_steder").setStyle("display", "block");
	});
	window.HM.addEvent("b-removed", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_").addClass("active");
		$$(".bydeler_br").setStyle("display", "block");
		$$(".bydeler_steder").setStyle("display", "none");
	});
	
	$$(".bydeler_steder").setStyle("display", "none");
	$$(".bydeler_alt a").addEvent("click", function(e)
	{
		window.HM.remove("f");
		window.HM.set("b", "");
		e.stop();
	});
	
	$$(".bydeler_filter a").addEvent("click", function(e)
	{
		window.HM.remove("b");
		if (this.get("id") == "f_") window.HM.remove("f");
		else window.HM.set("f", this.get("id").substring(2));
		e.stop();
	});
	
	window.HM.recheck();
');
        // sett opp alle FF og sorter dem i y-retning
        $data = array();
        $pos_x = array();
        $pos_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            if ($id == 0) {
                continue;
            }
            foreach ($bydel['ff'] as $row) {
                $pos_x[] = $row['br_pos_x'];
                $pos_y[] = $row['br_pos_y'];
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                    // antall poeng
                    if (isset($ff_list[$row['ff_id']]) && $ff_list[$row['ff_id']]->data['ff_is_crew'] == 0) {
                        $eier .= '<br />' . game::format_num($ff_list[$row['ff_id']]->data['ff_points_sum']) . ' poeng';
                    }
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                $data[] = '
		<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '" style="left: ' . $row['br_pos_x'] . '%; top: ' . $row['br_pos_y'] . '%">
			<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			<span class="bydeler_ressurs_tekst">
				' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
				' . $eier . '</span>
			</span>
			<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
		</a>';
            }
        }
        array_multisort($pos_y, $pos_x, $data);
        $bydeler_0 = $this->bydeler[0];
        unset($this->bydeler[0]);
        // sorter bydelene i y-retning
        $bydeler_x = array();
        $bydeler_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            $bydeler_x[] = $bydel['bydel_x'];
            $bydeler_y[] = $bydel['bydel_y'];
        }
        array_multisort($bydeler_x, $bydeler_y, $this->bydeler);
        // invitasjoner til FF
        if (count($this->ff_invites) > 0) {
            echo '
<div class="bg1_c small">
	<h1 class="bg1">Invitasjoner<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
            foreach ($this->ff_invites as $row) {
                $type = ff::$types[$row['ff_type']];
                echo '
		<p>Du er invitert til ' . $type['refobj'] . ' <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">' . htmlspecialchars($row['ff_name']) . '</a> som ' . $type['priority'][$row['ffm_priority']] . ' (' . ess::$b->date->get($row['ffm_date_join'])->format(date::FORMAT_NOTIME) . ') - <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">Godta/avslå</a></p>';
            }
            echo '
	</div>
</div>';
        }
        if (count($this->fff) > 0) {
            echo '
<div class="bg1_c medium bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Konkurranse om å danne broderskap<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<table class="table center tablem">
			<thead>
				<tr>
					<th>Avsluttes</th>
					<th>Gjenstår</th>
					<th>Antall broderskap</th>
					<th>Gjenstående broderskap</th>
					<th>&nbsp;</th>
				</tr>
			</thead>
			<tbody class="r">';
            $i = 0;
            $free = 0;
            foreach ($this->fff as $row) {
                if ($row['ff_count'] < ff::MAX_FFF_FF_COUNT) {
                    $free += ff::MAX_FFF_FF_COUNT - $row['ff_count'];
                }
                echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td>' . ess::$b->date->get($row['fff_time_expire'])->format(date::FORMAT_SEC) . '</td>
					<td>' . game::timespan(max(time(), $row['fff_time_expire']), game::TIME_ABS) . '</td>
					<td>' . $row['ff_count'] . '</td>
					<td>' . $row['ff_count_active'] . '</td>
					<td><a href="' . $__server['relative_path'] . '/ff/?fff_id=' . $row['fff_id'] . '">Vis &raquo;</a></td>
				</tr>';
            }
            $create_link = login::$logged_in ? $this->up->rank['number'] < ff::$types[1]['priority_rank'][1] ? ' - Du har ikke høy nok rank til å opprette et broderskap' : ' - Du har høy nok rank - <a href="' . $__server['relative_path'] . '/ff/?create">Opprett broderskap &raquo;</a>' : '';
            echo '
			</tbody>
		</table>' . ($free > 0 ? '
		<p class="c" style="margin-top: 0">Det er ' . $free . ' ' . fword("ledig konkurranseplass", "ledige konkurranseplasser", $free) . $create_link . '</p>' : '
		<p class="c" style="margin-top: 0">Ingen ledige konkurranseplasser.</p>') . '
	</div>
</div>';
        }
        // topp rangerte familier
        if (count($ff_list) > 0) {
            echo '
<div class="bg1_c xxsmall bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Topp rangerte broderskap<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<dl class="dd_right">';
            $i = 0;
            foreach ($ff_list as $ff) {
                $title = "For rank til medlemmer: " . $ff->data['ff_points_up'] . " - For firma til medlemmer: " . $ff->data['ff_points_ff'] . " - For drap: " . $ff->data['ff_points_kill'];
                echo '
			<dt><a href="' . ess::$s['rpath'] . '/ff/?ff_id=' . $ff->id . '">' . htmlspecialchars($ff->data['ff_name']) . '</a></dt>
			<dd title="' . $title . '">' . game::format_num($ff->data['ff_points_sum']) . ' poeng</dd>';
                // vis kun 3 beste familiene
                if (++$i == 3) {
                    break;
                }
            }
            echo '
		</dl>
		<p class="c"><a href="' . ess::$s['rpath'] . '/node/19">Poenginformasjon</a></p>
	</div>
</div>';
        }
        kf_menu::$data['bydeler_menu'] = true;
        echo '
<h1 class="bydeler">Bydeler</h1>
<div class="bydeler">
	<div class="bydeler_kart bydeler_br">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />
		' . implode('', $data) . '
	</div>';
        // har vi noen FF som ikke er plassert?
        if ($bydeler_0['active']) {
            echo '
	<div class="bydeler_uplassert bydeler_br">';
            foreach ($bydeler_0['ff'] as $row) {
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                echo '
		<div class="bydeler_uplassert_boks">
			<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '">
				<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
				<span class="bydeler_ressurs_tekst">
					' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
					' . $eier . '</span>
				</span>
				<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			</a>
		</div>';
            }
            echo '
	</div>';
        }
        echo '
	<div class="bydeler_kart bydeler_steder">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />';
        foreach ($this->bydeler as $bydel) {
            if ($bydel['active'] == 0) {
                continue;
            }
            if ($this->up) {
                $distance = self::calc_travel_distance($this->up->bydel, $bydel);
                $taxi_price = round($distance * self::TAXI_PRICE_KM);
                $taxi_points = round($distance * self::TAXI_POINTS_KM * $this->up->rank['number']);
            }
            echo '
		<div class="map_unit' . ($this->up && $this->up->bydel['id'] == $bydel['id'] ? ' map_active' : '') . '" style="left: ' . $bydel['bydel_x'] . '%; top: ' . $bydel['bydel_y'] . '%" id="map_link_' . $bydel['id'] . '">
			<div class="map_title">
				<p class="map_link"><b><b><b>' . htmlspecialchars($bydel['name']) . '</b></b></b></p>
				<div class="bydeler_sted">
					<div class="bydeler_sted_info">
						<dl class="dd_right">
							<dt>Spillere</dt>
							<dd>' . game::format_number($bydel['num_players']) . '</dd>
							<dt>Penger i omløp</dt>
							<dd>' . game::format_cash($bydel['sum_money']) . '</dd>
						</dl>';
            if (!$this->up) {
            } elseif ($this->up->bydel['id'] == $bydel['id']) {
                echo '
						<p>Du befinner deg i denne bydelen.</p>';
            } elseif ($this->up->fengsel_check()) {
                echo '
						<p>Du er i fengsel og kan ikke reise.</p>';
            } elseif ($this->up->bomberom_check()) {
                echo '
						<p>Du er i bomberom og kan ikke reise.</p>';
            } else {
                echo '
						<div class="bydeler_reise c">
							<form action="bydeler" method="post">
								<input type="hidden" name="reise" value="' . htmlspecialchars($bydel['name']) . '" />';
                // taxi
                if (!$this->up->energy_check(self::TAXI_ENERGY * 1.3)) {
                    echo '
								<p>Du har ikke nok energi til å ta taxi hit.</p>';
                } elseif ($this->up->data['up_points'] < $taxi_points * 2) {
                    echo '
								<p>Du har ikke høy nok rank til å ta taxi hit.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Ta taxi (" . game::format_cash($taxi_price) . ", " . game::format_number(round($taxi_points)) . " poeng)", 'name="taxi"') . '</p>';
                }
                // gta
                if ($this->gta_count == 0) {
                    echo '
								<p>Du har ingen biler i bydelen du oppholder deg i for å reise med.</p>';
                } elseif (!$this->gta_garage[$bydel['id']]['garage']) {
                    echo '
								<p>Det er ingen garasje i denne bydelen.</p>';
                } elseif ($this->gta_garage[$bydel['id']]['garage_free'] == 0) {
                    echo '
								<p>Det er ingen ledige plasser i garasjen i denne bydelen.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Kjør egen bil", 'name="gta"') . '</p>';
                }
                // teleportere
                if (access::is_nostat()) {
                    echo '
								<p>' . show_sbutton("Teleporter hit (nostat)", 'name="teleporter"') . '</p>';
                }
                echo '
							</form>
						</div>';
            }
            echo '
					</div>
				</div>
			</div>
		</div>';
        }
        echo '
	</div>';
        echo '
</div>';
        ess::$b->page->load();
    }
コード例 #18
0
ファイル: class.soknader.php プロジェクト: Kuzat/kofradia
 /**
  * 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;
 }
コード例 #19
0
ファイル: class.auksjon.php プロジェクト: Kuzat/kofradia
 /**
  * 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();
 }
コード例 #20
0
ファイル: class.ff_avis.php プロジェクト: Kuzat/kofradia
 /**
  * Sjekk for tilganger
  */
 protected function check_access()
 {
     // skrivetilgang?
     $this->access_write = $this->data['ffna_up_id'] == login::$user->player->id || access::has("mod");
     // lesetilgang?
     $this->access_read = $this->access_write || $this->data['ffna_published'] != 0 && $this->ff->access(2);
 }