Example #1
0
    /**
     * Vis en bestemt utgivelse
     */
    protected function specific_publication()
    {
        // hent informasjon
        $ffn = ff_avis_utgivelse::get(intval(getval("ffn")), $this->ff);
        // fant ikke?
        if (!$ffn) {
            ess::$b->page->add_message("Fant ikke utgivelsen.", "error");
            $this->ff->load_page();
        }
        redirect::store("avis?ff_id={$this->ff->id}&ffn={$ffn->id}");
        ess::$b->page->add_title($ffn->data['ffn_title']);
        // hent kjøpsinformasjon
        $ffnp = null;
        if (login::$logged_in) {
            $result = \Kofradia\DB::get()->query("SELECT ffnp_cost, ffnp_time FROM ff_newspapers_payments WHERE ffnp_ffn_id = {$ffn->id} AND ffnp_up_id = " . login::$user->player->id);
            $ffnp = $result->fetch();
        }
        // ikke publisert?
        if ($ffn->data['ffn_published'] == 0) {
            if (!$this->ff->access(3)) {
                ess::$b->page->add_message("Fant ikke utgivelsen.", "error");
                $this->ff->load_page();
            }
            redirect::handle("avis?ff_id={$this->ff->id}&u&ffn={$ffn->id}");
        }
        // må vi kjøpe avisutgivelsen?
        if ($this->ff->active && (!login::$logged_in || !$this->ff->access() && !access::is_nostat() && !$ffnp)) {
            // har ikke kjøpt avisen, men avisen er gratis?
            if (login::$logged_in && (!$ffnp && $ffn->data['ffn_cost'] == 0)) {
                // opprett rad for betaling
                \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time());
                // oppdater utgivelsen
                \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}");
                redirect::handle();
            } else {
                ess::$b->page->add_title("Kjøp utgivelse");
                // kjøpe?
                if (login::$logged_in && isset($_POST['buy'])) {
                    $sid = postval("sid");
                    $price = postval("price");
                    if ($sid != login::$info['ses_id']) {
                        ess::$b->page->add_message("Ugyldig.", "error");
                    } elseif ($price != $ffn->data['ffn_cost']) {
                        ess::$b->page->add_message("Prisen har endret seg. Du må utføre handlingen på nytt.", "error");
                    } elseif (login::$user->player->data['up_cash'] < $ffn->data['ffn_cost']) {
                        ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error");
                    } else {
                        // trekk fra pengene fra brukeren
                        if ($ffn->data['ffn_cost'] != 0) {
                            $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$ffn->data['ffn_cost']} WHERE up_id = " . login::$user->player->id . " AND up_cash >= {$ffn->data['ffn_cost']}");
                        }
                        // mislykket
                        if ($ffn->data['ffn_cost'] != 0 && $a == 0) {
                            ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error");
                        } else {
                            // legg til oppføring
                            \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time());
                            // gi pengene til firmaet
                            \Kofradia\DB::get()->exec("UPDATE ff SET ff_bank = ff_bank + {$ffn->data['ffn_cost']} WHERE ff_id = {$this->ff->id}");
                            // stats for firmaet
                            $ffn->ff->stats_update("money_in", $ffn->data['ffn_cost']);
                            // oppdater utgivelsen
                            \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}");
                            ess::$b->page->add_message("Du har kjøpt utgivelsen for " . game::format_cash($ffn->data['ffn_cost']) . ".");
                            redirect::handle();
                        }
                    }
                }
                echo '
<p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ' | Kjøp utgivelse | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p>
<div class="section center w200">
	<h2>Utgivelseinformasjon</h2>
	<dl class="dd_right">
		<dt>Publisert</dt>
		<dd>' . ess::$b->date->get($ffn->data['ffn_published_time'])->format() . '</dd>
		<dt>Solgt utgivelser</dt>
		<dd>' . game::format_number($ffn->data['ffn_sold']) . '</dd>
	</dl>
	<p>Artikler:</p>';
                // hent artiklene
                $result = \Kofradia\DB::get()->query("SELECT ffna_title FROM ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} ORDER BY ffna_title");
                // ingen artikler?
                if ($result->rowCount() == 0) {
                    echo '
	<p>Ingen artikler.</p>';
                } else {
                    echo '
	<ul>';
                    while ($row = $result->fetch()) {
                        echo '
		<li>' . htmlspecialchars($row['ffna_title']) . '</li>';
                    }
                    echo '
	</ul>';
                }
                echo '
</div>';
                if (login::$logged_in) {
                    echo '
<form action="" method="post">
	<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
	<input type="hidden" name="price" value="' . $ffn->data['ffn_cost'] . '" />
	<div class="section center w200">
		<h2>Kjøp utgivelse</h2>
		<p>Før du får tilgang til denne utgivelsen må du kjøpe den.</p>
		<dl class="dd_right">
			<dt>Pris</dt>
			<dd>' . game::format_cash($ffn->data['ffn_cost']) . '</dd>
		</dl>
		<p class="c">' . show_sbutton("Kjøp utgivelse", 'name="buy"') . '</p>
	</div>
</form>';
                } else {
                    echo '
<p class="c">Du må <a href="&rpath;/">logge inn</a> for å kjøpe og lese denne utgivelsen.</p>';
                }
                $this->ff->load_page();
            }
        }
        // hent data
        $data = $ffn->build_avis_html();
        echo '
<p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ($this->ff->access(3) ? ' | <a href="avis?ff_id=' . $this->ff->id . '&amp;u&amp;ffn=' . $ffn->data['ffn_id'] . '">Vis detaljer</a>' : '') . ' | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p>' . $data;
    }
Example #2
0
 /**
  * Hent utgivelse
  */
 public function load_ffn()
 {
     $this->ffn = $this->data['ffna_ffn_id'] == 0 ? null : ff_avis_utgivelse::get($this->data['ffna_ffn_id'], $this->ff);
 }